Support for the Dell DW5825e / Fibocom FM101 (Qualcomm X12 chipset) - what am I missing?
johanngerbhoff at tutamail.com
johanngerbhoff at tutamail.com
Fri May 9 13:35:42 UTC 2025
Hi Dan, thank you for taking the time to respond!
> Does the modem actually get registered with the network, or does it
> completely fail to communicate with it? By "connecting" I'm not sure if
> you mean a data connection or just registering.
>
It didn't get registered at all with the initial setup instructions I posted as I missed a few crucial steps. I actually got the modem to connect now via doing the following:
--> libudev0-shim is NOT needed: Analyzing the package for ubuntu, I found out that Fibocom's tools are actually built against libudev1 but they expect it to be called libudev - so I now linked libudev.so.1.7.10 to libudev.so
--> The path for 76-mm-fibocom-linux-apps-port-types.rules should be /usr/lib/udev/rules.d. The content is as follows:
# do not edit this file, it will be overwritten on update
ACTION!="add|change|move|bind", GOTO="mm_fibocom_linux_apps_port_types_end"
SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
ATTRS{idVendor}=="2cb7", ATTRS{idProduct}=="01a2", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_IGNORE}="1"
ATTRS{idVendor}=="2cb7", ATTRS{idProduct}=="01a2", ENV{.MM_USBIFNUM}=="03", SUBSYSTEM=="tty", ENV{ID_MM_PORT_IGNORE}="1"
ATTRS{idVendor}=="2cb7", ATTRS{idProduct}=="01a2", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_IGNORE}="1"
ATTRS{idVendor}=="2cb7", ATTRS{idProduct}=="01a2", ENV{.MM_USBIFNUM}=="05", ENV{ID_MM_PORT_IGNORE}="1"
ATTRS{idVendor}=="413c", ATTRS{idProduct}=="8213", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_IGNORE}="1"
ATTRS{idVendor}=="413c", ATTRS{idProduct}=="8215", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_IGNORE}="1"
LABEL="mm_fibocom_linux_apps_port_types_end"
--> There is an additional udev rule that I missed to copy: /usr/lib/udev/rules.d/77-mm-fibocom.rules. Content as follows:
ACTION!="add|change|move|bind", GOTO="mm_fibocom_end"
ENV{SUBSYSTEM}=="pci", ENV{PCI_ID}=="14C3:4D75", ATTR{power/wakeup}="disabled", GOTO="mm_fibocom_end"
ENV{SUBSYSTEM}=="pci", ENV{PCI_ID}=="8086:7560", ATTR{power/wakeup}="disabled", GOTO="mm_fibocom_end"
LABEL="mm_fibocom_end"
--> ModemManager's ExecStart line in /usr/lib/systemd/system/ModemManager.service is modified with a switch:
ExecStart=/usr/sbin/ModemManager --test-quick-suspend-resume
--> a dbus service file needs to be created as /usr/share/dbus-1/system-services/com.fibocom.helper.service.
Contents:
[D-BUS Service]
Name=com.fibocom.helper
Exec=/bin/false
User=root
SystemdService=fibo_helper.service
And here's where it gets interesting: I am now able to successfully connect to the LTE network and surf the internet when manually running ModemManager. When trying to launch ModemManager automatically on startup though, ModemManager seems to fail creating a process group and can't access the cdc_mbim port for some reason. Both logs attached as follows:
--> Successful connection via manual ModemManager launch as root. After about 10 minutes the modem resets but reconnects immediately (visible at the end of the log).localhost:~ # /usr/sbin/ModemManager --test-quick-suspend-resume
ModemManager[4324]: <msg> ModemManager (version 1.22.0) starting in system bus...
ModemManager[4324]: <msg> [cdc-wdm0/mbim] MBIM device is not QMI capable
ModemManager[4324]: <msg> [device /sys/devices/pci0000:00/0000:00:14.0/usb4/4-1] creating modem with plugin 'dell' and '3' ports
ModemManager[4324]: <msg> [base-manager] modem for device '/sys/devices/pci0000:00/0000:00:14.0/usb4/4-1' successfully created
ModemManager[4324]: <msg> [base-manager] couldn't check support for device '/sys/devices/pci0000:00/0000:00:14.3': not supported by any plugin
ModemManager[4324]: <msg> [base-manager] couldn't check support for device '/sys/devices/pci0000:00/0000:00:1f.6': not supported by any plugin
ModemManager[4324]: <msg> [modem0/cdc-wdm0/mbim] MBIM device is QMI capable
ModemManager[4324]: <msg> [modem0] state changed (unknown -> disabled)
ModemManager[4324]: <msg> [modem0] state changed (disabled -> enabling)
ModemManager[4324]: <msg> [modem0] simple connect started...
ModemManager[4324]: <msg> [modem0] simple connect state (4/10): wait to get fully enabled
ModemManager[4324]: <wrn> [modem0] Cannot power-up: hardware radio switch is OFF
ModemManager[4324]: <wrn> [modem0] Cannot power-up: hardware radio switch is OFF
ModemManager[4324]: <wrn> [modem0] couldn't enable interface: 'Invalid transition'
ModemManager[4324]: <wrn> [modem0] failed enabling modem: Invalid transition
ModemManager[4324]: <msg> [modem0] state changed (enabling -> disabled)
ModemManager[4324]: <wrn> [modem0] failed waiting for enabled state: disabled
ModemManager[4324]: <msg> [modem0] simple connect started...
ModemManager[4324]: <msg> [modem0] simple connect state (3/10): enable
ModemManager[4324]: <msg> [modem0] state changed (disabled -> enabling)
ModemManager[4324]: <msg> [modem0] simple connect started...
ModemManager[4324]: <msg> [modem0] simple connect state (4/10): wait to get fully enabled
ModemManager[4324]: <wrn> [modem0] couldn't reload extended signal information: No signal details given
ModemManager[4324]: <msg> [modem0] power state updated: on
ModemManager[4324]: <msg> [modem0] 3GPP packet service state changed (unknown -> attached)
ModemManager[4324]: <wrn> [modem0] connection attempt cancelled
ModemManager[4324]: <msg> [modem0] state changed (enabling -> enabled)
ModemManager[4324]: <msg> [modem0] simple connect state (5/10): wait after enabled
ModemManager[4324]: <msg> [modem0] 3GPP registration state changed (unknown -> registering)
ModemManager[4324]: <msg> [modem0] 3GPP registration state changed (registering -> home)
ModemManager[4324]: <msg> [modem0] state changed (enabled -> registered)
ModemManager[4324]: <msg> [modem0] simple connect state (6/10): register
ModemManager[4324]: <msg> [modem0] simple connect state (7/10): wait to get packet service state attached
ModemManager[4324]: <msg> [modem0] simple connect state (8/10): bearer
ModemManager[4324]: <msg> [modem0] simple connect state (9/10): connect
ModemManager[4324]: <msg> [modem0] state changed (registered -> connecting)
ModemManager[4324]: <msg> [modem0] state changed (connecting -> connected)
ModemManager[4324]: <msg> [modem0] simple connect state (10/10): all done
ModemManager[4324]: <wrn> [modem0/bearer1] reloading stats failed: Transaction timed out
ModemManager[4324]: <msg> [modem0] port 'cdc-wdm0' no longer controllable, reprobing
ModemManager[4324]: <msg> [base-manager] port cdc-wdm0 released by device '/sys/devices/pci0000:00/0000:00:14.0/usb4/4-1'
ModemManager[4324]: <wrn> [/dev/cdc-wdm0] MBIM error: Device must be open to send commands
ModemManager[4324]: <wrn> [/dev/cdc-wdm0] MBIM error: Device must be open to send commands
ModemManager[4324]: <wrn> [/dev/cdc-wdm0] MBIM error: Device must be open to send commands
ModemManager[4324]: <wrn> [/dev/cdc-wdm0] MBIM error: Device must be open to send commands
ModemManager[4324]: <wrn> [/dev/cdc-wdm0] MBIM error: Device must be open to send commands
ModemManager[4324]: <wrn> [modem0/cdc-wdm0/mbim] Couldn't properly close QMI device: Device must be open to send commands
ModemManager[4324]: <msg> [base-manager] port ttyUSB0 released by device '/sys/devices/pci0000:00/0000:00:14.0/usb4/4-1'
ModemManager[4324]: <msg> [base-manager] port wwp0s20f0u1 released by device '/sys/devices/pci0000:00/0000:00:14.0/usb4/4-1'
ModemManager[4324]: <msg> [cdc-wdm0/mbim] MBIM device is not QMI capable
ModemManager[4324]: <msg> [device /sys/devices/pci0000:00/0000:00:14.0/usb4/4-1] creating modem with plugin 'dell' and '3' ports
ModemManager[4324]: <msg> [base-manager] modem for device '/sys/devices/pci0000:00/0000:00:14.0/usb4/4-1' successfully created
ModemManager[4324]: <msg> [modem1/cdc-wdm0/mbim] MBIM device is QMI capable
--> failed connection when launching ModemManager via systemd:
localhost:~ # systemctl start ModemManager
localhost:~ # systemctl status ModemManager
● ModemManager.service - Modem Manager
Loaded: loaded (/usr/lib/systemd/system/ModemManager.service; enabled; preset: enabled)
Active: active (running) since Fri 2025-05-09 15:20:52 CEST; 14s ago
Invocation: 1c378c21a150400d8bf3664cb2a40cd8
Main PID: 14659 (ModemManager)
Tasks: 6 (limit: 18296)
CPU: 118ms
CGroup: /system.slice/ModemManager.service <http://system.slice/ModemManager.service>
└─14659 /usr/sbin/ModemManager --test-quick-suspend-resume
May 09 15:20:55 localhost.localdomain ModemManager[14739]: <wrn> couldn't setup proxy specific process group
May 09 15:20:55 localhost.localdomain ModemManager[14742]: <wrn> couldn't setup proxy specific process group
May 09 15:20:55 localhost.localdomain ModemManager[14745]: <wrn> couldn't setup proxy specific process group
May 09 15:20:55 localhost.localdomain ModemManager[14748]: <wrn> couldn't setup proxy specific process group
May 09 15:20:55 localhost.localdomain ModemManager[14751]: <wrn> couldn't setup proxy specific process group
May 09 15:20:56 localhost.localdomain ModemManager[14659]: <msg> [device /sys/devices/pci0000:00/0000:00:14.0/usb4/4-1] creating modem with plugin 'dell' and '3' ports
May 09 15:20:56 localhost.localdomain ModemManager[14659]: <wrn> [plugin/dell] could not grab port cdc-wdm0: Cannot add port 'usbmisc/cdc-wdm0', unhandled port type
May 09 15:20:56 localhost.localdomain ModemManager[14659]: <wrn> [base-manager] couldn't create modem for device '/sys/devices/pci0000:00/0000:00:14.0/usb4/4-1': Failed to find primary AT port
May 09 15:20:56 localhost.localdomain ModemManager[14659]: <msg> [base-manager] couldn't check support for device '/sys/devices/pci0000:00/0000:00:14.3': not supported by any plugin
May 09 15:20:56 localhost.localdomain ModemManager[14659]: <msg> [base-manager] couldn't check support for device '/sys/devices/pci0000:00/0000:00:1f.6': not supported by any plugin
I have no clue why ModemManager can't access the cdc-wdm0 port - perhaps it isn't given enough privileges when launched via systemd? The service file does however look like any other ModemManager service I've ever encountered:
--> Contents of /usr/lib/systemd/system/ModemManager.service:
[Unit]
Description=Modem Manager
After=polkit.service
Requires=polkit.service
ConditionVirtualization=!container
[Service]
Type=dbus
BusName=org.freedesktop.ModemManager1
ExecStart=/usr/sbin/ModemManager --test-quick-suspend-resume
StandardError=null
Restart=on-abort
CapabilityBoundingSet=CAP_SYS_ADMIN CAP_NET_ADMIN
ProtectSystem=true
ProtectHome=true
PrivateTmp=true
RestrictAddressFamilies=AF_NETLINK AF_UNIX AF_QIPCRTR
NoNewPrivileges=true
User=root
[Install]
WantedBy=multi-user.target
Alias=dbus-org.freedesktop.ModemManager1.service
> It may not even use AT commands; it might be running through an MBIM
> service instead. At the moment I'm not sure of any unlock procedure for
> the Fibcom Qualcomm-based devices other than their binary tools.
>
The ModemManager log indicates that MBIM / QMI are present but that's also the only clue I have, sadly.
Once again, sorry for maybe not following the most methodical approach - feels like throwing things on a wall and hope that something sticks.
Maybe someone could help with solving that systemd ModemManager startup issue? I can also provide the Dell-specific firmware file if someone would like to investigate further.
Best, Jo.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/modemmanager-devel/attachments/20250509/d1e31740/attachment-0001.htm>
More information about the ModemManager-devel
mailing list