Help us understand the problem. What is going on with this article?

Raspberry Piの無線LANをmicroSDで設定する

More than 1 year has passed since last update.

Raspberry Pi 3 Model BやPi Zero Wには無線LAN(WiFi)が内蔵されましたが、何らかの方法でSSIDとパスフレーズを設定しないと無線での通信はできません。
以前に書いたRaspberry Pi Zero Wの無線LANをディスプレイやキーボードなしで設定する(有線LAN利用)という記事ではRaspberry Pi Zero WにUSBで一時的に有線LANポートを設けるするやり方で、ディスプレイやキーボードを使わずにSSIDとパスフレーズを設定する方法を紹介しましたが、こちらの記事のコメントでmicroSDにあらかじめファイルを作成しておくことで、無線LANの設定ができるというご指摘をいただき、その方法を検証してみましたので紹介したいと思います。

(2017/10/01追記)
ブラウザ上でSSIDとパスフレーズを入力するだけで簡単にwpa_supplicant.confを作成できるツールを作成しました。
Raspberry Piの無線LANをmicroSDで簡単に設定するためのツールを作った

動作環境

  • Raspberry Pi Zero W
    • Raspbian Jessie Lite 2017-07-05
      • イメージをMicroSDに書き込んだ後、MicroSDのルートディレクトリにsshという名前で空のファイルを作成
    • Raspbian Stretch Lite 2017-08-16
      • イメージをMicroSDに書き込んだ後、MicroSDのルートディレクトリにsshという名前で空のファイルを作成

設定

SSH接続を利用するにはイメージをmicroSDに書き込んだ後、microSDのルートディレクトリにsshという名前で空のファイルを作成しておく必要があります。
スクリーンショット 2017-07-29 10.42.47.png
macOSであれば、touchコマンドを用いてtouch /Volumes/boot/sshといった要領で空のファイルsshを作成できます。

また、Raspberry Piの内蔵WiFiでは2.4GHz帯のみ利用できます。ルーターのデフォルトの設定では、2.4GHz帯のSSIDにはgやGといった文字が含まれていることが多いです。

設定ファイルの作成

wpa_supplicant.confというファイルをmicroSDのルートディレクトリに作成していきます。
このファイルをmicroSDのルートディレクトリに作成すると、Raspberry Pi起動時に自動でRaspbian上の/etc/wpa_supplicant/wpa_supplicant.confを上書きするようになっています(microSDのルートディレクトリに作成したファイルは削除されます)。

平文のWPAパスフレーズを保存する場合

SSIDがtest, パスフレーズがabcd1234の場合、以下のようなファイルをmicroSDのルートディレクトリに作成します(macOSの場合、/Volumes/boot/wpa_supplicant.conf)

wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="test"
    psk="abcd1234"
}

パスフレーズが設定されていない場合は、Life with IT - Raspberry Pi 3でパスフレーズなしのWi-Fiアクセスポイントに接続する設定(Raspbian Jessie Lite)を見て設定してください(自己責任でお願いします)

256bitのハッシュ化されたキーを保存する場合

平文のWPAパスフレーズをmicroSD上に保存することに抵抗がある方は、パスフレーズの代わりに、SSIDとパスフレーズの組をハッシュ化した256bitのキーを保存することもできます。
Raspbian上でwpa_passphraseコマンドを実行することで、256bitのキーを取得することもできますが、今回はJavaScriptで256bitのキーを取得する方法を2通り紹介します。

ブラウザで256bitのキーを取得する場合

WPA key calculation: From passphrase to hexのページにアクセスし、Network SSIDとWPA passphraseを入力し、Calculateボタンをクリックします。

スクリーンショット 2017-07-29 10.42.47.png

899f089ca767f38265424c83ce83193ab145571c0a71e1aca4487d615c411f34のような256bitのキーが表示されるので、これを元に以下のようなファイルをmicroSDのルートディレクトリに作成します(macOSの場合、/Volumes/boot/wpa_supplicant.conf)

wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="test"
    psk=899f089ca767f38265424c83ce83193ab145571c0a71e1aca4487d615c411f34
}

Node.jsで256bitのキーを取得する場合

Node.js標準モジュールのCryptoを利用して、256bitのキーを取得することもできます。

SSIDがtest, パスフレーズがabcd1234の場合、以下のスクリプトを実行することで256bitのキーを取得できます。

const crypto = require('crypto');
const key = crypto.pbkdf2Sync('abcd1234', 'test', 4096, 32, 'sha1');
console.log(key.toString('hex'));

ターミナル上で実行できる形式はこちら

node -e "console.log(require('crypto').pbkdf2Sync('abcd1234','test',4096,32,'sha1').toString('hex'))"

スクリーンショット 2017-08-01 3.41.11.png

ブラウザで256bitのキーを取得する場合と同様に、wpa_supplicant.confをmicroSDのルートディレクトリに作成してください。

wpa_passphraseコマンドで計算したキーの値と比較

WPA key calculation: From passphrase to hexのページで計算したキーの値、Node.jsで計算したキーの値共に、wpa_passphraseコマンドで計算したキーの値と同じものになっていました。
スクリーンショット 2017-07-29 10.42.07.png

SSH接続

Windowsの場合は、Raspberry PiとMac or Windows PCを有線で直接繋いでさくっとSSH接続するなどを参照してください。

macOSでZeroconf(Bonjour)を利用する場合は、以下の方法でSSH接続をすることができます。

Raspberry PiにRaspbianが入っているMicroSDを入れて、電源を入れます。OSが起動するまで1分ほど待ちます。

macOS
$ ssh pi@raspberrypi.local

パスワードを聞かれるので、 raspberryと入力してreturnキーを押します。

macOS
pi@raspberrypi.local's password: 

繋がるはずです。

Raspbian
pi@raspberrypi:~ $

うまく繋がらない場合は、以前接続した際の設定が残っている可能性があるので、known_hostsの設定削除を行ってください。

macOS
$ ssh-keygen -R raspberrypi.local
mascii
JavaScript, RaspberryPi, Arduino, ESP32の記事が多めです。大学院での専攻はグラフ理論でした。
https://mascii.hatenablog.com/
visasq
ビザスクは「知見と、挑戦をつなぐ」をミッションに、世界で1番のナレッジプラットフォームをつくっています。 様々なニーズにつなぐことで、実際に経験したことで得られた知識や意見を、知見として価値最大化します。組織、世代、地域を超えて、知見を集めつなぐことで、世界中のイノベーションに貢献します。
https://visasq.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした