Skip to contentSkip to conversation

Add Support for Sierra MC73xx

DISCUSSION Martin Chaplet 2 participants 8 messages Apr 29, 2016

lore
Share & tools
lore
#0 lore raw

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/04

21: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*
#1 lore raw

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 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 :

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-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)

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 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

Quoted 8 lines

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

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

#2 lore raw

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 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 :

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-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)

Quoted 2 lines

If this is a QMI card, then setup_sierra isn't the right place for this detection. It should likely be setup_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 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

Quoted 8 lines

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

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

#3 lore raw

Hi Martin,

Quoted 4 lines
Quoted 3 lines

If this is a QMI card, then setup_sierra isn't the right place for this detection. It should likely be setup_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_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.

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

#4 lore raw
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: 10
Quoted 4 lines

Regards,
-Denis

#5 lore raw

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: 10

This 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

#6 lore raw

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.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?

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 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.

It seems a great idea.

Thanks a lot for you help Denis,

Best regards,

Martin

#7 lore raw
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-noop

I'm not used to QMI but I will try to compare libqmi and ofono's read_transparent implementations.

Quoted 1 line
Quoted 7 lines
Quoted 3 lines

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.

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