Ubuntu22.04で認識できたUSB-WiFiをUbuntu18.04でも利用したい
開発の都合で、Ubuntu22.04で動作していたPCをダウングレードしたところ、ip addr
の一覧からUSB-WiFiが消えていました。22系で自動でインストールされるドライバが、18系の時代は含まれていないようです。調べて、使えるようにしてみました。
認識できなかったデバイス
認識できなかったデバイスは以下
$ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0bda:b812 Realtek Semiconductor Corp. <<-- これ
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 25a7:fa61
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
今回参考にしたサイト
RTL88x2buドライバの導入
このWi-Fiデバイスを使うには「RTL88x2buドライバ」と呼ばれるものが必要なようです。このドライバはGitHubで配布されていますので、まずはgitを使えるようにします。
$ sudo apt install git -y
gitコマンドが使えるようになったら、以下を実行し、ドライバのソースコードを入手します。
$ git clone https://github.com/RinCat/RTL88x2BU-Linux-Driver.git
...
$ ls -l
drwxrwxr-x 8 shino shino 4096 11月 9 13:48 RTL88x2BU-Linux-Driver
次にドライバのソースコードをビルドし、ドライバ(カーネルモジュール形式)を生成。ドライバをインストールします。
$ cd RTL88x2BU-Linux-Driver
$ make clean
... (古い生成物が削除されます)
$ make KSRC=/lib/modules/$(uname -r)/build -j 16
... (カーネルモジュールがビルドされます)
$ sudo make install
... (カーネルモジュールをインストールします)
最後にドライバを読み込むことで、デバイスが認識できるようになります。rtw_switch_usb_mode=1
はUSB3.0を設定する指定子です。
$ sudo modprobe 88x2bu rtw_switch_usb_mode=1
... (カーネルモジュールをロードします)
$ nmcli device
DEVICE TYPE STATE CONNECTION
enp0s31f6 ethernet 接続済み 有線接続 1
wlx90de80815163 wifi 接続済み xinolinx_5G <<-- これが見えればOK
lo loopback 管理無し --
再起動後もカーネルモジュールがロードされるようにする
カーネルモジュールを起動時に自動的にロードするよう設定します。これには/etc/modules
を使います。
$ sudo vi /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
88x2bu rtw_switch_usb_mode=1
(上の行を追記)
念のため、再起動した後も認識できるか試しておきましょう。
$ sudo reboot
WiFiのアクセスポイント選択など
無線LANの設定は、Ubuntuデスクトップにあるネットワークの設定画面を利用することが簡単でしょう。わたしの自宅ではxinolinx_5G
というアクセスポイントが立っているので、そこに接続しています。
まとめ
以上が、WiFi(0bda:b812
)の利用方法です。
また他のデバイスにぶつかったら都度追記予定です!