Sierra E7455 mobile broadband modem

Solution 1:

The Lenovo variant of the EM7455 has a feature we know as "FCC_AUTH" turned on. This disables the radio until the driver sends a "magic message" to the modem. This feature is well known from older Sierra modems. ModemManager supports the magic message for modems in QMI mode, but we have so far got away with ignoring it in MBIM mode. The EM7455 changes that...

Basically we know a way around the issue but it isn't yet implemented in current libmbim/ModemManager versions. Sorry about that. I'm sure this will be fixed soon, being a show stopper for the Lenovo EM7455.

See the discussion here for full details: https://lists.freedesktop.org/archives/libmbim-devel/2016-April/000703.html

Solution 2:

Possible solution, based on similar problem on Dell. Was not tested on real hardware:

To get the card working, you have to switch the USB commication mode from MBMI to QMI mode! The ModemManager will apply the FCC-Auth command automatically, but this requires a QMI interface!

You can switch the mode by using https://wiki.ubuntuusers.de/USB_ModeSwitch or the prefered solution, by adding a special udev rule which also loads the required kernel modules. Additionally you have to install the qmi-utils:

apt-get install libqmi-utils.

This ruleset was modified to match Sierra E7455 modem. Add the following content to a new udev file, e.g. /etc/udev/rules.d/99-sierra.rules.

After adding these rules, you should reboot your system! Finally the Ubuntu Network-Manager should recognize the device!

And make sure to add a valid SIM-Card – otherwise the CDC Device will be recognized as “unavailable”.

ACTION!="add|change", GOTO="mbim_to_qmi_rules_end"
SUBSYSTEM!="usb|drivers", GOTO="mbim_to_qmi_rules_end"

# load qmi_wwan module
SUBSYSTEM=="usb", \
ATTR{idVendor}=="1199", ATTR{idProduct}=="9079", \
RUN+="/sbin/modprobe -b qmi_wwan"

# force Dell WWAN 5809e to configuration #1
SUBSYSTEM=="usb", \
ATTR{idVendor}=="1199", ATTR{idProduct}=="9079", \
ATTR{bConfigurationValue}="1"

# add the new id in the qmi_wwan driver
SUBSYSTEM=="drivers", \
ENV{DEVPATH}=="/bus/usb/drivers/qmi_wwan", \
ATTR{new_id}="1199 9079"

# load qcserial module
SUBSYSTEM=="usb", \
ATTR{idVendor}=="1199", ATTR{idProduct}=="9079", \
RUN+="/sbin/modprobe -b qcserial"

# add the new id in the qcserial driver
SUBSYSTEM=="drivers", \
ENV{DEVPATH}=="/bus/usb-serial/drivers/qcserial", \
ATTR{new_id}="1199 9079"

LABEL="mbim_to_qmi_rules_end"

To verfiy that the udev rules are working, you can take a look on the “usb-devices” output, it should show qcserial and qmi_wwan as used drivers. If not, check the vendor and product ID in your ruleset!

# usb-devices
T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  2 Spd=480 MxCh= 0
D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1199 ProdID=9079 Rev=00.06
S:  Manufacturer=Sierra Wireless, Incorporated
S:  Product=Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
S:  SerialNumber=LF61427268011013
C:  #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=qcserial
I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=qcserial
I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=qcserial
I:  If#= 8 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan