ヘッドレスでRaspberryPiを使うときにWiFiの設定するのにまずイーサネットやシリアルコンソールを繋がないといけないのが理不尽だし苦痛で仕方がないので、SDカードの/boot
パーティション(vfatなのでWindowsでもMacでも読み書きできる)にWiFiのSSIDとWPAキーを書いたファイルを置いて、起動時にそれを読み込むようにしてみた。
MacでもWindowsでもSDカードさえ読み書きできれば設定できる(RPiいじってる時点でSD読み書きはできるはずだと思われる)。
ディスプレイもキーボードもsshもシリアルコンソールケーブルも必要ない。
スクリプトと設定ファイル
/etc/systemd/system/wpa_conf.service
[Unit]
Description=Read config file from SD then apply it
After=network.target
[Service]
ExecStart=/bin/sh /home/pi/wpa_conf/write_config.sh
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
/home/pi/wpa_conf/base_conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
/home/pi/wpa_conf/write_config.sh
# !/bin/sh
WIFI_CONF=/boot/wifi.conf
WPA_SUPPLICANT_CONF=/etc/wpa_supplicant/wpa_supplicant.conf
SCRIPT_DIR=`dirname $0`
BASE_CONF=$SCRIPT_DIR/base_conf
cat $BASE_CONF > $WPA_SUPPLICANT_CONF
cat $WIFI_CONF |
grep -v '#' |
while read line; do
wpa_passphrase $line >> $WPA_SUPPLICANT_CONF
done
sudo ifdown wlan0
sudo ifup wlan0
有効化
sudo systemctl enable wpa_conf.service
ここまでできたら、いったんRaspberryPiの電源を落とす。
使い方
/boot
パーティションがFinder(Macの場合)やエクスプローラ(Windowsの場合)でboot
という名前のSDカードとして認識されるはずなので、これを開く。
wifi.conf
をテキストエディタで開いて(無ければ新規作成する)、
SSID WPAキー
の形式で1行ずつ記述する。
Mac/WindowsPCからSDカードを取り外してRPi3に挿して、電源を入れる。
その他
- 言うまでもなくセキュリティを思うとあんまり良い方法とはいえない
- けどご家庭のWPAキーとかどうせAPの筐体に貼ってあるシールに書いてあるだろ
- MacのテキストエディットとかWindowsのメモ帳で編集する前提なら
wifi.txt
みたいなファイル名にしといたほうがよかったか - WiFi繋がったかどうか確認する手段がないのでどうにかしたい