Recommended WWAN config for LTE with static config bearer

I have a Sierra Wireless EM7455 LTE modem in my VyOS box. I use the following configuration to enable the LTE modem:

interfaces {
     wwan wwan0 {
         address dhcp
         address dhcpv6
         apn telia
     }
 }

Using mmcli -m 0, I can see that ModemManager successfully connects to the mobile network.

# mmcli -m 0
  --------------------------------
  General  |                 path: /org/freedesktop/ModemManager1/Modem/0
           |            device id: <REDACTED>
  --------------------------------
  Hardware |         manufacturer: Sierra Wireless, Incorporated
           |                model: Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
           |    firmware revision: SWI9X30C_02.39.00.00
           |       carrier config: default
           |         h/w revision: EM7455
           |            supported: gsm-umts, lte
           |              current: gsm-umts, lte
           |         equipment id: <REDACTED>
  --------------------------------
  System   |               device: /sys/devices/pci0000:00/0000:00:14.0/usb3/3-1
           |              drivers: qcserial, cdc_mbim
           |               plugin: sierra
           |         primary port: cdc-wdm0
           |                ports: cdc-wdm0 (mbim), ttyUSB0 (qcdm), ttyUSB2 (at), wwan0 (net)
  --------------------------------
  Status   |                 lock: sim-pin2
           |       unlock retries: sim-pin2 (3)
           |                state: connected
           |          power state: on
           |          access tech: lte
           |       signal quality: 16% (cached)
  --------------------------------
  Modes    |            supported: allowed: 3g; preferred: none
           |                       allowed: 4g; preferred: none
           |                       allowed: 3g, 4g; preferred: 4g
           |                       allowed: 3g, 4g; preferred: 3g
           |              current: allowed: 3g, 4g; preferred: 4g
  --------------------------------
  Bands    |            supported: utran-1, utran-3, 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-20, eutran-25, eutran-26, eutran-41
           |              current: utran-1, utran-3, 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-20, eutran-25, eutran-26, eutran-41
  --------------------------------
  IP       |            supported: ipv4, ipv6, ipv4v6
  --------------------------------
  3GPP     |                 imei: <REDACTED>
           |        enabled locks: fixed-dialing
           |          operator id: 24202
           |        operator name: Telia N
           |         registration: home
           | packet service state: attached
  --------------------------------
  3GPP EPS | ue mode of operation: csps-2
  --------------------------------
  SIM      |     primary sim path: /org/freedesktop/ModemManager1/SIM/0
           |       sim slot paths: slot 1: /org/freedesktop/ModemManager1/SIM/0 (active)
           |                       slot 2: none
  --------------------------------
  Bearer   |                paths: /org/freedesktop/ModemManager1/Bearer/0

I can also see that the ModemManager bearer has both IPv4 and IPv6 address:

# mmcli -b 0
  ------------------------------------
  General            |           path: /org/freedesktop/ModemManager1/Bearer/0
                     |           type: default
  ------------------------------------
  Status             |      connected: yes
                     |      suspended: no
                     |    multiplexed: no
                     |      interface: wwan0
                     |     ip timeout: 20
  ------------------------------------
  Properties         |            apn: telia
                     |        roaming: allowed
                     |        ip type: ipv4v6
  ------------------------------------
  IPv4 configuration |         method: static
                     |        address: 100.x.x.x
                     |         prefix: 28
                     |        gateway: 100.x.x.x
                     |            dns: 89.9.255.24, 89.9.255.25
                     |            mtu: 1500
  ------------------------------------
  IPv6 configuration |         method: static
                     |        address: 2001:x::x
                     |         prefix: 64
                     |        gateway: 2001:x::x
                     |            dns: 2001:2020:82ff:8006::1, 2001:2020:82ff:8007::1
                     |            mtu: 1500
  ------------------------------------
  Statistics         |     start date: 2026-05-25T12:34:00Z
                     |       duration: 270
                     |   uplink-speed: 50000000
                     | downlink-speed: 300000000
                     |       attempts: 1
                     | total-duration: 270

The problem is that the VyOS wwan0 interface does not get an IP address at all:

# ip addr
6: wwan0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1430 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether 6e:37:a9:d0:70:1d brd ff:ff:ff:ff:ff:ff
    inet6 fe80::6c37:a9ff:fed0:701d/64 scope link 
       valid_lft forever preferred_lft forever

I found the following VyOS forum post: Wwan not getting an IP on vuos 1.5 - #2 by tjjh89017

If the bearer shows “static method”, VyOS doesn’t support this currently.

I can see in my bearer configuration that I get method: static. So I guess I am out of luck on automatic VyOS configuration of this modem. Keep in mind that I have not configured this static stuff. It comes from my mobile ISP. I do not know why it uses a static configuration instead of DHCP or PPPoE.

What would be the recommended way to configure this modem such that I get a working WWAN connection? I can run mmcli -m 0 --simple-connect “apn=telia,ip-type=ipv4v6” to start the ModemManager connection, but I do not know how to further integrate that connection into VyOS (IP address, routing, failover, etc.).

I have attempted to write a Python script that pulls information from mmcli and runs a few ip address add x.x.x.x dev wwan0 commands. That sets IP addresses on the wwan0 interface, but it feels like a very hacky way to do this. And it would be a nightmare to handle IP address changes and other state changes. I guess I am basically reinventing NetworkManager here… And I have zero experience with configuring routing stuff. Is there a better way to do this with VyOS commands?

Another small snag is also that VyOS seems unable to find the wwan0 interface during boot after a restart, so it automatically removes it from the configuration. If I re-add it to the configuration after boot it finds it again. I guess the modem might not have booted yet. Is there a good way to make VyOS wait for the modem to become available?

Sanitized VyOS configuration:

firewall {
    group {
        interface-group WAN {
            interface "eth0"
            interface "wwan0"
        }
    }
    ipv4 {
        name LAN-LOCAL {
            default-action "accept"
        }
        name LAN-WAN {
            default-action "accept"
            rule 6 {
                action "drop"
                state "invalid"
            }
        }
        name LOCAL-LAN {
            default-action "accept"
        }
        name LOCAL-WAN {
            default-action "accept"
        }
        name WAN-LAN {
            default-action "drop"
            rule 5 {
                action "accept"
                description "Allow Established/Related traffic from WAN to LAN"
                state "established"
                state "related"
            }
            rule 6 {
                action "drop"
                state "invalid"
            }
            rule 10 {
                action "accept"
                connection-status {
                    nat "destination"
                }
                description "Allow all destination NAT (DNAT) port forwarding connections."
            }
            rule 20 {
                action "accept"
                protocol "icmp"
            }
        }
        name WAN-LOCAL {
            default-action "drop"
            rule 5 {
                action "accept"
                description "Allow Established/Related traffic to LOCAL from WAN."
                state "established"
                state "related"
            }
            rule 6 {
                action "drop"
                state "invalid"
            }
            rule 10 {
                action "accept"
                connection-status {
                    nat "destination"
                }
                description "Allow all estination NAT (DNAT) port forwarding connections."
            }
            rule 20 {
                action "accept"
                protocol "icmp"
            }
        }
    }
    ipv6 {
        name LAN-LOCAL {
            default-action "accept"
        }
        name LAN-WAN {
            default-action "accept"
            rule 6 {
                action "drop"
                state "invalid"
            }
        }
        name LOCAL-LAN {
            default-action "accept"
        }
        name LOCAL-WAN {
            default-action "accept"
        }
        name WAN-LAN {
            default-action "drop"
            rule 5 {
                action "accept"
                state "established"
                state "related"
            }
            rule 6 {
                action "drop"
                state "invalid"
            }
            rule 20 {
                action "accept"
                protocol "ipv6-icmp"
            }
        }
        name WAN-LOCAL {
            default-action "drop"
            rule 5 {
                action "accept"
                state "established"
                state "related"
            }
            rule 6 {
                action "drop"
                state "invalid"
            }
            rule 20 {
                action "accept"
                protocol "ipv6-icmp"
            }
            rule 30 {
                action "accept"
                description "Allow DHCPv6 configuration"
                destination {
                    port "546"
                }
                protocol "udp"
                source {
                    port "547"
                }
            }
        }
    }
    zone LAN {
        default-action "drop"
        description "Zone for LAN"
        from LOCAL {
            firewall {
                ipv6-name "LOCAL-LAN"
                name "LOCAL-LAN"
            }
        }
        from WAN {
            firewall {
                ipv6-name "WAN-LAN"
                name "WAN-LAN"
            }
        }
        member {
            interface "eth1"
            interface "wg1"
        }
    }
    zone LOCAL {
        default-action "drop"
        description "Zone for LOCAL (router-internal)"
        from LAN {
            firewall {
                ipv6-name "LAN-LOCAL"
                name "LAN-LOCAL"
            }
        }
        from WAN {
            firewall {
                ipv6-name "WAN-LOCAL"
                name "WAN-LOCAL"
            }
        }
        local-zone
    }
    zone WAN {
        default-action "drop"
        description "Zone for WAN (big internet)"
        from LAN {
            firewall {
                ipv6-name "LAN-WAN"
                name "LAN-WAN"
            }
        }
        from LOCAL {
            firewall {
                ipv6-name "LOCAL-WAN"
                name "LOCAL-WAN"
            }
        }
        member {
            interface "eth0"
            interface "wwan0"
        }
    }
}
interfaces {
    ethernet eth0 {
        address "dhcp"
        address "dhcpv6"
        description "WAN"
        dhcp-options {
            default-route-distance "10"
        }
        dhcpv6-options {
            pd 0 {
                interface eth1 {
                    address "1"
                    sla-id "16"
                }
                length "48"
            }
        }
        hw-id "00:d0:b4:05:c5:90"
        ipv6 {
            address {
                autoconf
            }
        }
        mac "fc:ec:da:43:fd:b8"
        offload {
            gro
            gso
            sg
            tso
        }
    }
    ethernet eth1 {
        address "192.168.10.1/24"
        address "fd00:10::1/64"
        description "LAN"
        hw-id "00:d0:b4:05:c5:91"
        ipv6 {
            address {
                autoconf
            }
        }
        offload {
            gro
            gso
            sg
            tso
        }
    }
    loopback lo {
    }
    wwan wwan0 {
        address "dhcp"
        address "dhcpv6"
        apn "telia"
    }
}
nat {
    source {
        rule 100 {
            description "NAT of regular LAN traffic to WAN."
            outbound-interface {
                group "WAN"
            }
            source {
                address "192.168.10.0/24"
            }
            translation {
                address "masquerade"
            }
        }
    }
}
service {
    dhcp-server {
        hostfile-update
        shared-network-name LAN {
            authoritative
            option {
                domain-name "home.arpa"
                domain-search "home.arpa"
                name-server "192.168.10.1"
            }
            subnet 192.168.10.0/23 {
                lease "86400"
                option {
                    bootfile-name "netboot.xyz-snponly.efi"
                    bootfile-server "192.168.10.10"
                    default-router "192.168.10.1"
                    tftp-server-name "192.168.10.10"
                }
                range 0 {
                    start "192.168.10.64"
                    stop "192.168.10.250"
                }
                subnet-id "1"
            }
        }
    }
    dns {
        forwarding {
            allow-from "192.168.10.0/24"
            allow-from "10.2.0.0/24"
            allow-from "fd00:10::/64"
            listen-address "192.168.10.1"
            listen-address "10.2.0.1"
            listen-address "fd00:10::1"
            system
        }
    }
    ntp {
        allow-client {
            address "127.0.0.0/8"
            address "169.254.0.0/16"
            address "10.0.0.0/8"
            address "172.16.0.0/12"
            address "192.168.0.0/16"
            address "::1/128"
            address "fe80::/10"
            address "fc00::/7"
        }
        server time1.vyos.net {
        }
        server time2.vyos.net {
        }
        server time3.vyos.net {
        }
    }
    router-advert {
        interface eth1 {
            dnssl "home.arpa"
            name-server "fd00:10::1"
            prefix ::/64 {
            }
            prefix fd00:10::/64 {
            }
        }
    }
}
system {
    domain-name "home.arpa"
    host-name "vyos-router"
    name-server "1.1.1.1"
    name-server "8.8.8.8"
    name-server "2606:4700:4700::1111"
    name-server "2001:4860:4860::8888"
    option {
        kernel {
            disable-mitigations
        }
        keyboard-layout "no"
        reboot-on-upgrade-failure "5"
        startup-beep
    }
    syslog {
        local {
            facility all {
                level "info"
            }
            facility local7 {
                level "debug"
            }
        }
    }
    time-zone "Europe/Oslo"
}

@endreb this seems like a quirk of the ISP. I have heard about this from @MoepMan , but we do not remember the details unfortunately.

Could you run renew dhcp interface wwan0 and tell us what happens?

Thanks for the suggestion!

I ran renew dhcp interface wwan0, but it did not really change anything.

From the log I can see that the dhclient is restarted when I run the renew command, but it seems to go back to a long loop of:

DHCPDISCOVER on wwan0 to 255.255.255.255 port 67 interval 14

The full log file is attached below. The log file starts when I enable wwan0 (22:46:32), and then I run the renew command half a minute later (22:47:03).

I sort of understand that dhclient is not working well when my ISP is not really running a proper DHCP. I do not understand why they give me a static IP configuration method.

wwan.log (36.1 KB)

It seems like the static configuration method is pretty well described by ModemManager: IP connectivity setup in LTE modems | ModemManager

To me, it seems like ModemManager chooses to use static method when QMI modems are running in raw-ip mode, since dhclient does not (or did not) support DHCP on network interfaces without ethernet headers. ModemManager specifies that the host shall fetch IP configuration directly from the ModemManager API when the IP is configured with static method.

So I guess this kind of IP configuration handling should be added in VyOS. In the meantime I might need to write my own lousy NetworkManager, or perhaps try to use NetworkManager in VyOS.

Edit: My modem is running in raw-ip mode:

# sudo qmi-network /dev/cdc-wdm0 start
Profile at '/etc/qmi-network.conf' not found...
Checking data format with 'qmicli -d /dev/cdc-wdm0 --wda-get-data-format '...
Device link layer protocol retrieved: raw-ip

Edit2: According to this thread the EM7455 modem does not support anything else than raw-ip mode (not 802.3). So ModemManager might be doing the correct thing.

I also use Sierra MC7455 (mPCIE) and EM7455 (M.2), but with GoogleFi. What version are you running of VyOS? Can you post the output of sudo dpkg -l isc-dhcp-client? Version 4.4.3-P1-4 should have the patch in it that adds support for raw-ip, since I’m the one who got the changes into VyOS’s build of isc-dhcp-client (isc-dhcp: T5965: add custom package build with dhclient patches for WWAN by c-po · Pull Request #503 · vyos/vyos-build · GitHub), more information here ⚓ T5965 WWAN modems using raw-ip do not work with dhclient/dhcp6c

DHCPv6 will not work though, dhcp6c does not support raw-ip

My understanding is the modem itself is the one that is responding with the DHCP address, not the LTE provider. It does it based off the IP information it gets from the bearer.

Per IP connectivity setup in LTE modems | ModemManager

In particular, QMI modems running in raw-ip mode (without ethernet headers in the link layer) will by default be requested to use static IP addressing; not because the DHCP server in the modem doesn’t work, but because not all DHCP clients in Linux can work with network interfaces without ethernet headers (e.g. dhclient can’t).

I did run this GitHub - danielewood/sierra-wireless-modems: EM7565/EM7455/MC7455 - Modem Configuration · GitHub to update and set some basic stuff on the modems, so unsure if that helped though.

I am running VyOS 2026.03. It contains isc-dhcp-client 4.4.3-P1-4.

I flashed the modem with the latest generic firmware before I made this thread. I will have a look at the configuration steps in GitHub - danielewood/sierra-wireless-modems: EM7565/EM7455/MC7455 - Modem Configuration · GitHub to see if there is something useful there.

Does your bearer appear with static IP configuration in ModemManager or DHCP?

It appears with static, you can see in ⚓ T5965 WWAN modems using raw-ip do not work with dhclient/dhcp6c all the bits from my modem (I’m the author)

Thanks!

For some reason, it seems like my modem behaves different than yours.

After running a simple connect using ModemManager:

sudo mmcli -m 0 --simple-connect="apn=telia,ip-type=ipv4v6"

I get a bearer with static IPv4 and IPv6. When I then conduct your experiment with udhcpc, I get the following result:

$ sudo udhcpc -i wwan0
udhcpc: started, v1.35.0
udhcpc: broadcasting discover
udhcpc: broadcasting discover
udhcpc: broadcasting discover
udhcpc: broadcasting discover
udhcpc: broadcasting discover
udhcpc: broadcasting discover
udhcpc: broadcasting discover
udhcpc: broadcasting discover
udhcpc: broadcasting discover

It simply does not get a DHCP response. So something behaves differently in my modem.

I had a look at all the AT commands/settings in sierra-wireless-modems/autoflash-7455.sh at master · danielewood/sierra-wireless-modems · GitHub . It seems like I have most of those settings configured in my modem already.

Command Response
ATI? Manufacturer: Sierra Wireless, Incorporated
Model: EM7455
Revision: SWI9X30C_02.39.00.00 rF194F7CA76D79E jenkins 2024/06/05 05:36:47
MEID: <'REDACTED>
IMEI: <'REDACTED>
IMEI SV: 23
FSN: <'REDACTED>
+GCAP: +CGSM
AT!IMPREF? !IMPREF:
preferred fw version: 02.39.00.00
preferred carrier name: GENERIC
preferred config name: GENERIC_002.085_000
preferred subpri index: 000
current fw version: 02.39.00.00
current carrier name: GENERIC
current config name: GENERIC_002.085_000
current subpri index: 000
AT!GOBIIMPREF? !GOBIIMPREF:
preferred fw version: 02.39.00.00
preferred carrier name: GENERIC
preferred config name: GENERIC_002.085_000
preferred subpri index: 000
current fw version: 02.39.00.00
current carrier name: GENERIC
current config name: GENERIC_002.085_000
current subpri index: 000
AT!USBSPEED? SUPPORTED:High-Speed
CURRENT :High-Speed
AT!USBCOMP? Config Index: 1
Config Type: 1 (Generic)
Interface bitmask: 0000100D (diag,nmea,modem,mbim)
AT!USBVID? !USBVID:
1199
AT!USBPID? !USBPID:
APP : 9079
BOOT: 9078
AT!USBPRODUCT? Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
AT!PRIID? PRI Part Number: 9906870
Revision: 001.001
Customer: Lenovo-Raven2

Carrier PRI: 9999999_9904609_SWI9X30C_02.39.00.00_00_GENERIC_002.085_000
AT!RELRAT?
AT!SELRAT? !SELRAT: 00, Automatic
AT!BAND? Index, Name, GW Band Mask L Band Mask TDS Band Mask
00, All bands, 0002000007C00000 00000100030818DF 0000000000000000
AT!PCINFO? State: Online
LPM voters - Temp:0, Volt:0, User:0, W_DISABLE:0, IMSWITCH:0, BIOS:0, LWM2M:0, OMADM:0, FOTA:0
LPM persistence – None
AT!PCOFFEN? 0
AT!CUSTOM? AT!CUSTOM?
!CUSTOM:
GPSENABLE 0x01
GPSSEL 0x01
IPV6ENABLE 0x01
SIMLPM 0x01
USBSERIALENABLE 0x01
FASTENUMEN 0x01
SINGLEAPNSWITCH 0x01
AT!IMAGE? AT!IMAGE?
TYPE SLOT STATUS LRU FAILURES UNIQUE_ID BUILD_ID
FW 1 GOOD 1 0 0 ?_? 02.24.05.06_?
FW 2 GOOD 2 0 0 ?_? 02.39.00.00_?
FW 3 EMPTY 0 0 0
FW 4 EMPTY 0 0 0
Max FW images: 4
Active FW image is at slot 2

TYPE SLOT STATUS LRU FAILURES UNIQUE_ID BUILD_ID
PRI FF GOOD 0 0 0 002.085_000 02.39.00.00_GENERIC
Max PRI images: 50
AT+CGATT? +CGATT: 1
AT+CREG? +CREG: 0,1
AT+CEREG? +CEREG: 0,1
AT+CBC?
AT+CSCA? +CSCA: “+47<'REDACTED>”,145
AT+CMSS?
AT+COPS? +COPS: 0,0,“Telia N”,7
AT+CFUN? +CFUN: 1

I just got a breakthrough by fiddling with the modem settings in qmicli!

The modem was initially configured with USB composition 8, which uses DM, NME, AT and MBIM.

$ sudo qmicli -d /dev/cdc-wdm0 --device-open-proxy --dms-swi-get-usb-composition
[/dev/cdc-wdm0] Successfully retrieved USB compositions:
            USB composition 6: DM, NMEA, AT, QMI
        [*] USB composition 8: DM, NMEA, AT, MBIM
            USB composition 9: MBIM

As a last attempt to get some sort of different behaviour, I decided to change to USB composition 6, which uses DM, NMEA, AT and QMI:

$ sudo qmicli -d /dev/cdc-wdm0 --device-open-proxy --dms-swi-set-usb-composition 6
$ sudo qmicli -d /dev/cdc-wdm0 --device-open-proxy --dms-set-operating-mode=offline
$ sudo qmicli -d /dev/cdc-wdm0 --device-open-proxy --dms-set-operating-mode=reset

After this, I was tested the udhcp -i wwan0 experiment again. This time it worked!

$ sudo mmcli -m 1 --simple-connect="apn=telia,ip-type=ipv4v6"
$ sudo udhcpc -i wwan0
udhcpc: started, v1.35.0
udhcpc: broadcasting discover
udhcpc: broadcasting select for 100.111.131.92, server 100.111.131.93
udhcpc: lease of 100.111.131.92 obtained from 100.111.131.93, lease time 7200

So then I disconnected everything, restarted ModemManager, and enabled the wwan0 interface through the VyOS configuration. And it works! :smiley:

$ show interfaces wwan 
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
wwan0            100.111.131.92/29                 u/u

INCORRECT<This time, the bearer is not using static configuration. It does not seem to have an IP configuration at all…>

EDIT: Sorry, I looked at the wrong bearer. The bearer still uses static IP configuration. :slight_smile:

vyos@vyos-router:~$ mmcli -m 0
  ----------------------------------
  General  |                   path: /org/freedesktop/ModemManager1/Modem/0
           |              device id: 124a8b909b978ce0890375f18ee2e16aea829692
  ----------------------------------
  Hardware |           manufacturer: Sierra Wireless, Incorporated
           |                  model: EM7455
           |      firmware revision: SWI9X30C_02.39.00.00 rF194F7CA76D79E jenkins 2024/06/05 05:36:47
           |         carrier config: default
           |           h/w revision: 1.0
           |              supported: gsm-umts, lte
           |                current: gsm-umts, lte
           |           equipment id: <REDACTED>
  ----------------------------------
  System   |                 device: /sys/devices/pci0000:00/0000:00:14.0/usb3/3-1
           |                drivers: qcserial, qmi_wwan
           |                 plugin: sierra
           |           primary port: cdc-wdm0
           |                  ports: cdc-wdm0 (qmi), ttyUSB0 (qcdm), ttyUSB2 (at), wwan0 (net)
  ----------------------------------
  Status   |                   lock: sim-pin2
           |         unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (3), sim-puk2 (10)
           |                  state: connected
           |            power state: on
           |            access tech: lte
           |         signal quality: 50% (recent)
  ----------------------------------
  Modes    |              supported: allowed: 3g; preferred: none
           |                         allowed: 4g; preferred: none
           |                         allowed: 3g, 4g; preferred: 4g
           |                         allowed: 3g, 4g; preferred: 3g
           |                current: allowed: 3g, 4g; preferred: 4g
  ----------------------------------
  Bands    |              supported: utran-1, utran-3, 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-20, eutran-25, eutran-26, eutran-41
           |                current: utran-1, utran-3, 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-20, eutran-25, eutran-26, eutran-41
  ----------------------------------
  IP       |              supported: ipv4, ipv6, ipv4v6
  ----------------------------------
  3GPP     |                   imei: <REDACTED>
           |          enabled locks: fixed-dialing
           |            operator id: 24202
           |          operator name: Telia N
           |           registration: home
           |   packet service state: attached
           |                    pco: 0: (complete) '<REDACTED>'

  ----------------------------------
  3GPP EPS |   ue mode of operation: csps-2
           |    initial bearer path: /org/freedesktop/ModemManager1/Bearer/0
           |     initial bearer apn: telia
           | initial bearer ip type: ipv4v6
  ----------------------------------
  SIM      |       primary sim path: /org/freedesktop/ModemManager1/SIM/0
           |         sim slot paths: slot 1: /org/freedesktop/ModemManager1/SIM/0 (active)
           |                         slot 2: none
  ----------------------------------
  Bearer   |                  paths: /org/freedesktop/ModemManager1/Bearer/1

vyos@vyos-router:~$ mmcli -b 1
  ------------------------------------
  General            |           path: /org/freedesktop/ModemManager1/Bearer/1
                     |           type: default
  ------------------------------------
  Status             |      connected: yes
                     |      suspended: no
                     |    multiplexed: no
                     |      interface: wwan0
                     |     ip timeout: 20
  ------------------------------------
  Properties         |            apn: telia
                     |        roaming: allowed
                     |        ip type: ipv4v6
  ------------------------------------
  IPv4 configuration |         method: static
                     |        address: 100.111.131.92
                     |         prefix: 29
                     |        gateway: 100.111.131.93
                     |            dns: 89.9.255.24, 89.9.255.25
                     |            mtu: 1500
  ------------------------------------
  IPv6 configuration |         method: static
                     |        address: 2001:2020:REDACTED
                     |         prefix: 64
                     |        gateway: 2001:2020:REDACTED
                     |            dns: 2001:2020:82ff:8006::1, 2001:2020:82ff:8007::1
                     |            mtu: 1500
  ------------------------------------
  Statistics         |     start date: 2026-06-01T21:07:29Z
                     |       duration: 2580
                     |       bytes rx: 28363
                     |       bytes tx: 1641
                     |       attempts: 1
                     | total-duration: 2580
                     | total-bytes rx: 28363
                     | total-bytes tx: 1641

It seems like ModemManager and VyOS prefers that the EM7455 is configured as a QMI modem instead of MBIM modem. Is that expected?