株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。新規開発案件のご依頼をお待ちしております。

*

Raspberry Piでwifiに接続する

      2014/12/25

Raspberry Pi(Raspbian)でwifiを使って無線LANに接続してみました。その際のハードウェアや接続の設定についてです。

今回使ったのは以下のBUFFALO製 WLI-UC-GNM2です。これは、親機-子機デュアルモード対応モデルですが、Raspberry Piで使うだけでしたら WLI-UC-GNMでも問題ないようです。WLI-UC-GNMでもいろいろと接続事例があるようです。私の場合はたまたま買ったのが WLI-UC-GNM2だったというところです。もちろんその他でも接続可能だとは思いますが接続実績が公開されている無線LANアダプターがいいと思います。(※おそらくどの製品にもLinux対応可ともRaspberyPi対応可とも書いていないと思います。)

WLI-UC-GNM2

WLI-UC-GNM

以下の画像がWLI-UC-GNM2を接続した状態です。左側のUSBで青く光っているアダプターです。(※画像はクリックで拡大表示します。以下同様です。)右側のケーブルはコンソールケーブルです。以下のページで追記として書いたWindows8.1用のコンソールケーブルです。ここではこのコンソールケーブルで設定作業を行いました。
Raspberry Piをモニターとキーボードなしで導入する(その3)コンソールを使う
IMG_0261

WLI-UC-GNM2は挿入すると認識しました。以下のようにlsusbで確認出来ました。
0016

ここからは接続の設定についてです。Raspbian上で設定が必要なファイルは以下です。それぞれのファイルについて順番に設定方法を書きます。
/etc/networks/interfaces
/etc/wpa_supplicant/wpa_supplicant.conf

/etc/networks/interfacesの設定
このファイルでネットワークの設定を書きます。このファイルもRasbpianの設定ツールでGUIから設定出来ますが、決まった書き方なのでファイルを直接編集しました。ここではwifiで接続してDHCPで自動でIPアドレスを取得する設定です。あと、wifiの設定ファイルを指定しています。以下がその内容です。(もちろん固定IPアドレスに設定する場合は別の書き方です。)

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp

/etc/wpa_supplicant/wpa_supplicant.conf
このファイルは、Rasbpianの設定ツールでGUIから設定する方が簡単だと思います。ただし、必ずしもGUIが使えるとは限らないのでGUI利用と直接編集する方法の両方を書きます。

まずGUIから wpa_supplicant.confを設定、編集する方法です。Raspbian上のデスクトップにWiFi Config(英語の場合です。以下全て英語です。)というアイコンがありますのでここから設定ツールを起動します。Raspbian上のデスクトップを利用するには、コンソールでは出来ませんので有線LANでの接続からリモートデスクトップ、VNCを利用するか、普通にモニターに接続する必要があります。
0007

これは既にスマホのテザリングで接続されている状態ですが、このような表示になります。
0013

scanで接続先を探します。この画面でもう一度scanします。
0014

結果が表示されます。ここで接続先を選択します。
0015

そうすると以下の画面になります。ここでネットワークセキュリティキー(パスワード)を入力してAddをクリックします。これで完了です。
0011

これで、/etc/wpa_supplicant/wpa_supplicant.confに書き込まれます。

あと、ここでは再接続のようになっていますがすでに接続しているwifiでリモートデスクトップ等で接続している場合、接続が切り替わるのでここでデスクトップは利用不可になります。いわいる固まった状態になります。注意して下さい。

以上のようにGUIからツールを使えば簡単ですが、必ずしもGUIが使えるとは限らないので直接/etc/wpa_supplicant/wpa_supplicant.confを編集する方法を書きます。

まず、接続するアクセスポイントのセキュリティの種類、暗号化の種類、あともちろんネットワークセキュリティキー(パスワード)を確認します。

Windows8.1の場合は以下で確認できます。接続するアクセスポイントに接続した状態です
コントロール パネル → ネットワークとインターネット → ネットワーク接続で以下になります。
0002

ここで、左側のメニューから、アダプターの設定の変更を選択します。以下のようになります。
0003

ここで確認したいWifiをクリックします。
0005

ここでワイアレスのプロパティを選択します。
0006
セキュリティタブを表示します。
0007
ここで表示された情報を控えておきます。ネットワークセキュリティキーはあらかじめ知っているものとします。この控えた情報を、wpa_supplicant.conf ファイルに手動で書き込みます。

ここではこのように編集しました。これで接続出来ました。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="SHL23_AP56"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
psk=c1544eefef065f717ac3c6123a4f2345997e120c327d574bbaa060ee304d4642
}

ここでの例と同じセキュリティの種類であれば、ssidとpskを変更すれば接続出来る可能性が高いと思います。実際に同じ種類のアクセスポイントで接続出来ました。申し訳ありません、私もパラメータの細かい記述方法を理解している訳ではありません。

ssidはこのように書けばいいと思いますが、psk(ネットワークセキュリティキー)はpsk=”passkey”のように平文で書くことも出来ます。これで書きたくない場合は、wpa_passphraseコマンドで暗号化出来ます。以下のように使えます。SSIDとpskを指定すると既定のフォーマットで出力してくれます。平文のコメントは削除すればいいです。

pi@raspberrypi:/etc/wpa_supplicant$ wpa_passphrase SHL32_AP56 passkey123
network={
        ssid="SHL32_AP56"
        #psk="passkey123"
        psk=0c2e10704b6a9d03022204dfc90f36a16353f4410074937115eb6f98ae0598ef
}
pi@raspberrypi:/etc/wpa_supplicant$

このディレクトリで以下のようにコマンドを実行するとファイルの最後に追記されます。
$ wpa_passphrase SHL32_AP56 passkey123 >> wpa_supplicant.conf

これでこの種類のアクセスポイントでは何とか接続出来るかもしれないです。それでは他のセキュリティの種類の場合はどうするかというとマニュアル、接続例を探すか、接続ツール類を使って何とかするかということになると思います。こういった意味でアクセスポイントの設定はGUIからの方が簡単だと思います。申し訳ありませんが、今のところこれ以上は詳しくないので、以下の関連リンク等を参照して下さい。

関連リンク
Linuxで無線LAN (ゆうちくりんの忘却禄)(※こちらでは設定例がいろいろと書かれています。ありがとうございます。)
WPA supplicant (日本語)
Debian で WPA-PSK(AES) 方式で無線接続 – wpa_supplicant 編 Qiita

いずれにしても、wifiが使えれば、Raspberry Piも使いやすいと思います。例えば移動先でもコンソールケーブルと必要に応じてGUIを使うことが出来てインターネットも使うことが出来ます。

今回はここまでです。

(※2014/12/25追記)
wifi接続に限らずですが、動的なIPアドレスの割り当てを使う場合はAvahiを使ってホスト名でのアクセスを可能にすると便利になるかと思います。その方法を以下に書きました。
Raspberry PiでAvahi を使ってホスト名でアクセスする

 - Raspberry Pi

AdSense

AdSense

  関連記事

Raspberry PiでAvahi を使ってホスト名でアクセスする

Raspberry PiでAvahiを使ってホスト名でのアクセスを可能にする方法 …

Raspberry Piをモニターとキーボードなしで導入する(その2)初期設定とリモートデスクトップ

(※2017/02/19 最新のRaspbian Jessie OSでは、初期状 …

Raspberry PiでC言語版Lチカを試す(その2)レジスタを操作する

Raspberry PiでC言語を使ったLEDの点灯、消灯(いわいるLチカ)を試 …

ASP.NET Web APIでデータ蓄積(その7)Raspbery Piからの温度データ蓄積

ASP.NET Web APIでデータ蓄積の7回目です。前回までで少なくとも温度 …

Raspberry PiでのNode.jsの導入(その2)Webサーバ的なプログラム

Raspberry PiでのNode.jsの導入の2回目です。前回はインストール …

Raspberry Piをモニターとキーボードなしで導入する(その3)コンソールを使う

(※2017/02/19 最新の情報は以下です。) Raspberry Pi 3 …

Raspberry PiでC言語版Lチカを試す(その1)デバイスドライバ利用

Raspberry PiでC言語を使ったLEDの点灯、消灯(いわいるLチカ)を試 …

Raspberry PiでのNode.jsの導入(その1)インストールと動作確認

Node.jsとは、Node.js 日本ユーザグループのサイトから引用させて頂き …

Raspberry PiでAC100V(ソリッド・ステート・リレー)制御

Raspberry PiでAC100VのON/OFF制御を試してみました。今回そ …

温度センサADT7410(その3)Raspbery Piでの利用

温度センサADT7410の3回目です。前回までの内容は以下です。 温度センサAD …