Nov 09, 2021
Raspberry Pi + USB WiFiアダプターで piCore 起動時に自動的に無線LANに接続させる
今回はLinuxの話になる。
前回のエントリーは、Raspberry Pi2をAP化、オーディオプレーヤー化しようとしたところ、なんだかよく分からないことになったという話だったんだけど、未だにどうなってるのか分からない。
とりあえずAP化の詳細は置いといて、初歩的なとこから、家庭内LANに無線でつなぐとこから始めよう、と思ったら、意外に嵌ったので備忘録化しておく。
まず使ったpiCoreは、piCore13.0.3 /armv7。つまりRaspberry Pi B2用の最新版。
うちで余っているRas Piは、B+、B2が多く、無線を使うならUSB WiFiアダプターを使うのが前提となる。入手しやすいのは最近の製品となるので、新しいOSじゃないと対応できないんじゃないかと思ったので、piCore7に拘るのは止めたということだ。
今回、それでもUSB WiFiアダプターはLinuxで使えないことが少なくないことを初めて知った。機材自体をpiCoreで認識できなかったり、Linux対応と書いてあってもドライバーをCDからインストールしないといけないのとかあって、ちょっと手間が掛かりすぎる。
何種類か試したけど、今のところ使えているのは、前回エントリーのBUFFALO WLI-UC-GNM、TP-LinkのTL-WN725N、エレコムのWDC-150SU2MBKだ。
Aigital AC600、Rich AC1200M、BUFFALO WI-U2-433DMSは、現在のところ使えていない。
環境構築のインストールに使ったコマンドは以下のとおり。
hostapd、dnsmasqはまだ使わないけど、今後の使用を考えて入れてある。関連があるtczも同時にインストールされる。
tce-load -wi ntp.tcz tce-load -wi wifi.tcz firmware-brcmwifi.tcz firmware-ralinkwifi.tcz firmware-rpi-wifi.tcz firmware-rtlwifi.tcz tce-load -wi wireless-5.10.16-piCore-v7.tcz wireless_tools.tcz tce-load -wi usbutils.tcz usbutils-doc.tcz libusb-dev.tcz libusb.tcz usb-ids.tcz tce-load -wi hostapd.tcz dnsmasq-doc.tcz dnsmasq.tcz
あれこれネット上で迷ったが灯台下暗しで、最終的に参考にしたのはtceコマンドで見ることができるwifi.tczの説明書き。
Comments: A console based tiny wifi scan access point tool. Select from menu or type sudo wifi.sh Creates wifi.db in HOME directory. Can auto connect to first db entry with use of -a flag, e.g., /usr/local/bin/wifi.sh -a 2>&1 > /tmp/wifi.log Add above to bootlocal or bootsync for quick auto connect. When mobile, use menu for select list of APs. wpa_supplicant driver is defined by /etc/sysconfig/wifi-wpadrv default is wext. Add it to backup if changed. Available drivers wext,nl80211
加えて「/usr/local/bin/wifi.sh」に書かれているwifi.shのヘルプ。
これはコマンド「sudo wifi.sh -?」でも見ることができる。
Usage: Default select AP from menu and request IP via DHCP. -a Auto connect to first wifi.db entry via DHCP. -p Select AP from menu and prompt for IP configuration type. -w Wait indefinitely until lease is obtained -? Displays this help message.
これらを参考にして実際に行った手順を、以下に記録しておく。
まず「/opt/bootlocal.sh」に無線LAN有効化のコマンドを書き込む。これで電源を入れたときに、無線LANが有効になる。
tc@box:~$ vi /opt/bootlocal.sh ifconfig wlan0 up
設定ファイルを書き換えたので保存のコマンド「filetool.sh -b」を打って保存。
sudo reboot で、再起動。
USB WiFi アダプター(今回はTP-Link TL-WN725N)を刺し、ハード認識確認のコマンドを打つ。
tc@box:~$ lsusb Protocol spec without prior Class and Subclass spec at line 23179 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 tc@box:~$ tc@box:~$ iwconfig lo no wireless extensions. eth0 no wireless extensions. wlan0 unassociated ESSID:"" Nickname:"" 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 tc@box:~$ tc@box:~$ ifconfig eth0 Link encap:Ethernet HWaddr B8:27:EB:39:F8:15 *snip* lo Link encap:Local Loopback *snip* wlan0 Link encap:Ethernet HWaddr 7C:C2:C6:1B:53:D2 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) tc@box:~$
こんな感じ。機材は認識されているけど、wifi (wlan0)は機能していない。
wifi.tczの説明書きに沿って設定していく。
sudo wifi.sh を打って、WiFiでローカルのLANに接続する。以下、流れを記載。
tc@box:~$ sudo wifi.sh Select Wifi Network ESSID Enc Qual Channel Type 1. ssssssssssss on 0 2 WPA 2. oooooooooooo on 0 5 WPA 3. AAAAAAAAAAAA on 0 12 WPA Enter selection ( 1 - 3 ) or (q)uit: 3 Enter password for AAAAAAAAAAAA (8 to 63 characters): zzzzzzzzzzzz Sending credentials to requested access point AAAAAAAAAAAA.. deleting routers adding dns 192.168.1.1 tc@box:~$ tc@box:~$ ifconfig eth0 Link encap:Ethernet HWaddr B8:27:EB:39:F8:15 *snip* lo Link encap:Local Loopback *snip* wlan0 Link encap:Ethernet HWaddr 7C:C2:C6:1B:53:D2 inet addr:192.168.1.42 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:19 errors:0 dropped:82 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:89869 (87.7 KiB) TX bytes:3824 (3.7 KiB) tc@box:~$
こんな感じでLANのアクセスポイントにWiFiで接続できた。
アクセスポイントをセレクトし(上の例だとAAAAAAAAAAAA)、パスワードを入力(上の例だとzzzzzzzzzzzz)、「ifconfig」でIPアドレスを確認すると、wlan0に「192.168.1.42」が振られている。
こうして1回接続することで、接続設定ファイル「wifi.db」が、ホームディレクトリに作られる。このファイルにはアクセスポイントとパスワード、暗号化について記述されている。これを「filetool.sh -b」を打って保存。
wifi.tczの説明書きには、
/usr/local/bin/wifi.sh -a 2>&1 > /tmp/wifi.log
Add above to bootlocal or bootsync for quick auto connect.
とあるのだけど、、、
このコマンドをそのまま使うと、理由は分からないが上手くいかなかった。LANに接続できないままコマンドが指示を出し続け、ログが積み重なるような状況に至る。
そういうわけで、うちではbootlocal.shに下記のようにコマンドを書き込んだ。
tc@box:~$ vi /opt/bootlocal.sh /usr/local/bin/wifi.sh -a
保存のコマンド「filetool.sh -b」を打って、sudo reboot で、再起動。
これで、Ras Pi電源オン、piCore起動と同時に、wifi.dbに記載されたアクセスポイントに自動的に無線でつながる。
これで、OS起動と同時に自動的に無線LANにつながるpiCore13ができた。といっても、アクセスポイントは予め設定されていて変更するには再設定する必要があるので、いつでも何処でも使えるというのではないけど。あと、USB WiFiアダプターを替えたら設定し直ししないといけないようだ。
ともあれ、これでうちで余っているRaspberry Piを無線でつないで、オーディオ以外でも活用することができるかもしれない。
wikieditish message: Ready to edit this entry.
A quick preview will be rendered here when you click "Preview" button.