Bug 234578 - Support for Sierra Wireless EM7455 modem
Summary: Support for Sierra Wireless EM7455 modem
Status: Open
Alias: None
Product: Base System
Classification: Unclassified
Component: usb (show other bugs)
Version: CURRENT
Hardware: amd64 Any
: --- Affects Some People
Assignee: freebsd-usb (Nobody)
URL:
Keywords: easy, feature, needs-qa, patch
Depends on:
Blocks:
 
Reported: 2019-01-02 18:57 UTC by Oleksandr Kryvulia
Modified: 2020-09-16 00:16 UTC (History)
5 users (show)

See Also:
koobs: mfc-stable12?
koobs: mfc-stable11?


Attachments
patch to add product id (997 bytes, patch)
2019-01-02 18:57 UTC, Oleksandr Kryvulia
no flags Details | Diff
FCC_auth disabled carrier config (411 bytes, application/zip)
2019-01-04 20:23 UTC, Oleksandr Kryvulia
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Oleksandr Kryvulia 2019-01-02 18:57:20 UTC
Created attachment 200722 [details]
patch to add product id

Adds new product id to support Sierra Wireless EM7455 modem by u3g kernel module. Tested on Lenovo Thinkpad T470p. Please note, because of lack of support QMI protocol by default device is in Low Power Mode, so it need special nvu-file which sends FCC_AUTH=0 to modem. On Linux it can be done by qmicli --dms-set-fcc-authentication command.

root@thinkpad:/usr/src # usbconfig -d 0.3 dump_device_desc
ugen0.3: <Sierra Wireless, Incorporated Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A> at, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0000  <Probed by interface class>
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x1199 
  idProduct = 0x9079 
  bcdDevice = 0x0006 
  iManufacturer = 0x0001  <Sierra Wireless, Incorporated>
  iProduct = 0x0002  <Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A>
  iSerialNumber = 0x0003  <LF75061727011022>
  bNumConfigurations = 0x0001
Comment 1 Ed Maste freebsd_committer 2019-01-04 17:32:56 UTC
> need special nvu-file which sends FCC_AUTH=0 to modem

Can you expand on this note (i.e., how to obtain or create the nvu-file)
Comment 2 Oleksandr Kryvulia 2019-01-04 20:23:39 UTC
Created attachment 200778 [details]
FCC_auth disabled carrier config
Comment 3 Oleksandr Kryvulia 2019-01-04 20:24:43 UTC
I didn't find a way to disable LPM vi AT-commands and found special nvu-file on russian-speaking technical forum[1] and upload it with new GENERIC firmware[2] to modem using qmi-firmware-update from Ubuntu Live USB.


[1] http://forum.ixbt.com/post.cgi?id=print:17:53544&page=9
[2] https://source.sierrawireless.com/resources/airprime/minicard/74xx/airprime-em_mc74xx-approved-fw-packages/
Comment 4 dean 2019-12-16 23:11:02 UTC
This python script automates the engineering challenge response via AT commands for many S.W. devices

https://github.com/bkerler/SierraWirelessGen

Having entered engineering mode, you can use cu or similar to connect to the usb serial of the device and issue these commands

AT!PCFCCAUTH=0
AT!RESET


The S.W. device will reset and the FCC low power mode will remain disabled forever after.

Observe with:

at!gstatus?


Further, this at command will list the available usb modes for the device

AT!UDUSBCOMP?

As far as i can tell the QMI, RMNET and MBIM protocols arent supported in freebsd so ppp via the USB serial port is the only option. Which is available in the 6,7 and 8 modes.

AT!UDUSBCOMP=6
AT!RESET

The above can be manipulated in QMI only mode with the script https://git.mork.no/wwan.git/plain/scripts/swi_setusbcomp.pl - which you will need to run on linux. But once AT commands are exposed via usb serial devices you can plug on to BSD.


The above is taken from my personal notes on S.W. devices. There is a lot of arcane magic involved, as you can flash vendor badged devices to generic SW firmware, change their usb VID and PID so that freebsd recognizes it etc. But once you have a generic firmware presenting as a generic USB device - youre in business with the above.

I would be delighted to be proven wrong that QMI, RMNET and MBIM arent supported.
Comment 5 Tomasz "CeDeROM" CEDRO 2020-04-19 23:03:27 UTC
I have Sierra EM7305 on Panasonic Toughbook CF-MX4 and the same problem - the VID/PID is known but the modem is not operational, it needs some additional setup.

In older laptop Panasonic Toughbook CF-C2 also I had Sierra WWAN modem with the same problem. There I have replaced it with another device that was working out of the box.

I know Frank Harvey (dvwerks@cox.net) is Sierra expert and offered help in solving the problem on the forum nickname phishfry. Maybe we could write a simple libusb based application that would switch these modems into operational state for FreeBSD :-)
Comment 6 Hans Petter Selasky freebsd_committer 2020-04-20 07:09:18 UTC
There is modeswitch in the ports, but it is better when the kernel handles it.

--HPS
Comment 7 Qingjun Wei 2020-09-15 14:09:55 UTC
Is there any progress?
I am a user of OpnSense. And it appears EM7455 is the only LTE card I can use in US.
Comment 8 Tomasz "CeDeROM" CEDRO 2020-09-15 21:46:18 UTC
Not on my side, sorry, eaten up by some other tasks, will get into it maybe in two months, also would like to have it working on my laptop :-)

I can see two problems to solve:
1. Modeswitch so modem works in a way that FreeBSD can make use of. Either userland libusb based or Kernel mode?
2. Device firmwares / binary configs needs to be provided in order to get it into a state that FreeBSD can make use of. Can we provide such binaries with system or as a Port?
Comment 9 Qingjun Wei 2020-09-16 00:16:06 UTC
@Tomasz,
Appreciate your feedback.
I think there are two separated problems. 
BSD certainly will have to provide a modeswitch utility.
As for the firmware, it should be user's responsibility. As long as there are utilities to flash firmware on any platform, it should ne sufficient.