Based on information given and activities from previous forum link given, the behavior difference between S3 (deep) and S2idle is expected in many laptop platforms: in S2idle the host keeps the system in a lighter sleep state and relies heavily on USB runtime power management. If the platform/USB stack drops the modem link during S2idle, the MBIM/QMI control node (for example /dev/cdc-wdm0) can disappear until the USB device is re-enumerated.
For a stable workaround, please use S3 (deep) sleep instead of S2idle (if your BIOS and kernel allow it), and also disable USB autosuspend for the modem so the host does not runtime-suspend the device during idle/sleep-resume transitions. If the device still occasionally drops after resume, resetting the USB device (the de-authorize/authorize method you tried) is a valid recovery method.
About AT+QSCLK: this command enables/disables the module low power mode, and the actual sleep entry/exit is controlled by DTR and WAKEUP_IN pins. The command has an optional saved parameter, but if your AT+QSCLK? keeps returning 1,0 after reboot/resume, it means the configuration is not being retained on your current setup/firmware and you need to apply AT+QSCLK=1 at each boot (and, if needed, after resume).
Regarding enabling calls: voice calling through AT commands requires that the USB composition exposes an AT interface (a tty node such as ttyUSB/ttyACM). If you are running a pure MBIM/QMI profile with only cdc-wdm, you may not have a serial AT port available, so ATD/ATA/ATH cannot be used from the host side. The module supports standard call control AT commands (for example ATD/ATA/ATH) and also provides service/voice domain preferences (srv_domain / voice_domain), but actual call capability depends on the carrier network support and your host-side integration (VoLTE/IMS is not the same as legacy circuit-switched calling).
If you want us to give a concrete, final recommendation for your exact T480 setup, please share: your kernel version, the current sleep mode selection (cat /sys/power/mem_sleep), and the modem’s USB composition/network mode (AT+QCFG=“usbnet” query result, if available).
Yes, I usually use S3 sleep when possible.
It’s a bit off on the T480 but it’s pretty much perfect on the W541. I’m not 100% certain if that’s the laptop or ModemManager or both.
I am currently going to do the thing for calls on W541. I am currently rocking Linux 6.18.2 on both machines.
About +QCFG: “usbnet”,2
usbnet=2 means the module is in MBIM mode (0=RmNet, 1=ECM, 2=MBIM, 3=RNDIS).
S3 sleep / device disappears after resume (Linux 6.18.2)
Since you’re on MBIM, if the platform drops USB during suspend/resume, the MBIM control device (e.g., /dev/cdc-wdmX) can disappear until the device is re-enumerated. Your approach of USB de-authorize/authorize (or rebind/reset) is a valid recovery method on the host side. On T480 this is commonly platform/USB power-management dependent, so the most stable approach is usually:
keep using S3 (deep) when available, and
disable USB autosuspend/runtime PM for this modem (host-side), so it’s less likely to drop during idle/resume transitions.
Radio is OFF after boot, need mbimcli each time
That behavior is controlled by the host stack (ModemManager/NetworkManager vs. manual mbimcli). If you’re not using ModemManager/NetworkManager auto-enable, then add your mbimcli --set-radio-state=on to a boot/resume script (systemd service) so it’s applied automatically.
Calls / voice
On EM061K-GL, call related AT commands are not supported (i.e., you can’t enable/perform voice calling via AT call-control like ATD/ATA/ATH on this module).
So, there isn’t a “calls enable” setting we can provide from the module AT side for this model.