RaspberryPi で TP-Link TL-WN725N を使う

はじめに

RasPiZeroW2 はまだ技適取れてないようだし,秋月やスイッチサイエンスのサイトでもここしばらく RasPi 本体の在庫がない状態になっている.

手持ちは RasPi2x1,RasPi3x1,RasPiZeroWx2.RasPi3 は当時Wi-Fi使える個体がこれだけで配線少なくて済むと思って I2C で環境センシング,RasPiZeroW はたまたまザクヘッドにうまく収まったから監視カメラ,とそれぞれ全くスペックに釣り合わない処理をさせているので,環境整備する.そのついでに RasPi2 で Wi-Fiを使えるようにする.

TP-Link TL-WN725N

今回用意したのは小型かつ低価格が魅力な TP-Link TL-WN725N.

https://amzn.to/3rY25PX

使いたい環境は次の通り.

$ 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 が含まれているようなので,これをインストールすれば良さそう.

Debian -- Details of package firmware-realtek in bullseye
Binary firmware for Realtek wired/wifi/BT adapters

いちおうドライバ導入前の状態を確認しておくとこの状態.最新のイメージでは上のパッケージが最初からはいいてるっぽい.とはいえ後述の通り 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

以下公式ソースのコンパイルを試みて差分大量につき挫折した調査の痕跡.

コメント

タイトルとURLをコピーしました