<div dir="ltr"><div>Aleksander,</div><div><br></div><div>I ran the code a few thousand times for connecting -> data connection -> disconnect through our CI suite. That looks good. However I did find during a better manual testing that if you remove the SIM while a data connection is up the dbus API isn't updated with the disconnect event.</div><div><br></div><div>In:</div><div>   swwan_check_status_ready()</div><div>         ....</div><div>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span>response<span style="color:rgb(192,192,192)"> </span>=<span style="color:rgb(192,192,192)"> </span>mm_base_modem_at_command_finish<span style="color:rgb(192,192,192)"> </span>(modem,<span style="color:rgb(192,192,192)"> </span>res,<span style="color:rgb(192,192,192)"> </span>&error);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,128,0)">if</span><span style="color:rgb(192,192,192)"> </span>(!response)<span style="color:rgb(192,192,192)"> </span>{</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">        </span>g_task_return_error<span style="color:rgb(192,192,192)"> </span>(task,<span style="color:rgb(192,192,192)"> </span>error);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">        </span><span style="color:rgb(128,128,0)">goto</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(128,0,0)">out</span>;</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span>}</pre></div><div><br></div><div>We fall into this and exit without updating the status. I think it should be:</div><div>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">        </span>g_task_return_int<span style="color:rgb(192,192,192)"> </span>(task,<span style="color:rgb(192,192,192)"> </span>(gssize)<span style="color:rgb(192,192,192)"> </span><span style="color:rgb(128,0,128)">MM_BEARER_CONNECTION_STATUS_DISCONNECTED</span>);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre></div><div> <br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px">I have no idea how that could happen.</span></blockquote><div><br></div><div>Test weird ways, get weird problems lol. I tracked this down to the very weird way I tested, which wasn't valid in the end so disregard. </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px">In which step do you get the "unspecified gprs error"?</span></blockquote><div><br></div><div>Not in a step but in a setup, using non-OEM SIMs. The guy's at Cinterion told us to try and set this value manually based on the ICCID :0, yikes. This is only really a problem for USA users using non-OEM SIMs, so it may not be a problem that needs to be solved. I.E. we will have to since we have custom SIMs for both Ver & AT&T, but the main MM user's may never run into this. I guess knowing that do you think it's important to figure out something in the MM scope or should it just be handled on it's own by users in this corner case?</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px">We don't have API members for over-temp or voltage info</span><br></blockquote><div>It was just putting it in logs so we would know for field failures. Nothing special. </div><div><br></div><div><br></div><div>Other than that this looks solid. Exciting times!</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Dec 20, 2016 at 4:08 AM, Aleksander Morgado <span dir="ltr"><<a href="mailto:aleksander@aleksander.es" target="_blank">aleksander@aleksander.es</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hey!<br>
<br>
On Sat, Dec 17, 2016 at 5:19 PM, matthew stanger <<a href="mailto:stangerm2@gmail.com">stangerm2@gmail.com</a>> wrote:<br>
> Sorry for the slowness,<br>
><br>
<br>
No worries.<br>
<span class=""><br>
> I'm going to be grid-locked for the next 5 weeks due to personal commitments<br>
> so I'll be slow :( , very sorry. Code wise everything looks good, maybe I'd<br>
> take out the goto's for if/else and remove the unused<br>
> mm_bb_b_cinterion_init() function, but that's trivial opinion. A few things<br>
> I found.<br>
><br>
<br>
</span>gotos are really fine for error exits; I wouldn't be scared of them :)<br>
<br>
And if I'm not mistaken mm_broadband_bearer_cinterion_<wbr>init() is<br>
actually required by the GObject system even if empty.<br>
<span class=""><br>
> When I dropped the data ports we still still go into the SWWAN logic. I was<br>
> trying to simulate another non-PLS8 modem, though this may be a little<br>
> improper... In mm-bb-modem-cinterion.c, cinterion_modem_create_bearer(<wbr>)<br>
> hit's the 'no data port is available' logic and then flag's SWWAN as 'not<br>
> supported'. It then creates a MM_BROADBAND_MODEM instead of the CINTERION<br>
> bearer but continues into the SWWAN setup logic. I worry this may not<br>
> support other Cinterion modem correctly because of this. I'll diver deeper<br>
> and provide more detailed findings, with a PXS8 when I can track it down,<br>
> shortly but just wanted to flag it as something weird I saw.<br>
><br>
<br>
</span>I have no idea how that could happen. The Cinterion bearer is created<br>
only when SWWAN is supported and there is a net port. If any of those<br>
things doesn't happen we create a generic bearer, which doesn't have<br>
any "swwan setup logic". What do you mean with "but continues into the<br>
SWWAN setup logic"?<br>
<br>
I've tested the plugin with a Cinterion EGS5 (AT+PPP only) and it<br>
worked correctly:<br>
<br>
ModemManager[26454]: <info>  [1482231115.463363]<br>
[mm-iface-modem-simple.c:469] connection_step(): Simple connect state<br>
(4/8): Wait to get fully enabled<br>
ModemManager[26454]: <info>  [1482231115.463384]<br>
[mm-iface-modem-simple.c:478] connection_step(): Simple connect state<br>
(5/8): Register<br>
ModemManager[26454]: <debug> [1482231115.463406]<br>
[mm-iface-modem-3gpp.c:437] mm_iface_modem_3gpp_register_<wbr>in_network():<br>
Already registered in network '21401', automatic registration not<br>
launched...<br>
ModemManager[26454]: <info>  [1482231115.463429]<br>
[mm-iface-modem-simple.c:501] connection_step(): Simple connect state<br>
(6/8): Bearer<br>
ModemManager[26454]: <debug> [1482231115.463441]<br>
[mm-iface-modem-simple.c:521] connection_step(): Creating new<br>
bearer...<br>
ModemManager[26454]: <debug> [1482231115.463455]<br>
[cinterion/mm-broadband-modem-<wbr>cinterion.c:1802]<br>
cinterion_modem_create_bearer(<wbr>): skipping ^SWWAN check as no data port<br>
is available<br>
ModemManager[26454]: <debug> [1482231115.463464]<br>
[cinterion/mm-broadband-modem-<wbr>cinterion.c:1740]<br>
common_create_bearer(): ^SWWAN not supported, creating default<br>
bearer...<br>
ModemManager[26454]: <debug> [1482231115.463586]<br>
[mm-port-serial.c:1288] mm_port_serial_open(): (ttyACM0) device open<br>
count is 2 (open)<br>
ModemManager[26454]: <debug> [1482231115.463604]<br>
[mm-port-serial.c:1345] _close_internal(): (ttyACM0) device open count<br>
is 1 (close)<br>
ModemManager[26454]: <debug> [1482231115.463641]<br>
[cinterion/mm-broadband-modem-<wbr>cinterion.c:1699]<br>
cinterion_modem_create_bearer_<wbr>finish(): New bearer created at DBus<br>
path '/org/freedesktop/<wbr>ModemManager1/Bearer/1'<br>
ModemManager[26454]: <info>  [1482231115.463725]<br>
[mm-iface-modem-simple.c:583] connection_step(): Simple connect state<br>
(7/8): Connect<br>
ModemManager[26454]: <debug> [1482231115.463741]<br>
[mm-base-bearer.c:801] mm_base_bearer_connect(): Connecting bearer<br>
'/org/freedesktop/<wbr>ModemManager1/Bearer/1'<br>
ModemManager[26454]: <info>  [1482231115.463758]<br>
[mm-iface-modem.c:1431] __iface_modem_update_state_<wbr>internal(): Modem<br>
/org/freedesktop/<wbr>ModemManager1/Modem/1: state changed (registered -><br>
connecting)<br>
ModemManager[26454]: <debug> [1482231115.463876]<br>
[mm-broadband-bearer.c:1342] connect(): Launching 3GPP connection<br>
attempt with APN '<a href="http://ac.vodafone.es" rel="noreferrer" target="_blank">ac.vodafone.es</a>'<br>
ModemManager[26454]: <debug> [1482231115.463893]<br>
[mm-broadband-bearer.c:951] cid_selection_3gpp(): Looking for best<br>
CID...<br>
ModemManager[26454]: <debug> [1482231115.463907]<br>
[mm-port-serial.c:1288] mm_port_serial_open(): (ttyACM0) device open<br>
count is 2 (open)<br>
ModemManager[26454]: <debug> [1482231115.463931]<br>
[mm-port-serial-at.c:459] debug_log(): (ttyACM0): --><br>
'AT+CGDCONT?<CR>'<br>
ModemManager[26454]: <debug> [1482231115.481730]<br>
[mm-port-serial-at.c:459] debug_log(): (ttyACM0): <--<br>
'<CR><LF>OK<CR><LF>'<br>
ModemManager[26454]: <debug> [1482231115.481798]<br>
[mm-broadband-bearer.c:859] parse_pdp_list(): No PDP contexts found<br>
ModemManager[26454]: <debug> [1482231115.481869]<br>
[mm-broadband-bearer.c:793] parse_cid_range(): Using empty CID 1 with<br>
PDP type 'ipv4'<br>
ModemManager[26454]: <debug> [1482231115.481894]<br>
[mm-port-serial.c:1288] mm_port_serial_open(): (ttyACM0) device open<br>
count is 3 (open)<br>
ModemManager[26454]: <debug> [1482231115.481916]<br>
[mm-port-serial.c:1345] _close_internal(): (ttyACM0) device open count<br>
is 2 (close)<br>
ModemManager[26454]: <debug> [1482231115.481934]<br>
[mm-port-serial-at.c:459] debug_log(): (ttyACM0): --><br>
'AT+CGDCONT=1,"IP","<a href="http://ac.vodafone.es" rel="noreferrer" target="_blank">ac.<wbr>vodafone.es</a>"<CR>'<br>
ModemManager[26454]: <debug> [1482231115.525883]<br>
[mm-port-serial-at.c:459] debug_log(): (ttyACM0): <--<br>
'<CR><LF>OK<CR><LF>'<br>
ModemManager[26454]: <debug> [1482231115.525988]<br>
[mm-port-serial.c:1288] mm_port_serial_open(): (ttyACM0) device open<br>
count is 3 (open)<br>
ModemManager[26454]: <debug> [1482231115.526016]<br>
[mm-broadband-bearer.c:222] common_get_at_data_port(): Connection<br>
through a plain serial AT port (ttyACM0)<br>
ModemManager[26454]: <debug> [1482231115.526051]<br>
[mm-port-serial.c:1288] mm_port_serial_open(): (ttyACM0) device open<br>
count is 4 (open)<br>
ModemManager[26454]: <debug> [1482231115.526083]<br>
[mm-port-serial.c:1345] _close_internal(): (ttyACM0) device open count<br>
is 3 (close)<br>
ModemManager[26454]: <debug> [1482231115.526112]<br>
[mm-port-serial-at.c:459] debug_log(): (ttyACM0): --><br>
'ATD*99***1#<CR>'<br>
ModemManager[26454]: <debug> [1482231116.994385]<br>
[mm-port-serial-at.c:459] debug_log(): (ttyACM0): <--<br>
'<CR><LF>CONNECT<CR><LF>'<br>
ModemManager[26454]: <debug> [1482231116.994536]<br>
[mm-port-serial.c:1345] _close_internal(): (ttyACM0) device open count<br>
is 2 (close)<br>
ModemManager[26454]: <debug> [1482231116.994598] [mm-port.c:94]<br>
mm_port_set_connected(): (ttyACM0): port now connected<br>
ModemManager[26454]: <debug> [1482231116.994636]<br>
[mm-base-bearer.c:699] connect_ready(): Connected bearer<br>
'/org/freedesktop/<wbr>ModemManager1/Bearer/1'<br>
ModemManager[26454]: <info>  [1482231116.994821]<br>
[mm-iface-modem.c:1431] __iface_modem_update_state_<wbr>internal(): Modem<br>
/org/freedesktop/<wbr>ModemManager1/Modem/1: state changed (connecting -><br>
connected)<br>
ModemManager[26454]: <info>  [1482231116.995127]<br>
[mm-iface-modem-simple.c:602] connection_step(): Simple connect state<br>
(8/8): All done<br>
<br>
I've also tested it with a PHS8-P but that runs by default in QMI mode<br>
so unrelated.<br>
<div><div class="h5"><br>
> Next I see that we don't always use cid:3. When testing a bad apn I saw<br>
> (mmcli -m 0 --simple-connect="apn=<wbr>meemememememe"):<br>
> ModemManager[1164]: <debug> [1481990310.650108] [mm-broadband-bearer.c:867]<br>
> parse_pdp_list(): Found '8' PDP contexts<br>
> ModemManager[1164]: <debug> [1481990310.650120] [mm-broadband-bearer.c:876]<br>
> parse_pdp_list():   PDP context [cid=1] [type='ipv4'] [apn='twetwetwet']<br>
> ModemManager[1164]: <debug> [1481990310.650126] [mm-broadband-bearer.c:876]<br>
> parse_pdp_list():   PDP context [cid=2] [type='ipv4'] [apn='internet']<br>
> ModemManager[1164]: <debug> [1481990310.650132] [mm-broadband-bearer.c:876]<br>
> parse_pdp_list():   PDP context [cid=3] [type='ipv4']<br>
> [apn='<a href="http://proxy.trimble.com" rel="noreferrer" target="_blank">proxy.trimble.com</a>']<br>
> ModemManager[1164]: <debug> [1481990310.650138] [mm-broadband-bearer.c:876]<br>
> parse_pdp_list():   PDP context [cid=4] [type='ipv4'] [apn='proxy']<br>
> ModemManager[1164]: <debug> [1481990310.650145] [mm-broadband-bearer.c:876]<br>
> parse_pdp_list():   PDP context [cid=5] [type='ipv4v6']<br>
> [apn='<a href="http://apn.trimble.com" rel="noreferrer" target="_blank">apn.trimble.com</a>']<br>
> ModemManager[1164]: <debug> [1481990310.650152] [mm-broadband-bearer.c:876]<br>
> parse_pdp_list():   PDP context [cid=6] [type='ipv4']<br>
> [apn='<a href="http://apn.trimble.com" rel="noreferrer" target="_blank">apn.trimble.com</a>']<br>
> ModemManager[1164]: <debug> [1481990310.650158] [mm-broadband-bearer.c:876]<br>
> parse_pdp_list():   PDP context [cid=7] [type='ipv6']<br>
> [apn='<a href="http://apn.trimble.com" rel="noreferrer" target="_blank">apn.trimble.com</a>']<br>
> ModemManager[1164]: <debug> [1481990310.650164] [mm-broadband-bearer.c:876]<br>
> parse_pdp_list():   PDP context [cid=8] [type='ipv4'] [apn='meemememememe']<br>
> ModemManager[1164]: <debug> [1481990310.650171] [mm-broadband-bearer.c:901]<br>
> parse_pdp_list(): Found PDP context with CID 8 and PDP type ipv4 for APN<br>
> 'meemememememe'<br>
><br>
> I then hard power cycle the modem, kill and restart MM and it goes back to<br>
> cid=3. I'm thinking this may be desired logic but wanted to confirm if bad<br>
> APN's cause this?<br>
><br>
<br>
</div></div>If you're trying to connect to an APN which already exists in the list<br>
of APNs stored, then you'll re-use the CID. If you're connecting to a<br>
new APN, then we'll try to create a new PDP context on another CID.<br>
<span class=""><br>
> Before merging I was wondering how you want to handle these things which I<br>
> have solved in other branches but was waiting to solidify the core stuff we<br>
> have here. I'm not sure if they should be part of this or wait until this is<br>
> done and then add the features on. They are:<br>
><br>
> Some SIM's flat out do not work and return 'unspecified gprs error' on the<br>
> PLS8-X only. This is due to the modem supporting the Verizon carrier here<br>
> and the Auto SIM detection of the modem. Cinterions's recommendation is to<br>
> issue ''AT^SCFG=”MEopMode/Prov/Cfg”,<wbr>”1” for non-Verizon SIMs and<br>
> ''AT^SCFG=”MEopMode/Prov/Cfg”,<wbr>”2” for Verizon SIMs. Icky I know, but it<br>
> hit's this issue when you leave it set to '0' auto mode pretty often. Right<br>
> now I think I was just init-ing it to '1' and waiting to figure out how to<br>
> set it back to 2 for Verizon use cases.<br>
<br>
</span>In which step do you get the "unspecified gprs error"?<br>
Could you ask them more clarification of what each of those Cfg values does?<br>
<span class=""><br>
> GPS has all new cmd's. I'm assuming this will be a different branch though.<br>
<br>
</span>Yes, different branch please :)<br>
<span class=""><br>
> URC's, I had some stuff for over-temp/voltage added and also think I had<br>
> made a stab at switching over the updating from using a polled SIND cmd to<br>
> grabbing all the SIND/psinfo from it's URC.<br>
><br>
<br>
</span>We don't have API members for over-temp or voltage info; although we<br>
could add them definitely. Suggestions of API updates welcome :)<br>
<span class=""><br>
><br>
> At the start of this upcoming work week I have some time to really do a<br>
> through combing and run it through our automated suite. I'll report back in<br>
> a few more days and self address some of this stuff above and provide any<br>
> more findings. I didn't want to seem like I was ignoring this email :)<br>
><br>
<br>
</span>Thanks for doing this :)<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Aleksander<br>
<a href="https://aleksander.es" rel="noreferrer" target="_blank">https://aleksander.es</a><br>
</font></span></blockquote></div><br></div>