The radio of Sierra Wireless EM7345 4G LTE modem in my ThinkPad T450s laptop is switched off after Linux rfkill block command, but it does not switches back on after rfkill unblock command. When changing software radio state of the modem with mbimcli command error is registered in kernel ring buffer:
cdc_mbim 2-4:1.0: nonzero urb status received: -EPIPE
Additional info:
#uname -a
Linux redacted 5.14.5-arch1-1 #1 SMP PREEMPT Thu, 16 Sep 2021 11:02:40 +0000 x86_64 GNU/Linux
#lsusb | grep -i sierra
Bus 002 Device 002: ID 1199:a001 Sierra Wireless, Inc. Sierra Wireless EM7345 4G LTE
#pacman -Qs libmbim
local/libmbim 1.26.0-2
MBIM modem protocol helper library
Steps to reproduce:
# rfkill
ID TYPE DEVICE SOFT HARD
0 bluetooth tpacpi_bluetooth_sw unblocked unblocked
1 wwan tpacpi_wwan_sw unblocked unblocked
2 wlan phy0 unblocked unblocked
3 bluetooth hci0 unblocked unblocked
# mbimcli -d /dev/cdc-wdm0 -p --query-radio-state
[/dev/cdc-wdm0] Radio state retrieved:
Hardware radio state: 'on'
Software radio state: 'on'
# rfkill block wwan
# rfkill
ID TYPE DEVICE SOFT HARD
0 bluetooth tpacpi_bluetooth_sw unblocked unblocked
1 wwan tpacpi_wwan_sw blocked unblocked
2 wlan phy0 unblocked unblocked
3 bluetooth hci0 unblocked unblocked
# mbimcli -d /dev/cdc-wdm0 -p --query-radio-state
[/dev/cdc-wdm0] Radio state retrieved:
Hardware radio state: 'on'
Software radio state: 'off'
# rfkill unblock wwan
# rkfill
ID TYPE DEVICE SOFT HARD
0 bluetooth tpacpi_bluetooth_sw unblocked unblocked
1 wwan tpacpi_wwan_sw unblocked unblocked
2 wlan phy0 unblocked unblocked
3 bluetooth hci0 unblocked unblocked
# mbimcli -d /dev/cdc-wdm0 -p --query-radio-state
[/dev/cdc-wdm0] Radio state retrieved:
Hardware radio state: 'on'
Software radio state: 'off'
# mbimcli -d /dev/cdc-wdm0 -p --set-radio-state=on
[/dev/cdc-wdm0] Radio state retrieved:
Hardware radio state: 'on'
Software radio state: 'on'
# dmesg
<...>
cdc_mbim 2-4:1.0: nonzero urb status received: -EPIPE
# mbimcli -d /dev/cdc-wdm0 -p --set-radio-state=off
[/dev/cdc-wdm0] Radio state retrieved:
Hardware radio state: 'on'
Software radio state: 'off'
# dmesg
<...>
cdc_mbim 2-4:1.0: nonzero urb status received: -EPIPE
cdc_mbim 2-4:1.0: nonzero urb status received: -EPIPE