Перезапуск модуля wifi без перезагрузки системы

На ноутбуке или из-за перегрева, или из-за продолжительной работы, или же из-за перегрузки канала количеством пакетов в секунду pps, возникает ошибка.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[2250886.567817] ieee80211 phy0: Hardware restart was requested
[2250886.602451] iwlwifi 0000:24:00.0: Radio type=0x1-0x2-0x0
[2250886.899471] iwlwifi 0000:24:00.0: Radio type=0x1-0x2-0x0
[2250887.042217] iwlwifi 0000:24:00.0: Microcode SW error detected.  Restarting 0x2000000.
[2250887.042225] iwlwifi 0000:24:00.0: Loaded firmware version: 18.168.6.1 6000g2a-6.ucode
[2250887.042348] iwlwifi 0000:24:00.0: Start IWL Error Log Dump:
[2250887.042349] iwlwifi 0000:24:00.0: Status: 0x0000004C, count: 6
[2250887.042482] iwlwifi 0000:24:00.0: Start IWL Event Log Dump: nothing in log
[2250887.042486] iwlwifi 0000:24:00.0: BUG_ON, Stop restarting
[2250887.128058] iwlwifi 0000:24:00.0: Command REPLY_ADD_STA failed: FW Error
[2250887.128063] wlan0: failed to remove key (0, 01:11:88:ab:2c:99) from hardware (-5)
[2250887.128112] iwlwifi 0000:24:00.0: iwl_trans_wait_tx_queues_empty bad state = 0
[2250887.128132] iwlwifi 0000:24:00.0: Command REPLY_ADD_STA failed: FW Error
[2250887.128133] wlan0: failed to remove key (1, ff:ff:ff:ff:ff:ff) from hardware (-5)
[2250887.228460] iwlwifi 0000:24:00.0: Request scan called when driver not ready.
[2250902.567848] iwlwifi 0000:24:00.0: Command REPLY_RXON failed: FW Error
[2250902.567857] iwlwifi 0000:24:00.0: Error clearing ASSOC_MSK on BSS (-5)
[2250902.587425] iwlwifi 0000:24:00.0: Radio type=0x1-0x2-0x0
[2250902.637530] iwlwifi 0000:24:00.0: Command COEX_PRIORITY_TABLE_CMD failed: FW Error
[2250902.637535] iwlwifi 0000:24:00.0: Could not complete ALIVE transition: -5
[2250902.649786] iwlwifi 0000:24:00.0: Failed to run INIT ucode: -5
[2250902.649819] iwlwifi 0000:24:00.0: Unable to initialize device.
[2250960.530138] iwlwifi 0000:24:00.0: Radio type=0x1-0x2-0x0
[2250960.665000] iwlwifi 0000:24:00.0: Unable to initialize device.


Обычно решается перезагрузкой системы, но когда (всегда) открыт миллион окон и запущен миллион скриптов поверх десятков смонтированных разделов, перезагружать систему не очень удобный вариант.

Вариант проще и удобней - обойтись без перезагрузки


Отключаем wifi nmcli radio wifi off или ip link set wlan0 down
Отключаем software rfkill block 12, rfkill list

1
2
3
4
5
6
11: hci0: Bluetooth
        Soft blocked: no
        Hard blocked: no
12: phy1: Wireless LAN      # <--
        Soft blocked: yes
        Hard blocked: no


Выключаем физически wifi, как правило на ноутбуках есть кнопка или переключатель.
Выгружаем модули ядра

1
2
3
modprobe -r iwldvm
modprobe -r iwlwifi
modprobe -r mac80211


Включаем всё обратно

1
2
3
modprobe mac80211
modprobe iwlwifi
modprobe iwldvm

Включаем физически wifi, опять нажимая на кнопку или переключатель.
rfkill list

1
2
3
4
5
6
11: hci0: Bluetooth
        Soft blocked: no
        Hard blocked: no
13: phy2: Wireless LAN      # <-- different
        Soft blocked: yes
        Hard blocked: no


После включения, HW имеет новый номер rfkill unblock 13 и nmcli radio wifi on

Всё работает

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[2251004.921146] iwlwifi 0000:24:00.0: RF_KILL bit toggled to disable radio.
[2251004.921150] iwlwifi 0000:24:00.0: reporting RF_KILL (radio disabled)
[2251049.592289] Intel(R) Wireless WiFi driver for Linux
[2251049.592470] iwlwifi 0000:24:00.0: can't disable ASPM; OS doesn't have ASPM control
[2251049.597155] iwlwifi 0000:24:00.0: firmware: direct-loading firmware iwlwifi-6000g2a-6.ucode
[2251049.597317] iwlwifi 0000:24:00.0: loaded firmware version 18.168.6.1 6000g2a-6.ucode op_mode iwldvm
[2251049.613518] iwlwifi 0000:24:00.0: CONFIG_IWLWIFI_DEBUG disabled
[2251049.613521] iwlwifi 0000:24:00.0: CONFIG_IWLWIFI_DEBUGFS disabled
[2251049.613523] iwlwifi 0000:24:00.0: CONFIG_IWLWIFI_DEVICE_TRACING disabled
[2251049.613524] iwlwifi 0000:24:00.0: Detected Intel(R) Centrino(R) Advanced-N 6205 AGN, REV=0xB0
[2251049.619916] iwlwifi 0000:24:00.0: reporting RF_KILL (radio disabled)
[2251049.620010] iwlwifi 0000:24:00.0: RF_KILL bit toggled to disable radio.
[2251049.698095] ieee80211 phy1: Selected rate control algorithm 'iwl-agn-rs'
[2251062.371832] iwlwifi 0000:24:00.0: RF_KILL bit toggled to enable radio.
[2251062.371841] iwlwifi 0000:24:00.0: reporting RF_KILL (radio enabled)
[2251068.512369] iwlwifi 0000:24:00.0: Radio type=0x1-0x2-0x0
[2251068.804557] iwlwifi 0000:24:00.0: Radio type=0x1-0x2-0x0
[2251072.216384] iwlwifi 0000:24:00.0: Radio type=0x1-0x2-0x0
[2251072.509380] iwlwifi 0000:24:00.0: Radio type=0x1-0x2-0x0
[2251072.669973] wlan0: authenticate with 11:99:ea:25:b1:81
[2251072.673358] wlan0: send auth to 11:99:ea:25:b1:81 (try 1/3)
[2251072.717340] wlan0: authenticated
[2251072.717901] wlan0: waiting for beacon from 11:99:ea:25:b1:81
[2251072.805721] wlan0: associate with 11:99:ea:25:b1:81 (try 1/3)
[2251072.814607] wlan0: RX AssocResp from 11:99:ea:25:b1:81 (capab=0x1431 status=0 aid=2)
[2251072.835773] wlan0: associated
[2251072.910180] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready