モニターなし(ヘッドレス)で初回起動から無線でラズパイにSSH接続する - Naohiro2g/Raspberry-Pi-Projects GitHub Wiki

デフォルトで無効化されているSSHを有効化、WiFi接続情報をあらかじめマイクロSDカードに設定しておくと、初回起動から快適接続。

マイクロSDカードの準備

  1. マイクロSDカードをPC/Mac/Linuxにマウント。
  2. SSH接続有効化: マイクロSDカードの/bootにssh(あるいはssh.txt)ファイルを作る。中身は空っぽ。Macなら、touch /Volumes/boot/sshで。
  3. WiFi接続情報設定: wpa_supplicant.confを作成して、マイクロSDカードのルートに置く。中身は後述。
  4. ラズパイにマイクロSDカードを戻して起動!

wpa_supplicant.confの中身:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
	ssid="SSID001"
	psk="pass0001"
}

network={ } のブロックは、ラズパイでwpa_passphraseコマンドを使うとパスフレーズを暗号化できる。平文の、暗号化されていないpsk行は削除しておく。

$ wpa_passphrase SSID001 pass0001
network={
	ssid="SSID001"
	#psk="pass0001"
	psk=b53b3997a56751fa63529e7a4fa624bc999f4516aa9192fb1e4161de727c8f40
}

ラズパイを持ち歩いて使う、スマホのテザリングなどでも使う、など、SSIDが複数ある場合、それぞれのnetworkブロックを列記しておくと、ラズパイ起動時に自動的に接続される。電波強度順、上から順、などで自動接続を試みるようだが、priority=10, priority=20などと書いておくと数字の大きいSSIDが優先される。ステルスSSIDの場合は、scan_ssid=1と記述。disabled=1は自動接続をしない設定だが、動作は要検証。メニューバーから選択すると切り替えて接続できたが、後述のwpa_cliコマンドでは接続できなかった。

macOSのように接続が無くなったときの自動接続は、できない。監視サービスを走らせておけば可能。ヘッドレスでの作業時は自動接続があると助かる場面がある。

ネットワークの切り替え方法

# まず、設定済のネットワークのリスト、現在の接続先を表示。
$ wpa_cli -i wlan0 list_networks
network id / ssid / bssid / flags
0	SSID_1	any	[CURRENT]
1	SSID_2	any
2	iPhone	any	[DISABLED]

#  接続を切り替える
$ wpa_cli -i wlan0 select_network 2
OK