[ltp] 2nd gen X1 carbon 3g/lte Sierra Wireless EM7345 4G LTE

Bjørn Mork linux-thinkpad@linux-thinkpad.org
Wed, 02 Apr 2014 12:54:55 +0200

Chuck Aurora <cba@isc.org> writes:

> On Wed, Apr 02, 2014 at 10:24:27AM +0200, Bjørn Mork wrote:
>> morten <mortenlarsens@gmail.com> writes:
>> > dmesg output at boot
>> > [    8.530427] usbcore: registered new interface driver cdc_ncm
>> > [    8.535195] usbcore: registered new interface driver cdc_wdm
>> > [    8.549669] cdc_mbim 2-4:1.0: cdc-wdm0: USB WDM device
>> > [    8.554268] cdc_mbim 2-4:1.0 wwan0: register 'cdc_mbim' at
>> > usb-0000:00:14.0-4, CDC MBIM, c6:92:45:62:05:05
>> > [    8.555083] usbcore: registered new interface driver cdc_mbim
>> > [    8.555543] usbcore: registered new interface driver btusb
>> > [    8.557955] cdc_acm 2-4:1.2: This device cannot do calls on its
>> > own. It is not a modem.
>> > [    8.558002] cdc_acm 2-4:1.2: ttyACM0: USB ACM device
>> > [    8.560226] usbcore: registered new interface driver cdc_acm
>> > [    8.560230] cdc_acm: USB Abstract Control Model driver for USB
>> > modems and ISDN adapters
>> Great!  So there is a serial port (AT command?) as well, and it
>> is also a proper CDC class function so we don't need any vendor 
>> specific stuff to support it. Thanks Intel.  It's good to see
>> such things.
>> Are the 4 USB interfaces use by the cdc_mbim and cdc_acm
>> drivers the only ones on this modem, or are there other
>> (possibly unsupported) functions as well?
> That's what I was wondering. I have an external USB device, the 
> Pantech UML295 (Verizon being the carrier.) It gives me this 
> cdc_ether driver:
> Mar 31 17:25:26 tp kernel: [379939.016993] cdc_ether 3-6:1.0 eth1: 
> register 'cdc_ether' at usb-0000:00:14.0-6, CDC Ethernet Device, 
> d0:57:85:7a:a6:09
> All I have to do is to DHCP on this Ethernet interface, and 
> "mbb.vzw.com[]" becomes my gateway. It gives me a
> little HTTP interface ( http://mbb.vzw.com/ ) to manage the
> connection. Click connect, and Bob's your uncle, I'm online.
> The internal mini-PCI cards do not have this?

Mostly not.  But it's really unrelated to internal/external.  The
difference is the management interface exported by the modem firmware.
Most firmwares on internal modems depend on the host PC doing management
like configuring APN, selecting bands and/or networks etc.

You have a http interface, which has the advantages that it is simple to
set up and use, and works on almost any system. But the interface is
non-standard so you cannot expect any connection manager software like
ModemManager to support it.  Every modem will have a different http
interface, which you as a human can easily adapt to.  That's of course
not so with software.

The alternative is a more standardized API for the management software,
shared by a set of modems.  Traditially this has been AT commands, where
each vendor have created their own command set in addition to the
standard ITU-T and 3GPP ones.  This is still a lot better than an
model/operator specific http interface, because one application can
support a family of modems.  For a while we've had the Qualcomm
proprietary QMI as another alternative. This is now widely used because
Qualcomm chips have been dominating the market.

CDC MBIM is the latest alternative.  It's a USB-IF standard for Mobile
Broadband devices, just like the CDC ECM (cdc_ether) your modem use.
The main difference is that it standardizes a control channel and some
basic management messages for Mobile Broadband in addition to the IP
datagram transport.

MBIM is a requirement for Windows8 certification of Mobile Broadband
devices.  Microsoft got tired of all the vendor proprietary solutions
and wanted to integrate Mobile Broadband mangement tighter in the OS.
Good thing for us as well.

> Or does cdc_mbim 
> conflict with cdc_ether? (Hmm, I guess not, unless cdc_mbim was 
> blacklisted somehow; I have both drivers.)

These are both USB class drivers.  The USB device configuration
descriptor tells the host what type of function(s) a device supports.
That's what you see when you do a "lsusb -v", and that's what the OS and
drivers use to filter out which devices they should handle. There is no
conflict.  A CDC ECM function will be handled by the cdc_ether driver
and never touched by the cdc_mbim driver, and a CDC MBIM function will
be handled by the cdc_mbim driver and never touched by the cdc_ether

> I'm looking at a Gobi 5000 for my Thinkpad T440p, but it is a $200 
> gamble, more if I have to pay for SIM activation. (I'm guessing I 
> might be able to use the Pantech's SIM for testing?)

"Gobi" is Qualcomm's marketing name for devices supporting a standard
set of QMI services for management.  Most modern Qualcomm devices will
also do MBIM, usually selectable using multiple USB configurations.
Microsoft requires MBIM support in the default device identity for
Windows8 conformance.  Using multiple configurations conforms to that
requirement while still allowing support for "legacy systems"
(i.e. Windows7 and older - noone cares about Linux here :-)

I believe the Thinkpad Gobi 5000 device is a Sierra Wireless MC7750,
which should be supported pretty well in Linux using either QMI or MBIM.
I use a MC7710 myself (mostly same thing, but for Europe). In QMI mode
it even has serial ports supporting AT commands and PPP. So driver and
application support is not a problem.  The SIM activation and possible
operator locks and such stuff still makes it a gamble unfortunately.
Whether you can use the SIM from the Pantech depends on what your
operator allows you to do.

> It would be nice to have a real, routeable IP address, but the
> important thing is to be able to USE the Internet connection.
> So, Bjørn, do you need another tester for the Gobi? Does the 
> prognosis look good?

Gobi devices should be supported by default, provided you use a somewhat
recent kernel (v3.6 or newer) and ModemManager (1.0 or newer) with
libqmi-glib support.