Hi Denis,
Thanks for your answer, I have used at_util_sim_state_query_new() like
in plugins/zte.c, and it works, CPIN? responds READY.
But when I launch active-context script, I see that I get an IP address
but I lost it right after. I have try to understand the code but I don't
know why sw_gprs_deactivate_primary() is called, and why after
ofono_netreg_status_notify() is called periodically.
Here is a part of the log I obtain :
# ./create-internet-context ofnew.fr
ofonod[775]: src/gprs.c:add_context() Registering new context
Created new context /sierra_6/context5
Setting APN to ofnew.fr
# ./activate-context
ofonod[775]: drivers/swmodem/gprs-context.c:sw_gprs_activate_primary()
cid 1
ofonod[775]: Modem: > AT+CGDCONT=1,"IP","ofnew.fr"\r
ofonod[775]: Modem: < \r\nOK\r\n
ofonod[775]: drivers/swmodem/gprs-context.c:at_cgdcont_cb() ok 1
ofonod[775]: Modem: > AT!SCACT=1,1\r
ofonod[775]: Modem: < \r\nOK\r\n
ofonod[775]: drivers/swmodem/gprs-context.c:at_scact_up_cb() ok 1
ofonod[775]: src/modem.c:get_modem_property() modem 0xf3988 property
NetworkInterface
ofonod[775]: src/gprs.c:pri_activate_callback() 0xfba38
ofonod[775]: Modem: > AT!SCPADDR=1\r
ofonod[775]: Modem: < \r\n!SCPADDR: 1,"10.32.202.200"\r\n\r\nOK\r\n
ofonod[775]: drivers/swmodem/gprs-context.c:sw_gprs_deactivate_primary()
cid 1
ofonod[775]: Modem: > AT!SCACT=0,1\r
# ofonod[775]: Modem: < \r\nOK\r\n\r\n+CGEV: ME DEACT IP, 10.32.202.200,
1\r\n
ofonod[775]: drivers/swmodem/gprs-context.c:at_scact_down_cb() ok 1
ofonod[775]: Modem: < \r\n+CREG:
1,"3808","0041F9A6",2\r\n\r\n+CGREG:
1,"3808","0041F9A6",2\r\n
ofonod[775]: src/network.c:ofono_netreg_status_notify() /sierra_6 status
1 tech 2
ofonod[775]: src/gprs.c:netreg_status_changed() 1
ofonod[775]: src/gprs.c:ofono_gprs_status_notify() /sierra_6 status 1
ofonod[775]: Modem: > AT+COPS=3,2\r
ofonod[775]: Modem: < \r\nOK\r\n
ofonod[775]: Modem: > AT+COPS?\r
ofonod[775]: Modem: < \r\n+COPS: 0,2,"20801",2\r\n\r\nOK\r\n
ofonod[775]: drivers/atmodem/network-registration.c:cops_numeric_cb()
Cops numeric got mcc: 208, mnc: 01
ofonod[775]: Modem: > AT+CIND?\r
ofonod[775]: Modem: < \r\n+CIND: 2,3,1,0,0,0,1,0\r\n\r\nOK\r\n
ofonod[775]: Modem: > AT+COPS=3,0\r
ofonod[775]: Modem: < \r\nOK\r\n
ofonod[775]: Modem: > AT+COPS?\r
ofonod[775]: Modem: < \r\n+COPS: 0,0,"Orange F",2\r\n\r\nOK\r\n
ofonod[775]: drivers/atmodem/network-registration.c:cops_cb() cops_cb:
Orange F, 208 01 2
ofonod[775]: src/network.c:current_operator_callback() 0xf5c70, 0xec778
ofonod[775]: Modem: < \r\n+CREG:
1,"3808","00417168",2\r\n\r\n+CGREG:
1,"3808","00417168",2\r\n
ofonod[775]: src/network.c:ofono_netreg_status_notify() /sierra_6 status
1 tech 2
ofonod[775]: src/gprs.c:netreg_status_changed() 1
ofonod[775]: src/gprs.c:ofono_gprs_status_notify() /sierra_6 status 1
ofonod[775]: Modem: > AT+COPS=3,2\r
ofonod[775]: Modem: < \r\nOK\r\n
ofonod[775]: Modem: > AT+COPS?\r
ofonod[775]: Modem: < \r\n+COPS: 0,2,"20801",2\r\n\r\nOK\r\n
ofonod[775]: drivers/atmodem/network-registration.c:cops_numeric_cb()
Cops numeric got mcc: 208, mnc: 01
ofonod[775]: Modem: > AT+CIND?\r
ofonod[775]: Modem: < \r\n+CIND: 2,3,1,0,0,0,1,0\r\n\r\nOK\r\n
ofonod[775]: Modem: > AT+COPS=3,0\r
ofonod[775]: Modem: < \r\nOK\r\n
ofonod[775]: Modem: > AT+COPS?\r
ofonod[775]: Modem: < \r\n+COPS: 0,0,"Orange F",2\r\n\r\nOK\r\n
ofonod[775]: drivers/atmodem/network-registration.c:cops_cb() cops_cb:
Orange F, 208 01 2
ofonod[775]: src/network.c:current_operator_callback() 0xf5c70, 0xec778
ofonod[775]: Modem: < \r\n+CREG:
1,"3808","0041F9A5",2\r\n\r\n+CGREG:
1,"3808","0041F9A5",2\r\n
ofonod[775]: src/network.c:ofono_netreg_status_notify() /sierra_6 status
1 tech 2
ofonod[775]: src/gprs.c:netreg_status_changed() 1
ofonod[775]: src/gprs.c:ofono_gprs_status_notify() /sierra_6 status 1
ofonod[775]: Modem: > AT+COPS=3,2\r
ofonod[775]: Modem: < \r\nOK\r\n
ofonod[775]: Modem: > AT+COPS?\r
ofonod[775]: Modem: < \r\n+COPS: 0,2,"20801",2\r\n\r\nOK\r\n
ofonod[775]: drivers/atmodem/network-registration.c:cops_numeric_cb()
Cops numeric got mcc: 208, mnc: 01
ofonod[775]: Modem: > AT+CIND?\r
ofonod[775]: Modem: < \r\n+CIND: 2,3,1,0,0,0,1,0\r\n\r\nOK\r\n
ofonod[775]: Modem: > AT+COPS=3,0\r
ofonod[775]: Modem: < \r\nOK\r\n
ofonod[775]: Modem: > AT+COPS?\r
ofonod[775]: Modem: < \r\n+COPS: 0,0,"Orange F",2\r\n\r\nOK\r\n
ofonod[775]: drivers/atmodem/network-registration.c:cops_cb() cops_cb:
Orange F, 208 01 2
ofonod[775]: src/network.c:current_operator_callback() 0xf5c70, 0xec778
Thanks for your help.
Simon
Le lundi 20 août 2012 à 08:20 -0500, Denis Kenzior a écrit :
Hi Simon,
On 08/20/2012 04:15 AM, Lemoine Simon wrote:
>> Hi,
>>
>> I'm trying to use a Sierra Wireless MC8092 card with Ofono on an
>> embedded system, but Ofono fail to setup the card because there are
>> only five interfaces ttyUSB0 to ttyUSB4.
>>
>> I have seen in function setup_sierra (plugins/udevng.c) that Ofono
>> expects to have a NetworkInterface on the interface 7.
>>
>> Does anybody know why the MC8092 doesn't have seven interfaces? Or
>> which of the five interfaces could be the NetworkInterface?
>
> It was because I haven't sierra_net driver in my kernel.
>
> Now ofono finds the Network interface as usb0.
> But I have an error with PIN authentication, and some AT commands return
> ERROR, here is a part of the log I obtain :
>
> ofonod[550]: plugins/udevng.c:setup_sierra() modem=/dev/ttyUSB3
> app=/dev/ttyUSB4 net=usb0 diag=/dev/ttyUSB1
> ofonod[550]: src/modem.c:set_modem_property() modem 0xf6e38 property
> Modem
> ofonod[550]: src/modem.c:set_modem_property() modem 0xf6e38 property App
> ofonod[550]: src/modem.c:set_modem_property() modem 0xf6e38 property
> Diag
> ofonod[550]: src/modem.c:set_modem_property() modem 0xf6e38 property
> NetworkInterface
> ofonod[550]: src/modem.c:ofono_modem_register() 0xf6e38
> ofonod[550]: plugins/sierra.c:sierra_probe() 0xf6e38
> ofonod[550]: src/modem.c:emit_modem_added() 0xf6e38
> ofonod[550]: src/modem.c:call_modemwatches() 0xf6e38 added:1
> ofonod[550]: plugins/hfp_ag.c:modem_watch() modem: 0xf6e38, added: 1
> ofonod[550]: plugins/dun_gw.c:modem_watch() modem: 0xf6e38, added: 1
> ofonod[550]: plugins/smart-messaging.c:modem_watch() modem: 0xf6e38,
> added: 1
> ofonod[550]: plugins/push-notification.c:modem_watch() modem: 0xf6e38,
> added: 1
> ofonod[550]: plugins/sierra.c:sierra_enable() 0xf6e38
> ofonod[550]: src/modem.c:get_modem_property() modem 0xf6e38 property
> Modem
> ofonod[550]: plugins/sierra.c:open_device() Modem /dev/ttyUSB3
> ofonod[550]: Modem:> ATE0&C0 +CMEE=1\r
> ofonod[550]: Modem:< ATE0&C0 +CMEE=1\r\r\nOK\r\n
> ofonod[550]: Modem:> AT+CFUN=4\r
> ofonod[550]: Modem:< \r\nOK\r\n
> ofonod[550]: plugins/sierra.c:cfun_enable()
> ofonod[550]: src/modem.c:modem_change_state() old state: 0, new state: 1
> ofonod[550]: plugins/sierra.c:sierra_pre_sim() 0xf6e38
> ofonod[550]: Modem:> AT+GCAP\r
> ofonod[550]: src/sim.c:ofono_sim_add_state_watch() 0xf6408
> ofonod[550]: src/sim.c:ofono_sim_add_state_watch() 0xf6408
> ofonod[550]: src/sim.c:ofono_sim_add_state_watch() 0xf6408
> ofonod[550]: Modem:< \r\n+GCAP: +CGSM,+DS,+ES\r\n\r\nOK\r\n
> ofonod[550]: Modem:> AT+CRSM=192,12258,0,0,255\r
> ofonod[550]: Modem:< \r\n+CME ERROR: 3\r\n
CME ERROR 3 means 'Operation not allowed'.
> ofonod[550]: Modem:> AT+CGMI\r
> ofonod[550]: Modem:< \r\nSierra Wireless, Incorporated\r\n\r\nOK\r\n
> ofonod[550]: Modem:> AT+CRSM=192,28421,0,0,255\r
> ofonod[550]: Modem:< \r\n+CME ERROR: 3\r\n
> ofonod[550]: Modem:> AT+CGMM\r
> ofonod[550]: Modem:< \r\nMC8092\r\n\r\nOK\r\n
> ofonod[550]: Modem:> AT+CRSM=192,12037,0,0,255\r
> ofonod[550]: Modem:< \r\n+CME ERROR: 3\r\n
> ofonod[550]: Modem:> AT+CGMR\r
> ofonod[550]: Modem:< \r\nP1_0_0_8AP R1338 CNHKGDKCE01 2011/10/21
> 09:21:31\r\n\r\nOK\r\n
> ofonod[550]: Modem:> AT+CPIN?\r
> ofonod[550]: Modem:< \r\n+CME ERROR: 14\r\n
And this means 'Sim Busy'
> ofonod[550]: Querying PIN authentication state failed
> ofonod[550]: Modem:> AT+CGSN\r
> ofonod[550]: Modem:< \r\n351516050021187\r\n\r\nOK\r\n
> ofonod[550]: Modem:< \r\n!STKC: 81\r\n
>
> AT+CRSM=192,12258,0,0,255 return an error. I have tried to send "AT
> +CRSM=192,12258,0,0,255" to the modem by using minicom and it returns no
> error. Do you know why it returns an error when I'm using Ofono?
>
> I have add a retry loop on "AT+CPIN?" request, at the third attempt the
> request return OK but no other commands are sent.
>
Basically what happens is that oFono is too fast. When you try this
with minicom the firmware had enough time to initialize, but it does not
have the same chance (time wise) with oFono.
The modem firmware is trying to initialize its own internal state and
throws all of these errors. What you might need to do is to add a
periodic query of CPIN? until that returns something other than CME
ERROR: 14. at_util_sim_state_query_new() does just that. See
plugins/zte.c or plugins/speedup.c for an example of how this is done.
Regards,
-Denis