Fibocom L860-GL-16

From Gentoo Wiki
Jump to:navigation Jump to:search
This article is a stub. Please help out by expanding it - how to get started.

Fibocom L860-GL-16 is a M.2 PCIe Wireless Wide Area Network (WWAN) module, which shipped with Lenovo devices.

Preface

Lenovo and Government care about people around world and make two things for that:

  • Whitelist WWAN modules in BIOS (be aware, modules from one laptop generation van be forbidden on another one, I found that between L14 Gen3 and L14 Gen4 for example)
  • Apply FCC locking

That means - you can not just plug your equipment into the laptop and go. You should unlock it before using. I did try to use unlocking tool, shipped from Lenovo, but it did not work properly. Of course you can try by yourself and update this wiki page, if you're successful.

Before continuing, I strongly recommended to update your modem to the last available firmware version (it was 18601.5001.00.01.17.30_GC). Assuming that you have only one modem at index 0, you can identify the firmware version with

root #mmcli -m 0

Is my modem FCC locked?

Example of a modem, that is already unlocked:

root #echo 'AT+CFUN?' | socat - /dev/wwan0at1,crnl
+CFUN: 4,0

OK

Example of a modem, that is still locked:

root #echo 'AT+CFUN?' | socat - /dev/wwan0at1,crnl
ERROR

Read more at https://modemmanager.org/docs/modemmanager/fcc-unlock/

Update process

Before start you should have any WWAN card to USB adapter, because updater software supports only USB connection. You can find it on Amazon and Ebay. Plug your modem to this adapter and check for ttyACM{0,1,2} in /dev directory and dmesg output after plugging USB.

Prepare environment

All procedure will be followed in /tmp/t directory, you can adjust it for you own solution.

Downloading

Unpacking

Unpack and place downloadTool from intel

root #cd /tmp/t
root #ar x platformflashtoollite_5.8.9.0_linux_x86_64.deb
root #tar -xvf data.tar.gz
root #cp ./opt/intel/platformflashtoollite/bin/downloadTool /usr/local/bin/
root #cp ./opt/intel/platformflashtoollite/lib/libDownloadTool.so /usr/local/lib64/

Unpack firmware from Lenovo

root #innoextract nyafg03w.exe
root #cp 'code$GetExtractPath$/FwUpdateDriver/M2_7560_NAND.flz' .
root #rm -rf 'code$GetExtractPath$/'
root #unzip M2_7560_NAND.flz
root #unzip L860_Secureboot.zip

Flashing

Before flashing you should unplug your device and run downloadTool with some magic arguments

root #downloadTool -v 4 -c 1 --library /usr/local/lib64/libDownloadTool.so PSI_flash/18601.5001.00.01.17.30/18601.5001.00.01.17.30_PSI_FLASH_86511CF8.fls Devicepack/18601.5001.00.01.17.30/LENOVO_cust.5003.14_signed.fls 18601.5001.00.01.17.30_Secureboot.fls row_cust.001.012_signed.fls

Be aware with 18601.5001.00.01.17.30_PSI_FLASH_86511CF8.fls firmware part. There are a lot of PSI files in the bundle and you should choose the right one for your own equipment. If you choose the wrong one, the notebook will tell you YOUR DEVICE IS NOT WHITELISTED when you plug it into the M.2 slot.

When downloadTool asks about powercycle of your device - just plug it to USB and all should be fine (or not) After flashing you can try to place your device to Laptop. If you got whitelist error - try another one PSI file.


Unlocking

Lenovo ships some fcc unlock tool for Ubuntu, but this solution did not work in my own case. I found some workaround in the Internet, but it's no silver bullet. Use it at your own risk.

Checkout and build the third party fcc unlocking tool for modem here. The process is very simple

root #cd /tmp/t
root #rm -rf *
root #cd xmm7360-usb-modeswitch/fcc_unlock
root #touch sha-256.h
root #make
root #cp fcc_unlcok /usr/local/bin/
Note
The Fibocom L860-GL-16 is actually Intel Corporation XMM7560 LTE Advanced Pro Modem. Above repository is named after XMM7360 though.

At the present moment you can try to unlock your modem (command can fail, just run it again and again and again, it'll successful or your modem completely hungs you should reboot your Laptop):

root #./fcc_unlock

After that I wrote some wrapper for unlocking:

FILE /usr/local/fcc_unlock_wrapper
#!/bin/bash

OUTPUT="/dev/wwan0at0,crnl"

/usr/local/bin/fcc_unlock

sleep 5

echo 'at@nvm:fix_cat_fcclock.fcclock_mode?' | socat - ${OUTPUT}
echo 'at@nvm:fix_cat_fcclock.fcclock_mode=0' | socat - ${OUTPUT}
echo 'at@store_nvm(fix_cat_fcclock)' | socat - ${OUTPUT}
echo 'AT+CFUN?' | socat - ${OUTPUT}
echo 'AT+CFUN=1,0' | socat - ${OUTPUT}

If unlocking process will be successful you should restart ModemManager and after few seconds your device appeared in unlocked state:

root #mmcli -m 0

Kernel configuration

In my own case modem uses iosm driver

root #lspci -vv


ModemManager Support

Merge request for XMM 7360 in Modem Manager https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1200

Merge request for XMM 7560 FCC unlocking script https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1141