趣味的なIT・ネットの話題

Raspberry PiでIoTなシステム開発:RASPBIAN JESSIEで同じ事をやってみる アクセスポイント化

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

さあ今度はJESSIE-LITEで挑戦です。基本前のコンテンツをコピーして書いているのですが、余りにそのままだとGoogleからコピーコンテンツを作ったと怒られそうなので、適宜単語を代えています。

imgファイルの取得

Raspbianのダウンロードサイト

スクリーンショット 2016-02-09 9.06.43

一週間前にリリースされたばかりでなんだかbleedingな感じですが、挑戦してみます。

これを使います。ローカルでunzip。場所はちゃんと覚えておく。

df -h

これでSDが刺さっているドライブのデバイス名をメモ。

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の方に置き換える。

kawauchiyasuo-no-MacBook-Pro:~ yasuo$ sudo dd bs=1m if=Documents/mbed/2016-02-03-raspbian-jessie-lite.img of=/dev/rdisk5
Password:
1392+0 records in
1392+0 records out
1459617792 bytes transferred in 89.000006 secs (16400199 bytes/sec)

LITEはサイズが小さいので早いです。

接続

Raspberry PiでIoTなシステム開発:OSXのインターネット共有でIPを割り当ててログイン

Macのインターネット共有を利用してRaspberry PiにIPを振る。ただしアクセスは次項の通りホスト名で。

ログイン

Raspberry PiでIoTなシステム開発:Raspberry Piにホスト名でアクセスする

JESSIEもavahiが最初から導入されていました。bonjour browse等でサービスされている名称が分かります。OSXのターミナルからホスト名でログイン。

kawauchiyasuo-no-MacBook-Pro:~ yasuo$ ssh pi@raspberrypi.local
The authenticity of host 'raspberrypi.local (192.168.2.10)' can't be established.
RSA key fingerprint is 19:8d:b0:b4:05:66:a1:67:37:e0:15:29:45:2f:69:2b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'raspberrypi.local,192.168.2.10' (RSA) to the list of known hosts.
pi@raspberrypi.local's password: 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

(2016/04/14注記追加)

Raspberry PiでIoTなIT:新しく認識されたインターフェースをavahiに自動的に認識させる | 法務ネット:弁護士 川内康雄

起動メッセージの中にカーネルバージョンが含まれなくなったようなのでunameで確認。

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.1.17-v7+ #834 SMP Mon Feb 1 15:17:54 GMT 2016 armv7l GNU/Linux

アップデートとハード的設定

Raspbianを入れたら最初はアップデート、タイムゾーン設定、電源設定変更。

sudo apt-get update
sudo apt-get upgrade

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

sudo raspi-config

スクリーンショット 2016-02-08 9.24.59

1 Expand Filesystemと4 Internationalization Optionを実行。4ではタイムゾーンをTokyoに設定。再起動するか聞かれるので再起動してログイン。

USBポートへの電力供給量を増やすため /boot/config.txtを編集。

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

末尾に追加。

safe_mode_gpio=4
max_usb_current=1

USBドライバ設定の追加

以前は以下のファイルでIDを設定していましたが、今はすぐにWN-G150UMを認識してくれます。

pi@navio-rpi ~ $ sudo vi /etc/udev/rules.d/network_drivers.rules

pi@navio-rpi ~ $ sudo vi /etc/modprobe.d/network_drivers.conf

何もしない状態でiwconfigにデバイスが現れます。realtekという文字が。

pi@raspberrypi:~ $ iwconfig
wlan0     unassociated  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency=2.412 GHz  Access Point: Not-Associated   
          Sensitivity:0/0  
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Wifiルータにつながるかをチェック

普通のルータに普通につながるかをまずは確認。Wheezyでは以下のファイルを編集していましたが、Jessieでは触りません。

pi@navio-rpi ~ $ sudo nano /etc/network/interfaces

wpa_suppulicant.confだけ編集。生パスワードが嫌な人はwpa_passphraseコマンドで作成。

pi@navio-rpi ~ $ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
        ssid="APNAM"
        psk="pass"
}

wlan0を起こして見るとなんかエラーが出ますが、これは無視するのが通例のようです。既に起動していたらifdownをしてから。ifconfigでローカルルータのDHCPからIPが取れていれば正解。

pi@raspberrypi:~ $ sudo ifup wlan0
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
pi@raspberrypi:~ $ ifconfig
eth0      Link encap:Ethernet  HWaddr b8:27:eb:f6:3c:22  
          inet addr:192.168.2.10  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::5451:ee7b:51eb:6a2c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2109 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1389 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:159594 (155.8 KiB)  TX bytes:210149 (205.2 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr 34:76:c5:5d:34:91  
          inet addr:192.168.0.108  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::84f:1a0b:2d1e:4137/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:101 errors:0 dropped:7 overruns:0 frame:0
          TX packets:77 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:22088 (21.5 KiB)  TX bytes:12223 (11.9 KiB)

pingは-Iを使えば出ていくルートを固定化できます。ルーターや下界と導通しているかチェック。

pi@raspberrypi:~ $ ping -I wlan0 192.168.0.1
PING 192.168.0.1 (192.168.0.1) from 192.168.0.108 wlan0: 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=3.66 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=255 time=2.04 ms
^C
--- 192.168.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 2.042/2.853/3.664/0.811 ms
pi@raspberrypi:~ $ ping -I wlan0 yahoo.com
PING yahoo.com (98.138.253.109) from 192.168.0.108 wlan0: 56(84) bytes of data.
64 bytes from ir1.fp.vip.ne1.yahoo.com (98.138.253.109): icmp_seq=1 ttl=48 time=234 ms
64 bytes from ir1.fp.vip.ne1.yahoo.com (98.138.253.109): icmp_seq=2 ttl=48 time=156 ms
^C
--- yahoo.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 156.778/195.844/234.911/39.069 ms

同じルーターの配下にある別のマシンからも導通していることをチェック。

kawauchiyasuo-no-MacBook-Pro:~ yasuo$ ping 192.168.0.108
PING 192.168.0.108 (192.168.0.108): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
64 bytes from 192.168.0.108: icmp_seq=4 ttl=64 time=39.168 ms
64 bytes from 192.168.0.108: icmp_seq=5 ttl=64 time=2.177 ms
64 bytes from 192.168.0.108: icmp_seq=6 ttl=64 time=6.287 ms
64 bytes from 192.168.0.108: icmp_seq=7 ttl=64 time=97.298 ms
^C
--- 192.168.0.108 ping statistics ---
8 packets transmitted, 4 packets received, 50.0% packet loss
round-trip min/avg/max/stddev = 2.177/36.233/97.298/38.060 ms

なんで最初だけ失敗するのか謎ですが、つながったのでよしとします。

hostapdのインストール

本日時点で導入されるのはこちらのバージョン。

pi@raspberrypi:~ $ sudo apt-get install hostapd
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libnl-route-3-200
The following NEW packages will be installed:
  hostapd libnl-route-3-200
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 559 kB of archives.
After this operation, 1,473 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main libnl-route-3-200 armhf 3.2.24-2 [99.5 kB]
Get:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main hostapd armhf 1:2.3-1+deb8u3 [459 kB]
Fetched 559 kB in 2s (200 kB/s)  
Selecting previously unselected package libnl-route-3-200:armhf.
(Reading database ... 30238 files and directories currently installed.)
Preparing to unpack .../libnl-route-3-200_3.2.24-2_armhf.deb ...
Unpacking libnl-route-3-200:armhf (3.2.24-2) ...
Selecting previously unselected package hostapd.
Preparing to unpack .../hostapd_1%3a2.3-1+deb8u3_armhf.deb ...
Unpacking hostapd (1:2.3-1+deb8u3) ...
Processing triggers for man-db (2.7.0.2-5) ...
Processing triggers for systemd (215-17+deb8u3) ...
Setting up libnl-route-3-200:armhf (3.2.24-2) ...
Setting up hostapd (1:2.3-1+deb8u3) ...
Processing triggers for libc-bin (2.19-18+deb8u2) ...
Processing triggers for systemd (215-17+deb8u3) ...

JESSIEになっても公式にアップされているバイナリだとrtl871xdrvを使えないようです。僕はWN-G150UMを使用しますので、バイナリを差し替えます。

Realtek

realtekサイトは今日もつながりません。とりあえずhostapdはGPLのようなので、その部分だけGoogle Driveに載せておきます。最初Wordpressのメディアとしてアップロードしていたのですが、これでやるとダウンロード時に壊れるみたいです。何でだろう。

wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gz

piからはアドレスが指定しにくいので、母艦のMacでダウンロードしてからSFTPで/home/piにアップロード。FileZillaを使っています。Mac用のFTPクライアントとしては一番使いやすいと思います。なのに何故かマイナー。

pi@raspberrypi:~ $ ls
wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gz
pi@raspberrypi:~ $ tar zxvf wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gz 
wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/
(中略)
wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/COPYING
pi@raspberrypi:~ $ cd wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/
pi@raspberrypi:~/wpa_supplicant_hostapd-0.8_rtw_r7475.20130812 $ ls
COPYING  hostapd  README  src  wpa_supplicant
pi@raspberrypi:~/wpa_supplicant_hostapd-0.8_rtw_r7475.20130812 $ cd hostapd/
pi@raspberrypi:~/wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/hostapd $ make
  CC  main.c
(また中略)
  LD  hostapd
  CC  hostapd_cli.c
  CC  ../src/common/wpa_ctrl.c
  LD  hostapd_cli
pi@raspberrypi:~/wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/hostapd $ ls
Android.mk        dump_state.c            hostapd.8               hostapd.vlan
bsd_hostapd.conf  dump_state.d            hostapd.accept          hostapd.wpa_psk
ChangeLog         dump_state.h            hostapd_cli             logwatch
config_file.c     dump_state.o            hostapd_cli.1           main.c
config_file.d     eap_register.c          hostapd_cli.c           main.d
config_file.h     eap_register.d          hostapd_cli.d           main.o
config_file.o     eap_register.h          hostapd_cli.o           Makefile
ctrl_iface.c      eap_register.o          hostapd.conf            nt_password_hash.c
ctrl_iface.d      eap_testing.txt         hostapd.deny            README
ctrl_iface.h      hlr_auc_gw.c            hostapd.eap_user        README-WPS
ctrl_iface.o      hlr_auc_gw.milenage_db  hostapd.radius_clients  src
defconfig         hostapd                 hostapd.sim_db          wired.conf

コンパイルできました。hostapdとhostapd_cliが目的のファイルです。

これらを/usr/sbinにコピーします。/usr/local/sbinではありません。。localに入れてしまうと置き換えられずに、コマンドラインから起動したら/usr/local/sbinの方が、起動スクリプトからだと/usr/localから起動してしまう。これで大分とハマりました。

pi@raspberrypi:~/wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/hostapd $ sudo mv -f hostapd hostapd_cli /usr/sbin/

hostapdの設定

設定ファイルを編集。このファイルはもともとは無いので新規生成です。tabではファイル名補完できません。

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

ssidとwpa_passphraseはお好みのものに変更してください。構文が厳格で1字でもダメだとパースエラーになります。エラーになるときにはバイナリエディタとかで1バイト単位で確認してください。改行コードは0aになってますか?

interface=wlan0
driver=rtl871xdrv
ssid=rpi2
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP

WPASupplicantとの干渉を排除する必要は無かった

最初から入っているWPASupplicantを抜く必要があるという情報が多く下記の設定をしていたが、これを抜いても状況は変わらなかった。後記の通りinterfacesとwpa_supplicant.confの設定を変える方がいい。

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

この時点で再起動。

wpa_supplicantを動作させない

WPAsupplicantが動作するとそちらが優先してwlan0がWifiルータに接続しにいってしまう。fi.epitest.hostap.WPASupplicant.serviceの削除をしても改善されなかったので(細かい検証はできてません)、interfacesとwpa_supplicant.confの設定を変えて変更。

pi@raspberrypi:~ $ sudo nano /etc/network/interfaces

wpa-confをコメントアウト。

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

wpa_supplicant.confからは接続設定を外しておく。

pi@raspberrypi:~ $ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

ファイルの中身はこれだけ。接続関係の設定をすべて削除。

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

IPアドレスを固定化

アクセスポイントにするのでダイナミックIPは問題。そこで固定にします。Jessieから固定IP化の標準手順が変わり、/etc/dhcpcd.confに設定を記載するとの事です。

pi@raspberrypi:~ $ ifconfig
eth0      Link encap:Ethernet  HWaddr b8:27:eb:f6:3c:22  
          inet addr:192.168.2.10  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::5451:ee7b:51eb:6a2c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:100 errors:0 dropped:0 overruns:0 frame:0
          TX packets:72 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:13075 (12.7 KiB)  TX bytes:9714 (9.4 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr 34:76:c5:5d:34:91  
          inet addr:192.168.0.108  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::84f:1a0b:2d1e:4137/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:767 errors:0 dropped:2 overruns:0 frame:0
          TX packets:624 errors:0 dropped:4 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:126387 (123.4 KiB)  TX bytes:89388 (87.2 KiB)

pi@raspberrypi:~ $ sudo nano /etc/dhcpcd.conf 
pi@raspberrypi:~ $ sudo ifdown wlan0
pi@raspberrypi:~ $ sudo ifup wlan0
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
pi@raspberrypi:~ $ ifconfig
eth0      Link encap:Ethernet  HWaddr b8:27:eb:f6:3c:22  
          inet addr:192.168.2.10  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::5451:ee7b:51eb:6a2c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:229 errors:0 dropped:0 overruns:0 frame:0
          TX packets:172 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:24618 (24.0 KiB)  TX bytes:22486 (21.9 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr 34:76:c5:5d:34:91  
          inet addr:192.168.10.1  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::84f:1a0b:2d1e:4137/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:5 overruns:0 frame:0
          TX packets:13 errors:0 dropped:4 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:219213 (214.0 KiB)  TX bytes:131438 (128.3 KiB)

固定できました。dhcpcd.confの末尾に追記した設定内容はこちら。

interface wlan0
static ip_address=192.168.10.1/24

hostapdで起動

サービスとして起動させる前に手動で実験。どこかの設定で失敗していてwlan0のIPが取れていないと、このメッセージが出てもAP名が配布されない。

pi@raspberrypi:~ $ sudo hostapd /etc/hostapd/hostapd.conf -dd
random: Trying to read entropy from /dev/random
Configuration file: /etc/hostapd/hostapd.conf
drv->ifindex=3
l2_sock_recv==l2_sock_xmit=0x0x17f5638
BSS count 1, BSSID mask 00:00:00:00:00:00 (0 bits)
Allowed channel: mode=1 chan=1 freq=2412 MHz max_tx_power=0 dBm
Allowed channel: mode=1 chan=2 freq=2417 MHz max_tx_power=0 dBm
Allowed channel: mode=1 chan=3 freq=2422 MHz max_tx_power=0 dBm
Allowed channel: mode=1 chan=4 freq=2427 MHz max_tx_power=0 dBm
Allowed channel: mode=1 chan=5 freq=2432 MHz max_tx_power=0 dBm
Allowed channel: mode=1 chan=6 freq=2437 MHz max_tx_power=0 dBm
Allowed channel: mode=1 chan=7 freq=2442 MHz max_tx_power=0 dBm
Allowed channel: mode=1 chan=8 freq=2447 MHz max_tx_power=0 dBm
Allowed channel: mode=1 chan=9 freq=2452 MHz max_tx_power=0 dBm
Allowed channel: mode=1 chan=10 freq=2457 MHz max_tx_power=0 dBm
Allowed channel: mode=1 chan=11 freq=2462 MHz max_tx_power=0 dBm
Allowed channel: mode=1 chan=12 freq=2467 MHz max_tx_power=0 dBm
Allowed channel: mode=1 chan=13 freq=2472 MHz max_tx_power=0 dBm
Allowed channel: mode=1 chan=14 freq=2484 MHz max_tx_power=0 dBm
Allowed channel: mode=0 chan=1 freq=2412 MHz max_tx_power=0 dBm
Allowed channel: mode=0 chan=2 freq=2417 MHz max_tx_power=0 dBm
Allowed channel: mode=0 chan=3 freq=2422 MHz max_tx_power=0 dBm
Allowed channel: mode=0 chan=4 freq=2427 MHz max_tx_power=0 dBm
Allowed channel: mode=0 chan=5 freq=2432 MHz max_tx_power=0 dBm
Allowed channel: mode=0 chan=6 freq=2437 MHz max_tx_power=0 dBm
Allowed channel: mode=0 chan=7 freq=2442 MHz max_tx_power=0 dBm
Allowed channel: mode=0 chan=8 freq=2447 MHz max_tx_power=0 dBm
Allowed channel: mode=0 chan=9 freq=2452 MHz max_tx_power=0 dBm
Allowed channel: mode=0 chan=10 freq=2457 MHz max_tx_power=0 dBm
Allowed channel: mode=0 chan=11 freq=2462 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=36 freq=5180 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=40 freq=5200 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=44 freq=5220 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=48 freq=5240 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=52 freq=5260 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=56 freq=5280 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=60 freq=5300 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=64 freq=5320 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=100 freq=5500 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=104 freq=5520 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=108 freq=5540 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=112 freq=5560 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=116 freq=5580 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=120 freq=5600 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=124 freq=5620 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=128 freq=5640 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=132 freq=5660 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=136 freq=5680 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=140 freq=5700 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=149 freq=5745 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=153 freq=5765 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=157 freq=5785 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=161 freq=5805 MHz max_tx_power=0 dBm
Allowed channel: mode=2 chan=165 freq=5825 MHz max_tx_power=0 dBm
Completing interface initialization
Mode: IEEE 802.11g  Channel: 1  Frequency: 2412 MHz
RATE[0] rate=10 flags=0x1
RATE[1] rate=20 flags=0x1
RATE[2] rate=55 flags=0x1
RATE[3] rate=110 flags=0x1
RATE[4] rate=60 flags=0x0
RATE[5] rate=90 flags=0x0
RATE[6] rate=120 flags=0x0
RATE[7] rate=180 flags=0x0
RATE[8] rate=240 flags=0x0
RATE[9] rate=360 flags=0x0
RATE[10] rate=480 flags=0x0
RATE[11] rate=540 flags=0x0
Flushing old station entries
Deauthenticate all stations
+rtl871x_sta_deauth_ops, ff:ff:ff:ff:ff:ff is deauth, reason=2
rtl871x_set_key_ops
rtl871x_set_key_ops
rtl871x_set_key_ops
rtl871x_set_key_ops
Using interface wlan0 with hwaddr 34:76:c5:5d:34:91 and ssid 'rpi2'
Deriving WPA PSK based on passphrase
SSID - hexdump_ascii(len=4):
     72 70 69 32                                       rpi2            
PSK (ASCII passphrase) - hexdump_ascii(len=11): [REMOVED]
PSK (from passphrase) - hexdump(len=32): [REMOVED]
rtl871x_set_wps_assoc_resp_ie
rtl871x_set_wps_beacon_ie
rtl871x_set_wps_probe_resp_ie
urandom: Got 20/20 bytes from /dev/urandom
Get randomness: len=32 entropy=0
GMK - hexdump(len=32): [REMOVED]
Get randomness: len=32 entropy=0
Key Counter - hexdump(len=32): [REMOVED]
WPA: group state machine entering state GTK_INIT (VLAN-ID 0)
Get randomness: len=16 entropy=0
GTK - hexdump(len=16): [REMOVED]
WPA: group state machine entering state SETKEYSDONE (VLAN-ID 0)
rtl871x_set_key_ops
rtl871x_set_beacon_ops
rtl871x_set_hidden_ssid ignore_broadcast_ssid:0, rpi2,4
rtl871x_set_acl
wlan0: Setup of interface done.
Wireless event: cmd=0x8b15 len=20

こんな感じでwlan0: Setup of interface done.となれば成功。

スクリーンショット 2016-02-10 8.51.57

これはOSXのWifiアイコンのプルダウン。電波3本びんびん立ってますね。

S__6848515

こっちも。

OS起動時にhostapdを起動

自動起動させたいので設定ファイルを編集。起動スクリプトである/etc/init.d/hostapdがこのファイルを参照している。

pi@raspberrypi ~ $ sudo nano /etc/default/hostapd

行頭のコメントアウトを外してファイル名を指定。init.dに起動スクリプトがあるので、この設定をするだけで、OS起動時にhostapdが起動するようになる。

DAEMON_CONF="/etc/hostapd/hostapd.conf"

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

デフォルトではインストールされていないので、インストールする。

pi@raspberrypi:~ $  sudo apt-get install isc-dhcp-server
(中略)
invoke-rc.d: initscript isc-dhcp-server, action "start" failed.
Processing triggers for systemd (215-17+deb8u3) ...

最初は設定ができていないので起動に失敗している。

DHCPサーバーがちゃんと起動できるようにする

まずどのネットワークインターフェースDHCPサーバーを作動させるかを指定する。

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

末尾部分でINTERFACESの指定が空欄なのでここでwlan0を指定する。

INTERFACES="wlan0"

次にどのようなルールでIPを割り当てるかを指定する。

pi@raspberrypi:~ $ sudo nano /etc/dhcp/dhcpd.conf

下記の部分はコメントアウト。

#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

ここのコメントは外す。

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

必要無いはずですが念のため起動を有効化。

pi@raspberrypi:~ $ sudo update-rc.d isc-dhcp-server enable

ルールを追加。

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-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;
}

Raspberry PiでIoTなIT:起動時dhcpcdによる無線LANインターフェースへのIP割り当てが遅くてisc-dhcp-serverが起動に失敗する

ここ書いたようにそのままだとOS起動時にはDHCPサーバーを起動できないので、時間待ちを設定。

pi@raspberrypi:~ $ sudo nano /etc/init.d/isc-dhcp-server

start-stop-daemonの前に5秒待ちを挿入しました。

case "$1" in
        start)
                test_config
                log_daemon_msg "Starting $DESC" "$NAME"
                sleep 5
                start-stop-daemon --start --quiet --pidfile "$DHCPD_PID" \
                        --exec /usr/sbin/dhcpd -- \
                        -q $OPTIONS -cf "$DHCPD_CONF" -pf "$DHCPD_PID" $INTERFA$
                sleep 2

再起動してアクセスしてみる。

S__6856707

終了!

お疲れ様です。やっぱり一筋縄ではいきませんね。はい、疲れました。

 

 

 


Facebooktwitterpinterestlinkedinmail
納得したらすぐにシェア!