ASUS E200HA でスリープ復帰後 Wi-Fi が使えない問題を解決
Debian LXQt にしてから、とっても使い勝手がよくなったんですが、ときどきスリープ状態から復帰すると Wi-Fi が切断されていて、再接続もできなくなり、再起動を余儀なくされました。
Xubuntu のときも同様の状態だったのですが、せっかくだから治そうと調べてみました。
搭載されている Wi-Fi アダプターは以下。
$ sudo lspci -kv
:
01:00.0 Network controller: Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter (rev 30)
Subsystem: AzureWave QCA9377 802.11ac Wireless Network Adapter
Flags: bus master, fast devsel, latency 0, IRQ 134
Memory at 91200000 (64-bit, non-prefetchable) [size=2M]
Capabilities: <access denied>
Kernel driver in use: ath10k_pci
Kernel modules: ath10k_pci
不具合が起きたときに dmesg を見ると、「ath10k_pci failed to reset chip」というメッセージが出力されていました。(詳細はメモし忘れ)
このメッセージでググったら、以下のページを見つけました。
https://bbs.archlinux.org/viewtopic.php?id=268808
原因はファームウェアの省電力機能の不具合みたいなんですが、カーネルモジュールの設定をすれば回避できるようです。
/etc/modprobe.d/ath10k.conf
に以下の内容のファイルを作って再起動すればいいみたいです。
options ath10k_core skip_otp=y
とりあえず数日様子を見ていますが、今のところスリープから復帰しても Wi-Fi はつながるので、効果があったんだと思います。
2023/11/09追記
長い間、たぶん1日以上触らないでいると、減少が再発しました。
再度ググって以下のページを発見。
https://wiki.archlinux.org/title/Alienware_13#Wireless
3.1 R1 freezes on suspend/hibernate
Due to firmware crashes with the ath10 WiFi driver on R1 you may encounter system freezes upon suspend/hibernate. A workaround would be to unload the ath10 module before going down and load it back upon wake up. Create and make executable:!/bin/bash if [ "${1}" == "pre" ]; then rmmod ath10k_pci ath10k_core sleep 1 elif [ "${1}" == "post" ]; then modprobe ath10k_pci fi
Do not forget to do a daemon-reload after that.
Note that the nouveau driver also can be the source of problems with suspend, so if the above does not help, try to either blacklist it or install the non-free NVIDIA driver to replace it.
https://wiki.archlinux.org/title/Alienware_13#R1_freezes_on_suspend/hibernate
これでうまくいけばいいのですが。。。しばらく様子を見ます。
2023/11/19追記
残念ながら数日放置していたら再発しました。
他に解決策が見当たらないので、あきらめるしかないようです。
ネットがつながらなかったら再起動で対応します。