Wi-Fiドライバのワーニングを省電力機能OFFで抑制
dmesg にWi-Fiドライバのワーニングが大量に出力されていました。PCは BMAX MaxMini B1 Pro で、Wi-Fi アダプターは Realtek RTL8821CE です。
$ sudo dmesg -Tl warn
:
[Tue Dec 2 12:39:35 2025] rtw_8821ce 0000:01:00.0: unhandled firmware c2h interrupt
[Tue Dec 2 12:40:15 2025] rtw_8821ce 0000:01:00.0: unhandled firmware c2h interrupt
[Tue Dec 2 12:40:51 2025] rtw_8821ce 0000:01:00.0: unhandled firmware c2h interrupt
[Tue Dec 2 12:41:23 2025] rtw_8821ce 0000:01:00.0: unhandled firmware c2h interrupt
[Tue Dec 2 12:41:49 2025] rtw_8821ce 0000:01:00.0: unhandled firmware c2h interrupt
$ sudo dmesg -l warn|wc -l
3614
$ lspci| grep -i wireless
01:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter
メッセージをネットで検索し、以下の投稿を見つけました。
やあ!そうなんだよね、Linuxでこういう変なネットワークの問題に対処するのは大変だよね。Wi-FiとBluetoothが2.4GHz帯で動作していることによる干渉についてのあなたの診断は、まさに的を射ていると思うよ。ちゃんと調整されてないと、絶対にお互いに干渉しあうからね。
Linuxのハードウェア管理を通して直接管理してみた?Realtek 8821CEを使ってるなら、realtek-rtl88xxau-dkmsでうまくいくかもしれないよ。これは、問題を解決するのに役立つかもしれないLinuxカーネルドライバのセットなんだ。あと、Wi-FiアダプターとBluetoothの省電力設定を無効にすることをお勧めするよ。持続的な帯域幅を必要とするタスクを処理するときに、変な動作を引き起こすことがあるんだ。
それから、完全にソフトウェアだけの問題じゃないかもしれないってことも考慮に入れてね。デバイス内のBluetoothモジュールとWi-Fiアンテナが近すぎるという物理的な状況かもしれないんだ。
最後に、Arch Linuxのフォーラムで、同様の問題について読んで、共存パラメータを0から1に変更することを提案していたよ。試してみるのもいいかもしれないね。
頑張って!どうなったか教えてね!
https://www.reddit.com/r/linux4noobs/comments/18vymn8/rtl8821ces_problem_with_bluetooth_connecting/?tl=ja
Wi-Fiアダプターの省電力設定で出なくなるならうれしいのでやり方を調べました。
よくお世話になっている Arch Linuxのサイトの「ネットワーク設定/ワイヤレス」に iw コマンドでできると書いてあるのでやってみます。
$ sudo apt install iw
$ iw dev
phy#0
Interface wlp1s0
ifindex 3
wdev 0x1
addr 44:87:63:8a:2f:a8
ssid aterm-b97cfc-a
type managed
channel 48 (5240 MHz), width: 80 MHz, center1: 5210 MHz
txpower 20.00 dBm
multicast TXQ:
qsz-byt qsz-pkt flows drops marks overlmt hashcol tx-bytes tx-packets
0 0 0 0 0 0 0 0 0
$ iw dev wlp1s0 get power_save
Power save: on
$ sudo iw dev wlp1s0 set power_save off
$ iw dev wlp1s0 get power_save
Power save: off
今まで1分間に2回以上出ていた dmesg のワーニングが、off にして以降、出なくなりました。
iw コマンドで設定したものはOSを再起動すると元に戻ってしまうので、起動時に毎回 iw dev wlp1s0 set power_save off を実行するように設定しなければなりません。
Ubuntu 24.04.3 LTS のネットワークマネージャーは systemd-networkd です。以前の ifupdown パッケージでは /etc/network/if-up.d/ にスクリプトを置くと、インターフェースが起動した後にそのスクリプトが実行されるという機能があったので、同様のものがないか探してみます。
最初に見つけたのが「WiFiのパワーセーブをオフにする」というページで、udevルールを使用して起動していました。このページでは systemd や cron を使う方法へのリンクもありました。でも、そんな難しいことしないといけないの?という疑問もあり、もう少し探しました。
NetworkManager には NetworkManager-dispatcher サービスという if-up.d みたいなフックスクリプトを起動するしくみがあることを見つけました。そこからさらに調べたら Netplan の FAQ に「Use pre-up, post-up, etc. hook scripts」という記事を見つけました。
networkd でフックスクリプトを使うには networkd-dispatcher を使うといいことがわかりました。man で確認します。
networkd-dispatcher(8)The scripts to be run on network changes are in subdirectories routable.d/, dormant.d/, no-carrier.d/, off.d/, carrier.d/, degraded.d/, configured.d/, configuring.d/ inside SCRIPT_DIR. The default value for SCRIPT_DIR is /etc/networkd-dispatcher:/usr/lib/networkd-dispatcher. For information about the network operational states exposed by systemd, see networkctl(1).
man networkctl で状態について確認しましたが、そんな厳密なタイミングで起動しなくていいので、通信可能な状態の routable.d で実行することにしました。
ネットワークインターフェースは lo とか有線LANとかもあるので、問題の Wi-Fi のインターフェース wlp1s0 のときだけ iw コマンドを実行する必要があります。
networkd-dispatcher(8)ENVIRONMENT Scripts are executed with some environment variables set. Some of these variables may not be set or may be set to an empty value, dependent upon the type of event. These can be used by scripts to conditionally take action based on a specific interface, state, etc. • IFACE - interface that triggered the event
呼び出されるスクリプトは IFACE 環境変数にインターフェース名がセットされるので、それで判断できそうです。
ということで、スクリプトを作ります。
$ cd /etc/networkd-dispatcher/routable.d
$ sudo vi 50-wlp1s0-power_save-off
$ sudo chmod +x 50-wlp1s0-power_save-off
$ ls -l
合計 4
-rwxr-xr-x 1 root root 101 12月 3 13:51 50-wlp1s0-power_save-off
$ cat 50-wlp1s0-power_save-off
#!/bin/sh
target="wlp1s0"
[ x"$IFACE" = x"$target" -a -x /usr/sbin/iw ] && /usr/sbin/iw dev "$target" set power_save off
リブートして確認します。
$ iw dev wlp1s0 get power_save
Power save: off
$ sudo dmesg -Tl warn
[Wed Dec 3 14:15:48 2025] device-mapper: core: CONFIG_IMA_DISABLE_HTABLE is disabled. Duplicate IMA measurements will not be recorded in the IMA log.
[Wed Dec 3 14:15:51 2025] sd 2:0:0:0: [sdb] No Caching mode page found
[Wed Dec 3 14:15:51 2025] sd 2:0:0:0: [sdb] Assuming drive cache: write through
[Wed Dec 3 14:15:56 2025] lpc_ich 0000:00:1f.0: No MFD cells added
省電力設定はオフで件のワーニングも出力されなくなりました。
