Issue activating mobile internet modem on a Lenovo ThinkPad X1 Yoga (Gen 8)

Hey lovely people of Fedora!

I’m a Linux n00b and trying to find my bearing again after not having used any distro productively in over 15 years. It’s day four and I already need your help.

I successfully installed Fedora 42 (and yesterday the update to 43) on a Lenovo ThinkPad X1 Yoga (8th gen, type 21HRS2MW00). Most things run quite smoothly but I can’t get the mobile internet modem to work: the APN settings can’t be saved.

When activated the modem is recognised like this:

  • Manufacturer: mtk
  • Model: MBIM [14C3:4D75]
  • Firmware: 81600.0000.00.29.22.19_GCE24

When I try to enable mobile data, it keeps asking me for access point data. I diligently enter the access point data (which in my case are these) and hit save.

The result is that the list meant to show that data stays empty and clicking close on that window will also disable mobile broadband again.

[See update in post below]

From what I can tell the firmware is the one provided by Lenovo, which I seemingly managed to install the n00b way by double-clicking the .rpm files in the order outlined in the instructions and applying one command found in the “read me”.

Side note: I had actually tried installing the rpm packages the way Lenovo outlines it in the instructions but constantly ran into errors that the transaction lock couldn’t be set or that /usr/var was read-only.

I did some more digging and ended up with information that doesn’t make sense to me.

(1)

I may have stumbled across a UI bug in the Network Manager, where I can save connections using that interface but I cannot activate any of them. Reason being: while doing some digging, I stumbled across this topic and a command to open a “network connections” window using the nm-connection-editor command. IT showed more than ten copies of the same connection.

(2)

Looking at the connections in the Network Manager CLI, I got this output:

NAME         UUID                                  TYPE      DEVICE    
Amon Amarth  34c8d9d5-a24b-4bb9-b701-213192501d02  wifi      wlp0s20f3 
lo           069a0b95-ab73-45a0-8b7b-79c654e372c1  loopback  lo        
Telekom      454cd84c-ee8f-45f3-a206-5df3eb51dc75  gsm       --     

The curious bit here is that the mobile broadband connection “Telekom” doesn’t have a device associated with it.

(3)

This sent me down a rabbit hole of trying to figure out if my modem was even properly recognized.

The mmcli -L command yielded the following output:

    /org/freedesktop/ModemManager1/Modem/0 [mtk] MBIM [14C3:4D75]

And trying to get more information about the modem using mmcli -m 0 gave me this:

 -----------------------------
  General  |              path: /org/freedesktop/ModemManager1/Modem/0
           |         device id: 2fac1ffe153b6f47e9e9a162e6be3c83104ff40d
  -----------------------------
  Hardware |      manufacturer: mtk
           |             model: MBIM [14C3:4D75]
           | firmware revision: 81600.0000.00.29.22.19_GC
           |                    E24
           |      h/w revision: V1.0.6
           |         supported: gsm-umts, lte, 5gnr
           |           current: gsm-umts, lte, 5gnr
           |      equipment id: [REDACTED]
  -----------------------------
  System   |            device: /sys/devices/pci0000:00/0000:00:1c.0/0000:08:00.0
           |           physdev: /sys/devices/pci0000:00/0000:00:1c.0/0000:08:00.0
           |           drivers: mtk_t7xx
           |            plugin: mtk
           |      primary port: wwan0mbim0
           |             ports: wwan0 (net), wwan0at0 (at), wwan0mbim0 (mbim)
  -----------------------------
  Status   |             state: failed
           |     failed reason: esim-without-profiles
           |       power state: low
  -----------------------------
  Modes    |         supported: allowed: 3g; preferred: none
           |                    allowed: 4g; preferred: none
           |                    allowed: 3g, 4g; preferred: none
           |                    allowed: 5g; preferred: none
           |                    allowed: 3g, 5g; preferred: none
           |                    allowed: 4g, 5g; preferred: none
           |                    allowed: 3g, 4g, 5g; preferred: none
           |           current: allowed: 3g, 4g, 5g; preferred: none
  -----------------------------
  IP       |         supported: ipv4, ipv6, ipv4v6
  -----------------------------
  3GPP     |              imei: [REDACTED]
  -----------------------------
  SIM      |  primary sim path: /org/freedesktop/ModemManager1/SIM/1
           |    sim slot paths: slot 1: /org/freedesktop/ModemManager1/SIM/0
           |                    slot 2: /org/freedesktop/ModemManager1/SIM/1 (active)

So the modem is recognized, the driver works, the hardware is active. The weird part is this:

  Status   |             state: failed
           |     failed reason: esim-without-profiles
           |       power state: low

I’m not using an eSIM but a physical SIM that’s in the slot, recognized by Modem Manager and deemed active.

Does anyone have an idea what is going on here?

I had a bit of success but honestly, don’t ask me why or how this worked.

Turns Out™ the FM350-GL 5G modem is capable of using physical SIM cards and eSIMs, which this part of the modem read-out indicated, too:

 -----------------------------------
  SIM       |       primary sim path: /org/freedesktop/ModemManager1/SIM/1
            |         sim slot paths: slot 1: /org/freedesktop/ModemManager1/SIM/1
            |                         slot 2: /org/freedesktop/ModemManager1/SIM/2 (active)

I needed to find a way to switch the card the system uses but for some reason the default modem manager command mmcli -m 0 --set-primary-sim-slot=1 (with or without sudo) kept returning errors telling me that the SIM id was invalid, which made no sense.

Some more searching the web got me to this command:

mmcli -v -m any --set-primary-sim-slot=1

Which finally finally and successfully switched the SIM slot to the physical one. A small success.

I then enabled mobile data in the Network Manager GUI and got a prompt for the SIM PIN for the first time since I started working on this but the laptop still wasn’t able to actually establish a connection.

The modem read-out continued to look like this:

-----------------------------------
  Status    |                   lock: sim-pin2
            |         unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (3), sim-puk2 (10)
            |                  state: enabling
            |            power state: low

Note the power state as “low” and the modem state as “enabling”. Any attempts to change the power state (using mmcli -m 0 --set-power-state-on or cycling related commands) were unsuccessful.

The attempt to force the modem to be enabled using sudo mmcli -m 0 -e was met with this message:

error: couldn't enable the modem: 'GDBus.Error:org.freedesktop.DBus.Error.NoReply: Remote peer disconnected'

I then ran a monitoring command (mmcli -m 0- w)based on a recommendation I found in this forum and the return was the following over and over again:

/org/freedesktop/ModemManager1/Modem/2: Initial state, 'enabling'
	/org/freedesktop/ModemManager1/Modem/2: State changed, 'enabling' --> 'disabled' (Reason: None or unknown)
	/org/freedesktop/ModemManager1/Modem/2: State changed, 'disabled' --> 'enabling' (Reason: User request)
	/org/freedesktop/ModemManager1/Modem/2: State changed, 'enabling' --> 'disabled' (Reason: None or unknown)
	/org/freedesktop/ModemManager1/Modem/2: State changed, 'disabled' --> 'enabling' (Reason: User request)
	/org/freedesktop/ModemManager1/Modem/2: State changed, 'enabling' --> 'disabled' (Reason: None or unknown)
	/org/freedesktop/ModemManager1/Modem/2: State changed, 'disabled' --> 'enabling' (Reason: User request)

And this is where I’m stuck now. I have no idea what is disabling the modem constantly.