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追記

残念ながら数日放置していたら再発しました。

他に解決策が見当たらないので、あきらめるしかないようです。

ネットがつながらなかったら再起動で対応します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です