Synopsis
This topic is a boiled down version of the topic How can I get Fibicom L850-GL modem to work
Lenovo T495(s) and X395 is based on AMD and the modem (Intel xmm7360) is connected to the PCI bus using m.2 interface. They share the same hardware in different casing and weight class.
The Arch Wiki contains a reference to build a custom driver xmm7360-pci but I did not have any success with it.
On the other hand - replacing Modem Manager with modemmanager-dev will work.
Remember that replacing system components may introduce issues when the system has been updated - in such case start with rebuilding the custom packages just the same way you are going to do now.
As of 2026-04-16T22:00:00Z the following has been verified as a fully functional solution.
This guide will eventually become obsolete when upstream releases the next version.
Options tested
During my research, all my attempts to solve it failed until I installed Windows on the device.
Lesson learned - don’t wipe such system but keep a minimal Windows for dual boot.
| a wiped system with clean install of Manjaro | xmm7360-pci |
|
| - | xmm7360-pci-spat-dkms-git |
|
| - | modemmanager-dev |
|
| installed windows 10 - initialise modem | Manjaro (dualboot) - modemmanager-dev |
|
| - | Manjaro (wipe) - modemmanager-dev |
|
| installed windows 11 - initialise modem | Manjaro (dualboot) - modemmanager-dev |
|
| - | Manjaro (wipe) - modemmanager-dev |
The break-through came when I loaded the system witn a minimal Windows (custom partitioning Windows installer to use a 64GB partition) - the system is usually preloaded with Windows and the key is stored in the system’s firmware, so there is no copyright violations by doing so..
Requirements
The Thinkpad models T495(s) and X395 systems are generally fully compatible with Linux kernel.
The modem however requires a Windows installation to be able to update the modems firmware. You should not wipe Windows from the device - but rather reduce it to e.g. 64GB.
The following assumes you have a working Windows 10/11 installation on the device as Windows is instrumental in getting the modem up-to-date and functional.
Preparation
If your Fibocom modem’s firmware release is version 2.0.1.103 then you can proceed to building the custom modem manager packages.
- Boot to Windows
- Download and install the lastest driver package (includes new firmware) from Lenovo download site
- Run Windows update
- Reboot into Windows (Be sure to let the firmware upload finish uninterrupted)
- Connect to the internet
- While connected - Click Start → Power → Restart (This ensures the modem is functional when you reboot into Manjaro)
- Boot into your Manjaro installation
modemmanager-dev
The modem is locked and it requires a fcc-unlock script. No such script exist for the current ModemManager.
The development version of ModemManager does provide a such unlock script matching the hardware ID 8086:7360.
Using a clean Manjaro Linux dual-boot installation.
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
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
During the build of the packages you will be queried to replace existing packages - make sure to acknowledge and allow replacing them
git clone https://aur.archlinux.org/libmbin-dev
cd libmbim-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 libmbin-dev, libmm-glib-dev, libqmi-dev and modemmanager-dev - something similar to this output of ls
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
Activate 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
Troubleshooting
The modem may not wake correctly after a system sleep/standby.
-
Restarting the system will revive the modem
-
Unload and reload the
iosmkernel module, then restart modem managersudo modprobe -r iosm && sudo modprobe iosm sudo systemctl restart ModemManager- wait 5-15 seconds for the modem to restart
The NetworkManager integration may display a limited connectivity message - this is not a lack of connection ![]()
