先般AirPlay対応にしたRaspberry Piですが、手を入れました。
どうもライフハッカーの記事に上がっている手順よりもAirPlay環境をかなりラクチンに構築できそうだったのでVOLUMIOベースにインストールを行いましたのでその備忘録的ななにかです。
私の場合はMacOS Xでの環境構築を行っていますのでその前提でインストール作業を行っているとお考えください。
起動ディスク(SDカード)の作成
まずサイトからディスクイメージをダウンロードしてSDカードに書込みを行います。
VOLUMIOは2GBのSDカードを想定しているので2GB以上のSDカードを用意すればOKです。速度もCLASS 10などの高速アクセスが可能なカードの方がインストール処理も早く済みますが、手持ちのお安く古いカードでもOKでしょう。
ディスクイメージをダウンロードしたらddコマンドを使ってディスクイメージを書込みを行います。SDカードをマウントしたらdfコマンドでどのデバイスになっているかを確認しましょう。マウントしているSDカードのボリューム名を確認し、コマンドを実行します。
nanghi$ df
Filesystem 1K-blocks Used Available Capacity Mounted on
/dev/disk0s2 624795952 520574136 103965816 84% /
devfs 195 195 0 100% /dev
/dev/disk3s2 1953178672 1085485992 867692680 56% /Volumes/HDD1
map -hosts 0 0 0 100% /net
map auto_home 0 0 0 100% /home
/dev/disk6s1 15125112 8117608 7007504 54% /Volumes/NO NAME
この例では/dev/disk6s1に当たるデバイスがSDカードとなります。
ダウンロードしたディスクイメージのパスは確認しておいてください。2014年11月現在のRaspberry Pi用の最新はvolumio 1.5です(Volumio1.51PI.img)。
まずマウントしているSDカードをアンマウントします。
nanghi$ sudo diskutil umount /dev/disk6s1 password: パスワードを入力
ここでデスクトップからディスクのアイコンが無くなっている事を確認してください。
続いて先ほどのディスクイメージをSDカードに書込みします。ここでデバイス名を絶対に間違わないようにしましょう。間違って既存のディスクに書込んでしまいますとすべてのデータが消し飛びます。ちょっと違う状況ですが私の場合は書込みのSDメディアを間違えて挿入していて既存のデータを全て消してしまいました。これはかなり凹みます。
nanghi$ sudo dd bs=1m if=Volumio1.51PI.img of=/dev/rdisk6
書込みデバイス名は/dev/disk6s1だった場合、後尾の「s1」を無くしてデバイス名にrawデバイス名である「r」を先頭に付けた/dev/rdisk6となります。
if=には書込むべきディスクイメージファイルのパスを、of=には書込みデバイスファイル名を、bs=は書込み時のブロックサイズですが、コマンド例の1m(1MB)でOKです。
書込みにはデバイスの速度やUSBのバススピードにも依りますが数分ぐらい掛かると思ってコマンドプロンプトが出るまで気長に待ちましょう。
nanghi$ sudo dd bs=1m if=Volumio1.51PI.img of=/dev/rdisk6
1700+0 records in
1700+0 records out
nanghi$
このようにコマンドプロンプトが出れば書込み終了。書込み終了後に自動的にマウントされますので、メディアをRaspberry PiのSDカードスロットに入れる前にディスクをアンマウントして取出すことのできる状態にする必要があります。
デスクトップ上からゴミ箱へドロップで取出しを行っても良いのですが、せっかくですからコマンドラインから取出しを行ってみましょう。
nanghi$ sudo diskutil eject /dev/disk6s1
これでSDカードを取出す事ができるようになりました。書込み済のカードをRaspberry Piのカードスロットに挿し込んで電源を入れましょう。緑色のACTのLEDが点滅し始めれば無事、起動ができるメディアとなっています。
VOLUMIOのデフォルトはeth0がDHCPによる自動取得になっています。起動時にモニターを接続していると取得しているアドレスが見えますので、そこにsshでログインを行い、設定と必要なソフトウェアをインストールしていきます。もちろん、Raspberry Piにキーボードを接続して作業を行っても構いません。
以下「ログインし」と書かれた部分はいずれかの手段でVOLUMIOディスクイメージで起動したRaspberry Piにログインした状態である事とお考えください。
無線LANの有効化
Wi-FiでAirPlayをするためにUSBの無線LANドングルを挿入してRaspberry Piを起動します。起動が完了したらログインしします。以下スーパーユーザーでないと実行できない事が多いのでrootになっておきます。(例ではID:pi / PW : raspberryでログイン)
pi@volumio:~$ sudo bash root@volumio:/home/pi# su - root@volumio:~#
これで管理者として作業が行えるようになりました。まず、USB接続に接続されているデバイスとカーネルモジュールを確認します。
root@volumio:~# lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0411:01a2 BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070]
Bus 001 Device 005: ID 08bb:27c4 Texas Instruments Japan
この例ではBUFFALOの無線LANアダプタWLI-UC-GNMが接続されているのが判ります。このデバイスはディストリビューションのままでドライバが対応しているのですが、カーネルモジュールのリストを表示させて対応デバイスか確認します。
root@volumio:~# lsmod
Module Size Used by
...
rt2800usb 17425 0
rt2800lib 80336 1 rt2800usb
rt2x00usb 11661 1 rt2800usb
rt2x00lib 44907 3 rt2x00usb,rt2800lib,rt2800usb
...
mac80211 329957 3 rt2x00lib,rt2x00usb,rt2800lib
...
cfg80211 212241 2 mac80211,rt2x00lib
...
crc_ccitt 1541 1 rt2800lib
...
rfkill 19784 2 cfg80211
この場合はmac80211が相当します。他の無線LANアダプタをお使いの場合はドライバのインストールや対応バージョンへのアップデートなどが必要になるかもしれません。
無線LANを使えるようにするためにネットワークインターフェースの定義ファイルに追加を行います。編集はviでもなんでも自分が使いやすいエディタを使ってください。私はvi一筋ですけど(笑)。
root@volumio:~# vi /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 iface wlan0 inet static address 192.168.5.64 netmask 255.255.255.0
赤字の部分が追加を行った箇所です。IPアドレスは自分の環境に影響しないアドレスを指定してください。
設定を書込んだらインターフェースを起動して、設定した通りの状態になっているかを確認します。
root@volumio:~# ifup wlan0 root@volumio:~# ifconfig ... wlan0 Link encap:Ethernet HWaddr b0:c7:45:aa:83:93 inet addr:192.168.5.64 Bcast:192.168.5.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:98 errors:0 dropped:0 overruns:0 frame:0 TX packets:236 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:8295 (8.1 KiB) TX bytes:38085 (37.1 KiB)
上記のようにwlan0インターフェースがアップしていればOKです。
hostapdのインストール
アクセスポイントとして動作させるためにhostapdをインストールし、設定を行います。
root@volumio:~# apt-get install hostapd
Reading package lists... Done
Building dependency tree
....
root@volumio:~#
コマンドプロンプトが表示されればインストール完了です。バージョンを確認しておきましょう(2014年11月現在)。
root@volumio:~# hostapd -v
hostapd v2.3
User space daemon for IEEE 802.11 AP management,
IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Copyright (c) 2002-2014, Jouni Malinen and contributors
バージョン2.3がインストールされています。このバージョンは先の無線LANアダプタは対応済です。続いて設定関連ファイルを編集します
設定ファイルを/etc/hostapd/hostapd.confとして編集を行います。
root@volumio:~# vi /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=volumio
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=raspberrypi
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
上記の内容で設定ファイルを作成します。
パスフレーズwpa_passphraseの指定はご自分で覚えやすい物を指定してください。ただし12345とかはダメですよ(笑)。またSSIDは”volumio”としていますが、自分が判別しやすい名称に変更してもらってかまいません。
さらに、hostapdの起動時デフォルト設定ファイル/etc/default/hostapdを編集します。編集箇所は以下の箇所のみです。
DAEMON_CONF="/etc/hostapd/hostapd.conf"
起動時のデーモンの設定ファイルを先の編集したファイルを指定します。
ここで、設定ファイルなどに間違いが無いかを確認するため、一度コマンドラインからhostapdを起動します。何もエラーが無ければCTRL-Cでプロセスを終了させてください。間違っていた場合はエラー表示のある箇所を修正して同様に起動テストを行います。
root@volumio:~# /usr/sbin/hostapd /etc/hostapd/hostapd.conf
Configuration file: /etc/hostapd/hostapd.conf
Using interface wlan0 with hwaddr XX:XX:XX:XX:XX:XX and ssid "volumio"
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED
^Croot@volumio:~#
これでhostapdの設定は終了しました。起動時に自動で起動するように念のために設定を行います。
root@volumio:~# update-rc.d hostapd enable
update-rc.d: using dependency based boot sequencing
DHCPサーバーのインストール
無線LANに接続した機器と通信を行うためにIPアドレスを自動で割り当てるDHCPサーバーをインストールします。ここではISC DHCPサーバをインストールする事にします。
root@volumio:~# apt-get install isc-dhcp-server
インストール後に設定ファイルを編集します。
root@volumio:~# vi /etc/dhcp/dhcp.conf ... # option definitions common to all supported networks... #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; ... subnet 192.168.5.0 netmask 255.255.255.0 { range 192.168.5.100 192.168.5.199; option broadcast-address 192.168.5.255; default-lease-time 600; max-lease-time 7200; }
optionの行は先頭に#を入れてコメントアウト、authoritativeの行はコメントアウトされていますので先頭の#を外して有効に、ファイル末尾に無線LANで提供するサブネットワークとIPアドレスなどの指定を行います。
リースタイム関連はデフォルトと同じ値ですが、念のために定義サブネットに対して指定してあります。
次にISC DHCPサーバ起動時にデフォルトの設定ファイル/etc/default/isc-dhcp-serverを編集して、DHCPサーバーに指定するインターフェースを指定します。
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="wlan0"
インターフェースの指定が空欄になっていますのでwlan0を指定します。
hostapdと同様に起動時にプロセスが起動されるように起動ファイルを有効にします
root@volumio:~# update-rc.d isc-dhcp-server enable
update-rc.d: using dependency based boot sequencing
これで全ての設定は一通り完了しました。Raspberry Piを再起動して、無線LANからESSIDのvolumioが見えており、正しく接続できてAirPlayにvolumioが表示されればOKです。
今までの設定のままでは有線のLAN(eth0)がDHCPクライアントになっているため、有線LANが非接続の場合はアドレス取得待ちの時間がかなり長く掛かりますので、起動しても無線LAN経由でAirPlayができる状態になるまで時間がかかりますので注意してください。
快適な無線LANでのAirPlay環境を楽しみましょう!