Add Support for Sierra MC73xx
Hi everybody,
I'm trying to use MC7304 chip with ofono (yes, exactly like Dirk Meul few months ago).
It's a QMI-interfaced GSM.
I've used Bjørn Mork's patches and with a little hack in setup_sierra (forcing qmi device name), the modem is "detected" and initialized. ... But the "gprs" feature is not detected !
I'm a newbie on ofono project ... Can anyone can explain me how the features detection is done please ?
FYI, Please find below ofono debug log :
ofonod[1110]: src/modem.c:ofono_modem_create() name: (null), type: sierra ofonod[1110]: plugins/udevng.c:setup_sierra() /sys/devices/soc0/soc.0/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1 ofonod[1110]: plugins/udevng.c:setup_sierra() /dev/ttyUSB0 255/255/255 00 (null)
ofonod[1110]: plugins/udevng.c:setup_sierra() /dev/ttyUSB1 255/0/0 02 (null) ofonod[1110]: plugins/udevng.c:setup_sierra() /dev/ttyUSB2 255/0/0 03 (null) ofonod[1110]: plugins/udevng.c:setup_sierra() wwan0 255/255/255 08 (null) ofonod[1110]: plugins/udevng.c:setup_sierra() wwan1 255/255/255 0a (null) ofonod[1110]: plugins/udevng.c:setup_sierra() wwan2 255/255/255 0b (null) ofonod[1110]: src/modem.c:ofono_modem_set_driver() type: gobi ofonod[1110]: plugins/udevng.c:setup_sierra() modem=/dev/ttyUSB2 app=(null) net=wwan0 diag=/dev/ttyUSB0 qmi=/dev/cdc-wdm1 ofonod[1110]: src/modem.c:set_modem_property() modem 0x20d4d28 property Device
ofonod[1110]: src/modem.c:set_modem_property() modem 0x20d4d28 property Modem
ofonod[1110]: src/modem.c:set_modem_property() modem 0x20d4d28 property App ofonod[1110]: src/modem.c:set_modem_property() modem 0x20d4d28 property Diag ofonod[1110]: src/modem.c:set_modem_property() modem 0x20d4d28 property NetworkInterface
ofonod[1110]: src/modem.c:ofono_modem_register() 0x20d4d28 ofonod[1110]: plugins/gobi.c:gobi_probe() 0x20d4d28 ofonod[1110]: src/modem.c:emit_modem_added() 0x20d4d28 ofonod[1110]: src/modem.c:call_modemwatches() 0x20d4d28 added:1 ofonod[1110]: plugins/smart-messaging.c:modem_watch() modem: 0x20d4d28,
added: 1
ofonod[1110]: plugins/push-notification.c:modem_watch() modem:0x20d4d28, added: 1
ofonod[1110]: plugins/gobi.c:gobi_enable() 0x20d4d28 ofonod[1110]: src/modem.c:get_modem_property() modem 0x20d4d28 property Device
ofonod[1110]: plugins/gobi.c:discover_cb()
ofonod[1110]: plugins/gobi.c:discover_cb() WDS 1.36 ofonod[1110]: plugins/gobi.c:discover_cb() DMS 1.14 ofonod[1110]: plugins/gobi.c:discover_cb() NAS 1.25 ofonod[1110]: plugins/gobi.c:discover_cb() QOS 1.3
ofonod[1110]: plugins/gobi.c:discover_cb() WMS 1.10 ofonod[1110]: plugins/gobi.c:discover_cb() PDS 1.0
ofonod[1110]: plugins/gobi.c:discover_cb() AUTH 1.2 ofonod[1110]: plugins/gobi.c:discover_cb() AT 1.2
ofonod[1110]: plugins/gobi.c:discover_cb() VOICE 2.1 ofonod[1110]: plugins/gobi.c:discover_cb() CAT 2.16 ofonod[1110]: plugins/gobi.c:discover_cb() UIM 1.25 ofonod[1110]: plugins/gobi.c:discover_cb() PBM 1.4
ofonod[1110]: plugins/gobi.c:discover_cb() SAR 1.0
ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() TS 1.0
ofonod[1110]: plugins/gobi.c:discover_cb() TMS 1.0
ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.10 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:create_dms_cb()
ofonod[1110]: plugins/gobi.c:get_caps_cb()
ofonod[1110]: plugins/gobi.c:get_caps_cb() service capabilities 4 ofonod[1110]: plugins/gobi.c:get_caps_cb() sim supported 2 ofonod[1110]: plugins/gobi.c:get_caps_cb() radio = 4 ofonod[1110]: plugins/gobi.c:get_caps_cb() radio = 5 ofonod[1110]: plugins/gobi.c:get_caps_cb() radio = 8 ofonod[1110]: plugins/gobi.c:get_oper_mode_cb()
ofonod[1110]: src/modem.c:modem_change_state() old state: 0, new state: 1 ofonod[1110]: plugins/gobi.c:gobi_pre_sim() 0x20d4d28 ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_devinfo_probe() ofonod[1110]: drivers/qmimodem/sim.c:qmi_sim_probe() ofonod[1110]: drivers/qmimodem/voicecall.c:qmi_voicecall_probe() ofonod[1110]:
drivers/qmimodem/location-reporting.c:qmi_location_reporting_probe() ofonod[1110]: drivers/qmimodem/devinfo.c:create_dms_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_query_manufacturer() ofonod[1110]: drivers/qmimodem/voicecall.c:create_voice_cb() ofonod[1110]: drivers/qmimodem/sim.c:create_uim_cb() ofonod[1110]: drivers/qmimodem/location-reporting.c:create_pds_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:string_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_query_model() ofonod[1110]: drivers/qmimodem/sim.c:event_registration_cb() ofonod[1110]: drivers/qmimodem/sim.c:event_registration_cb() event mask 0x0003
ofonod[1110]: drivers/qmimodem/location-reporting.c:set_event_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:string_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_query_revision() ofonod[1110]: drivers/qmimodem/sim.c:get_card_status_cb() ofonod[1110]: src/sim.c:ofono_sim_add_state_watch() 0x20d9aa0 ofonod[1110]: src/sim.c:ofono_sim_add_state_watch() 0x20d9aa0 ofonod[1110]: src/sim.c:ofono_sim_add_state_watch() 0x20d9aa0 ofonod[1110]: drivers/qmimodem/sim.c:get_card_status_cb() ofono_sim_register OK
ofonod[1110]: drivers/qmimodem/sim.c:get_card_status_cb() exit func ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id 0x6fb7 path len 0
ofonod[1110]: drivers/qmimodem/devinfo.c:string_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_query_serial() ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: src/voicecall.c:ecc_g2_read_cb() 0
ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id 0x6fb7 path len 0
ofonod[1110]: drivers/qmimodem/devinfo.c:get_ids_cb() ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: src/voicecall.c:ecc_g3_read_cb() 0
ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id 0x2fe2 path len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_transparent() file id 0x2fe2 path len 0
ofonod[1110]: drivers/qmimodem/sim.c:read_generic_cb() ofonod[1110]: src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff:
0, tocopy: 10
ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id 0x6f05 path len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id 0x2f05 path len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_transparent() file id 0x2f05 path len 0
ofonod[1110]: drivers/qmimodem/sim.c:read_generic_cb() ofonod[1110]: src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff:
0, tocopy: 10
ofonod[1110]: drivers/qmimodem/sim.c:qmi_query_passwd_state() passwd state 0 ofonod[1110]: src/sim.c:sim_pin_query_cb() sim->pin_type: 0, pin_type: 0 ofonod[1110]: drivers/qmimodem/sim.c:qmi_query_pin_retries() passwd state 0 ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id 0x6fae path len 0
ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id 0x6fad path len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id 0x6f16 path len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id 0x6f38 path len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_transparent() file id 0x6f07 path len 0
ofonod[1110]: drivers/qmimodem/sim.c:read_generic_cb() ofonod[1110]: Unable to read IMSI, emergency calls only
and the result of list-modem test script :
/usr/lib/ofono/test # ./list-modems
[ /sierra_1 ]
Features = sim gps
Emergency = 0
Powered = 1
Lockdown = 0
Interfaces = org.ofono.SimManager org.ofono.LocationReporting
org.ofono.VoiceCallManager
Online = 0
Model = MC7304
Revision = SWI9X15C_05.05.58.00 r27038 carmd-fwbuild1 2015/03/0421:30:23
Type = hardware
Serial = 0
Manufacturer = Sierra Wireless, Incorporated
[ org.ofono.SimManager ]
Retries = [pin2 = 2] [puk2 = 10] [pin = 3] [puk = 10] FixedDialing = 0
SubscriberNumbers =
PreferredLanguages = fr en de es it BarredDialing = 0
CardIdentifier = 89331037150919602451 LockedPins =
PinRequired = none
Present = 1
[ org.ofono.LocationReporting ]
Type = nmea
Enabled = 0
[ org.ofono.VoiceCallManager ]
EmergencyNumbers = 08 000 999 110 112 911 118 119
Thanks for your help,
Signature · 1 line
*Martin*
Hi Martin,
Quoted 17 lines · Martin Chaplet
Hi everybody,
I'm trying to use MC7304 chip with ofono (yes, exactly like Dirk Meul few months ago).
It's a QMI-interfaced GSM.
I've used Bjørn Mork's patches and with a little hack insetup_sierra(forcing qmi device name), the modem is "detected" and initialized. ... But the "gprs" feature is not detected !I'm a newbie on ofono project ... Can anyone can explain me how the features detection is done please ?
FYI, Please find below ofono debug log :
Quoted 10 lines
ofonod[1110]: src/modem.c:ofono_modem_create() name: (null), type: sierra ofonod[1110]: plugins/udevng.c:setup_sierra()
/sys/devices/soc0/soc.0/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1ofonod[1110]: plugins/udevng.c:setup_sierra()/dev/ttyUSB0255/255/255 00 (null)
ofonod[1110]: plugins/udevng.c:setup_sierra()/dev/ttyUSB1255/0/0 02 (null) ofonod[1110]: plugins/udevng.c:setup_sierra()/dev/ttyUSB2255/0/0 03 (null) ofonod[1110]: plugins/udevng.c:setup_sierra() wwan0 255/255/255 08 (null) ofonod[1110]: plugins/udevng.c:setup_sierra() wwan1 255/255/255 0a (null) ofonod[1110]: plugins/udevng.c:setup_sierra() wwan2 255/255/255 0b (null)
If this is a QMI card, then setup_sierra isn't the right place for this detection. It should likely be setup_gobi.
Quoted 121 lines
ofonod[1110]: src/modem.c:ofono_modem_set_driver() type: gobi ofonod[1110]: plugins/udevng.c:setup_sierra() modem=/dev/ttyUSB2 app=(null) net=wwan0 diag=/dev/ttyUSB0 qmi=/dev/cdc-wdm1 ofonod[1110]: src/modem.c:set_modem_property() modem
0x20d4d28property Device
ofonod[1110]: src/modem.c:set_modem_property() modem0x20d4d28property Modem
ofonod[1110]: src/modem.c:set_modem_property() modem0x20d4d28property App ofonod[1110]: src/modem.c:set_modem_property() modem0x20d4d28property Diag ofonod[1110]: src/modem.c:set_modem_property() modem0x20d4d28property NetworkInterface
ofonod[1110]: src/modem.c:ofono_modem_register()0x20d4d28ofonod[1110]: plugins/gobi.c:gobi_probe()0x20d4d28ofonod[1110]: src/modem.c:emit_modem_added()0x20d4d28ofonod[1110]: src/modem.c:call_modemwatches()0x20d4d28added:1 ofonod[1110]: plugins/smart-messaging.c:modem_watch() modem:0x20d4d28,
added: 1
ofonod[1110]: plugins/push-notification.c:modem_watch() modem:0x20d4d28, added: 1
ofonod[1110]: plugins/gobi.c:gobi_enable()0x20d4d28ofonod[1110]: src/modem.c:get_modem_property() modem0x20d4d28property Device
ofonod[1110]: plugins/gobi.c:discover_cb()
ofonod[1110]: plugins/gobi.c:discover_cb() WDS 1.36 ofonod[1110]: plugins/gobi.c:discover_cb() DMS 1.14 ofonod[1110]: plugins/gobi.c:discover_cb() NAS 1.25 ofonod[1110]: plugins/gobi.c:discover_cb() QOS 1.3
ofonod[1110]: plugins/gobi.c:discover_cb() WMS 1.10 ofonod[1110]: plugins/gobi.c:discover_cb() PDS 1.0
ofonod[1110]: plugins/gobi.c:discover_cb() AUTH 1.2 ofonod[1110]: plugins/gobi.c:discover_cb() AT 1.2
ofonod[1110]: plugins/gobi.c:discover_cb() VOICE 2.1 ofonod[1110]: plugins/gobi.c:discover_cb() CAT 2.16 ofonod[1110]: plugins/gobi.c:discover_cb() UIM 1.25 ofonod[1110]: plugins/gobi.c:discover_cb() PBM 1.4
ofonod[1110]: plugins/gobi.c:discover_cb() SAR 1.0
ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() TS 1.0
ofonod[1110]: plugins/gobi.c:discover_cb() TMS 1.0
ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.10 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:create_dms_cb()
ofonod[1110]: plugins/gobi.c:get_caps_cb()
ofonod[1110]: plugins/gobi.c:get_caps_cb() service capabilities 4 ofonod[1110]: plugins/gobi.c:get_caps_cb() sim supported 2 ofonod[1110]: plugins/gobi.c:get_caps_cb() radio = 4 ofonod[1110]: plugins/gobi.c:get_caps_cb() radio = 5 ofonod[1110]: plugins/gobi.c:get_caps_cb() radio = 8 ofonod[1110]: plugins/gobi.c:get_oper_mode_cb()
ofonod[1110]: src/modem.c:modem_change_state() old state: 0, new state: 1 ofonod[1110]: plugins/gobi.c:gobi_pre_sim()0x20d4d28ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_devinfo_probe() ofonod[1110]: drivers/qmimodem/sim.c:qmi_sim_probe() ofonod[1110]: drivers/qmimodem/voicecall.c:qmi_voicecall_probe() ofonod[1110]:
drivers/qmimodem/location-reporting.c:qmi_location_reporting_probe() ofonod[1110]: drivers/qmimodem/devinfo.c:create_dms_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_query_manufacturer() ofonod[1110]: drivers/qmimodem/voicecall.c:create_voice_cb() ofonod[1110]: drivers/qmimodem/sim.c:create_uim_cb() ofonod[1110]: drivers/qmimodem/location-reporting.c:create_pds_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:string_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_query_model() ofonod[1110]: drivers/qmimodem/sim.c:event_registration_cb() ofonod[1110]: drivers/qmimodem/sim.c:event_registration_cb() event mask0x0003
ofonod[1110]: drivers/qmimodem/location-reporting.c:set_event_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:string_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_query_revision() ofonod[1110]: drivers/qmimodem/sim.c:get_card_status_cb() ofonod[1110]: src/sim.c:ofono_sim_add_state_watch()0x20d9aa0ofonod[1110]: src/sim.c:ofono_sim_add_state_watch()0x20d9aa0ofonod[1110]: src/sim.c:ofono_sim_add_state_watch()0x20d9aa0ofonod[1110]: drivers/qmimodem/sim.c:get_card_status_cb()ofono_sim_registerOK
ofonod[1110]: drivers/qmimodem/sim.c:get_card_status_cb() exit func ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x6fb7path len 0
ofonod[1110]: drivers/qmimodem/devinfo.c:string_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_query_serial() ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: src/voicecall.c:ecc_g2_read_cb() 0
ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x6fb7path len 0
ofonod[1110]: drivers/qmimodem/devinfo.c:get_ids_cb() ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: src/voicecall.c:ecc_g3_read_cb() 0
ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x2fe2path len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_transparent() file id0x2fe2path len 0
ofonod[1110]: drivers/qmimodem/sim.c:read_generic_cb() ofonod[1110]: src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff:
0, tocopy: 10
ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x6f05path len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x2f05path len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_transparent() file id0x2f05path len 0
ofonod[1110]: drivers/qmimodem/sim.c:read_generic_cb() ofonod[1110]: src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff:
0, tocopy: 10
ofonod[1110]: drivers/qmimodem/sim.c:qmi_query_passwd_state() passwd state 0 ofonod[1110]: src/sim.c:sim_pin_query_cb()sim->pin_type: 0,pin_type: 0 ofonod[1110]: drivers/qmimodem/sim.c:qmi_query_pin_retries() passwd state 0 ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x6faepath len 0
ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x6fadpath len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x6f16path len 0
Quoted 8 lines
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id
0x6f38path len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_transparent() file id0x6f07path len 0
ofonod[1110]: drivers/qmimodem/sim.c:read_generic_cb() ofonod[1110]: Unable to read IMSI, emergency calls only
Your modem doesn't seem to want to read anything from the SIM. So that is why your gprs isn't showing up.
Do you have a SIM in there or a PIN set?
Regards,
-Denis
Hi Denis,
Thanks for your quick reply !
Quoted 37 lines · Denis Kenzior
Hi Martin,
Quoted 17 lines · Martin Chaplet
Hi everybody,
I'm trying to use MC7304 chip with ofono (yes, exactly like Dirk Meul few months ago).
It's a QMI-interfaced GSM.
I've used Bjørn Mork's patches and with a little hack insetup_sierra(forcing qmi device name), the modem is "detected" and initialized. ... But the "gprs" feature is not detected !I'm a newbie on ofono project ... Can anyone can explain me how the features detection is done please ?
FYI, Please find below ofono debug log :
Quoted 16 lines
ofonod[1110]: src/modem.c:ofono_modem_create() name: (null), type:
sierra
ofonod[1110]: plugins/udevng.c:setup_sierra()/sys/devices/soc0/soc.0/2100000.aips-bus/2184000.usb/ci_hdrc.0/usb1/1-1ofonod[1110]: plugins/udevng.c:setup_sierra()/dev/ttyUSB0255/255/255 00 (null)
ofonod[1110]: plugins/udevng.c:setup_sierra()/dev/ttyUSB1255/0/0 02 (null)
ofonod[1110]: plugins/udevng.c:setup_sierra()/dev/ttyUSB2255/0/0 03 (null)
ofonod[1110]: plugins/udevng.c:setup_sierra() wwan0 255/255/255 08 (null)
ofonod[1110]: plugins/udevng.c:setup_sierra() wwan1 255/255/255 0a (null)
ofonod[1110]: plugins/udevng.c:setup_sierra() wwan2 255/255/255 0b (null)
Quoted 2 lines
If this is a QMI card, then
setup_sierraisn't the right place for this detection. It should likely besetup_gobi.
Yes, you're right. It came from Bjørn Mork's patches who did this patch :
https://lists.ofono.org/pipermail/ofono/2013-February/014239.html
The "gobi" driver is plugged "manually" by ofono_modem_set_driver function
This card is mainly QMI but also have Diag, NMEA and AT interfaces (ttyUSB). I think that's why he did it in setup_sierra.
Quoted 136 lines
Quoted 127 lines
ofonod[1110]: src/modem.c:ofono_modem_set_driver() type: gobi ofonod[1110]: plugins/udevng.c:setup_sierra() modem=/dev/ttyUSB2 app=(null) net=wwan0 diag=/dev/ttyUSB0 qmi=/dev/cdc-wdm1 ofonod[1110]: src/modem.c:set_modem_property() modem
0x20d4d28property Device
ofonod[1110]: src/modem.c:set_modem_property() modem0x20d4d28property Modem
ofonod[1110]: src/modem.c:set_modem_property() modem0x20d4d28property App
ofonod[1110]: src/modem.c:set_modem_property() modem0x20d4d28property Diag
ofonod[1110]: src/modem.c:set_modem_property() modem0x20d4d28property NetworkInterface
ofonod[1110]: src/modem.c:ofono_modem_register()0x20d4d28ofonod[1110]: plugins/gobi.c:gobi_probe()0x20d4d28ofonod[1110]: src/modem.c:emit_modem_added()0x20d4d28ofonod[1110]: src/modem.c:call_modemwatches()0x20d4d28added:1 ofonod[1110]: plugins/smart-messaging.c:modem_watch() modem:0x20d4d28,
added: 1
ofonod[1110]: plugins/push-notification.c:modem_watch() modem:0x20d4d28, added: 1
ofonod[1110]: plugins/gobi.c:gobi_enable()0x20d4d28ofonod[1110]: src/modem.c:get_modem_property() modem0x20d4d28property Device
ofonod[1110]: plugins/gobi.c:discover_cb()
ofonod[1110]: plugins/gobi.c:discover_cb() WDS 1.36 ofonod[1110]: plugins/gobi.c:discover_cb() DMS 1.14 ofonod[1110]: plugins/gobi.c:discover_cb() NAS 1.25 ofonod[1110]: plugins/gobi.c:discover_cb() QOS 1.3 ofonod[1110]: plugins/gobi.c:discover_cb() WMS 1.10 ofonod[1110]: plugins/gobi.c:discover_cb() PDS 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() AUTH 1.2 ofonod[1110]: plugins/gobi.c:discover_cb() AT 1.2 ofonod[1110]: plugins/gobi.c:discover_cb() VOICE 2.1 ofonod[1110]: plugins/gobi.c:discover_cb() CAT 2.16 ofonod[1110]: plugins/gobi.c:discover_cb() UIM 1.25 ofonod[1110]: plugins/gobi.c:discover_cb() PBM 1.4 ofonod[1110]: plugins/gobi.c:discover_cb() SAR 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() TS 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() TMS 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.10 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:discover_cb() (null) 1.0 ofonod[1110]: plugins/gobi.c:create_dms_cb()
ofonod[1110]: plugins/gobi.c:get_caps_cb()
ofonod[1110]: plugins/gobi.c:get_caps_cb() service capabilities 4 ofonod[1110]: plugins/gobi.c:get_caps_cb() sim supported 2 ofonod[1110]: plugins/gobi.c:get_caps_cb() radio = 4 ofonod[1110]: plugins/gobi.c:get_caps_cb() radio = 5 ofonod[1110]: plugins/gobi.c:get_caps_cb() radio = 8 ofonod[1110]: plugins/gobi.c:get_oper_mode_cb() ofonod[1110]: src/modem.c:modem_change_state() old state: 0, new
state: 1
ofonod[1110]: plugins/gobi.c:gobi_pre_sim()0x20d4d28ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_devinfo_probe() ofonod[1110]: drivers/qmimodem/sim.c:qmi_sim_probe() ofonod[1110]: drivers/qmimodem/voicecall.c:qmi_voicecall_probe() ofonod[1110]:
drivers/qmimodem/location-reporting.c:qmi_location_reporting_probe() ofonod[1110]: drivers/qmimodem/devinfo.c:create_dms_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_query_manufacturer() ofonod[1110]: drivers/qmimodem/voicecall.c:create_voice_cb() ofonod[1110]: drivers/qmimodem/sim.c:create_uim_cb() ofonod[1110]: drivers/qmimodem/location-reporting.c:create_pds_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:string_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_query_model() ofonod[1110]: drivers/qmimodem/sim.c:event_registration_cb() ofonod[1110]: drivers/qmimodem/sim.c:event_registration_cb() event mask0x0003
ofonod[1110]: drivers/qmimodem/location-reporting.c:set_event_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:string_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_query_revision() ofonod[1110]: drivers/qmimodem/sim.c:get_card_status_cb() ofonod[1110]: src/sim.c:ofono_sim_add_state_watch()0x20d9aa0ofonod[1110]: src/sim.c:ofono_sim_add_state_watch()0x20d9aa0ofonod[1110]: src/sim.c:ofono_sim_add_state_watch()0x20d9aa0ofonod[1110]: drivers/qmimodem/sim.c:get_card_status_cb()ofono_sim_registerOK
ofonod[1110]: drivers/qmimodem/sim.c:get_card_status_cb() exit func ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x6fb7path len 0
ofonod[1110]: drivers/qmimodem/devinfo.c:string_cb() ofonod[1110]: drivers/qmimodem/devinfo.c:qmi_query_serial() ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: src/voicecall.c:ecc_g2_read_cb() 0 ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x6fb7path len 0
ofonod[1110]: drivers/qmimodem/devinfo.c:get_ids_cb() ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: src/voicecall.c:ecc_g3_read_cb() 0 ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x2fe2path len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_transparent() file id0x2fe2path len 0
ofonod[1110]: drivers/qmimodem/sim.c:read_generic_cb() ofonod[1110]: src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff:
0, tocopy: 10
ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x6f05path len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x2f05path len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_transparent() file id0x2f05path len 0
ofonod[1110]: drivers/qmimodem/sim.c:read_generic_cb() ofonod[1110]: src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff:
0, tocopy: 10
ofonod[1110]: drivers/qmimodem/sim.c:qmi_query_passwd_state() passwd state 0
ofonod[1110]: src/sim.c:sim_pin_query_cb()sim->pin_type: 0,pin_type: 0 ofonod[1110]: drivers/qmimodem/sim.c:qmi_query_pin_retries() passwd state 0
ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x6faepath len 0
ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x6fadpath len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id0x6f16path len 0Quoted 8 lines
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_attributes() file id
0x6f38path len 0
ofonod[1110]: drivers/qmimodem/sim.c:get_file_attributes_cb() ofonod[1110]: drivers/qmimodem/sim.c:qmi_read_transparent() file id0x6f07path len 0
ofonod[1110]: drivers/qmimodem/sim.c:read_generic_cb() ofonod[1110]: Unable to read IMSI, emergency calls only
Quoted 4 lines
Your modem doesn't seem to want to read anything from the SIM. So that is why your gprs isn't showing up.
Do you have a SIM in there or a PIN set?
OK, so I understand that Data feature is detected by scanning SIM capabilities + chip capabilities (UMTS, LTE, ...)
Am I right ?
My SIM doesn't have PIN and I can use Standard QMI tools (libqmi) to bring up a connection.
I will so investigate around SIM QMI requests / replies.
Quoted 3 lines
Regards,
-Denis
Thanks for your help,
Regards,
Martin
Hi Martin,
Quoted 4 lines
Quoted 3 lines
If this is a QMI card, then
setup_sierraisn't the right place for this detection. It should likely besetup_gobi.
Quoted 9 lines
Yes, you're right. It came from Bjørn Mork's patches who did this patch :
https://lists.ofono.org/pipermail/ofono/2013-February/014239.html
The "gobi" driver is plugged "manually" by
ofono_modem_set_driverfunctionThis card is mainly QMI but also have Diag, NMEA and AT interfaces (ttyUSB). I think that's why he did it in
setup_sierra.
What is the AT interface capable of? Can this modem be driven using AT commands instead? Would certainly be easier to debug.
Quoted 10 lines
Quoted 5 lines
Your modem doesn't seem to want to read anything from the SIM. So that is why your gprs isn't showing up.
Do you have a SIM in there or a PIN set?
OK, so I understand that Data feature is detected by scanning SIM capabilities + chip capabilities (UMTS, LTE, ...)
Am I right ?
Sort of. oFono is a full telephony stack, so we expect the basics to be provided. IMSI availability tells us that the SIM has been initialized to the point that it is useable. E.g. PIN has been unlocked/entered.
Quoted 4 lines
My SIM doesn't have PIN and I can use Standard QMI tools (libqmi) to bring up a connection.
I will so investigate around SIM QMI requests / replies.
Are sim operations supported / working on this modem with libqmi?
Regards,
-Denis
Quoted 8 lines · Denis Kenzior
Quoted 5 lines
This card is mainly QMI but also have Diag, NMEA and AT interfaces (ttyUSB). I think that's why he did it in
setup_sierra.What is the AT interface capable of? Can this modem be driven using AT commands instead? Would certainly be easier to debug.
All main commands are available ( ETSI) but I don't think PPP can be used. Additionnaly, it's a 4G modem, using PPP layer instead QMI will reduce performances, isn't it ?
Do you mean I can use an "hybrid" mode using modem management through AT and network through QMI ?
Quoted 8 lines
Quoted 8 lines
Quoted 6 lines
Your modem doesn't seem to want to read anything from the SIM. So that is why your gprs isn't showing up.
Do you have a SIM in there or a PIN set?
Quoted 9 lines
Quoted 3 lines
OK, so I understand that Data feature is detected by scanning SIM capabilities + chip capabilities (UMTS, LTE, ...)
Am I right ?Sort of. oFono is a full telephony stack, so we expect the basics to be provided. IMSI availability tells us that the SIM has been initialized to the point that it is useable. E.g. PIN has been unlocked/entered.
OK, I see.
Quoted 6 lines
Quoted 4 lines
My SIM doesn't have PIN and I can use Standard QMI tools (libqmi) to bring up a connection.
I will so investigate around SIM QMI requests / replies.Are sim operations supported / working on this modem with libqmi?
Yes.
Please find few tests below
$ qmicli -d /dev/cdc-wdm0 --dms-uim-get-imsi
[/dev/cdc-wdm0] UIM IMSI retrieved:
IMSI: '208103790757141'$ qmicli -d /dev/cdc-wdm0 --dms-uim-get-state
[/dev/cdc-wdm0] UIM state retrieved:
State: 'initialization-completed'$ qmicli -d /dev/cdc-wdm0 --dms-uim-get-pin-status
[/dev/cdc-wdm0] PIN status retrieved successfully
[/dev/cdc-wdm0] PIN1:
Status: disabled
Verify: 3
Unblock: 10
[/dev/cdc-wdm0] PIN2:
Status: enabled-not-verified
Verify: 2
Unblock: 10Quoted 4 lines
Regards,
-Denis
Hi Martin,
Quoted 9 lines · Martin Chaplet
Quoted 6 lines · Denis Kenzior
Quoted 5 lines
This card is mainly QMI but also have Diag, NMEA and AT interfaces (ttyUSB). I think that's why he did it in
setup_sierra.
Quoted 6 lines
Quoted 2 lines
What is the AT interface capable of? Can this modem be driven using AT commands instead? Would certainly be easier to debug.
All main commands are available ( ETSI) but I don't think PPP can be used. Additionnaly, it's a 4G modem, using PPP layer instead QMI will reduce performances, isn't it ?
You definitely don't want ppp. Besides, ppp requires 2 functional AT ports, and it looks like this card has just one.
Does Sierra provide network management via vendor AT commands?
Quoted 3 lines
Do you mean I can use an "hybrid" mode using modem management through AT and network through QMI ?
This is quite possible as well.
Quoted 36 lines
Quoted 9 lines
Quoted 9 lines
Quoted 7 lines
Your modem doesn't seem to want to read anything from the SIM. So that is why your gprs isn't showing up.
Do you have a SIM in there or a PIN set?
Quoted 9 lines
Quoted 3 lines
OK, so I understand that Data feature is detected by scanning SIM capabilities + chip capabilities (UMTS, LTE, ...)
Am I right ?Sort of. oFono is a full telephony stack, so we expect the basics to be provided. IMSI availability tells us that the SIM has been initialized to the point that it is useable. E.g. PIN has been unlocked/entered.
OK, I see.
Quoted 6 lines
Quoted 4 lines
My SIM doesn't have PIN and I can use Standard QMI tools (libqmi) to bring up a connection.
I will so investigate around SIM QMI requests / replies.Are sim operations supported / working on this modem with libqmi?
Yes.
Please find few tests below$ qmicli -d /dev/cdc-wdm0 --dms-uim-get-imsi [/dev/cdc-wdm0] UIM IMSI retrieved: IMSI: '208103790757141'$ qmicli -d /dev/cdc-wdm0 --dms-uim-get-state [/dev/cdc-wdm0] UIM state retrieved: State: 'initialization-completed'
Quoted 11 lines
$ qmicli -d /dev/cdc-wdm0 --dms-uim-get-pin-status
[/dev/cdc-wdm0] PIN status retrieved successfully
[/dev/cdc-wdm0] PIN1:
Status: disabled
Verify: 3
Unblock: 10
[/dev/cdc-wdm0] PIN2:
Status: enabled-not-verified
Verify: 2
Unblock: 10This looks to be in agreement with what oFono is obtaining from the drivers/qmimodem/sim.c driver. However, qmi_read_transparent and qmi_read_record don't seem to be reporting proper values.
Does libqmi actually have low-level sim read capability?
Another thing to try would be to implement read_imsi() method for drivers/qmimodem/sim.c. This should get you to the point where gprs is initialized even if all low-level reads from the SIM fail.
Regards,
-Denis
Hi Denis
Quoted 20 lines · Denis Kenzior
Hi Martin,
Quoted 9 lines · Martin Chaplet
Quoted 6 lines · Denis Kenzior
Quoted 5 lines
This card is mainly QMI but also have Diag, NMEA and AT interfaces (ttyUSB). I think that's why he did it in
setup_sierra.Quoted 7 lines
Quoted 2 lines
What is the AT interface capable of? Can this modem be driven using AT commands instead? Would certainly be easier to debug.
All main commands are available ( ETSI) but I don't think PPP can be used.
Additionnaly, it's a 4G modem, using PPP layer instead QMI will reduce performances, isn't it ?
Quoted 4 lines
You definitely don't want ppp. Besides, ppp requires 2 functional AT ports, and it looks like this card has just one.
Does Sierra provide network management via vendor AT commands?
As the modem support FOTA auto update feature, I assume they must exist. I will take a look at the manuals.
Quoted 55 lines
Quoted 4 lines
Do you mean I can use an "hybrid" mode using modem management through AT and network through QMI ?
This is quite possible as well.
Quoted 36 lines
Quoted 9 lines
Quoted 9 lines
Quoted 7 lines
Your modem doesn't seem to want to read anything from the SIM. So that is why your gprs isn't showing up.
Do you have a SIM in there or a PIN set?
Quoted 9 lines
Quoted 3 lines
OK, so I understand that Data feature is detected by scanning SIM capabilities + chip capabilities (UMTS, LTE, ...)
Am I right ?Sort of. oFono is a full telephony stack, so we expect the basics to be provided. IMSI availability tells us that the SIM has been initialized to the point that it is useable. E.g. PIN has been unlocked/entered.
OK, I see.
Quoted 6 lines
Quoted 4 lines
My SIM doesn't have PIN and I can use Standard QMI tools (libqmi) to bring up a connection.
I will so investigate around SIM QMI requests / replies.Are sim operations supported / working on this modem with libqmi?
Yes.
Please find few tests below$ qmicli -d /dev/cdc-wdm0 --dms-uim-get-imsi [/dev/cdc-wdm0] UIM IMSI retrieved: IMSI: '208103790757141'$ qmicli -d /dev/cdc-wdm0 --dms-uim-get-state [/dev/cdc-wdm0] UIM state retrieved: State: 'initialization-completed'Quoted 11 lines
$ qmicli -d /dev/cdc-wdm0 --dms-uim-get-pin-status [/dev/cdc-wdm0] PIN status retrieved successfully [/dev/cdc-wdm0] PIN1: Status: disabled Verify: 3 Unblock: 10 [/dev/cdc-wdm0] PIN2: Status: enabled-not-verified Verify: 2 Unblock: 10
Quoted 5 lines
This looks to be in agreement with what oFono is obtaining from the
drivers/qmimodem/sim.cdriver. However,qmi_read_transparentandqmi_read_recorddon't seem to be reporting proper values.Does libqmi actually have low-level sim read capability?
Yes, it seems so :
$ qmicli -d /dev/cdc-wdm0 --help-uim UIM options
--uim-read-transparent=[0xNNNN,0xNNNN,...]
Read a transparent file given the file path
--uim-get-file-attributes=[0xNNNN,0xNNNN,...]
Get the attributes of a given file
--uim-get-card-status
Get card status
--uim-reset
Reset the service state
--uim-noop
I'm not used to QMI but I will try to compare libqmi and ofono's read_transparent implementations.
Quoted 4 lines
Another thing to try would be to implement
read_imsi()method fordrivers/qmimodem/sim.c. This should get you to the point where gprs is initialized even if all low-level reads from the SIM fail.
It seems a great idea.
Thanks a lot for you help Denis,
Best regards,
Martin
Quoted 26 lines · Martin Chaplet
Quoted 3 lines
Does libqmi actually have low-level sim read capability?
Yes, it seems so :
$ qmicli -d /dev/cdc-wdm0 --help-uim UIM options--uim-read-transparent=[0xNNNN,0xNNNN,...]
Read a transparent file given the file path--uim-get-file-attributes=[0xNNNN,0xNNNN,...]
Get the attributes of a given file--uim-get-card-status
Get card status--uim-reset
Reset the service state
--uim-noopI'm not used to QMI but I will try to compare libqmi and ofono's
read_transparentimplementations.Quoted 1 line
Quoted 7 lines
Quoted 3 lines
Another thing to try would be to implement
read_imsi()method fordrivers/qmimodem/sim.c. This should get you to the point where gprs is initialized even if all low-level reads from the SIM fail.It seems a great idea.
It's an excellent idea !
Looking for read_imsi implementation, I found qmimodem-legacy which fit prefectly to my modem.
After a few fix because first Sierra net interface is buggy (wwan0), I'm now enable to use fully "Connman - ofono" features
I will try to cleanup my work, find a way to force use of qmimodem-legacy for this Sierra chip and submit all these modifications.
Thanks again Denis
Best regards,
Martin