MC7455/EM7455 dependencies and protocols

Dan Williams dcbw at redhat.com
Mon Mar 6 23:01:41 UTC 2017


On Mon, 2017-03-06 at 14:42 -0800, Tim Harvey wrote:
> On Sat, Mar 4, 2017 at 4:21 AM, Bjørn Mork <bjorn at mork.no> wrote:
> > [starting a new thread with the answers...]
> 
> oops - my apologies for hijacking the previous thread.
> 
> > 
> > Tim Harvey <tharvey at gateworks.com> writes:
> > 
> > > Hi Bjørn,
> > > 
> > > Can you tell me more about how you got this modem working? I'm
> > > trying
> > > to understand:
> > > - what Linux drivers are required and do you have to inject
> > > new_id's
> > > vis sysfs to get them to probe (none of the drivers seem to
> > > recognize
> > > the 0x1199:0x9079 by default)
> > 
> > Depending on the modem firmware configuration you may need
> > cdc_mbim,
> > qmi_wwan and qcserial.
> > 
> > The 9079 PID is Lenovo specific, and AFAIK always in MBIM mode by
> > default. The cdc_mbim driver matches on class attributes, so there
> > is no
> > need for any device specific IDs.
> > 
> > Wrt non-default configurations, both the 1199:9071 (Sierra default)
> > and
> > 1199:9079 (Lenovo ID) were added to the qcserial and qmi_wwan
> > drivers in
> > Linux v4.5.
> > 
> > > - what managment and communication dev nodes should be created
> > 
> > Depends on modem firmware configuration.  Typically one or more
> > /dev/cdc-wdmX nodes, one or more wwanY netdevs and zero or more
> > /dev/ttyUSBz nodes.
> > 
> > > - what libqmi version is required
> > 
> > The latest.
> > 
> > > - what the difference is between mbim and qmi
> > 
> > Different protocols for management and data framing.  No need to
> > worry
> > about that.  The drivers and ModemManager will figure it out.
> > 
> > But if you do want to worry, then Google has lots of interesting
> > info :)
> > 
> > > - what the firmware dependencies are, how to tell what firmware I
> > > have
> > > on them, and how to update if required
> > 
> > ModemManager will tell you the firmware revision regardless of
> > protocols
> > and drivers in use.  AFAIK, updating is not required for any
> > production MC7455/EM7455.
> > 
> > > I've got an MC7455 as well as an EM7455 on hand to test with but
> > > haven't gotten either to be recognized by any of the Linux
> > > drivers (at
> > > least in 4.4).
> > 
> > You'll need Linux v4.5 or later for QMI on these modems.
> > 
> > And you'll probably need v4.7 or later for MBIM. Or one of the
> > stable
> > kernels with a backport of c086e7096170 ("cdc_ncm: workaround for
> > EM7455
> > "silent" data interface"), for example v4.4.16 or later.
> > 
> 
> Thank you this was very helpful! I'm glad I asked before spending a
> lot of time with Linux 4.4.
> 
> I've built a 4.10 kernel and do see the following for the 1199:9079
> EM7455
> - /dev/cdc-wdm0 management device from cdc_mbim (2 of them for
> 1199:9071 MC7455)
> - wwan0 registered net device from cdc_mbim
> - /dev/ttyUSB0,1,2 devices from qcserial
> 
> I believe this confirms that the modem is using MBIM. It would seem
> that I should be using libmbim/mbimcli but then it also looks like
> libqmi has some MBIM support? In fact it looks like libqmi-1.16.0+
> has
> added support for QMI-over-MBIM (requires libmbim-glib-1.14.0+?)...
> perhaps this was to simplify applications like ModemManager so they
> only had to worry about one API?

Not really.  It turns out that some modems require QMI commands to
power up (the FCC Auth thing) that are non-standard, and thus aren't
part of the standard MBIM spec.  So ModemManager just uses the QMI-in-
MBIM thing to send that command, and then proceeds to use MBIM for the
rest.

Yes, MM could skip MBIM and use QMI all the way, but that's fighting
against a tide.  If the modem comes up in MBIM mode, we assume that's
what the manufacturer intended. That's also probably what Windows does,
and the manufacturer probably tests with MBIM, and the connection
manager uses MBIM, so Linux and MM should too.  That way we don't try
to use buggy behavior the manufacturer never intended or tested.

> I've built libmbim-1.14.0 and libqmi-1.17.901 (from source tarballs)
> and seem to be able to communicate with the modem now (I get sane
> responses for things like --dms-get-model) but I still can't connect
> without error using qmi-network.

You wouldn't use qmi-network for this, you'd use mbim-network instead. 
Basically does the same thing, but with MBIM not QMI.  Doesn't
guarantee you'll be successful, but at least follows the path of least
resistance.

Might be interesting to see what MBIM says if the data connection
fails.

Dan

> I've queried the following from the MC7455:
> # qmicli -d /dev/cdc-wdm0 --dms-get-manufacturer
> [/dev/cdc-wdm0] Device manufacturer retrieved:
>         Manufacturer: 'Sierra Wireless, Incorporated'
> # qmicli -d /dev/cdc-wdm0 --dms-get-model
> [/dev/cdc-wdm0] Device model retrieved:
>         Model: 'MC7455'
> # qmicli -d /dev/cdc-wdm0 --dms-get-operating-mode
> [/dev/cdc-wdm0] Operating mode retrieved:
>         Mode: 'online'
>         HW restricted: 'no'
> # qmicli -d /dev/cdc-wdm0 --dms-get-activation-state
> [/dev/cdc-wdm0] Activation state retrieved:
>         State: 'not-activated'
> # qmicli -d /dev/cdc-wdm0 --nas-get-signal-strength
> [/dev/cdc-wdm0] Successfully got signal strength
> Current:
>         Network 'umts': '-81 dBm'
> RSSI:
>         Network 'umts': '-81 dBm'
> ECIO:
>         Network 'umts': '-14.0 dBm'
> IO: '-106 dBm'
> SINR (8): '9.0 dB'
> # qmicli -d /dev/cdc-wdm0 --nas-get-signal-info
> [/dev/cdc-wdm0] Successfully got signal info
> WCDMA:
>         RSSI: '-81 dBm'
>         ECIO: '-12.0 dBm'
> 
> I've set my APN in /etc/qmi-network.conf yet 'qmi-network
> /dev/cdc-wdm0 start' fails:
> error: couldn't start network: QMI protocol error (14): 'CallFailed'
> call end reason (1): generic-unspecified
> verbose call end reason (3,2504): [cm] (null)
> Saving state at /tmp/qmi-network-state-cdc-wdm0... (CID: 35)
> error: network start failed, no packet data handle
> Clearing state at /tmp/qmi-network-state-cdc-wdm0...
> 
> What is the best method to troubleshoot to determine if the issue is
> with the SIM, signal strength, APN configuration, etc?
> 
> Regards,
> 
> Tim
> 
> > 
> > 
> > Bjørn
> 
> _______________________________________________
> libqmi-devel mailing list
> libqmi-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/libqmi-devel


More information about the libqmi-devel mailing list