Open11
Ubuntu 24.04.1 LTS で rtw_8821ce ... failed to send h2c command というログが出力され続ける問題
前提:
- PC: NiPoGi Intel N100 8GB DDR4 256GB SSD
- Realtek の Wi-Fi チップセットが組み込まれている(伏線)
- OS: Ubuntu Server 24.04.1 LTS
- もともとは Windows がプリインストールされていたが、Ubuntu Server で潰した
Ubuntu Server で遊びたくて買ったのに。これじゃ MySQL サーバーを建てられないじゃないか!
エラー内容:
[ ... ] rtw_8821ce 0000:02:00.0: failed to send h2c command
コンソールにこのログが延々と出力される
Amazon のレビューに同じように困っている人がいた(解決したっぽい):
USBにisoイメージを焼いてインストールしましたが、無線LANまわりで少々トラブルがありました。
ubuntu20.04LTSのもともとの設定(?)に難ありで、rtw_8821ceが以下のエラーを一生吐きます。
ubuntu failed to send h2c command 云々
一旦殺してドライバ入れ直しで解決できました。引っかかったのはそこくらいです。
無線LANインターフェース名を調べる
ip link
1: lo: ...
2: enp1s0: ...
3: wlp2s0
無線LANインターフェースを無効にする
sudo ip link set wlp2s0 down
ここまでやると一旦ログ出力は止まる。
さて本題。
悪さをしていそうなモジュール名を探す
$ lsmod | grep rtw
rtw88_8821ce 16384 0
rtw88_8821c 16384 1 rtw88_8821ce
rtw88_pci 20480 1 rtw88_8821ce
rtw88_core 147456 2 rtw88_pci,rtw88_8821ce
mac80211 843776 1 rtw88_pci,rtw88_core
cfg80211 704512 2 rtw88_core, mac80211
モジュールをアンロードする
$ sudo modprobe -r rtw88_8821ce
Realtek RTL8821CE ドライバをダウンロードする
使っているドライバを調べる
$ sudo lshw -C network
...
*-network
description Wireless interface
configuration: broadcast=yes driver=rtl8821ce, ...
ネットワークドライバーのバージョンを調べる。
lspci が使う。
エラーログの rtw_8821ce
の 8821 をキーワードにする。
lspci | grep 8821
RTL8821CE だった。
ぐぬぬ..
調べてみるとThinkPadに使われているWi-FiのネットワークカードRTL8821CEがLinuxに対応していないらしい。
sudo apt install rtl8821ce-dkms
だとインストールできない。
24.04 LTS (コードネームは Noble Numbat) に対応した rtl8821ce-dkms パッケージがないため。
そもそも RealTek の RTL8821CE のドライバーは Windows のみ。
プリインストールしてある Windows を潰して Ubuntu をインストールすると公式に提供されているドライバがない。
このドライバーは OS 起動時にメモリリークエラーになったので諦めた。