DEV Community

PlexyDesk
PlexyDesk

Posted on

How To Fix a Quectel EM120R-GL LTE Modem On Ubuntu

This guide documents a working fix for a Quectel EM120R-GL PCIe LTE modem on a Debian/Ubuntu style Linux system using NetworkManager and ModemManager.

It was validated on a machine with:

  • Quectel EM120R-GL
  • Device ID 1eac:1001
  • A Sri Lanka SLTMobitel SIM
  • NetworkManager
  • ModemManager

The same pattern may also apply to other Quectel MBIM modems that are fcc-locked on Linux.

Symptoms

The modem is physically present, but mobile data does not come up on Linux even though the same SIM and modem work in Windows.

Typical signs:

  • lspci -nn shows the modem, for example:
05:00.0 Unassigned class [ff00]: Quectel Wireless Solutions Co., Ltd. EM120R-GL LTE Modem [1eac:1001]
Enter fullscreen mode Exit fullscreen mode
  • mmcli -L shows no modem because ModemManager is not running, or it shows the modem but activation fails.
  • nmcli device status shows the WWAN device as disconnected or stuck connecting.
  • The ModemManager journal shows repeated messages like:
couldn't enable interface: 'Invalid transition'
Enter fullscreen mode Exit fullscreen mode
  • The raw Quectel MBIM vendor state shows:
sudo mbimcli -d /dev/wwan0mbim0 --quectel-query-radio-state
Enter fullscreen mode Exit fullscreen mode

and returns:

Radio state retrieved: 'fcc-locked'
Enter fullscreen mode Exit fullscreen mode

Root Cause

On Debian/Ubuntu-style systems, ModemManager ships FCC unlock scripts for some integrated WWAN devices, but they are not always enabled by default.

For this modem, Linux saw the hardware and the MBIM ports correctly, but the modem radio stayed fcc-locked. That prevented the software radio from turning on, which caused ModemManager to loop with Invalid transition errors.

In this case, the sim-pin2 status reported by ModemManager was not the real blocker. Data started working once the FCC lock was cleared.

Step 1: Make Sure ModemManager Is Installed and Running

Check package and service state:

dpkg -l | rg -i 'modemmanager|network-manager|libmbim|libqmi'
systemctl status ModemManager --no-pager
Enter fullscreen mode Exit fullscreen mode

If ModemManager is installed but inactive, enable it:

sudo systemctl enable --now ModemManager
Enter fullscreen mode Exit fullscreen mode

Verify the modem appears:

mmcli -L
Enter fullscreen mode Exit fullscreen mode

Step 2: Confirm the FCC Lock

Check the modem and raw MBIM radio state:

mmcli -m 0
sudo mbimcli -d /dev/wwan0mbim0 --quectel-query-radio-state
sudo mbimcli -d /dev/wwan0mbim0 --query-radio-state
Enter fullscreen mode Exit fullscreen mode

If the vendor radio state says fcc-locked, continue.

Step 3: Enable the Quectel FCC Unlock Hook

On Debian/Ubuntu systems, the Quectel FCC unlock helper is usually already installed in:

/usr/share/ModemManager/fcc-unlock.available.d/
Enter fullscreen mode Exit fullscreen mode

For the EM120R-GL device ID 1eac:1001, enable it with:

sudo ln -sfn /usr/share/ModemManager/fcc-unlock.available.d/1eac:1001 \
  /etc/ModemManager/fcc-unlock.d/1eac:1001
Enter fullscreen mode Exit fullscreen mode

Then restart ModemManager:

sudo systemctl restart ModemManager
Enter fullscreen mode Exit fullscreen mode

Step 4: Verify the Modem Registers on the Mobile Network

After restart, check:

mmcli -m 0
sudo mbimcli -d /dev/wwan0mbim0 -p --quectel-query-radio-state
Enter fullscreen mode Exit fullscreen mode

You want to see:

  • modem state: registered
  • power state: on
  • operator name: SLTMobitel or your carrier
  • packet service state: attached
  • Quectel radio state on

Step 5: Bring Up the Mobile Connection

If NetworkManager already created a profile, activate it:

nmcli connection show
nmcli connection up 'Mobitel 4G'
Enter fullscreen mode Exit fullscreen mode

If needed, re-enable autoconnect:

nmcli connection modify 'Mobitel 4G' connection.autoconnect yes
Enter fullscreen mode Exit fullscreen mode

If you need to create a profile manually:

nmcli connection add type gsm ifname '*' con-name 'Mobitel 4G' apn mobitel
nmcli connection up 'Mobitel 4G'
Enter fullscreen mode Exit fullscreen mode

Step 6: Verify Real Internet Traffic Over WWAN

Check address assignment:

nmcli -f GENERAL.STATE,GENERAL.CONNECTION,IP4.ADDRESS,IP4.GATEWAY,IP4.DNS,IP6.ADDRESS device show wwan0mbim0
ip addr show wwan0
Enter fullscreen mode Exit fullscreen mode

Force a test over the WWAN data interface:

curl -4 --interface wwan0 https://ifconfig.me/ip
Enter fullscreen mode Exit fullscreen mode

If that returns a public IP, mobile data is working.

Notes About Routing

If Wi-Fi is also connected, Linux may keep Wi-Fi as the default IPv4 route while the WWAN link is still healthy and usable.

Check default routes:

ip route show default
ip -6 route show default
Enter fullscreen mode Exit fullscreen mode

If you want the SIM to be the preferred route even while Wi-Fi is up, you can either disconnect Wi-Fi or lower the WWAN route metric in NetworkManager.

Useful Diagnostics

These commands were useful during diagnosis:

lspci -nn
lspci -k -s 05:00.0
ip link show
rfkill list all
nmcli general status
nmcli device status
mmcli -L
mmcli -m 0
mmcli -i 0
journalctl -u ModemManager -u NetworkManager -b --no-pager
sudo mbimcli -d /dev/wwan0mbim0 --query-radio-state
sudo mbimcli -d /dev/wwan0mbim0 --quectel-query-radio-state
sudo mbimcli -d /dev/wwan0mbim0 --query-pin-state
Enter fullscreen mode Exit fullscreen mode

Why It Worked in Windows but Not Linux

Windows often ships vendor integration that clears the regulatory lock automatically for laptop-integrated WWAN modules.

Linux had all the right drivers here:

  • mhi-pci-generic
  • mhi_wwan_mbim
  • mhi_wwan_ctrl

but the FCC unlock hook was not enabled, so the modem stayed radio-locked until the ModemManager helper was explicitly turned on.

Persistent Fix Summary

The persistent fix was:

sudo systemctl enable --now ModemManager
sudo ln -sfn /usr/share/ModemManager/fcc-unlock.available.d/1eac:1001 \
  /etc/ModemManager/fcc-unlock.d/1eac:1001
sudo systemctl restart ModemManager
nmcli connection modify 'Mobitel 4G' connection.autoconnect yes
nmcli connection up 'Mobitel 4G'
Enter fullscreen mode Exit fullscreen mode

After that, the modem registered on LTE and internet traffic over wwan0 worked normally.

if this article helped you in anyway donate to support our work : https://buymeacoffee.com/plexydesk

Top comments (0)