[Ubuntu 22.04] wifiが不安定なのを直す [N100ミニPC]

最終更新日:  

ubuntu


先日、GMKtec NucBox G3というintel N100搭載のミニPCを購入。
Ubuntuを入れて使い始めるも、少しいじっているとwifiが不安定な気が。
ブラウザ閲覧でも最初はスムーズに読み込める。しかし、しばらくすると急にページの読み込みが遅くなる。これが頻発する。

一応どうにか改善できたので記録として残しておく。

環境

$ cat /etc/issue
Ubuntu 22.04.3 LTS \n \l

$ uname -r
6.2.0-37-generic

ipv6を無効化する(効果なし)

/etc/default/grubのGRUB_CMDLINE_LINUXを下記のように編集する。

# 修正前
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# 修正後
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ipv6.disable=1"
GRUB_CMDLINE_LINUX="ipv6.disable=1"

その後

# 設定を反映
$ sudo update-grub

# 再起動
$ sudo reboot

再起動後、下記コマンドでinet6の表示がなくなり、ipv6が無効化されているのがわかる。

$ ip a
...(省略)...
3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 40:9c:a7:3b:9c:9f brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.28/24 brd 192.168.43.255 scope global dynamic noprefixroute wlp1s0
       valid_lft 2425sec preferred_lft 2425sec

しかし、特に効果はなかった。
むしろ自分の環境では通信速度が悪化したため元に戻した。

NetworkManagerの設定で省電力をOFFにする(効果なし)

/etc/NetworkManager/conf.d/default-wifi-powersave-on.confwifi.powersave = 2にする。 iwconfigの結果はPower Management:offとなったが、効果はなさそうだった。

# 修正前
$ iwconfig
...(省略)...
wlp1s0    IEEE 802.11  ESSID:"4GWiFi_96230"  
          Mode:Managed  Frequency:2.437 GHz  Access Point: 08:97:58:03:19:38   
          Bit Rate=72.2 Mb/s   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=70/70  Signal level=-34 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:8  Invalid misc:64171   Missed beacon:0

# default-wifi-powersave-on.confの修正後
$ iwconfig
...(省略)...
wlp1s0    IEEE 802.11  ESSID:"4GWiFi_96230"  
          Mode:Managed  Frequency:2.437 GHz  Access Point: 08:97:58:03:19:38   
          Bit Rate=72.2 Mb/s   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=70/70  Signal level=-34 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:8  Invalid misc:64171   Missed beacon:0

こちらも特に効果はなかった。

ログの確認

いろいろ見ているとドライバが怪しいのか?

下記のようなコマンドでwifiのドライバを確認できる。

$ lspci -v
...(省略)...
01:00.0 Network controller: Realtek Semiconductor Co., Ltd. Device b852
        Subsystem: Realtek Semiconductor Co., Ltd. Device b852
        Flags: bus master, fast devsel, latency 0, IRQ 140
        I/O ports at 3000 [size=256]
        Memory at 80700000 (64-bit, non-prefetchable) [size=1M]
        Capabilities: <access denied>
        Kernel driver in use: rtw89_8852be
        Kernel modules: rtw89_8852be

$ lshw -C network
...(省略)...
  *-network                 
       description: Wireless interface
       product: Realtek Semiconductor Co., Ltd.
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:01:00.0
       logical name: wlp1s0
       version: 00
       serial: 40:9c:a7:3b:9c:9f
       width: 64 bits
       clock: 33MHz
       capabilities: bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=rtw89_8852be driverversion=6.2.0-37-generic firmware=N/A ip=192.168.43.28 latency=0 link=yes multicast=yes wireless=IEEE 802.11
       resources: irq:140 ioport:3000(size=256) memory:80700000-807fffff

rtw89_8852beがドライバらしい。

dmesgのログ。特に問題なさそう。

$ sudo dmesg -T | grep wlp1s0
[火 12月  4 06:58:28 2023] rtw89_8852be 0000:01:00.0 wlp1s0: renamed from wlan0
[火 12月  4 06:58:33 2023] wlp1s0: authenticate with 08:97:58:03:19:38
[火 12月  4 06:58:33 2023] wlp1s0: send auth to 08:97:58:03:19:38 (try 1/3)
[火 12月  4 06:58:33 2023] wlp1s0: authenticated
[火 12月  4 06:58:33 2023] wlp1s0: associate with 08:97:58:03:19:38 (try 1/3)
[火 12月  4 06:58:33 2023] wlp1s0: RX AssocResp from 08:97:58:03:19:38 (capab=0x8431 status=0 aid=8)
[火 12月  4 06:58:33 2023] wlp1s0: associated

journalctlのログ。こちらも特に問題なさそう。

$ journalctl | grep rtw89_8852be
...(省略)...
12月 04 07:18:30 xxxxxx kernel: rtw89_8852be 0000:01:00.0: enabling device (0000 -> 0003)
12月 04 07:18:30 xxxxxx kernel: rtw89_8852be 0000:01:00.0: Firmware version 0.27.32.1, cmd version 0, type 1
12月 04 07:18:30 xxxxxx kernel: rtw89_8852be 0000:01:00.0: Firmware version 0.27.32.1, cmd version 0, type 3
12月 04 07:18:31 xxxxxx kernel: rtw89_8852be 0000:01:00.0: chip rfe_type is 1
12月 04 07:18:31 xxxxxx kernel: rtw89_8852be 0000:01:00.0 wlp1s0: renamed from wlan0
12月 04 07:18:31 xxxxxx NetworkManager[546]: <info>  [1701641911.6815] rfkill1: found Wi-Fi radio killswitch (at /sys/devices/pci0000:00/0000:00:1c.0/0000:01:00.0/ieee80211/phy0/rfkill1) (driver rtw89_8852be)

syslogを確認するとCTRL-EVENT-BEACON-LOSSというのが割と短期間に繰り返し出ていた。

$ cat /var/log/syslog | grep -a CTRL-EVENT-BEACON-LOSS
...(省略)...
Dec  4 08:39:27 xxxxxx wpa_supplicant[573]: wlp1s0: CTRL-EVENT-BEACON-LOSS 
Dec  4 08:49:57 xxxxxx wpa_supplicant[573]: wlp1s0: CTRL-EVENT-BEACON-LOSS 
Dec  4 08:59:38 xxxxxx wpa_supplicant[573]: wlp1s0: CTRL-EVENT-BEACON-LOSS 
Dec  4 09:03:12 xxxxxx wpa_supplicant[573]: wlp1s0: CTRL-EVENT-BEACON-LOSS 
Dec  4 09:11:46 xxxxxx wpa_supplicant[573]: wlp1s0: CTRL-EVENT-BEACON-LOSS 
Dec  4 09:14:12 xxxxxx wpa_supplicant[573]: wlp1s0: CTRL-EVENT-BEACON-LOSS 
Dec  4 09:24:48 xxxxxx wpa_supplicant[573]: wlp1s0: CTRL-EVENT-BEACON-LOSS 
Dec  4 09:24:52 xxxxxx wpa_supplicant[573]: wlp1s0: CTRL-EVENT-BEACON-LOSS 
Dec  4 10:04:38 xxxxxx wpa_supplicant[573]: wlp1s0: CTRL-EVENT-BEACON-LOSS 
Dec  4 10:30:30 xxxxxx wpa_supplicant[573]: wlp1s0: CTRL-EVENT-BEACON-LOSS 
Dec  4 10:50:04 xxxxxx wpa_supplicant[573]: wlp1s0: CTRL-EVENT-BEACON-LOSS 

ドライバのオプションで省電力をOFFにする(効果あり?)

「rtw8852be」「CTRL-EVENT-BEACON-LOSS」などのワードでWEB検索してみると有力そうな情報があった。

/etc/modprobe.d/8852be.confを作成する。 中身は下記。

options rtw89_core disable_ps_mode=Y

これによって省電力が無効になるらしい。
編集後に再起動する。

ちなみにパラメータの詳細は下記で確認できる。

$ modinfo -p rtw89_core
debug_mask:Debugging mask (uint)
disable_ps_mode:Set Y to disable low power mode (bool)

下記で指定したパラメーターが設定されているか確認してもよい。

$ grep "" -r /sys/module/rtw89_core/parameters/
/sys/module/rtw89_core/parameters/debug_mask:0
/sys/module/rtw89_core/parameters/disable_ps_mode:Y

上記を設定することで、若干改善されたように思う。「CTRL-EVENT-BEACON-LOSS」が出ることも減った。

とりあえずこれで様子を見ることにする。

結局改善せず…

しばらく様子見してたが、改善できていないようだった。
そのため、最終的にUSBポートに挿して使うタイプのwifiアダプタを購入した。
そちらではwifiは軽快に動作している。

$ lsusb
Bus 001 Device 006: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter

【追記】ネットで見つけたドライバを入れてみる

https://github.com/lwfinger/rtw89

このドライバを入れてみる。インストール方法はREADMEに記載がある。

sudo apt install make gcc linux-headers-$(uname -r) build-essential git
git clone https://github.com/lwfinger/rtw89.git
cd rtw89/
make
sudo make install

ドライバはrtw_8852beという名前となっている。

一応、カーネルに元々あったrtw89_8852beをブラックリストに入れておく。

sudo sh -c 'echo "blacklist rtw89_8852be" >> /etc/modprobe.d/8852be.conf'

上記の方法でインストールした場合、カーネルが更新されるたびに再インストールする必要がある。

git pull
make clean
make
sudo make install

これで様子を見る。



関連記事