How can I get Fibicom L850-GL modem to work

I looked up a second hand Thinkpad T495) which is an AMD based system similar to your x395.

I have managed to make it work - upon request - I can also provide a set of packages ready to install.

Research

During my research, I made several mistakes and I found several hints which in the end made it possible.

  • Make sure you have disabled the pin on your sim card before you attempt to update and activate the modem.

  • My biggest mistake was to wipe Windows from the system - bad idea - as Windows is instrumental in getting the modem up-to-date and functional.

  • Another mistake I made was to use pamac to build the custom packages. Instead I had to use the native Arch Linux method.

I will also recommend using linux70 (remove udev-usb-sync), as this will make wonders because of the kernels improvements with relation to these generations of AMD APUs.

It may be possible to execute the Windows configuration tasks below by using a Hirens BootCD - but that I have not tested.

How To Lenovo Fibocom L850-GL using Manjaro Linux

If your Fibocom modem’s firmware release is version 2.0.1.103 then you can proceed to building the custom modem manager packages.

  1. Boot to Windows
  2. Download and install the lastest driver package (includes new firmware) from Lenovo download site
  3. Run Windows update
  4. Reboot into Windows (Be sure to let the firmware upload finish uninterrupted)
  5. Connect to the internet
  6. While connected - Click Start → Power → Restart (This ensures the modem is functional when you reboot into Manjaro)
  7. Boot into your Manjaro installation

Manjaro Linux modem setup and configuration

Using a clean Manjaro Linux dual-boot installation.

You need to replace ModemManager with the development version.

:warning: If get other system issues - make sure to mention you are using a development version of ModemManager.

The development version contains the required functionality, a fibocom module and a fcc-unlock script. The development version depends on other development libraries which will replace existing system libraries with development versions.

The package fwupd depends on libmbin which will create a conflict, a conflict you can only resolve by removing fwupd package.

To ensure no interference - stop and disable the installed ModemManager

sudo systemctl disable --now ModemManager

Uninstall the modemmanager package

sudo pacman -Rns modemmanager

If installed remove the fwupd package

sudo pacman -Rns fwupd

Create a work folder

WORK=~/fibocom
mkdir $WORK
cd $WORK

Then we need three custom scripts - source AUR - the build order is important - do not use an AUR helper

Install base-devel

sudo pacman -Syu base-devel git --needed
git clone https://aur.archlinux.org/libmbin-dev
cd libmbin-dev
PKGDEST=$WORK makepkg -sicC
cd $WORK
git clone https://aur.archlinux.org/libqmi-dev
cd libqmi-dev
PKGDEST=$WORK makepkg -sicC
cd $WORK
cd $WORK
git clone https://aur.archlinux.org/modemmanager-dev
cd modemmanager-dev
PKGDEST=$WORK makepkg -sicC
cd $WORK

You should expect 4 packages in the work folder

ls -l *.pkg.tar.zst 
-rw-r--r-- 1 nix nix  629403 12 apr 17:27 libmbim-dev-1:1.33.1_dev-1-x86_64.pkg.tar.zst
-rw-r--r-- 1 nix nix  802096 12 apr 17:34 libmm-glib-dev-1.25.95_dev-1-x86_64.pkg.tar.zst
-rw-r--r-- 1 nix nix 2736562 12 apr 17:28 libqmi-dev-1.37.995_dev-1-x86_64.pkg.tar.zst
-rw-r--r-- 1 nix nix 1544114 12 apr 17:34 modemmanager-dev-1.25.95_dev-1-x86_64.pkg.tar.zst

Verify that all packages has been installed before proceeding - check the /var/log/pacman.log - when all is done symlink the fcc-unlock script

sudo ln -s /usr/share/ModemManager/fcc-unlock.available.d/8086:7360 /etc/ModemManager/fcc-unlock.d/8086:7360

Enable and start the ModemManager service

sudo systemctl enable --now ModemManager

Result

inxi -Fc0
 $ inxi -Fc0 
System:
  Host: tp485 Kernel: 7.0.0-rc7-1-MANJARO arch: x86_64 bits: 64
  Desktop: KDE Plasma v: 6.6.4 Distro: Manjaro Linux
Machine:
  Type: Laptop System: LENOVO product: 20NKS05100 v: ThinkPad T495
    serial: <superuser required>
  Mobo: LENOVO model: 20NKS05100 v: SDK0J40697 WIN
    serial: <superuser required> Firmware: UEFI vendor: LENOVO
    v: R12ET64P(1.34 ) date: 02/23/2024
Battery:
  ID-1: BAT0 charge: 50.2 Wh (99.5%) condition: 50.5/50.5 Wh (100%)
CPU:
  Info: quad core model: AMD Ryzen 5 PRO 3500U w/ Radeon Vega Mobile Gfx
    bits: 64 type: MT MCP cache: L2: 2 MiB
  Speed (MHz): avg: 1230 min/max: 1400/2100 cores: 1: 1230 2: 1230 3: 1230
    4: 1230 5: 1230 6: 1230 7: 1230 8: 1230
Graphics:
  Device-1: Advanced Micro Devices [AMD/ATI] Picasso/Raven 2 [Radeon Vega
    Series / Radeon Mobile Series] driver: amdgpu v: kernel
  Device-2: Chicony Integrated Camera (1280x720@30) driver: uvcvideo
    type: USB
  Display: wayland server: X.org v: 1.21.1.21 with: Xwayland v: 24.1.9
    compositor: kwin_wayland driver: X: loaded: amdgpu unloaded: modesetting
    dri: radeonsi gpu: amdgpu resolution: 1920x1080~60Hz
  API: EGL v: 1.5 drivers: kms_swrast,radeonsi,swrast
    platforms: gbm,wayland,x11,surfaceless,device
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 26.0.4-arch1.1
    renderer: AMD Radeon Vega 8 Graphics (radeonsi raven ACO DRM 3.64
    8.0.0-rc7-1-MANJARO)
  API: Vulkan v: 1.4.341 drivers: radv surfaces: N/A
  Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo
    de: kscreen-console,kscreen-doctor wl: wayland-info x11: xdpyinfo,xprop
Audio:
  Device-1: Advanced Micro Devices [AMD/ATI] Raven/Raven2/Fenghuang HDMI/DP
    Audio driver: snd_hda_intel
  Device-2: Advanced Micro Devices [AMD] Audio Coprocessor
    driver: snd_pci_acp3x
  Device-3: Advanced Micro Devices [AMD] Ryzen HD Audio
    driver: snd_hda_intel
  API: ALSA v: k7.0.0-rc7-1-MANJARO status: kernel-api
  Server-1: PipeWire v: 1.6.3 status: active
Network:
  Device-1: Intel Wi-Fi 5 Wireless-AC 9x6x [Thunder Peak] driver: iwlwifi
  IF: wlp1s0 state: down mac: d6:76:65:90:09:5c
  Device-2: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    driver: r8169
  IF: enp3s0f0 state: down mac: f8:75:a4:30:8f:b7
  Device-3: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    driver: r8169
  IF: enp5s0 state: down mac: f8:75:a4:30:8f:b6
  IF-ID-1: wwan0 state: unknown mac: N/A
Bluetooth:
  Device-1: Intel Wireless-AC 9260 Bluetooth Adapter driver: btusb type: USB
  Report: rfkill ID: hci0 state: up address: see --recommends
Drives:
  Local Storage: total: 476.94 GiB used: 38.2 GiB (8.0%)
  ID-1: /dev/nvme0n1 vendor: SK Hynix model: BC901 HFS512GEJ9X108N
    size: 476.94 GiB
Partition:
  ID-1: / size: 97.59 GiB used: 38.03 GiB (39.0%) fs: xfs dev: /dev/nvme0n1p4
  ID-2: /boot size: 3.86 GiB used: 147.7 MiB (3.7%) fs: ext4
    dev: /dev/nvme0n1p2
  ID-3: /boot/efi size: 299.4 MiB used: 32.6 MiB (10.9%) fs: vfat
    dev: /dev/nvme0n1p1
Swap:
  Alert: No swap data was found.
Sensors:
  System Temperatures: cpu: 60.0 C mobo: N/A gpu: amdgpu temp: 59.0 C
  Fan Speeds (rpm): fan-1: 0 fan-2: 0
Info:
  Memory: total: 16 GiB note: est. available: 13.53 GiB used: 2.97 GiB (22.0%)
  Processes: 278 Uptime: 34m Shell: Zsh inxi: 3.3.40

lspci -nn | grep 8086:7360
 $ lspci -nn | grep 8086:7360
04:00.0 Cellular controller/modem [0d40]: Intel Corporation XMM7360 LTE Advanced Modem [8086:7360] (rev 01)
nmcli -m 0
 $ mmcli -m 0
  ----------------------------------
  General  |                   path: /org/freedesktop/ModemManager1/Modem/0
           |              device id: b776b707c73cf296b6228e1f1aa09ba6436100e4
  ----------------------------------
  Hardware |           manufacturer: Fibocom
           |                  model: L850 LTE Module","L850
           |      firmware revision: 18500.5001.00.04.26.22
           |              supported: gsm-umts, lte
           |                current: gsm-umts, lte
           |           equipment id: 015550001546651
  ----------------------------------
  System   |                 device: /sys/devices/pci0000:00/0000:00:01.5/0000:04:00.0
           |                physdev: /sys/devices/pci0000:00/0000:00:01.5/0000:04:00.0
           |                drivers: iosm
           |                 plugin: Intel
           |           primary port: wwan0at1
           |                  ports: wwan0 (net), wwan0at1 (at), wwan0xmmrpc0 (xmmrpc)
  ----------------------------------
  Status   |         unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (3)
           |                  state: connected
           |            power state: on
           |            access tech: lte
           |         signal quality: 9% (recent)
  ----------------------------------
  Modes    |              supported: allowed: 3g; preferred: none
           |                         allowed: 4g; preferred: none
           |                         allowed: 3g, 4g; preferred: none
           |                         allowed: 3g, 4g; preferred: 3g
           |                         allowed: 3g, 4g; preferred: 4g
           |                current: allowed: 3g, 4g; preferred: 4g
  ----------------------------------
  Bands    |              supported: utran-1, utran-4, utran-5, utran-8, utran-2, eutran-1, 
           |                         eutran-2, eutran-3, eutran-4, eutran-5, eutran-7, eutran-8, 
           |                         eutran-12, eutran-13, eutran-17, eutran-18, eutran-19, eutran-20, 
           |                         eutran-26, eutran-28, eutran-29, eutran-30, eutran-41, eutran-66
           |                current: utran-1, utran-4, utran-5, utran-8, utran-2, eutran-1, 
           |                         eutran-2, eutran-3, eutran-4, eutran-5, eutran-7, eutran-8, 
           |                         eutran-12, eutran-13, eutran-17, eutran-18, eutran-19, eutran-20, 
           |                         eutran-26, eutran-28, eutran-29, eutran-30, eutran-41, eutran-66
  ----------------------------------
  IP       |              supported: ipv4, ipv6, ipv4v6
  ----------------------------------
  3GPP     |                   imei: 015550001546651
           |            operator id: 23802
           |          operator name: Telenor DK
           |           registration: home
           |   packet service state: attached
  ----------------------------------
  3GPP EPS |   ue mode of operation: csps-2
           | initial bearer ip type: ipv4v6
  ----------------------------------
  SIM      |       primary sim path: /org/freedesktop/ModemManager1/SIM/0
  ----------------------------------
  Bearer   |                  paths: /org/freedesktop/ModemManager1/Bearer/0

ip a
 $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: wwan0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/none 
    inet 10.181.147.199/0 brd 255.255.255.255 scope global noprefixroute wwan0
       valid_lft forever preferred_lft forever
3: enp3s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether f8:75:a4:30:8f:b7 brd ff:ff:ff:ff:ff:ff
    altname enxf875a4308fb7
4: enp5s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether f8:75:a4:30:8f:b6 brd ff:ff:ff:ff:ff:ff
    altname enxf875a4308fb6
5: wlp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 3e:16:02:f5:8b:db brd ff:ff:ff:ff:ff:ff permaddr 7c:b2:7d:c2:87:dd
    altname wlx7cb27dc287dd