Understanding Modem Manager

Marc Murphy marcmltd at marcm.co.uk
Mon Dec 16 10:48:43 PST 2013


Hi, I merged the latest from 3.12 kernel 
drivers/net/usb/qmi_wwan.c to my 3.6-rc6.

The updates are nothing special.  I also had to merge;
eth_prepare_mac_addr_change
eth_commit_mac_addr_change
is_link_local_ether_addr

to net/Ethernet/eth.c from 3.12 to my 3.6-rc6

I can generate a patch if needed but it would only apply to 3.6-rc6


-----Original Message-----
From: Aleksander Morgado [mailto:aleksander at lanedo.com] 
Sent: 16 December 2013 18:38
To: Marc Murphy; 'Dan Williams'
Cc: modemmanager-devel at lists.freedesktop.org
Subject: Re: Understanding Modem Manager

Hey,

On 16/12/13 19:24, Marc Murphy wrote:
> I have now updated qmi and net/ethernet to support the updated qmi_wwan.  There were some device IDs missing with one of them being the Huawei device I am using.
> 

Are those device IDs also missing in the latest kernel sources? Could you share the patch you used to see if they need to be reported?


> On kernel init it finds the device now; qmi_wwan 1-1.1:1.1: wwan0: 
> register 'qmi_wwan' at usb-ehci-omap.0-1.1, WWAN/QMI device, 
> f6:4b:e3:c2:0a:ff
> 
> and there is an uninitialized wwan0 interface;
> wwan0     Link encap:Ethernet  HWaddr F6:4B:E3:C2:0A:FF
>           BROADCAST MULTICAST  MTU:1500  Metric:1
>           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:1000
>           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
> 
> 
> Starting ModemManager with debug it identifies the modem and attempts 
> to use qmi;
> 
> ModemManager[899]: <info>  [946685397.613443] [mm-plugin-manager.c:481] build_plugins_list(): (Plugin Manager) [cdc-wdm0] Found '2' plugins to try...
> ModemManager[899]: <info>  [946685397.613626] [mm-plugin-manager.c:485] build_plugins_list(): (Plugin Manager) [cdc-wdm0]   Will try with plugin 'Huawei'
> ModemManager[899]: <info>  [946685397.613840] [mm-plugin-manager.c:485] build_plugins_list(): (Plugin Manager) [cdc-wdm0]   Will try with plugin 'Generic'
> ModemManager[899]: <debug> [946685397.614114] [mm-plugin.c:725] mm_plugin_supports_port(): (Huawei) [cdc-wdm0] probe required: 'qmi'
> ModemManager[899]: <info>  [946685397.614419] [mm-port-probe.c:1154] mm_port_probe_run(): (usbmisc/cdc-wdm0) launching port probing: 'qmi'
> ModemManager[899]: <debug> [946685397.951028] [mm-manager.c:449] mm_manager_start(): Finished device scan...
> ModemManager[899]: <debug> [946685397.952371] 
> [mm-plugin-manager.c:410] plugin_supports_port_ready(): (Plugin 
> Manager) [wwan0] deferring support check until result suggested
> ModemManager[899]: <info>  [946685397.978738] [mm-serial-port.c:857] mm_serial_port_open(): (ttyUSB0) opening serial port...
> ModemManager[899]: <warn>  [946685397.983102] [mm-serial-port.c:414] 
> real_config_fd(): (ttyUSB0): port attributes not fully set
> ModemManager[899]: <debug> [946685397.983987] [mm-serial-port.c:926] 
> mm_serial_port_open(): (ttyUSB0) device open count is 1 (open)
> ModemManager[899]: <info>  [946685397.986551] [mm-serial-port.c:857] mm_serial_port_open(): (ttyUSB1) opening serial port...
> ModemManager[899]: <warn>  [946685397.988870] [mm-serial-port.c:414] 
> real_config_fd(): (ttyUSB1): port attributes not fully set
> ModemManager[899]: <debug> [946685397.989450] [mm-serial-port.c:926] 
> mm_serial_port_open(): (ttyUSB1) device open count is 1 (open)
> ModemManager[899]: <info>  [946685397.991647] [mm-serial-port.c:857] mm_serial_port_open(): (ttyUSB2) opening serial port...
> ModemManager[899]: <warn>  [946685397.996377] [mm-serial-port.c:414] 
> real_config_fd(): (ttyUSB2): port attributes not fully set
> ModemManager[899]: <debug> [946685397.997049] [mm-serial-port.c:926] 
> mm_serial_port_open(): (ttyUSB2) device open count is 1 (open)
> ModemManager[899]: <debug> [946685397.998453] [mm-port-probe.c:399] wdm_probe_qmi(): (usbmisc/cdc-wdm0) probing QMI...
> ModemManager[899]: [/dev/cdc-wdm0] Checking version info (10 retries)...
> ModemManager[899]: [/dev/cdc-wdm0] Sent message...
> <<<<<< RAW:
> <<<<<<   length = 12
> <<<<<<   data   = 01:0B:00:00:00:00:00:01:21:00:00:00
> ModemManager[899]: [/dev/cdc-wdm0] Sent message (translated)...
> <<<<<< QMUX:
> <<<<<<   length  = 11
> <<<<<<   flags   = 0x00
> <<<<<<   service = "ctl"
> <<<<<<   client  = 0
> <<<<<< QMI:
> <<<<<<   flags       = "none"
> <<<<<<   transaction = 1
> <<<<<<   tlv_length  = 0
> <<<<<<   message     = "Get Version Info" (0x0021)
> ModemManager[899]: <debug> [946685398.220071] [mm-serial-port.c:966] 
> mm_serial_port_close(): (ttyUSB1) device open count is 0 (close)
> ModemManager[899]: <info>  [946685398.220560] [mm-serial-port.c:982] mm_serial_port_close(): (ttyUSB1) closing serial port...
> ModemManager[899]: <info>  [946685398.222574] [mm-serial-port.c:1014] 
> mm_serial_port_close(): (ttyUSB1) serial port closed
> ModemManager[899]: <info>  [946685398.223093] [mm-serial-port.c:1083] 
> mm_serial_port_close_force(): (ttyUSB1) forced to close port
> ModemManager[899]: <debug> [946685398.223947] [mm-serial-port.c:966] 
> mm_serial_port_close(): (ttyUSB2) device open count is 0 (close)
> ModemManager[899]: <info>  [946685398.224344] [mm-serial-port.c:982] mm_serial_port_close(): (ttyUSB2) closing serial port...
> ModemManager[899]: <info>  [946685398.225839] [mm-serial-port.c:1014] 
> mm_serial_port_close(): (ttyUSB2) serial port closed
> ModemManager[899]: <info>  [946685398.226175] [mm-serial-port.c:1083] 
> mm_serial_port_close_force(): (ttyUSB2) forced to close port
> ModemManager[899]: [/dev/cdc-wdm0] Received message...
>>>>>>> >>>>>> RAW:
>>>>>>> >>>>>>   length = 48
>>>>>>> >>>>>>   data   = 01:2F:00:80:00:00:01:01:21:00:24:00:02:04:00:00:00:00:00:01:1A:00:05:00:01:00:03:00:01:01:00:05:00:02:01:00:02:00:03:01:00:00:00:E0:00:00:00:00
> ModemManager[899]: [/dev/cdc-wdm0] Received message (translated)...
>>>>>>> >>>>>> QMUX:
>>>>>>> >>>>>>   length  = 47
>>>>>>> >>>>>>   flags   = 0x80
>>>>>>> >>>>>>   service = "ctl"
>>>>>>> >>>>>>   client  = 0
>>>>>>> >>>>>> QMI:
>>>>>>> >>>>>>   flags       = "response"
>>>>>>> >>>>>>   transaction = 1
>>>>>>> >>>>>>   tlv_length  = 36
>>>>>>> >>>>>>   message     = "Get Version Info" (0x0021)
>>>>>>> >>>>>> TLV:
>>>>>>> >>>>>>   type       = "Result" (0x02)
>>>>>>> >>>>>>   length     = 4
>>>>>>> >>>>>>   value      = 00:00:00:00
>>>>>>> >>>>>>   translated = SUCCESS
>>>>>>> >>>>>> TLV:
>>>>>>> >>>>>>   type       = "Service list" (0x01)
>>>>>>> >>>>>>   length     = 26
>>>>>>> >>>>>>   value      = 05:00:01:00:03:00:01:01:00:05:00:02:01:00:02:00:03:01:00:00:00:E0:00:00:00:00
>>>>>>> >>>>>>   translated = { [0] = '[ service = 'ctl' major_version = 
>>>>>>> >>>>>> '1' minor_version = '3' ] ' [1] = '[ service = 'wds' 
>>>>>>> >>>>>> major_version = '1' minor_version = '5' ] ' [2] = '[ 
>>>>>>> >>>>>> service = 'dms' major_version = '1' minor_version = '2' ] 
>>>>>>> >>>>>> ' [3] = '[ service = 'nas' major_version = '1' 
>>>>>>> >>>>>> minor_version = '0' ] ' [4] = '[ service = 'cat' 
>>>>>>> >>>>>> major_version = '0' minor_version = '0' ] '}
> ModemManager[899]: <debug> [946685398.229074] 
> [mm-plugin-manager.c:374] plugin_supports_port_ready(): (Plugin 
> Manager) (Huawei) [ttyUSB1] deferring support check
> ModemManager[899]: <debug> [946685398.229562] 
> [mm-plugin-manager.c:374] plugin_supports_port_ready(): (Plugin 
> Manager) (Huawei) [ttyUSB2] deferring support check
> ModemManager[899]: [/dev/cdc-wdm0] QMI Device supports 5 services:
> ModemManager[899]: [/dev/cdc-wdm0]    ctl (1.3)
> ModemManager[899]: [/dev/cdc-wdm0]    wds (1.5)
> ModemManager[899]: [/dev/cdc-wdm0]    dms (1.2)
> ModemManager[899]: [/dev/cdc-wdm0]    nas (1.0)
> ModemManager[899]: [/dev/cdc-wdm0]    cat (0.0)
> ModemManager[899]: <debug> [946685398.232187] [mm-port-probe.c:253] 
> mm_port_probe_set_result_qmi(): (usbmisc/cdc-wdm0) port is QMI-capable
> ModemManager[899]: <debug> [946685398.235971] 
> [mm-plugin-manager.c:323] plugin_supports_port_ready(): (Plugin 
> Manager) (Huawei) [cdc-wdm0] found best plugin for port
> ModemManager[899]: <debug> [946685398.236429] 
> [mm-plugin-manager.c:186] port_probe_context_finished(): (Plugin 
> Manager) (Huawei) [cdc-wdm0]: found best plugin for device 
> (/sys/devices/platform/usbhs_omap/ehci-omap.0/usb1/1-1/1-1.1)
> ModemManager[899]: <debug> [946685398.236856] 
> [mm-plugin-manager.c:257] suggest_port_probe_result(): (Plugin 
> Manager) (Huawei) [wwan0] deferred task completed, got suggested 
> plugin
> ModemManager[899]: <debug> [946685398.237192] 
> [mm-plugin-manager.c:283] suggest_port_probe_result(): (Plugin 
> Manager) (Huawei) [ttyUSB2] suggested plugin for port
> ModemManager[899]: <debug> [946685398.573129] 
> [mm-plugin-manager.c:283] suggest_port_probe_result(): (Plugin 
> Manager) (Huawei) [ttyUSB1] suggested plugin for port
> ModemManager[899]: <debug> [946685398.573373] 
> [mm-plugin-manager.c:283] suggest_port_probe_result(): (Plugin 
> Manager) (Huawei) [ttyUSB0] suggested plugin for port
> ModemManager[899]: <debug> [946685398.574045] [mm-at-serial-port.c:392] debug_log(): (ttyUSB0): --> 'AT^CURC=0<CR>'
> ModemManager[899]: <debug> [946685398.574838] [mm-plugin.c:665] 
> mm_plugin_supports_port(): (Huawei) [wwan0] probing deferred until 
> result suggested
> ModemManager[899]: <debug> [946685398.575326] 
> [mm-plugin-manager.c:390] plugin_supports_port_ready(): (Plugin 
> Manager) (Huawei) [wwan0] task completed, got suggested plugin
> ModemManager[899]: <debug> [946685401.175577] [mm-plugin.c:725] mm_plugin_supports_port(): (Huawei) [ttyUSB1] probe required: 'at, qcdm'
> ModemManager[899]: <info>  [946685401.176340] [mm-port-probe.c:1154] mm_port_probe_run(): (tty/ttyUSB1) launching port probing: 'at, qcdm'
> ModemManager[899]: <debug> [946685401.176828] [mm-plugin.c:725] mm_plugin_supports_port(): (Huawei) [ttyUSB2] probe required: 'at, qcdm'
> ModemManager[899]: <info>  [946685401.177194] [mm-port-probe.c:1154] mm_port_probe_run(): (tty/ttyUSB2) launching port probing: 'at, qcdm'
> ModemManager[899]: <info>  [946685401.178934] [mm-serial-port.c:857] mm_serial_port_open(): (ttyUSB1) opening serial port...
> ModemManager[899]: <warn>  [946685401.181375] [mm-serial-port.c:414] 
> real_config_fd(): (ttyUSB1): port attributes not fully set
> ModemManager[899]: <debug> [946685401.181955] [mm-serial-port.c:926] 
> mm_serial_port_open(): (ttyUSB1) device open count is 1 (open)
> ModemManager[899]: <info>  [946685401.184152] [mm-serial-port.c:857] mm_serial_port_open(): (ttyUSB2) opening serial port...
> ModemManager[899]: <warn>  [946685401.186472] [mm-serial-port.c:414] 
> real_config_fd(): (ttyUSB2): port attributes not fully set
> ModemManager[899]: <debug> [946685401.186990] [mm-serial-port.c:926] 
> mm_serial_port_open(): (ttyUSB2) device open count is 1 (open)
> ModemManager[899]: <debug> [946685401.284616] [mm-serial-port.c:966] 
> mm_serial_port_close(): (ttyUSB1) device open count is 0 (close)
> ModemManager[899]: <info>  [946685401.285074] [mm-serial-port.c:982] mm_serial_port_close(): (ttyUSB1) closing serial port...
> ModemManager[899]: <info>  [946685401.286600] [mm-serial-port.c:1014] 
> mm_serial_port_close(): (ttyUSB1) serial port closed
> ModemManager[899]: <info>  [946685401.286935] [mm-serial-port.c:1083] 
> mm_serial_port_close_force(): (ttyUSB1) forced to close port
> ModemManager[899]: <debug> [946685401.287607] 
> [mm-plugin-manager.c:368] plugin_supports_port_ready(): (Plugin 
> Manager) (Huawei) [ttyUSB1] deferring support check, suggested: Huawei
> ModemManager[899]: <debug> [946685401.289011] [mm-serial-port.c:966] 
> mm_serial_port_close(): (ttyUSB2) device open count is 0 (close)
> ModemManager[899]: <info>  [946685401.289438] [mm-serial-port.c:982] mm_serial_port_close(): (ttyUSB2) closing serial port...
> ModemManager[899]: <info>  [946685401.290933] [mm-serial-port.c:1014] 
> mm_serial_port_close(): (ttyUSB2) serial port closed
> ModemManager[899]: <info>  [946685401.291269] [mm-serial-port.c:1083] 
> mm_serial_port_close_force(): (ttyUSB2) forced to close port
> ModemManager[899]: <debug> [946685401.291879] 
> [mm-plugin-manager.c:368] plugin_supports_port_ready(): (Plugin 
> Manager) (Huawei) [ttyUSB2] deferring support check, suggested: Huawei
>  

It may take a while until it probes all ports. Did you wait enough time?
I'm assuming that the log continues after the last lines you posted, right? Could you leave it running longer and post further logs?


> If I then try to use nmcli it reports that there are no modems available and because of this NetworkManager cannot try to initialise and connect.
> 
> Its nearly there just think I need help with the next step please.
> 

Run "mmcli -M" after plugging in the modem. It will monitor new devices being exported by ModemManager. Once MM finishes probing all ports in the modem, it should expose a modem device. Until then, you cannot use 'nmcli'.

--
Aleksander


More information about the ModemManager-devel mailing list