ModemManager hangs for 20 seconds when you try to shut down the systemd service.
Whenever I turn on an LTE connection and then shut down the ModemManager service (sudo systemctl kill ModemManager
), it hangs for about 20 seconds before actually turn off. This is the journald log of turning it off:
ModemManager[1273]: <info> Caught signal, shutting down...
ModemManager[1273]: <info> Modem /org/freedesktop/ModemManager1/Modem/0: state changed (connected -> disabling)
ModemManager[1273]: [/dev/cdc-wdm0] unexpected port hangup!
ModemManager[1273]: [/dev/cdc-wdm0] channel destroyed
ModemManager[1273]: <info> Connection to mbim-proxy for /dev/cdc-wdm0 lost, reprobing
ModemManager[1273]: <info> [device /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2] creating modem with plugin 'Dell' and '2' ports
ModemManager[1273]: [/dev/cdc-wdm0] unexpected port hangup!
ModemManager[1273]: [/dev/cdc-wdm0] channel destroyed
ModemManager[1273]: [/dev/cdc-wdm0] QMI client for service 'nas' with CID '4' wasn't released
ModemManager[1273]: [/dev/cdc-wdm0] QMI client for service 'dms' with CID '3' wasn't released
ModemManager[1273]: [/dev/cdc-wdm0] QMI client for service 'loc' with CID '1' wasn't released
ModemManager[1273]: opening device...
ModemManager[1273]: cannot connect to proxy: Could not connect: Connection refused
ModemManager[1273]: spawning new mbim-proxy (try 1)...
ModemManager[1273]: [/dev/cdc-wdm0] Read max control message size from descriptors file: 4096
ModemManager[1273]: [/dev/cdc-wdm0] Opening device with flags 'version-info, proxy, mbim, expect-indications'...
ModemManager[1273]: [/dev/cdc-wdm0] loaded driver of cdc-wdm port: cdc_mbim
ModemManager[1273]: [/dev/cdc-wdm0] creating MBIM device...
ModemManager[1273]: [/dev/cdc-wdm0] MBIM device created
ModemManager[1273]: [/dev/cdc-wdm0] opening MBIM device...
ModemManager[1273]: opening device...
ModemManager[1273]: [/dev/cdc-wdm0] Read max control message size from descriptors file: 4096
ModemManager[1273]: [/dev/cdc-wdm0] MBIM device open
ModemManager[1273]: [/dev/cdc-wdm0] Checking version info (15 retries)...
ModemManager[1273]: [/dev/cdc-wdm0] sending message as MBIM...
ModemManager[1273]: [/dev/cdc-wdm0] Received MBIM message
ModemManager[1273]: [/dev/cdc-wdm0] QMI Device supports 36 services:
ModemManager[1273]: [/dev/cdc-wdm0] ctl (1.5)
ModemManager[1273]: [/dev/cdc-wdm0] wds (1.67)
ModemManager[1273]: [/dev/cdc-wdm0] dms (1.14)
ModemManager[1273]: [/dev/cdc-wdm0] nas (1.25)
ModemManager[1273]: [/dev/cdc-wdm0] qos (1.6)
ModemManager[1273]: [/dev/cdc-wdm0] wms (1.10)
ModemManager[1273]: [/dev/cdc-wdm0] auth (1.3)
ModemManager[1273]: [/dev/cdc-wdm0] at (1.2)
ModemManager[1273]: [/dev/cdc-wdm0] voice (2.1)
ModemManager[1273]: [/dev/cdc-wdm0] cat2 (2.24)
ModemManager[1273]: [/dev/cdc-wdm0] uim (1.45)
ModemManager[1273]: [/dev/cdc-wdm0] pbm (1.4)
ModemManager[1273]: [/dev/cdc-wdm0] test (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] loc (2.0)
ModemManager[1273]: [/dev/cdc-wdm0] sar (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] ims (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] ts (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] tmd (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] wda (1.16)
ModemManager[1273]: [/dev/cdc-wdm0] csvt (1.1)
ModemManager[1273]: [/dev/cdc-wdm0] imsp (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] imsa (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] coex (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] pdc (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] rfrpe (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] dsd (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] ssctl (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] unknown [0x2e] (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] unknown [0x30] (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] unknown [0x31] (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] unknown [0x36] (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] rms (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] unknown [0xf0] (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] unknown [0xf3] (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] unknown [0xf5] (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] unknown [0xf6] (1.0)
ModemManager[1273]: [/dev/cdc-wdm0] Enabling QMI indications via MBIM...
ModemManager[1273]: [/dev/cdc-wdm0] enabled QMI indications via MBIM
ModemManager[1273]: <info> [cdc-wdm0] MBIM device is QMI capable
ModemManager[1273]: [/dev/cdc-wdm0] Allocating new client ID...
ModemManager[1273]: [/dev/cdc-wdm0] sending message as MBIM...
ModemManager[1273]: [/dev/cdc-wdm0] Received MBIM message
ModemManager[1273]: [/dev/cdc-wdm0] Registered 'dms' (version 1.14) client with ID '3'
ModemManager[1273]: [/dev/cdc-wdm0] Allocating new client ID...
ModemManager[1273]: [/dev/cdc-wdm0] sending message as MBIM...
ModemManager[1273]: [/dev/cdc-wdm0] Received MBIM message
ModemManager[1273]: [/dev/cdc-wdm0] Registered 'nas' (version 1.25) client with ID '4'
ModemManager[1273]: [/dev/cdc-wdm0] Allocating new client ID...
ModemManager[1273]: [/dev/cdc-wdm0] sending message as MBIM...
ModemManager[1273]: [/dev/cdc-wdm0] Received MBIM message
ModemManager[1273]: [/dev/cdc-wdm0] Registered 'loc' (version 2.0) client with ID '1'
ModemManager[1273]: [/dev/cdc-wdm0] sending message as MBIM...
ModemManager[1273]: [/dev/cdc-wdm0] Received MBIM message
ModemManager[1273]: [/dev/cdc-wdm0] sending message as MBIM...
ModemManager[1273]: [/dev/cdc-wdm0] Received MBIM message
ModemManager[1273]: [/dev/cdc-wdm0] sending message as MBIM...
ModemManager[1273]: [/dev/cdc-wdm0] Received MBIM message
ModemManager[1273]: <info> QMI-based capability and mode switching support enabled
ModemManager[1273]: [/dev/cdc-wdm0] sending message as MBIM...
ModemManager[1273]: [/dev/cdc-wdm0] Received MBIM message
ModemManager[1273]: [/dev/cdc-wdm0] sending message as MBIM...
ModemManager[1273]: [/dev/cdc-wdm0] Received MBIM message
ModemManager[1273]: [/dev/cdc-wdm0] sending message as MBIM...
ModemManager[1273]: [/dev/cdc-wdm0] Received MBIM message
ModemManager[1273]: <warn> couldn't load UE mode of operation for EPS: 'No AT port available to run command'
ModemManager[1273]: <warn> couldn't load initial EPS bearer settings: 'NoDeviceSupport'
ModemManager[1273]: [/dev/cdc-wdm0] sending message as MBIM...
ModemManager[1273]: [/dev/cdc-wdm0] Received MBIM message
ModemManager[1273]: [/dev/cdc-wdm0] sending message as MBIM...
ModemManager[1273]: [/dev/cdc-wdm0] Received MBIM message
ModemManager[1273]: <warn> Couldn't open ports during Modem SIM hot swap enabling: Couldn't get primary port
ModemManager[1273]: <info> Modem: state changed (unknown -> disabled)
ModemManager[1273]: <warn> Reloading stats failed: Couldn't peek MBIM port
ModemManager[1273]: <warn> Disabling modems took too long, shutting down with '1' modems around
From what I can tell, it looks like systemd is killing the mbim-proxy process, and then ModemManager is respawning and waiting for the new mbim-proxy process to stop.
This also makes the ubuntu shutdown process (I was using 18.04.3) take much longer than it should as it waits for ModemManager. I found that adding "KillMode=process" to the ModemManager.service file fixes this issue at shutdown, but not when just shutting the service down with systemctl.