cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
intelfx
SCSI Port
Posts: 47
Registered: ‎09-15-2016
Location: RU
Views: 2,983
Message 1 of 15

Getting Sierra EM7455 (and similar) to work on X1C6

To avoid derailing other Fibocom vs. Linux threads, I'm gonna post this here:

 

It appears possible to make Sierra Wireless EM7455 to work with X1C6 (confirmed on firmware versions 1.31 and 1.34) with a simple modem configuration change.

 

Caveat emptor:

 

  1. This is an unintended effect and may change in future firmware versions.
  2. This effect is presumed to be based on a race condition and therefore may break at any time.

 

 

Guide:

 

  1. Boot to Linux without a modem in place.
  2. S3 suspend your laptop. (Make sure it's configured to use S3!)
  3. Hot-plug the EM7455 modem.
  4. Resume the laptop. Whitelists are not consulted on S3 resume.
  5. Wait for the modem to fully initialize. If needed, change USB composition and/or update the modem firmware so that the AT port is available.
  6. Attach with a serial terminal emulator (e. g. picocom) to /dev/ttyUSB2 (assuming you have no other USB-serial converters installed).
  7. Verify that the modem responds and enable command echo (if echo is disabled, you won't see this command as you type it):
    ATE1
    OK
  8. Unlock engineering commands:
    AT!ENTERCND="A710"
    OK
  9. Check current modem customization settings:
    AT!CUSTOM?
    !CUSTOM: 
                 GPSENABLE          0x01
                 IPV6ENABLE         0x01
                 SIMLPM             0x01
                 FASTENUMEN         0x01
                 SINGLEAPNSWITCH    0x01
    
    
    OK
  10. Reconfigure fast enumeration:
    Option 1. Enable fast enumeration for warm boots only:
    AT!CUSTOM="FASTENUMEN",2
    OK
    Option 2. Disable fast enumeration altogether:
    AT!CUSTOM="FASTENUMEN",0
    OK
  11. Verify:
    AT!CUSTOM?
    !CUSTOM: 
                 GPSENABLE          0x01
                 GPSSEL             0x01
                 IPV6ENABLE         0x01
                 SIMLPM             0x01
                 FASTENUMEN         0x02
                 SINGLEAPNSWITCH    0x01
  12. Reset the modem and wait for it to reappear (to ensure that the new settings are saved):
    AT!RESET
    OK
    (the terminal will close itself shortly)
  13. Test: reboot, soft power-off, hard power-off (pull out the battery or push the RESET pinhole button).

 

Explanation:

 

can be found in any of the threads I've derailed Smiley Happy

duvh93
Fanfold Paper
Posts: 5
Registered: ‎10-22-2018
Location: IT
Views: 2,721
Message 2 of 15

Re: Getting Sierra EM7455 (and similar) to work on X1C6

Thanks for this walkthrough...

 

I still cannot connect using the EM7455B.

 

AT!PCINFO?
State: Low Power Mode
LPM voters - Temp:0, Volt:0, User:0, W_DISABLE:1, IMSWITCH:0, BIOS:0, LWM2M:0, OMADM:0, FOTA:0
LPM persistence - None
!CUSTOM: 
             GPSENABLE		0x04
             GPIOSARENABLE	0x01
             GPSSEL		0x01
             IPV6ENABLE		0x01
             SIMLPM		0x01
             USBSERIALENABLE	0x01
             FASTENUMEN		0x02
             SINGLEAPNSWITCH	0x01
AT+GMR
SWI9X30C_02.30.01.01 r7792 CARMD-EV-FRMWR2 2018/07/13 02:24:52

I am wondering why is W_DISABLE=1...should I put tape on the pin?

 

AT!PCOFFEN=2

 Is enough to ignore the W_DISABLE pin level

intelfx
SCSI Port
Posts: 47
Registered: ‎09-15-2016
Location: RU
Views: 2,695
Message 3 of 15

Re: Getting Sierra EM7455 (and similar) to work on X1C6

Yes.  Thank you for this addition; I've forgot to mention this problem.

 

Explanation to all future readers: basically, by following this method, firmware is made to "not see" the modem. As such, it will force assert the W_DISABLE pin on the M.2 slot, and will not export ACPI methods needed to control this pin from the OS (that's why there is no usual WWAN rfkill). Thus, the modem is forced into "airplane mode".

 

Thankfully, EM7455 can be made to ignore the W_DISABLE pin via another special AT command (which is also password-protected):

 

AT!ENTERCND="A710"
OK

AT!PCOFFEN=2
OK
duvh93
Fanfold Paper
Posts: 5
Registered: ‎10-22-2018
Location: IT
Views: 2,370
Message 4 of 15

Re: Getting Sierra EM7455 (and similar) to work on X1C6

Has anybody updated to bios version 1.37 after this procedure?

intelfx
SCSI Port
Posts: 47
Registered: ‎09-15-2016
Location: RU
Views: 2,357
Message 5 of 15

Re: Getting Sierra EM7455 (and similar) to work on X1C6

I can confirm this hack still works with BIOS 1.37.
jenschurchill
Paper Tape
Posts: 4
Registered: ‎07-03-2018
Location: DK
Views: 2,261
Message 6 of 15

Re: Getting Sierra EM7455 (and similar) to work on X1C6

edit:

I managed to get ttyUSB, by upgrading the firmware to latest, and using the perl script swi_setusbcomp.
pl to set USB composition to 8.

 

check out https://zukota.com/sierra-wireless-em7455-how-to-enable-com-ports/

 

original:

I bought an x1c6 with fibocom850l, which ofcourse turns out to be useless in Linux country.

I found a good deal on an EM7455, but it is unauthorized, so I am trying out this guide.

 

On S3 resume, the card is detected, and I can connect to 4G, but there is no /dev/ttyUSB*,

and ModemManager seams to load it using cdc_mbim/wdm.

 

Blacklisting these under modprobe, does not bring up a ttyusb (qcserial), but instead just results in the em7455 not being detected at all.

 

How do I get ttyUSB working, or can I issue the AT commands in a different way?

 

It is an Ubuntu 18.04 based system, using NetworkManager; Output from dmesg...

 

[ 1842.343899] usb 1-6: new high-speed USB device number 10 using xhci_hcd
[ 1842.492142] usb 1-6: config 1 has an invalid interface number: 12 but max is 1
[ 1842.492148] usb 1-6: config 1 has an invalid interface number: 13 but max is 1
[ 1842.492152] usb 1-6: config 1 has an invalid interface number: 13 but max is 1
[ 1842.492156] usb 1-6: config 1 has no interface number 0
[ 1842.492159] usb 1-6: config 1 has no interface number 1
[ 1842.492865] usb 1-6: New USB device found, idVendor=1199, idProduct=9079
[ 1842.492870] usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1842.492874] usb 1-6: Product: Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
[ 1842.492879] usb 1-6: Manufacturer: Sierra Wireless, Incorporated
[ 1842.492882] usb 1-6: SerialNumber: LF72522990031020
[ 1842.514155] usbcore: registered new interface driver cdc_ncm
[ 1842.515477] usbcore: registered new interface driver cdc_wdm
[ 1842.536090] cdc_mbim 1-6:1.12: cdc-wdm0: USB WDM device
[ 1842.536252] cdc_mbim 1-6:1.12 wwan0: register 'cdc_mbim' at usb-0000:00:14.0-6, CDC MBIM, 76:2c:a2:0f:46:7b
[ 1842.536485] usbcore: registered new interface driver cdc_mbim
[ 1842.539148] cdc_mbim 1-6:1.12 wwp0s20f0u6i12: renamed from wwan0

 

jenschurchill
Paper Tape
Posts: 4
Registered: ‎07-03-2018
Location: DK
Views: 2,230
Message 7 of 15

Re: Getting Sierra EM7455 (and similar) to work on X1C6

While the system can now reboot with the card installed, it can now longer connect.

 

I've tried blacklisting cdc and mbim, and also setting the usbcomp back to 9, all to no avail.

I suspect the culprit to be found around "ModemManager[999]: <warn>  Cannot power-up: hardware radio switch is OFF"

 

mar 25 20:59:56 jmc-x1c6 NetworkManager[1015]: <info>  [1553543996.3553] device (cdc-wdm0): Activation: starting connection '4G: TDC' (bd63a536-24e0-450c-8657-87b5c0d1e424)
mar 25 20:59:56 jmc-x1c6 NetworkManager[1015]: <info>  [1553543996.3557] audit: op="connection-activate" uuid="bd63a536-24e0-450c-8657-87b5c0d1e424" name="4G: TDC" pid=2802 uid=1000 result="success"
mar 25 20:59:56 jmc-x1c6 NetworkManager[1015]: <info>  [1553543996.3565] device (cdc-wdm0): state change: disconnected -> prepare (reason 'none', sys-iface-state: 'managed')
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: <info>  Simple connect started...
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: <info>  Simple connect state (3/8): Enable
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: <info>  Modem /org/freedesktop/ModemManager1/Modem/0: state changed (disabled -> enabling)
mar 25 20:59:56 jmc-x1c6 NetworkManager[1015]: <info>  [1553543996.3631] modem["cdc-wdm0"]: modem state changed, 'disabled' --> 'enabling' (reason: user-requested)
mar 25 20:59:56 jmc-x1c6 NetworkManager[1015]: <info>  [1553543996.3892] audit: op="statistics" arg="refresh-rate-ms" pid=2802 uid=1000 result="success"
mar 25 20:59:56 jmc-x1c6 NetworkManager[1015]: <info>  [1553543996.4276] audit: op="statistics" arg="refresh-rate-ms" pid=2802 uid=1000 result="success"
mar 25 20:59:56 jmc-x1c6 NetworkManager[1015]: <info>  [1553543996.4628] audit: op="statistics" arg="refresh-rate-ms" pid=2802 uid=1000 result="success"
mar 25 20:59:56 jmc-x1c6 b
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] Opening device with flags 'proxy, mbim'...
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] loaded driver of cdc-wdm port: cdc_mbim
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] creating MBIM device...
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] MBIM device created
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] opening MBIM device...
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: opening device...
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] Read max control message size from descriptors file: 4096
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] MBIM device open
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] Assuming service 'dms' is supported...
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] Allocating new client ID...
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] sending message as MBIM...
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] Received MBIM message
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] Registered 'dms' (version unknown) client with ID '3'
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] sending message as MBIM...
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] Received MBIM message
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] Releasing 'dms' client with flags 'release-cid'...
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] Unregistered 'dms' client with ID '3'
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] sending message as MBIM...
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: <info>  Modem /org/freedesktop/ModemManager1/Modem/0: state changed (enabling -> disabled)
mar 25 20:59:56 jmc-x1c6 NetworkManager[1015]: <info>  [1553543996.7537] modem["cdc-wdm0"]: modem state changed, 'enabling' --> 'disabled' (reason: unknown)
mar 25 20:59:56 jmc-x1c6 NetworkManager[1015]: <info>  [1553543996.7538] device (cdc-wdm0): state change: prepare -> disconnected (reason 'user-requested', sys-iface-state: 'managed')
mar 25 20:59:56 jmc-x1c6 NetworkManager[1015]: <info>  [1553543996.7985] audit: op="statistics" arg="refresh-rate-ms" pid=2802 uid=1000 result="success"
mar 25 20:59:56 jmc-x1c6 ModemManager[999]: [/dev/cdc-wdm0] Received MBIM message
mar 25 20:59:56 jmc-x1c6 NetworkManager[1015]: <info>  [1553543996.8373] audit: op="statistics" arg="refresh-rate-ms" pid=2802 uid=1000 result="success"
mar 25 20:59:57 jmc-x1c6 NetworkManager[1015]: <info>  [1553543997.5087] audit: op="statistics" arg="refresh-rate-ms" pid=2802 uid=1000 result="success" 

 edit: typo.

jenschurchill
Paper Tape
Posts: 4
Registered: ‎07-03-2018
Location: DK
Views: 2,137
Message 8 of 15

Re: Getting Sierra EM7455 (and similar) to work on X1C6

Got it working.

 

TL;DR: I used the information provided by https://github.com/danielewood/sierra-wireless-modems#official-sierra-documentsfirmwares-may-require... and used generic firmware 2.30.03.00 Release24

 

-

 

I had already set USBCOMP=8 on the Release23 firmware, so I had /dev/ttyUSB2 working; And configured per the instructions above.
Make note of duvh93's comment: 

AT!PCOFFEN=2

 

Now I flashed with firmware SWI9X30C_02.30.03.00 - 002.046_001 - GCF Approved - Release 24, with the following.

# Stop modem manager
systemctl stop ModemManager

# Set deviceid for later command
deviceid=`lsusb | grep -i -E '1199:9071|1199:9079|413C:81B6' | awk '{print $6}'`

# Check device id is set correctly
echo $deviceid

# Command to update firmware.
sudo qmi-firmware-update --update -d "$deviceid" SWI9X30C_02.30.03.00.cwe SWI9X30C_02.30.03.00_GENERIC_002.046_001.nvu

Then I configured the modem using picocom, with the settings noted on the github page "Basic Setup" (Note, I didn't restrict myself to LTE, as the page suggests)

sudo picocom /dev/ttyUSB2

AT!ENTERCND="A710"
AT!IMPREF="GENERIC"
AT!USBCOMP=1,1,0000100D
AT!BAND=00
AT!RESET

Finally, I restartet ModemManager

# Stop modem manager
systemctl start ModemManager

And the connection worked.

 

I shutdown the machine, to make sure it would still boot.

It did, and connected.

 

duvh93
Fanfold Paper
Posts: 5
Registered: ‎10-22-2018
Location: IT
Views: 1,698
Message 9 of 15

Re: Getting Sierra EM7455 (and similar) to work on X1C6

Still working under 1.38? Can you confirm?

intelfx
SCSI Port
Posts: 47
Registered: ‎09-15-2016
Location: RU
Views: 1,687
Message 10 of 15

Re: Getting Sierra EM7455 (and similar) to work on X1C6


@duvh93 wrote:

Still working under 1.38? Can you confirm?


Yes, still works with the latest BIOS/EC/ME/whatever firmware.

Check out current deals!


Shop current deals

Top Kudoed Authors