Understanding Modem Manager

Marc Murphy marcmltd at marcm.co.uk
Tue Dec 3 01:56:11 PST 2013


Hello,
I have a platform that has no GUI so I am trying to initialize a couple of 3G modems (Huawei EM820W and Sierra Wireless MC8705) to use as data connections when away from the local network.

I have downloaded and compiled ModemManager and it seems to be working well with the daemon, the cards can be detected and various parameters can be extracted using the mmcli app.

I am having some trouble in actually getting a useable connection.
Previously with one of the cards  (Sierra Wireless MC8705) I could manually setup with the AT commands, connect and get a valid IP address with all the dns and routing being setup with dhclient.

I would like to have the same result but using ModemManager, if it is possible.  Here is some debug about what I am attempting to do:

# mmcli -m 0 --list-bearers

No bearers were found
# mmcli -m 0

/org/freedesktop/ModemManager1/Modem/0 (device id '61d98ebe0deeb14a83d951229303f0e8a245cd35')
 -------------------------
 Hardware |   manufacturer: 'huawei'
          |          model: 'EM820W'
          |       revision: '11.809.05.80.00'
          |   capabilities: 'gsm-umts'
          |        current: 'gsm-umts'
          |   equipment id: '3542830400XXXXX'
 -------------------------
 System   |         device: '/sys/devices/platform/usbhs_omap/ehci-omap.0/usb1/1-1/1-1.1'
          |        drivers: 'option1'
          |         plugin: 'Huawei'
          |   primary port: 'ttyUSB3'
 -------------------------
 Numbers  |           own : '+4475398XXXXX'
 -------------------------
 Status   |           lock: 'none'
          | unlock retries: 'sim-pin (3), sim-pin2 (3), sim-puk (10), sim-puk2 (10)'
          |          state: 'disabled'
          |    access tech: 'unknown'
          | signal quality: '0' (cached)
 -------------------------
 Modes    |      supported: '2g, 3g'
          |        allowed: '2g, 3g'
          |      preferred: 'none'
 -------------------------
 Bands    |      supported: 'unknown'
          |        current: 'unknown'
 -------------------------
 3GPP     |           imei: '3542830400XXXXX'
          |  enabled locks: 'none'
          |    operator id: 'unknown'
          |  operator name: 'unknown'
          |   registration: 'unknown'
 -------------------------
 SIM      |           path: '/org/freedesktop/ModemManager1/SIM/0'

So it looks like the modem is detected.  I then tried to connect by creating the bearer info (I'm using tmobile in the UK);
# mmcli -m 0 --create-bearer="apn=general.t-mobile.uk,user=t-mobile,password=tm,
number=*99#"
Successfully created new bearer in modem:
       /org/freedesktop/ModemManager1/Bearer/2

# mmcli -m 0 -c -b /org/freedesktop/ModemManager1/Bearer/2
ModemManager[805]: <info>  Modem /org/freedesktop/ModemManager1/Modem/0: state changed (registered -> connecting)
ModemManager[805]: <info>  (ttyUSB0) opening serial port...
ModemManager[805]: <warn>  (ttyUSB0): port attributes not fully set
ModemManager[805]: <warn>  Couldn't initialize PDP context with our APN: 'Serial command timed out'
ModemManager[805]: <info>  (ttyUSB0) closing serial port...
ModemManager[805]: <info>  (ttyUSB0) serial port closed
ModemManager[805]: <info>  Modem /org/freedesktop/ModemManager1/Modem/0: state changed (connecting -> registered)
error: couldn't connect the bearer: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Serial.ResponseTimeout: Serial command timed out'

Which looked like it failed but the status shows

# mmcli -m 0 --simple-status

/org/freedesktop/ModemManager1/Modem/0
 -------------------------
 Status |          state: 'registered'
        | signal quality: '6' (cached)
        |          bands: 'unknown'
        |    access tech: 'umts'
 -------------------------
3GPP    |   registration: 'home'
        |  operator code: '23433'
        |  operator name: 'Orange'

So then decided to try the example with simple-connect

# mmcli -m 0 --simple-connect="pin=1234,apn=internet"
ModemManager[805]: <info>  Simple connect started...
ModemManager[805]: <info>  Simple connect state (4/10): Wait to get fully enabled
ModemManager[805]: <info>  Simple connect state (5/10): Allowed mode
ModemManager[805]: <info>  Simple connect state (6/10): Bands
ModemManager[805]: <info>  Simple connect state (7/10): Register
ModemManager[805]: <info>  Simple connect state (8/10): Bearer
ModemManager[805]: <info>  Simple connect state (9/10): Connect
ModemManager[805]: <info>  Modem /org/freedesktop/ModemManager1/Modem/0: state changed (registered -> connecting)
ModemManager[805]: <info>  (ttyUSB0) opening serial port...
ModemManager[805]: <warn>  (ttyUSB0): port attributes not fully set
ModemManager[805]: <info>  Modem /org/freedesktop/ModemManager1/Modem/0: state changed (connecting -> connected)
ModemManager[805]: <info>  Simple connect state (10/10): All done
successfully connected the modem

That seemed to work ???
# mmcli -m 0 --simple-status

/org/freedesktop/ModemManager1/Modem/0
 -------------------------
 Status |          state: 'registered'
        | signal quality: '6' (cached)
        |          bands: 'unknown'
        |    access tech: 'umts'
 -------------------------
3GPP    |   registration: 'home'
        |  operator code: '23433'
        |  operator name: 'Orange'

So how do I reliably get to connect and then generate a wwan0 network interface ?  Do I need to use NetworkManager to obtain an IP interface to allow for routing ?

As you can guess I am in the early learning stages with this.  Once I get the IP connection sorted I would like to look at the gps.  This also isn't working when I try....

# mmcli -m 0 --location-status

/org/freedesktop/ModemManager1/Modem/0
 ----------------------------
 Location | capabilities: '3gpp-lac-ci'
          |      enabled: '3gpp-lac-ci'
          |      signals: 'no'

# mmcli -m 0 --location-get-3gpp
error: couldn't get 3GPP-based location from the modem: 'not available'

# mmcli -m 0 --location-enable-gps-nmea
error: couldn't setup location gathering: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Unsupported: Cannot enable unsupported location sources: 'gps-nmea''

But the specs for the modem state that it can do NMEA gps?? Confusing.

Hopefully someone can help with this one.

Thanks in advance

Marc







More information about the ModemManager-devel mailing list