mieki256's diary



2025/08/12(火) [n年前の日記]

#2 [linux][ubuntu] サブPC A8-3850機のNICやWi-Fi関係を設定

サブPC A8-3850機を Ubuntu 20.04 LTS から 24.04 LTS にしたところ、無線LAN子機がネットワークに接続できない状態になってしまったので、関連設定を色々試した。

ちなみに、Ubuntu Linux 20.04 LTS の頃に行った作業は以下。

_mieki256's diary - Ubuntu 20.04 LTS上でr8169ドライバが使われてしまう問題
_mieki256's diary - ELECOM WDC-300SU2SWH を Ubuntu 20.04 で利用

有線LANの設定 :

A8-3850機のM/B は GIGABYTE GA-A75M-UD2H (rev. 1.0) なので、有線LAN用のチップは Realtek RTL8111E が使われている。以前の日記上では間違って Realtek RTL8111C と書いてしまったようだけど、本当は RTL8111E だった…。

_GA-A75M-UD2H (rev. 1.0) スペック | マザーボード - GIGABYTE Japan

RTL8111E は、Linuxの場合 r8168 ドライバを使えば利用できるようになるらしい。それについては以前の作業を繰り返してみたところ、LANに接続できるようになった。

sudo apt install r8168-dkms
sudo vi /etc/modprobe.d/r8168-dkms.conf

/etc/modprobe.d/r8168-dkms.conf 内の特定の行のコメントアウトを外して、r8169ドライバが使われないように指定する。
#blacklist r8169
↓
blacklist r8169


sudo reboot で再起動。

lsmod と打って、もしも r8169 が表示されていたら相変わらず誤認識されてる。r8168 が表示されていたらOK。

$ lsmod | grep r8
r8168                 675840  0

無線LAN子機の設定 :

今回使いたい USB接続の無線LAN子機は、ELECOM WDC-300SU2SWH (WDC-300SU2S)。使用チップは Realtek RTL8192CU らしい。

本当なら、RTL8192CU を使っている無線LAN子機は rtl8xxxuドライバを使うと安定動作するらしいのだけど、rtl8xxxu ドライバに WDC-300SU2S のIDは記述されていないので、認識してくれない…。


ベンダーID(メーカー名を示すID)とプロダクトID(製品型番を示すID)を確認。

$ lsusb
...
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 056e:4009 Elecom Co., Ltd WDC-300SU2S
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...


WDC-300SU2S のID は `056e:4009` らしい。このIDが出てきたらこのドライバを使え、とLinuxに指定できれば、WDC-300SU2S をLinuxで使えるようになる。

Linuxのカーネルには rtl8192cu というドライバが入ってるらしいけど、このドライバはちゃんと動作しないというのが定評で…。別のドライバを使うようにアレコレしないといけない。

ググっていたら、昨今は rtl8*-dkms というパッケージがPPAで配布されていると知った。利用させてもらおう…。

_How to Install Realtek Wifi Drivers in Ubuntu 22.04 | Linux Mint 22/21 - FOSTips
_kablosuz-wireless : Butterfly


リポジトリを追加。

sudo add-apt-repository ppa:kelebek333/kablosuz
sudo apt update


rtl8192cu-dkms というパッケージがあるか確認。

$ sudo aptitude search 8192cu
i   rtl8192cu-dkms                                         - rtl8192cu driver in DKMS format.


インストールしてみる。

sudo apt install rtl8192cu-dkms


rtl8192cu ドライバをロード。

sudo modprobe rtl8192cu


$ ls -al /sys/bus/usb/drivers/
合計 0
drwxr-xr-x 7 root root 0  8月 12 01:03 .
drwxr-xr-x 4 root root 0  8月 12 01:03 ..
drwxr-xr-x 2 root root 0  8月 12 01:03 hub
drwxr-xr-x 2 root root 0  8月 12 01:04 rtl8192cu
drwxr-xr-x 2 root root 0  8月 12 01:03 usb
drwxr-xr-x 2 root root 0  8月 12 01:03 usbfs
drwxr-xr-x 2 root root 0  8月 12 01:03 usbhid

rtl8192cu というディレクトリがあるのでロードできたのかな。


WDC-300SU2S のIDを、/sys/bus/usb/drivers/rtl8192cu/new_id に追記する。

$ echo "056E 4009" | sudo tee /sys/bus/usb/drivers/rtl8192cu/new_id


この状態にしたら、無線LAN子機が即座に認識された。iwconfig で状態を確認。wlx* という機器?が増えている。

$ iwconfig
lo        no wireless extensions.

enp1s0    no wireless extensions.

wlxXXXXXXXXXXXX  IEEE 802.11bgn  ESSID:"XXXXX-XXXXXX-g"  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency:2.462 GHz  Access Point: XX:XX:XX:XX:XX:XX
          Bit Rate:144.4 Mb/s   Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=100/100  Signal level=100/100  Noise level=0/100
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0


認識はされたけれど、OSを再起動するとこのあたりの設定は初期化されてしまうらしいので永続化したい。さて、どうすればいいのやら。


/etc/modules にモジュール名を記述しておけば、必ずロードされるようになるのだろうか? 分からないけど。

echo "rtl8192cu" | sudo tee -a /etc/modules


/etc/rc.local を作成してみる。OS起動時に、このファイルを実行するように設定することができるらしい。

sudo touch /etc/rc.local
sudo chmod 700 /etc/rc.local
sudo vi /etc/rc.local

WDC-300SU2S のIDを /sys/bus/usb/drivers/rtl8192cu/new_id に追記する処理を記述。

#!/bin/sh
echo "056E 4009" > /sys/bus/usb/drivers/rtl8192cu/new_id

/etc/rc.local の最後に exit 0 を記述している事例も見かけたけれど、今回それを書いてしまうと、rc-local.service とやらで不具合が出たので記述しないことにした。


rc-local とやらを再起動。

_Ubuntu 20.04 LTS でも rc.local は使える systemd - Qiita
_ubuntu 18.04 で rc.local を使う Ubuntu - Qiita

sudo systemctl restart rc-local.service
sudo systemctl status rc-local.service


sudo reboot でOSを再起動して、WDC-300SU2S が認識されているのか確認。

デスクトップのタスクバー上にあるネットワーク接続アイコンをクリックして、ルータに接続するための設定を入力。


ただ、この作業でロードされる rtl8192cu って、カーネルが持っているという、古いドライバだったりしないのだろうか…? 本当に rtl8192cu-dkms で導入した版が使われているのだろうか? そのことをどうやって確認すればいいのだろう…?

dkmsって何だろう :

dkms というワードを目にするけれど、コレって何だろう…?

_動的カーネルモジュールサポート - ArchWiki

Dynamic Kernel Module Support の略らしい。

Dynamic Kernel Module Support (DKMS) はカーネルのソースツリーの外にソースが存在する Linux カーネルモジュールの生成を可能にするプログラム/フレームワークです。新しいカーネルがインストールされたときに DKMS モジュールは自動的にリビルドされます。

動的カーネルモジュールサポート - ArchWiki より


カーネルに後から何かしらを追加できる機能とでも思っておけばいいのだろうか?

以上です。

過去ログ表示

Prev - 2025/08 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project