X55 Modem Quick Troubleshooting Reference

Addendum to this post: https://www.joelwnelson.com/2026/04/fixing-the-snapdragon-x55-modem-on-linux/
ThinkPad X13 Gen 2 / Foxconn T99W175 / Linux Mint


Step 1: Check PCIe Power State

cat /sys/bus/pci/devices/0000:08:00.0/power/control

Should return on. If it returns auto, the power fix has reverted.

Fix:

sudo systemctl status modem-stay-awake.service
sudo systemctl start modem-stay-awake.service

Step 2: Check What 5G Is Doing

sudo mmcli -m 0 --signal-setup=5 && sleep 6 && mmcli -m 0 --signal-get

If 5G RSRP is around -156 and SNR is -23, the 5G component is noise and is dragging LTE down.

Also check access tech:

mmcli -m 0 | grep "access tech"

Step 3: Check APN (Instructions Provided For AT&T US)

mmcli -m 0 | grep "initial bearer apn"
mmcli -b 1 | grep apn
nmcli connection show "AT&T ATT Broadband 1" | grep gsm.apn

All three should show nrbroadband. If any show broadband, an known issue with bearer churn problem will return.

Fix:

sudo mmcli -m 0 --3gpp-set-initial-eps-bearer-settings="apn=nrbroadband,ip-type=ipv4v6"
sudo nmcli connection modify "AT&T ATT Broadband 1" gsm.apn nrbroadband
sudo nmcli connection modify "AT&T ATT Broadband 1" gsm.mtu 1420
sudo nmcli connection down "AT&T ATT Broadband 1"
sudo nmcli connection up "AT&T ATT Broadband 1"

Step 4: Check Bearer Health

mmcli -b 1

Look for connected: yes and a real IP address. Then check if data is actually moving:

cat /sys/class/net/wwan0/statistics/rx_bytes
sleep 5
cat /sys/class/net/wwan0/statistics/rx_bytes

If rx_bytes doesn’t increment, the MBIM data channel is frozen.


Step 5: Check ModemManager Journal

sudo journalctl -u ModemManager --since "30 minutes ago" | grep -i "warn|fail|bearer|error"

Bearer connection failures cycling rapidly = APN mismatch or bearer churn.
MBIM NotOpened errors = data channel collapsed, likely needs reconnect or reboot.


Step 6: Check Routing

ip route show

Make sure default route is via wwan0. If WiFi is also connected, wwan0 should have a lower metric number to win routing, or test cellular explicitly with -I wwan0.


Step 7: Check FCC Unlock

sudo /usr/share/ModemManager/fcc-unlock.available.d/105b 
  /org/freedesktop/ModemManager1/Modem/0 wwan0mbim0

Should return Successfully run Foxconn FCC authentication v2. If it errors, check the symlink:

ls -la /etc/ModemManager/fcc-unlock.d/105b:e0ab

Step 8: Check Modes

mmcli -m 0 | grep -A3 "Modes"

Current should show allowed: 4g, 5g. If it shows only 4g or only 3g, the mode setting is incorrect.


Nuclear Option: Full Reconnect (Instructions For AT&T)

If steps above don’t resolve it, force a full reconnect without rebooting:

sudo nmcli connection down "AT&T ATT Broadband 1"
sleep 5
echo on | sudo tee /sys/bus/pci/devices/0000:08:00.0/power/control
echo -1 | sudo tee /sys/bus/pci/devices/0000:08:00.0/power/autosuspend_delay_ms
sleep 3
sudo nmcli connection up "AT&T ATT Broadband 1"
sleep 10
ping -c 5 -I wwan0 8.8.8.8

Quick Signal Check

sudo qmicli --device=/dev/wwan0mbim0 --device-open-mbim --nas-get-signal-info

Run with ModemManager stopped if it returns permission errors. RSRQ worse than -15 dB or SNR below 3 dB means poor cell conditions regardless of software config.


Known Limitations

  • Mode lock does not survive reboot without a systemd service
  • Band changes via mmcli do not survive reboot
  • Modem often does not recover from suspend without the resume systemd service
  • Driver unbind/rebind will cause modem to disappear — always reboot instead