Building official linux drivers for EM7305

Hi all,

I own a Toshiba Portege Laptop (Z30B 12F) with a builtin EM7305 chip. I try to use this broadband access under Linux Ubuntu 16.04, amd64, kernel 4.4.0-21-generic (Ubuntu’s base kernel).

disclaimer: I am quite a newbie in the QMI/MBIM & WWAN card interfaces domain, I might miss some important point. Feel free to correct me.

  1. I downloaded and built the drivers as described in document Application Dev Guide v 1.23 (dec 2015)

The document is missing some “modprobe usbserial” before building the driver.

At the end of the procedure, I can see dmesg ( /var/log/syslog) :

[ 4249.253481] GobiNet: 2015-12-08/SWI_2.36
[ 4249.253529] usbcore: registered new interface driver GobiNet
[ 4361.719546] usbcore: deregistering interface driver GobiNet
[ 4378.015448] GobiNet: 2015-12-08/SWI_2.36
[ 4378.015534] usbcore: registered new interface driver GobiNet

But not /dev/ttyUSB* devices appear… What did I miss ?

What is the procedure to force a re-detection ? It’s an embedded chip, I can’t plug/unplug it.

  1. The vendor/product ID of this chip is 1199:9063. When checking in the official driver source code, nor the serial nor the network seems to support this chip. The last chip supported has ID 1199:9061. Is this related to some mode switching I must opper first ?

  2. Is the EM7305 officially supported ? The open source drivers “sierra” and “sierra_net” lacks this chip too.

I added the 1199:9063 vendor/product Ids into the GobiNet and GobiSerial and rebuilt the drivers, but it does not work. Seems the interfaces to open USB ports might have changed ?

  1. This new thread might be related to this one : https://forum.sierrawireless.com/t/steps-to-get-the-mc7455-to-work-under-linux/8493/1 which is related to MC7354 not working on Ubuntu.

Thanks for your help, i really need this LTE connection on Ubuntu.

You need the GobiSerial drvier for /dev/ttyUSB*

GobiNet provides /dev/qcqmi* and wwan* interface pairs.

If all you want is to reprobe the device, then unloading and reloading the driver is the easiest method (modprobe -r GobiSerial; modprobe GobiSerial)

You can also do manual unbind/bind using the /sys/bus/usb/drivers/GobiSerial/bind and
/sys/bus/usb/drivers/GobiSerial/unbind sysfs attributes.

If you want to power cycle the modem, then you can sometimes do that using a laptop specific rfkill method. But that is entirely platform specific, and I have no idea what Toshiba does.

My best guess is that 1199:9063 is an ID allocated to Toshiba for use in their OEM version of the EM7305. The “normal” EM7305 device ID is 1199:9041 as far as I know.

Those drivers are used for device IDs supporting DirectIP. The relevant mainline drivers for EM7305 are “qcserial” and “qmi_wwan”. But as you’ve discovered: They don’t know the 1199:9063 ID. Simply because noone has reported it yet.

Note that this, as a laptop OEM device, probably is configured for MBIM operation by default. And it should work fine with the mainline “cdc_mbim” driver, since that is class based and does not need to know about specific device IDs.

I suspect this is because the device is in MBIM only mode by default. Could you post the output of “lsusb -vd 1199:9063” (feel free to remove/obfuscate serial numbers if you like)?

Well, that should work by default, using “cdc_mbim” as driver and ModemManager with libmbim on the userspace side. Anything else is an Ubuntu bug. Ubuntu forums are also probably better at debugging the Ubuntu specific problems…

I finally managed to get something working, here is the current status :

[] After a complete installation of Ubuntu 16.04, the modem is correctly detected by ModemManager. The cdc_wwan and cdc_mbim modules correclty detects the modem. NetworkManager managed to create a connection with my apn and the connection worked fine.[/]
[] I never managed to get the /dev/ttyUSB (makes me think of this recent post https://forum.sierrawireless.com/t/why-the-ttyusb-disappear-only-cdc-wdm0-interface-left/8591/1) but it’s not a problem.
Neither the GobiSerial not qcserial module found the serial interface. Seems the MBIM interface is sufficient. The was operated under Windows 7 prior I switched to Linux.[/
]
[]After a software suspend (to RAM), the modem stopped working. Seems the bug is due to a MBIM descriptor not being released before going in standby. This problem is known to the Ubuntu community (bugs.launchpad.net/ubuntu/+sour … ug/1326954) and the only fix that seems to exist needs to stop/restart Modem Manager. [/]

So finally, the Live CD wasn’t working for some reasons probably due to some partial installed packages. The bare Ubuntu installation is (quite) all fine.

Thank you for your support.