はじめに
RasPiZeroW2 はまだ技適取れてないようだし,秋月やスイッチサイエンスのサイトでもここしばらく RasPi 本体の在庫がない状態になっている.
手持ちは RasPi2x1,RasPi3x1,RasPiZeroWx2.RasPi3 は当時Wi-Fi使える個体がこれだけで配線少なくて済むと思って I2C で環境センシング,RasPiZeroW はたまたまザクヘッドにうまく収まったから監視カメラ,とそれぞれ全くスペックに釣り合わない処理をさせているので,環境整備する.そのついでに RasPi2 で Wi-Fiを使えるようにする.
TP-Link TL-WN725N
今回用意したのは小型かつ低価格が魅力な TP-Link TL-WN725N.
使いたい環境は次の通り.
$ cat /etc/os-release && uname -r && cat /sys/firmware/devicetree/base/model
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
5.10.92-v7+
Raspberry Pi 2 Model B Rev 1.1
現在の RaspberryPi OS Bullseye のカーネルは 5.10.92-v7+ だが,TP-LINK 公式のソースはカーネル 2.6.18 ~ 4.4.3 までしか対応しておらず,コンパイルしてみてもカーネルの仕様変更によりエラーを吐く.公式のソースを利用する場合はかなりの差分をマージする必要がある.
ネット上の情報を漁ってみると,多くの人が MrEngman 様のサイト からコンパイル済みのバイナリを拾ってきてインストールして使っているらしい.いちおうソースはこれでエラーなくコンパイル出来た.RaspberryPi のフォラームにも情報が載っている.ちなみに 2022/01/30 現在,5.10.92-v7+ のバイナリはまだ用意されていない.
2021年7月頃から TL-WN725N で使っているチップ RTL8188EU のドライバがカーネルソースにマージされ,徐々に利用環境が整備されてきている.RasPi のカーネルもアップストリームが対応したら追従するっぽいので,5.16 辺りから何も考えずに使えるようになることを期待.
staging: r8188eu: introduce new os_dep dir for RTL8188eu driver
と思ったら,これに RTL8188EU が含まれているようなので,これをインストールすれば良さそう.
いちおうドライバ導入前の状態を確認しておくとこの状態.最新のイメージでは上のパッケージが最初からはいいてるっぽい.とはいえ後述の通り raspi-config から Wi-Fi 関連の設定は出来ない状態.
$ lsusb -s 001:004
Bus 001 Device 004: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
$ iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 unassociated ESSID:"" Nickname:"<WIFI@REALTEK>"
Mode:Auto Frequency=2.412 GHz Access Point: Not-Associated
Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
ということで,いちおうドライバのコンパイル方法だけ残しておく.
まずはカーネルヘッダをインストールする.
$ sudo apt install raspberrypi-kernel-headers git
コンパイルしてインストール.
$ git clone https://github.com/lwfinger/rtl8188eu.git
$ cd rtl8188eu/
$ make all
$ sudo make install
$ sudo insmod 8188eu.ko
これでドライバが最新化された.あとは /etc/wpa_supplicant/wpa_supplicant.conf に設定を書いてあげれば OK.
$ iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 unassociated ESSID:"" Nickname:"<WIFI@REALTEK>"
Mode:Auto Frequency=2.412 GHz Access Point: Not-Associated
Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality=0/100 Signal level=0 dBm Noise level=0 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
$ wpa_passphrase ${YOUR_SSID} ${YOUR_PASSWORD} | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf
なぜか raspi-config から Wi-Fi 設定画面開くと could not communicate with wpa_supplicant
と言われる.以下 wlan0 の設定ファイルを作って再起動すると直った
$ cat /etc/network/interfaces.d/wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
おわりに
アマゾン価格 713 円で無線機能が使えるようになると思えばコスパは良い.わざわざ自分でコンパイルする必要は無かった.危うく公式ソースをビルドできないか思案してカーネル沼をにハマってしまうところだったが,これはこれで良い教材なのかもしれない.
TP-LINK 公式の手順によると zip ファイルの解凍には unzip コマンドではなく jar コマンドを推奨している.
Note: It is recommended not to use the unzip software to decompress the .zip file.
https://static.tp-link.com/2018/201812/20181207/Installation%20Guide%20for%20Linux.pdf
適当に調べたところによると,たぶんこれが理由っぽい.ざっくり言うと現状 jar コマンドは破損したファイルを見つけることができる唯一のコマンドらしい.他に理由知ってる人がいたら教えてほしいところ.
Why jar instead of unzip? #101
References
以下公式ソースのコンパイルを試みて差分大量につき挫折した調査の痕跡.
コメント