Raspberry PiでIoTなシステム開発:ワイヤレスアクセスポイントとして動作させるまで(改訂版)RASPBIAN WHEEZY

Raspberry PiでIoTなシステム開発:ワイヤレスアクセスポイントとして動作させるまで先日書いたこちらの記事が以下の理由により使えないことが判明しました。その他にも色々と問題がありましたので、改訂版マニュアルを以下したためます。Raspberry PiでIoTなIT:WordPressはダブルクォーテーションを置き換える

イメージの取得

公式のダウンロードサイト

これを使います。ローカルでunzipする。

sudo dd bs=1m if=~/Downloads/2014-09-09-wheezy-raspbian/2014-09-09-wheezy-raspbian.img of=/dev/rdisk3

eLinuxは1Mになっているけれどもエラーになる。1mで実行。ifはunzipしたイメージを指定。of以下のrdiskxのxはデバイス名の数字disk3s1の3の方に置き換える。

接続

Raspberry PiでIoTなシステム開発:OSXのインターネット共有でIPを割り当ててログインMacのインターネット共有を利用してRaspberry PiにIPを振る。ただしアクセスは次項の通りホスト名で。

ログイン

Raspberry PiでIoTなシステム開発:Raspberry Piにホスト名でアクセスする今のwheezyはavahiがデフォルトでインストールされているようで、いきなりbonjourでホスト名の確認ができます。OSXのターミナルからホスト名でログイン。

sudo apt-get updatesudo apt-get upgrade

しばらく時間がかかります。

pi@raspberrypi ~ $ sudo nano /boot/config.txt

末尾に追加。

pi@navio-rpi ~ $ sudo vi /etc/udev/rules.d/network_drivers.rulesACTION==""add"",SUBSYSTEM==""usb"", ATTR{idVendor}==""04bb"", ATTR{idProduct}==""094c"", RUN+=""/sbin/modprobe -qba 8192cu""pi@navio-rpi ~ $ sudo vi /etc/modprobe.d/network_drivers.confinstall 8192cu /sbin/modprobe –ignore-install 8192cu $CMDLINE_OPTS; /bin/echo ""04bb 094c"" > /sys/bus/usb/drivers/rtl8192cu/new_id

クライアントとして接続テスト

アクセスポイント化する前にクライアントとしてつながるかをテスト。

auto loiface lo inet loopbackiface eth0 inet dhcpauto wlan0iface wlan0 inet dhcpwpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1# Default networkctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1network={ssid=""apname""psk=""hoge""}

インターフェースの再起動

wlan0 Link encap:Ethernet HWaddr 34:76:c5:5d:34:91inet addr:192.168.0.108 Bcast:192.168.0.255 Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:140 errors:0 dropped:345 overruns:0 frame:0TX packets:27 errors:0 dropped:1 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:186351 (181.9 KiB) TX bytes:4399 (4.2 KiB)

pingは-Iオプションで使用するインターフェースを指定できる。ルーターや外部と通信できることを確認。

kawauchiyasuo-no-MacBook-Pro:~ yasuo$ ping 192.168.0.108PING 192.168.0.108 (192.168.0.108): 56 data bytesRequest timeout for icmp_seq 0Request timeout for icmp_seq 164 bytes from 192.168.0.108: icmp_seq=2 ttl=64 time=20.403 ms64 bytes from 192.168.0.108: icmp_seq=3 ttl=64 time=4.651 ms

hostapdのインストール

ドライバ設定を追加しなくてもWN-G150UMを使えたのだからhostapdもそのままいけるのではと試してみたのですが、やはりRealtekの対応版に差し替えないとダメでした。まずは本家をインストールして、Realtek版にバイナリを差し替えます。

pi@raspberrypi ~ $ ls0001-RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zippi@raspberrypi ~ $ cd RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/pi@raspberrypi ~/RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911 $ cd wpa_supplicant_hostapd/pi@raspberrypi ~/RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/wpa_supplicant_hostapd $ tar zxvf wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gzpi@raspberrypi ~/RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/wpa_supplicant_hostapd $ cd wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/pi@raspberrypi ~/RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8_rtw_r7475.20130812 $ lsCOPYING README hostapd src wpa_supplicantpi@raspberrypi ~/RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8_rtw_r7475.20130812 $ cd hostapd/pi@raspberrypi ~/RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/hostapd $ make

出来上がったバイナリを/usr/sbinにコピー。/usr/local/sbinではない。localに入れてしまうと置き換えられずに、コマンドラインから起動したら/usr/local/sbinの方が、起動スクリプトからだと/usr/localから起動してしまう。

pi@raspberrypi ~ $ nano /etc/hostapd/hostapd.conf

もちろんssidとwpa_passphraseは適宜変更で。構文チェックがかなり厳しくちょっとでも間違うとサービスが起動しないので注意。

pi@raspberrypi ~ $ sudo nano /etc/network/interfaces
sudo mv /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service ~/

ifplugdが作用するとwlan0のIPアドレスが飛んでしまうので、対象をeth0に限定する。

INTERFACES=""auto""HOTPLUG_INTERFACES=""all""ARGS=""-q -f -u0 -d10 -w -I""SUSPEND_ACTION=""stop""

変更後

INTERFACES=""eth0""HOTPLUG_INTERFACES=""all""ARGS=""-q -f -u0 -d10 -w -I""SUSPEND_ACTION=""stop""

hostapdの起動

まずはサービスとしてでは無くコマンドラインから起動できるかの確認。

pi@raspberrypi ~ $ ps ax | grep hostapd 3658 pts/1    S+     0:00 sudo hostapd /etc/hostapd/hostapd.conf -dd 3659 pts/1    S+     0:00 hostapd /etc/hostapd/hostapd.conf -dd 3671 pts/0    S+     0:00 grep --color=auto hostapd

ここでkillするかctrl+cして次はサービスとして起動させるための設定。initスクリプト(pi@raspberrypi ~ $ sudo nano /etc/default/hostapd


こんな感じ。

DHCPサーバーのインストール

インストールする必要はなかった。既にインストールされていて、最初のコマンドでアップデートされています。

pi@raspberrypi ~ $ sudo nano /etc/default/isc-dhcp-server

ファイル末尾の設定を変更。

INTERFACES=""wlan0""

こちらは割り当て設定。

#option domain-name ""example.org"";#option domain-name-servers ns1.example.org, ns2.example.org;
ping-check true;subnet 192.168.10.0 netmask 255.255.255.0 {option routers 192.168.10.1;option broadcast-address 192.168.10.255;option subnet-mask 255.255.255.0;option domain-name ""local"";option domain-name-servers 8.8.8.8,8.8.4.4;default-lease-time 600;max-lease-time 7200;range 192.168.10.101 192.168.10.199;}

ここでWifi端末からアクセスして、設定されたIPやDNSアドレスが割り振られていれば成功

おつかれさまでした

長い。これだけの手順を間違わずに再現するのは大変。設定方法が時々変わるので更に大変。そりゃシステムイメージでセットアップしたくなりますよね。

pi@raspberrypi~ $: sudo service hostapd stop

“””

この手順の対象環境

本文はRaspbian Wheezyと当時のUSB無線LANアダプタで行った構築記録です。現在のRaspberry Pi OSではBookworm以降、NetworkManagerが標準のネットワーク管理ツールです。interfaces・dhcpcd.conf・旧Realtek用hostapdの差替えを、現在の環境へ一括適用する手順とは区別し、使用するOSの管理方式に合わせてアクセスポイントを設定します。