[Ubuntu 22.04] CPUの周波数を制限する [N100ミニPC]
intel N100搭載のミニPCを使用していますが、排熱の問題もあると思うので、CPUの周波数制限をしたいと思い調べま …
最終更新日:
先日、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
/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
しかし、特に効果はなかった。
むしろ自分の環境では通信速度が悪化したため元に戻した。
/etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
のwifi.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
「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
これで様子を見る。
intel N100搭載のミニPCを使用していますが、排熱の問題もあると思うので、CPUの周波数制限をしたいと思い調べま …
AutoKeyでショートカットキーを設定するため、AltキーをHyperキーに変える。 そのHyperキーを利用してシ …
UbuntuでCapsLockキーを全角半角キーにする。 xmodmapを使う。
カーネル付属のドライバー(rtw88_8821cu)では認識はするものの動作しないため、他のドライバーをインストールし …