After establishing a data connection with cm data connect, the server stops responding to ping after a few seconds.
Since ping responses continue in R13.3, we suspect this is an issue specific to R17.
Please advise on a solution.
no problem is found for WP7605 FW R17:
root@swi-mdm9x28-wp:~# legato version
21.05.2.rc2_7f59219499ecf02274c4ac7575e4f8c5
root@swi-mdm9x28-wp:~# cm radio
Power: ON
Current Network Operator: SmarTone HK
Current RAT: LTE network (LE_MRC_RAT_LTE)
Status: Registered, home network (LE_MRC_REG_HOME)
Signal: Very strong signal strength (5)
PS: Packet Switched Registered, home network (LE_MRC_REG_HOME)
root@swi-mdm9x28-wp:~# cm sim
SIM card is inserted and unlocked (LE_SIM_READY).
root@swi-mdm9x28-wp:~# cm data
Index: 1
APN: internet
PDP Type: IPV4
Connected: no
root@swi-mdm9x28-wp:~# cm data connect &
root@swi-mdm9x28-wp:~# Setting up profile 1
Connecting … ok
Checking if device ‘rmnet_data0’ is up … ok
Routing inet … ok
Updating /etc/resolv.conf … ok
Updating /etc/resolv.conf … ok
[1]+ Done cm data connect
root@swi-mdm9x28-wp:~# cm data
Index: 1
APN: internet
PDP Type: IPV4
Connected: yes
Interface: rmnet_data0
Family[IPv4]: inet
IP[IPv4]: 182.153.29.197
Gateway[IPv4]: 182.153.29.198
Dns1[IPv4]: 10.30.23.130
Dns2[IPv4]: 10.30.25.130
root@swi-mdm9x28-wp:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=118 time=49.039 ms
64 bytes from 8.8.8.8: seq=1 ttl=118 time=29.572 ms
64 bytes from 8.8.8.8: seq=2 ttl=118 time=26.998 ms
64 bytes from 8.8.8.8: seq=3 ttl=118 time=37.387 ms
64 bytes from 8.8.8.8: seq=4 ttl=118 time=28.273 ms
64 bytes from 8.8.8.8: seq=5 ttl=118 time=26.742 ms
64 bytes from 8.8.8.8: seq=6 ttl=118 time=34.885 ms
64 bytes from 8.8.8.8: seq=7 ttl=118 time=43.179 ms
64 bytes from 8.8.8.8: seq=8 ttl=118 time=33.683 ms
64 bytes from 8.8.8.8: seq=9 ttl=118 time=24.172 ms
64 bytes from 8.8.8.8: seq=10 ttl=118 time=33.336 ms
64 bytes from 8.8.8.8: seq=11 ttl=118 time=33.768 ms
64 bytes from 8.8.8.8: seq=12 ttl=118 time=23.678 ms
64 bytes from 8.8.8.8: seq=13 ttl=118 time=91.179 ms
64 bytes from 8.8.8.8: seq=14 ttl=118 time=32.764 ms
64 bytes from 8.8.8.8: seq=15 ttl=118 time=38.281 ms
64 bytes from 8.8.8.8: seq=16 ttl=118 time=41.429 ms
64 bytes from 8.8.8.8: seq=17 ttl=118 time=30.741 ms
64 bytes from 8.8.8.8: seq=18 ttl=118 time=30.342 ms
64 bytes from 8.8.8.8: seq=19 ttl=118 time=29.308 ms
64 bytes from 8.8.8.8: seq=20 ttl=118 time=28.754 ms
64 bytes from 8.8.8.8: seq=21 ttl=118 time=35.944 ms
64 bytes from 8.8.8.8: seq=22 ttl=118 time=34.861 ms
64 bytes from 8.8.8.8: seq=23 ttl=118 time=26.343 ms
64 bytes from 8.8.8.8: seq=24 ttl=118 time=34.855 ms
64 bytes from 8.8.8.8: seq=25 ttl=118 time=35.095 ms
64 bytes from 8.8.8.8: seq=26 ttl=118 time=34.951 ms
64 bytes from 8.8.8.8: seq=27 ttl=118 time=35.125 ms
64 bytes from 8.8.8.8: seq=28 ttl=118 time=32.738 ms
64 bytes from 8.8.8.8: seq=29 ttl=118 time=26.018 ms
64 bytes from 8.8.8.8: seq=30 ttl=118 time=34.470 ms
64 bytes from 8.8.8.8: seq=31 ttl=118 time=42.596 ms
64 bytes from 8.8.8.8: seq=32 ttl=118 time=39.692 ms
64 bytes from 8.8.8.8: seq=33 ttl=118 time=40.543 ms
64 bytes from 8.8.8.8: seq=34 ttl=118 time=40.878 ms
64 bytes from 8.8.8.8: seq=35 ttl=118 time=29.405 ms
64 bytes from 8.8.8.8: seq=36 ttl=118 time=29.000 ms
64 bytes from 8.8.8.8: seq=37 ttl=118 time=37.436 ms
64 bytes from 8.8.8.8: seq=38 ttl=118 time=28.774 ms
64 bytes from 8.8.8.8: seq=39 ttl=118 time=29.318 ms
64 bytes from 8.8.8.8: seq=40 ttl=118 time=33.282 ms
64 bytes from 8.8.8.8: seq=41 ttl=118 time=29.609 ms
64 bytes from 8.8.8.8: seq=42 ttl=118 time=35.253 ms
64 bytes from 8.8.8.8: seq=43 ttl=118 time=26.203 ms
64 bytes from 8.8.8.8: seq=44 ttl=118 time=24.460 ms
64 bytes from 8.8.8.8: seq=45 ttl=118 time=34.951 ms
64 bytes from 8.8.8.8: seq=46 ttl=118 time=32.710 ms
64 bytes from 8.8.8.8: seq=47 ttl=118 time=43.971 ms
64 bytes from 8.8.8.8: seq=48 ttl=118 time=32.358 ms
64 bytes from 8.8.8.8: seq=49 ttl=118 time=42.026 ms
64 bytes from 8.8.8.8: seq=50 ttl=118 time=46.989 ms
64 bytes from 8.8.8.8: seq=51 ttl=118 time=31.170 ms
64 bytes from 8.8.8.8: seq=52 ttl=118 time=31.339 ms
64 bytes from 8.8.8.8: seq=53 ttl=118 time=39.229 ms
64 bytes from 8.8.8.8: seq=54 ttl=118 time=29.533 ms
64 bytes from 8.8.8.8: seq=55 ttl=118 time=28.301 ms
64 bytes from 8.8.8.8: seq=56 ttl=118 time=28.478 ms
64 bytes from 8.8.8.8: seq=57 ttl=118 time=35.035 ms
64 bytes from 8.8.8.8: seq=58 ttl=118 time=35.673 ms
64 bytes from 8.8.8.8: seq=59 ttl=118 time=26.101 ms
64 bytes from 8.8.8.8: seq=60 ttl=118 time=25.987 ms
64 bytes from 8.8.8.8: seq=61 ttl=118 time=36.049 ms
64 bytes from 8.8.8.8: seq=62 ttl=118 time=34.654 ms
64 bytes from 8.8.8.8: seq=63 ttl=118 time=33.989 ms
64 bytes from 8.8.8.8: seq=64 ttl=118 time=34.397 ms
64 bytes from 8.8.8.8: seq=65 ttl=118 time=32.026 ms
64 bytes from 8.8.8.8: seq=66 ttl=118 time=32.240 ms
64 bytes from 8.8.8.8: seq=67 ttl=118 time=33.021 ms
64 bytes from 8.8.8.8: seq=68 ttl=118 time=30.946 ms
64 bytes from 8.8.8.8: seq=69 ttl=118 time=67.591 ms
64 bytes from 8.8.8.8: seq=70 ttl=118 time=29.318 ms
64 bytes from 8.8.8.8: seq=71 ttl=118 time=30.396 ms
64 bytes from 8.8.8.8: seq=72 ttl=118 time=29.926 ms
64 bytes from 8.8.8.8: seq=73 ttl=118 time=37.531 ms
64 bytes from 8.8.8.8: seq=74 ttl=118 time=28.033 ms
64 bytes from 8.8.8.8: seq=75 ttl=118 time=44.236 ms
64 bytes from 8.8.8.8: seq=76 ttl=118 time=37.533 ms
64 bytes from 8.8.8.8: seq=77 ttl=118 time=26.321 ms
64 bytes from 8.8.8.8: seq=78 ttl=118 time=26.701 ms
64 bytes from 8.8.8.8: seq=79 ttl=118 time=26.682 ms
64 bytes from 8.8.8.8: seq=80 ttl=118 time=25.307 ms
64 bytes from 8.8.8.8: seq=81 ttl=118 time=35.678 ms
64 bytes from 8.8.8.8: seq=82 ttl=118 time=33.189 ms
64 bytes from 8.8.8.8: seq=83 ttl=118 time=32.158 ms
64 bytes from 8.8.8.8: seq=84 ttl=118 time=34.198 ms
64 bytes from 8.8.8.8: seq=85 ttl=118 time=23.615 ms
64 bytes from 8.8.8.8: seq=86 ttl=118 time=41.321 ms
64 bytes from 8.8.8.8: seq=87 ttl=118 time=40.714 ms
64 bytes from 8.8.8.8: seq=88 ttl=118 time=31.291 ms
64 bytes from 8.8.8.8: seq=89 ttl=118 time=30.288 ms
64 bytes from 8.8.8.8: seq=90 ttl=118 time=38.708 ms
64 bytes from 8.8.8.8: seq=91 ttl=118 time=29.427 ms
64 bytes from 8.8.8.8: seq=92 ttl=118 time=29.387 ms
64 bytes from 8.8.8.8: seq=93 ttl=118 time=28.947 ms
64 bytes from 8.8.8.8: seq=94 ttl=118 time=28.379 ms
64 bytes from 8.8.8.8: seq=95 ttl=118 time=27.792 ms
64 bytes from 8.8.8.8: seq=96 ttl=118 time=50.504 ms
64 bytes from 8.8.8.8: seq=97 ttl=118 time=26.638 ms
64 bytes from 8.8.8.8: seq=98 ttl=118 time=42.984 ms
64 bytes from 8.8.8.8: seq=99 ttl=118 time=25.275 ms
64 bytes from 8.8.8.8: seq=100 ttl=118 time=24.029 ms
64 bytes from 8.8.8.8: seq=101 ttl=118 time=42.407 ms
64 bytes from 8.8.8.8: seq=102 ttl=118 time=33.750 ms
64 bytes from 8.8.8.8: seq=103 ttl=118 time=140.313 ms
64 bytes from 8.8.8.8: seq=104 ttl=118 time=39.845 ms
64 bytes from 8.8.8.8: seq=105 ttl=118 time=40.238 ms
64 bytes from 8.8.8.8: seq=106 ttl=118 time=27.657 ms
64 bytes from 8.8.8.8: seq=107 ttl=118 time=56.781 ms
64 bytes from 8.8.8.8: seq=108 ttl=118 time=28.312 ms
64 bytes from 8.8.8.8: seq=109 ttl=118 time=38.231 ms
64 bytes from 8.8.8.8: seq=110 ttl=118 time=28.846 ms
64 bytes from 8.8.8.8: seq=111 ttl=118 time=40.802 ms
64 bytes from 8.8.8.8: seq=112 ttl=118 time=37.508 ms
64 bytes from 8.8.8.8: seq=113 ttl=118 time=27.267 ms
64 bytes from 8.8.8.8: seq=114 ttl=118 time=26.740 ms
64 bytes from 8.8.8.8: seq=115 ttl=118 time=26.465 ms
64 bytes from 8.8.8.8: seq=116 ttl=118 time=26.559 ms
64 bytes from 8.8.8.8: seq=117 ttl=118 time=35.584 ms
64 bytes from 8.8.8.8: seq=118 ttl=118 time=24.601 ms
64 bytes from 8.8.8.8: seq=119 ttl=118 time=24.866 ms
64 bytes from 8.8.8.8: seq=120 ttl=118 time=34.308 ms
64 bytes from 8.8.8.8: seq=121 ttl=118 time=41.933 ms
64 bytes from 8.8.8.8: seq=122 ttl=118 time=42.359 ms
64 bytes from 8.8.8.8: seq=123 ttl=118 time=32.743 ms
64 bytes from 8.8.8.8: seq=124 ttl=118 time=32.220 ms
64 bytes from 8.8.8.8: seq=125 ttl=118 time=30.096 ms
64 bytes from 8.8.8.8: seq=126 ttl=118 time=34.863 ms
64 bytes from 8.8.8.8: seq=127 ttl=118 time=29.758 ms
64 bytes from 8.8.8.8: seq=128 ttl=118 time=28.037 ms
64 bytes from 8.8.8.8: seq=129 ttl=118 time=29.293 ms
64 bytes from 8.8.8.8: seq=130 ttl=118 time=37.732 ms
64 bytes from 8.8.8.8: seq=131 ttl=118 time=30.999 ms
64 bytes from 8.8.8.8: seq=132 ttl=118 time=34.626 ms
64 bytes from 8.8.8.8: seq=133 ttl=118 time=34.234 ms
64 bytes from 8.8.8.8: seq=134 ttl=118 time=25.771 ms
64 bytes from 8.8.8.8: seq=135 ttl=118 time=25.655 ms
64 bytes from 8.8.8.8: seq=136 ttl=118 time=35.235 ms
64 bytes from 8.8.8.8: seq=137 ttl=118 time=41.940 ms
64 bytes from 8.8.8.8: seq=138 ttl=118 time=34.236 ms
64 bytes from 8.8.8.8: seq=139 ttl=118 time=32.441 ms
64 bytes from 8.8.8.8: seq=140 ttl=118 time=33.087 ms
64 bytes from 8.8.8.8: seq=141 ttl=118 time=39.557 ms
64 bytes from 8.8.8.8: seq=142 ttl=118 time=31.936 ms
64 bytes from 8.8.8.8: seq=143 ttl=118 time=30.645 ms
64 bytes from 8.8.8.8: seq=144 ttl=118 time=29.829 ms
64 bytes from 8.8.8.8: seq=145 ttl=118 time=29.285 ms
64 bytes from 8.8.8.8: seq=146 ttl=118 time=28.845 ms
64 bytes from 8.8.8.8: seq=147 ttl=118 time=28.355 ms
64 bytes from 8.8.8.8: seq=148 ttl=118 time=64.651 ms
64 bytes from 8.8.8.8: seq=149 ttl=118 time=28.053 ms
64 bytes from 8.8.8.8: seq=150 ttl=118 time=35.600 ms
64 bytes from 8.8.8.8: seq=151 ttl=118 time=26.892 ms
64 bytes from 8.8.8.8: seq=152 ttl=118 time=29.638 ms
64 bytes from 8.8.8.8: seq=153 ttl=118 time=34.983 ms
64 bytes from 8.8.8.8: seq=154 ttl=118 time=33.132 ms
64 bytes from 8.8.8.8: seq=155 ttl=118 time=23.769 ms
64 bytes from 8.8.8.8: seq=156 ttl=118 time=34.053 ms
64 bytes from 8.8.8.8: seq=157 ttl=118 time=31.706 ms
64 bytes from 8.8.8.8: seq=158 ttl=118 time=32.123 ms
64 bytes from 8.8.8.8: seq=159 ttl=118 time=32.578 ms
64 bytes from 8.8.8.8: seq=160 ttl=118 time=38.966 ms
64 bytes from 8.8.8.8: seq=161 ttl=118 time=30.788 ms
64 bytes from 8.8.8.8: seq=162 ttl=118 time=30.998 ms
64 bytes from 8.8.8.8: seq=163 ttl=118 time=30.385 ms
64 bytes from 8.8.8.8: seq=164 ttl=118 time=38.352 ms
64 bytes from 8.8.8.8: seq=165 ttl=118 time=44.486 ms
64 bytes from 8.8.8.8: seq=166 ttl=118 time=29.738 ms
64 bytes from 8.8.8.8: seq=167 ttl=118 time=27.598 ms
64 bytes from 8.8.8.8: seq=168 ttl=118 time=43.814 ms
64 bytes from 8.8.8.8: seq=169 ttl=118 time=23.603 ms
64 bytes from 8.8.8.8: seq=170 ttl=118 time=26.718 ms
64 bytes from 8.8.8.8: seq=171 ttl=118 time=25.322 ms
64 bytes from 8.8.8.8: seq=172 ttl=118 time=25.811 ms
64 bytes from 8.8.8.8: seq=173 ttl=118 time=24.804 ms
64 bytes from 8.8.8.8: seq=174 ttl=118 time=24.895 ms
64 bytes from 8.8.8.8: seq=175 ttl=118 time=26.754 ms
64 bytes from 8.8.8.8: seq=176 ttl=118 time=33.474 ms
64 bytes from 8.8.8.8: seq=177 ttl=118 time=41.817 ms
64 bytes from 8.8.8.8: seq=178 ttl=118 time=33.965 ms
64 bytes from 8.8.8.8: seq=179 ttl=118 time=31.791 ms
64 bytes from 8.8.8.8: seq=180 ttl=118 time=39.870 ms
64 bytes from 8.8.8.8: seq=181 ttl=118 time=34.689 ms
64 bytes from 8.8.8.8: seq=182 ttl=118 time=40.708 ms
64 bytes from 8.8.8.8: seq=183 ttl=118 time=29.382 ms
64 bytes from 8.8.8.8: seq=184 ttl=118 time=28.454 ms
64 bytes from 8.8.8.8: seq=185 ttl=118 time=28.558 ms
64 bytes from 8.8.8.8: seq=186 ttl=118 time=35.880 ms
64 bytes from 8.8.8.8: seq=187 ttl=118 time=28.190 ms
64 bytes from 8.8.8.8: seq=188 ttl=118 time=27.298 ms
64 bytes from 8.8.8.8: seq=189 ttl=118 time=34.398 ms
64 bytes from 8.8.8.8: seq=190 ttl=118 time=26.506 ms
64 bytes from 8.8.8.8: seq=191 ttl=118 time=27.116 ms
64 bytes from 8.8.8.8: seq=192 ttl=118 time=24.408 ms
64 bytes from 8.8.8.8: seq=193 ttl=118 time=25.257 ms
64 bytes from 8.8.8.8: seq=194 ttl=118 time=24.552 ms
64 bytes from 8.8.8.8: seq=195 ttl=118 time=33.350 ms
64 bytes from 8.8.8.8: seq=196 ttl=118 time=41.832 ms
64 bytes from 8.8.8.8: seq=197 ttl=118 time=41.305 ms
64 bytes from 8.8.8.8: seq=198 ttl=118 time=40.743 ms
64 bytes from 8.8.8.8: seq=199 ttl=118 time=38.828 ms
64 bytes from 8.8.8.8: seq=200 ttl=118 time=38.660 ms
64 bytes from 8.8.8.8: seq=201 ttl=118 time=30.111 ms
64 bytes from 8.8.8.8: seq=202 ttl=118 time=38.976 ms
64 bytes from 8.8.8.8: seq=203 ttl=118 time=39.022 ms
64 bytes from 8.8.8.8: seq=204 ttl=118 time=28.342 ms
64 bytes from 8.8.8.8: seq=205 ttl=118 time=36.024 ms
64 bytes from 8.8.8.8: seq=206 ttl=118 time=36.681 ms
64 bytes from 8.8.8.8: seq=207 ttl=118 time=35.966 ms
64 bytes from 8.8.8.8: seq=208 ttl=118 time=37.420 ms
64 bytes from 8.8.8.8: seq=209 ttl=118 time=26.807 ms
64 bytes from 8.8.8.8: seq=210 ttl=118 time=34.737 ms
64 bytes from 8.8.8.8: seq=211 ttl=118 time=33.080 ms
64 bytes from 8.8.8.8: seq=212 ttl=118 time=33.757 ms
64 bytes from 8.8.8.8: seq=213 ttl=118 time=23.640 ms
64 bytes from 8.8.8.8: seq=214 ttl=118 time=23.706 ms
64 bytes from 8.8.8.8: seq=215 ttl=118 time=33.634 ms
64 bytes from 8.8.8.8: seq=216 ttl=118 time=21.474 ms
64 bytes from 8.8.8.8: seq=217 ttl=118 time=32.466 ms
64 bytes from 8.8.8.8: seq=218 ttl=118 time=31.625 ms
64 bytes from 8.8.8.8: seq=219 ttl=118 time=30.968 ms
64 bytes from 8.8.8.8: seq=220 ttl=118 time=29.756 ms
64 bytes from 8.8.8.8: seq=221 ttl=118 time=29.992 ms
64 bytes from 8.8.8.8: seq=222 ttl=118 time=39.335 ms
64 bytes from 8.8.8.8: seq=223 ttl=118 time=28.906 ms
64 bytes from 8.8.8.8: seq=224 ttl=118 time=29.525 ms
64 bytes from 8.8.8.8: seq=225 ttl=118 time=27.107 ms
64 bytes from 8.8.8.8: seq=226 ttl=118 time=26.588 ms
64 bytes from 8.8.8.8: seq=227 ttl=118 time=38.865 ms
64 bytes from 8.8.8.8: seq=228 ttl=118 time=26.362 ms
64 bytes from 8.8.8.8: seq=229 ttl=118 time=25.904 ms
64 bytes from 8.8.8.8: seq=230 ttl=118 time=24.445 ms
64 bytes from 8.8.8.8: seq=231 ttl=118 time=35.245 ms
64 bytes from 8.8.8.8: seq=232 ttl=118 time=34.038 ms
64 bytes from 8.8.8.8: seq=233 ttl=118 time=31.250 ms
64 bytes from 8.8.8.8: seq=234 ttl=118 time=32.626 ms
64 bytes from 8.8.8.8: seq=235 ttl=118 time=33.193 ms
64 bytes from 8.8.8.8: seq=236 ttl=118 time=30.037 ms
64 bytes from 8.8.8.8: seq=237 ttl=118 time=39.005 ms
64 bytes from 8.8.8.8: seq=238 ttl=118 time=48.881 ms
64 bytes from 8.8.8.8: seq=239 ttl=118 time=37.822 ms
64 bytes from 8.8.8.8: seq=240 ttl=118 time=29.647 ms
64 bytes from 8.8.8.8: seq=241 ttl=118 time=30.013 ms
Please allow me to add some details regarding ping communication.
We are establishing communication between a sensor equipped with WP7605 and a server that remotely controls it.
Recently, we updated the firmware from Rev.13.3 to Rev.17.
After starting WP7606, we executed the “cm data connect” command via the internal program’s legato command.
As a result, the sensor enters a state where the LTE communication connection is established (i.e., the IP address is correctly assigned).
Subsequently, we confirmed ping responses from the remote server to the sensor, but after about 2 seconds, the ping responses cease.
With Rev.13.3, the remote server consistently received ping responses.
[Question]
Has the WP7605 ping response specification been changed to stop after the connection is established?
As mentioned above, i don’t see such problem
So i assume there is no specification changed on ping operation
Is this related specific sim card or network operator?
Hi, jyijyi-san.
Please allow me to provide answers and questions related to the above thread.
I work with fujimitsu-san.
[Answer]
This is not specific to any particular SIM card or carrier.
For Japanese carriers, I tested docomo and KDDI.
I tried changing carriers, but the behavior remained the same.
[Prerequisite]
I used the iptables command to change the ping response settings.
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables-save > /etc/iptables/rules.v4
Question 2
Are any settings other than the above necessary to configure ping response?
Question 3
Rev.17 includes significant improvements addressing security vulnerabilities.
Could this be affecting ping response?
Please allow me to add a note.
Rev17 pings do not fail completely.
Other TCP/UDP communications work, and while it’s unclear if TCP/UDP triggers it, ping responses can suddenly start working.
When response times are slow, Rev.13 responds within 1000ms, while Rev.17 takes over 40000ms to respond.
When response times are fast, both respond within 100ms.
if UDP works, will you consider using “UDP ping”?
e.g.
- on the Ubuntu PC server side, type “nc -u -l 12345”
- download the nc binary here: android-binaries/nc at master · jakev/android-binaries · GitHub
- use scp to transfer to module
- on module side, type “chmod 777 ./nc”
- On the module side, type the following:
root@swi-mdm9x28-wp:~# ./nc -zv -u 192.168.2.3 12345
192.168.2.3: inverse host lookup failed: Host name lookup failure
(UNKNOWN) [192.168.2.3] 12345 (?) open
Due to system configuration, I need to use Ping and would like to ask about Ping responses.
As far as I’ve confirmed, even with Rev.17 firmware, Ping does respond,
but when in suspend mode, interrupts related to Ping responses appear to be restricted.
In the situation I observed, when the control server sends a Ping to a sensor with Rev17 firmware,
it does not respond. Ping responses suddenly start when the device wakes from suspend mode.
Therefore, I suspect ICMP is disabled during suspend mode.
Suspend mode is configured as follows:
[Configuration]
system(“echo 5000 > /sys/devices/platform/78af000.uart/power/autosuspend_delay_ms &”);
This configures the UART to suspend if no data is received for 5 seconds.
To prevent suspension, setting “-1” disables suspend mode.
After entering suspend mode, a timer process is issued to ensure suspend mode lasts for the specified duration.
le_timer_Ref_t timerRef = le_timer_Create(timerName);
le_timer_SetInterval(timerRef, interval);
le_timer_SetRepeat(timerRef, 1);
le_timer_SetHandler(timerRef, handlerFunc);
[Question]
What settings are required to make the sensor respond to a ping while in suspend mode?
Linux settings like iptables had no effect.
i saw your le_timer_SetRepeat() has only set one time only, so it is only one-shot timer
Didn’t you should use periodic timer to check if there is any incoming traffic?
You might also need to run a wakeup_app.rar to make the module stay awake for a while after the timer has waken up the module from sleep mode:
Btw, if you use tcp or udp, will it help to wake up the module?
You can also try the flag WAKEHOSTEN in AT!CUSTOM? to see if the WAKE_ON_WAN pin is toggled for incoming traffic.
Thank you for your response.
I don’t see any particular issues with how the one-shot timer is being used.
While switching to a periodic timer would allow the module to wake up more frequently, I believe it would increase power consumption.
I want to keep power consumption low while still enabling ping responses at arbitrary times.
In Rev.13.3.1, ping responses were possible while using the one-shot timer. Since upgrading to Rev.17, the response has become very poor.
Regarding whether TCP or UDP could help with wake-up: it was effective in Rev.13.3.1, but not in Rev.17.
I would like to try WAKEHOSTEN, but I cannot verify it because I cannot use the WAKE_ON_WAN pin.
Compared to Rev.13.3.1, Rev.17 exhibits a stronger suspension mode effect, so I expect ICMP to not respond. Is there any setting to weaken the suspension mode effect? Could this be due to the Linux kernel version upgrade? If there are any settings to try, not limited to Legato but also general Linux settings, please advise.
Then does the perioidic timer help in release 17?
If you enable edrx mode in at+cderxs, will there be any improvement?
I found that this could be a regression bug in FW R17.
Below is the test I have done:
The following procedure works in WP76 module with FW R16.3:
-
connect USB port to a linux PC (do no connect to Windows PC or the TCP setup below in WP76 module might not work)
-
transfer nc binary to module’s /home/root folder
-
In UART console, estabalish the data connection and check the public IP address by the following:
cm data connect &
cm data
- In UART console, type the following command:
chmod 777 /home/root/nc
iptables -I INPUT -j ACCEPT
/home/root/nc -l -p 5049
- in PC, start TCP client to the public IP address with port 5049, and it should be able to connect to the TCP server of WP76 module
- now physically disconnect the USB cable from Linux PC
- UART console should not be able to send TCP data to peer side as module goes to sleep mode
- now send some TCP data from your TCP client in step 5, UART console of WP76 module can display your data, this means the incoming data traffic will wake up the module and display the TCP data in UART
With firmware R17 or R17.1, it is not OK to wake up WP76 module from sleep mode for incoming data traffic in step 8 above.
I have reported this bug internally.
Thank you for confirming the suspend state.
Since this may also relate to ping response, please let us know once a policy is decided regarding bug fixes.
Also, when running on Rev.17 firmware, has the power consumption during transmission and reception increased compared to Rev.13.3.1?
We are still investigating, but when we implemented the same legato application on Rev.13.3.1 and Rev.17 and ran them in communication, battery consumption increased by over 10%.
If you know anything about power consumption, we would appreciate your input.
Does enabling edrx mode help on the power consumption?
Btw, have you reported this to the distributor?
I haven’t tried edrx mode yet. I’ll check it out.
I’ll contact distributor.
Btw, to investigate if your legato app increases the battery consumption, you can use the nc binary and see how is the power consumption in firmware r17:
Please see if this one-line modification in drivers/soc/qcom/smsm.c (around line 418) in R17 can bring improvement on this issue:
static int smsm_inbound_entry(struct qcom_smsm *smsm,
struct smsm_entry *entry,
struct device_node *node)
{
int ret;
smsm->irq = irq_of_parse_and_map(node, 0);
if (!smsm->irq) {
dev_err(smsm->dev, "failed to parse smsm interrupt\n");
return -EINVAL;
}
ret = devm_request_threaded_irq(smsm->dev, smsm->irq,
NULL, smsm_intr,
IRQF_ONESHOT,
"smsm", (void *)entry);
if (ret) {
dev_err(smsm->dev, "failed to request interrupt\n");
return ret;
}
//Add this line for the fix
enable_irq_wake(smsm->irq);
entry->domain = irq_domain_add_linear(node, 32, &smsm_irq_ops, entry);
if (!entry->domain) {
dev_err(smsm->dev, "failed to add irq_domain\n");
return -ENOMEM;
}
return 0;
}
my test shows that with the new yocto image in FW R17.1, the incoming TCP data can wake up module in sleep mode.