今回はRaspberry Pi 2BにUSB無線子機であるTP-Link社製TL-WN725Nのドライバをインストールするときに行ったことをまとめます。
他のサイトをいくつか参照していましたが、どれも5年以上前の記事ばかりであった上に、無線LAN接続自体の操作を一貫してまとめられたものが見当たらなかったためそれをここでまとめてしまおうという根端です。
初学者ですので間違いがありましたら指摘くださると助かります。
環境
- RaspberryPi 2 ModelB (ハード)
- TP-Link TL-WN725N (WirelessLAN※安い!)
- Linux 6.1.21-v7+ (Kernel version)
行うべきこと一覧(他記事参照)
- ラズパイのセットアップ(電源ケーブル・OSインストール・マウス・キーボード・モニター・有線LANを接続)
これについてはあらゆる記事がありますのでご自分で探してみてください。
有線LANの固定IP化はこの記事のネットワーク接続-固定IP化を参照してください
- WinSCP・RealVNC設定(おすすめ)
どちらも無料ですので是非お勧めします。参考記事をリンクします。
WinSCPはラズパイと使用しているPCのディレクトリを接続しファイルの移動を便利にするもの。
WinSCPについては初期設定だと管理者権限が与えられていない故にファイルの操作が不可になっていますので、どうしてもファイルの入れ替えを行いたい場合はこちらを参考に。高度なサイトの設定はログイン画面[編集]→[設定]で表示されます。
RealVNCはラズパイの周辺機器を接続せずに電源ケーブルとLANのみでリモートデスクトップを他デバイスで使えるものです。
ここまでやると私と同じ環境になります。
本編
機器の接続
とりあえず機器を接続しましょう。何も起こらないはずです。
しかしながら、
$ lsusb
では
pi@raspberrypi:~ $ lsusb
Bus 001 Device 004: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
Bus 001 Device 003: ID 0424:ec00 Microchip Technology, Inc. (formerly SMSC) SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Microchip Technology, Inc. (formerly SMSC) SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
とここでは Bus 001
にRTL8188EUS
とあり、これが今回のTL-WN725Nです。つまり認識はしていそう。
ラズパイに特化した無線子機は既にドライバをインストールしているようですが、今回買ったのはヤマダ電機で800円の格安商品であったため、やはりドライバのインストールは必須らしい...
でかすぎる罠その1
公式の製品ページにInstallation Guide for Linux.pdf
があるためしっかり調べた人はこれをみてある程度作業をしたでしょうが、全くこれは罠です。
罠といっても一部の人には必要(かもしれない操作)ですが、ほとんどに人にとってはModify Kernelの操作は手間がかかりすぎます。おそらくデフォルトのカーネル設定では動作しないためにDriverSourceをコンパイルする必要があるため、その前段階としてのカーネル構築なのでしょう。
ただ、実際にはGitHubで公開されている公式と同じものをカーネル構築とコンパイル操作なしにインストールが可能でした。カーネル構築には非常に時間がかかるうえに、コンパイル操作がするっと上手くいくはずもなく、ただ沼るだけなので公式の手順にのっとるのは非常におすすめしません。(これに1日をつぶしました。)
公式ガイドは無視する
これが1つ目の罠の回避方法です。
実際の手順
ドライバのインストール
で公開されている手順を参考にしています。
ドライバを公開してくださっている。
GitHubをクローンします。ここでホームディレクトリでコードを打つようにしてください。
$ cd ~
$ sudo apt update
$ sudo apt-get install git
$ git clone https://github.com/aircrack-ng/rtl8188eus
Cloneしたらそのディレクトリに入りビルドを行います。
$ cd rtl8288eus
$ sudo make && sudo make install
私はここでrebootしましたが、必要ないかもしれません。
rebootしてもまだ接続はできないはずです。
↑↓
マークにカーソルを合わせてもno wireless interfaces found
となってしまっていると思います。
具体的にはiwconfig
と打つとネットワークの詳細が確認できます。
$ iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 unassociated Nickname:"<WIFI@REALTEK>"
Mode:Managed 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
解決方法はBlacklistにドライバを追加することです。
$ echo 'blacklist r8188eu' | sudo tee -a '/etc/modprobe.d/realtek.conf'
出力は何もないはず。
$ cat /etc/modprobe.d/realtek.conf
でblacklist r8188eu
と出力されていればOKです。
ここで、bracklistに入れるのはr8188eu
と8188eu
のどちらかのようです。どちらも入れると動作せず、誤った一方を入れても動作しなくなります。
カーネルモジュールをロードします。
$ sudo insmod 8188.ko
※cd
してからずっとディレクトリはrtl8188eus
です。
私の環境ではエラーがでました。
insmod: ERROR: couldn't load module "8188eu.ko": File exist
driver同士が戦っているらしいため以下のコマンドで解決できます。(なぜこのコマンドなのかはわからず)
$ rmmod 8188eu
再起動します。
$ reboot
すると、↑↓
アイコンだった部分が
見慣れたWi-Fiになっているはずです。
問題の解決につながりそうなリンクを一応張っておきます。
念のためモジュールが正しくインストールされているかの確認をしましょう。
$ lsmod
これで8188eu
が見つかればOKです。
ネットワーク接続
とりあえず接続
あともう一息です。既にWi-Fiアイコンをクリックしていれば、検知されているアクセスポイントが羅列されていると思います。
これをクリックして普段と同様にSSIDとPWDを入れさえすれば接続が可能です。
固定IP化
ただ今回は毎回割り当てられているIPアドレスが同じでないとリモート接続が面倒になるため、ファイルに直接書き込むことで固定IP化を図ります。
こちらの記事が分かりやすいですが、少々データが古いです。
ここに2025年2月現在で設定しておくと良いファイル設定を残します。
有線LAN接続時に固定IP化をしていると思いますが、もう一度記述しておきます。
ラズパイもしくは他のPCにて
> arp -a # PC
$ arp -a # raspi
すると
インターフェイス: 略 --- 0x**
インターネット アドレス 物理アドレス 種類
192.168.11.1 **-**-**-**-**-** 動的
~~中略~~
255.255.255.255 **-**-**-**-**-** 静的
と出力されます。ipconfig
でも確かめられますが、
ルータのIPアドレスが192.168.11.1であることがわかります。
ここでリストされていないアドレスは未使用であるため、それ以外のアドレスは未使用ということになります。つまり固定化して良いことになります。この時、電源の入っていないデバイスについては表示されないためバッティングには気をつけてください。
今回は参考元記事に倣い
- 親機LANIP:192.168.11.1
- RaspberryPi eth0(有線)IP:192.168.11.2
- RaspberryPi wlan0(無線)IP:192.168.11.3
として設定します。
/etc/network/interfaces
現在は定義せずに使用が可能です。
/etc/dhcpcd.conf
こちらは定義が必要です。
$ sudo nano /etc/dhcp.conf
nanoを用いて以下を記述します。 static domain_search=
は現在定義の必要はありません。
interface eth0
static ip_address=192.168.11.2/24
static routers=192.168.11.1
static domain_name_servers=192.168.11.1
interface wlan0
static ip_address=192.168.11.3/24
static routers=192.168.11.1
static domain_name_servers=192.168.11.1
noipv6
書き込めたら、ctrl+X
→y
→enter
キーで保存ができます。
/etc/wpa_supplicant/wpa_supplicant.conf
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid="使用するルータSSIDに置き換え"
psk="パスワードに置き換え"
key_mgmt=WPA-PSK
}
書き込めたら、同様にctrl+X
→y
→enter
キーで保存ができます。
SSIDが ABCD-A123
パスワードが qwerty9876
である場合、
ssid="ABCD-A123"
psk="qwerty9876"
このような形に置き換えてください。
でかすぎる罠その2
実は私はここまでの操作を行ってもWi-Fiのマークはでるものの実際に接続まではできていませんでした。
よって何度もの上のファイルの中身を見直したり、色んなところをいじくったり、途中まで構成していたカーネルのファイルが悪さをしていないかなど試行錯誤をするはめになりました。
しかし、12時間にも及ぶ格闘の末、ついに沼を脱出しました。
解決のカギ
TL-WN725N(EU&US)_3.0_datasheet.pdf
!?!?
150Mbps 2.4GHz
2.4GHzのみだということをすっかり忘れていました。
wpa_supplicant.conf
にSSIDとして記載していたのは5GHzの方...無様すぎて涙がでそう。
購入時には確認していたはずなのに...
罠その1で公式への嫌悪がマックスに達していたため製品ページのタブを閉じていたため発見が遅れてしまいました。
なんとなく他の電波の干渉を防ぐために5GHzの方が良いだろうとそっちの方に接続していたがよくありませんでした。
製品仕様は確認しよう
教訓その2です。
まとめ
公式ガイドは無視しつつ製品仕様はしっかり確認するのが大事ですね。
10年前のデバイスをWi-Fi接続しようとする人はもういないかもしれませんが、私自身の備忘録として以上を残しておきます。