Wi-Fiルーターが不安定になる原因は無線チップRTL8723BSだった?
手のひらサイズのスティックPC「MS-NH1-W10」にDebian 12を導入し、省電力な常時稼働サーバとして運用を開始したところ、不審なネットワーク障害に遭遇しました。スティックPC側でパッケージの更新や通信負荷のかかる作業を行うと、本機のWi-Fi接続が突然途切れます。
不可解だったのは、スティックPCの切断と完全に同期して、家庭内のスマートフォンやノートPCなど、他のすべてのWi-Fi端末が一斉に通信不能に陥る点でした。数分待つと全端末が自然に再接続されるものの、スティックPCに負荷がかかるたびに家庭内Wi-Fi全体が瞬断を繰り返しました。単なるクライアント端末の電波不良ではなく、親機であるルーターそのものがダウンしている疑いが生じたため、ログの精査と原因究明に着手しました。
ルーターログの時刻照合とRTL8723BSの挙動から導く予想
ルーター(ASUS RT-AX86U Pro)のシステムログを抽出しました。その結果、ファイアウォールの通信ログに紛れて、Wi-Fi親機プロセスがクラッシュした決定的瞬間が記録されていました。
Sep 13 19:17:15 wlceventd: wlceventd_proc_event(662): eth6: Disassoc 80:A5:89:xx:xx:xx, status: 0, reason: Disassociated because sending station is leaving (or has left) BSS (8), rssi:0 Sep 13 19:17:24 kernel: CSIMON: CSIMON[1.1.0] Initialization Sep 13 19:17:36 wlceventd: wlceventd_proc_event(645): eth6: Deauth_ind 84:30:95:xx:xx:xx, status: 0, reason: Disassociated due to inactivity (4), rssi:-54 Sep 13 19:17:36 wlceventd: wlceventd_proc_event(645): eth6: Deauth_ind 84:30:95:yy:yy:yy, status: 0, reason: Disassociated due to inactivity (4), rssi:-60 Sep 13 19:17:40 wlceventd: wlceventd_proc_event(645): eth6: Deauth_ind 84:30:95:zz:zz:zz, status: 0, reason: Disassociated due to inactivity (4), rssi:-54 Sep 13 19:17:42 wlceventd: wlceventd_proc_event(685): eth6: Auth 84:30:95:xx:xx:xx, status: Successful (0), rssi:0
時系列でログを追うと、以下の挙動が明確になりました。
19:17:15にスティックPC内蔵のRealtek RTL8723BS(OUI: 80:A5:89)がWi-Fiから切断(Disassoc)。
そのわずか9秒後(19:17:24)、ルーター内部の通信監視デーモン(CSIMON)が異常を検知して再初期化(Initialization)を実行。
直後の19:17:36〜19:17:40にかけて、同一Wi-Fi帯域(eth6)に接続されていた全端末へ向けて強制切断(Deauth)が連射。
19:17:42にルーターのWi-Fi親機機能が復旧し、切断されていた全端末が一斉に再認証(Auth)を開始。
ここで注目すべきは、他端末の切断理由として記録されている「Disassociated due to inactivity (4)」です。これはWi-Fiの国際規格であるIEEE 802.11で定められたReason Code 4(一定時間パケットが届かなかったことによるタイムアウト切断)を示しています。
家庭内の独立した複数端末が同一秒に一斉に自発的な通信停止を行うことは確率的に考えにくいため、ルーター側が何らかの理由で応答できなくなり、タイムアウト(Reason Code 4)が連鎖的に引き起こされたと予想されます。
では、なぜスティックPCが切断した直後にルーター側がフリーズしたのか。海外コミュニティのRedditを調査したところ、Linux環境におけるRTL8723BSの不安定な挙動が複数報告されていました。
F38 – RTL 8723BS – WiFi Connection Drops ~5 Minutes after Boot
byu/TheSackveganAcadian inFedora
RTL8723BS "coalesce failed with error -22" after upgrade
by inarchlinux
上記スレッドでは、接続からわずか数分でリンクが勝手にドロップする不具合や、パケット送信処理のエラー(coalesce failed)を吐いてドライバが破綻する事例が報告されています。電波の生パケット解析まで踏み込んでいないため断定はできませんが、RTL8723BSが負荷や発熱で不安定になって異常なパケットや切断シグナルを送出し、それが原因で無線ルーター側の処理が破綻して再起動(リセット)を引き起こしてしまったのではないかと推測しました。
内蔵ドライバの完全停止とUSB接続への逃がし
親機を巻き込んで落とすようなハードウェアおよびドライバレベルの不具合に対し、Linuxカーネル側の省電力設定などを微調整して延命を図るのは得策ではありません。原因と目される内蔵Wi-FiチップをOSから完全に切り離し、USBインタフェースに変える方が無難と考えました。
内蔵ドライバ(r8723bs)のブラックリスト化
OS起動時に問題のモジュールが読み込まれないよう、設定ファイルを作成します。
sudo tee /etc/modprobe.d/blacklist-rtl8723bs.conf << 'EOF' blacklist r8723bs EOF
現在読み込まれているモジュールをアンロードします。
sudo modprobe -r r8723bs
インターフェースを確認し、内蔵Wi-Fiが消失したことを確認します。
ip link show wlan0
「Device “wlan0" does not exist」という返答が得られれば、内蔵チップの無力化は完了です。
まとめ
スティックPC「MS-NH1-W10」の通信負荷時に、家庭内Wi-Fi全体が切断される現象が発生しました。ルーターログを解析したところ、内蔵チップ「RTL8723BS」の切断直後に親機プロセスが異常終了し、全端末を一斉切断していた事実が判明しました。Reddit等のコミュニティでも、同チップが不安定な挙動を示す事例が指摘されています。対策として内蔵ドライバをブラックリスト化して完全沈黙させることにしました。結果、ルーターのクラッシュは完全に収束し、家庭内LANの安定化を達成しました。不安定な内蔵チップは深追いせず、外付けへ損切りするのが最善策です。