Moode Audio Player Access Point (AP) を使ってみる

Moode Audio Player Release: 2.7 2016-08-28

Moode Audio Playerは標準でAP(アクセスポイント)モードが使えるようになっています。

Raspberry Pi + Moode Audio Playerの使用している環境でwifiルータの電波が届きにくいといった場合は重宝するかもしれません。

では早速使ってみましょう。

使用環境
Raspberry Pi 1B eth0 有線接続

wifiドングル 中華無印
RTL8188CUS
このドングルは2個で1000円もしない安物ですがダメバッファローの某製品よりははるかに安定しています。(当方もバッファローには騙されました!)

$ lsusb
Bus 001 Device 005: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter

チップはパワーマネジメントが有効になっていますがmoodeOSは解除するための設定ファイルも用意されています。
/etc/modprobe.d/8192cu.conf
# disable power management
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

チップはAPモードをサポートしていないと使えません。
おそらく大半のチップはAPモードをサポートしていると思われますが一部使えないものもあるようです。

$ iw list | more
Wiphy phy0
Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * monitor
                 * P2P-client
                 * P2P-GO

wifiドングルを挿してRaspberry Piを再起動するだけでアクセスポイントとして利用できるようになります。
Configure Network
moode-wifi
WiFi(wlan0) DHCP 172.24.1.1 が設定されます。
ここでSTATICを選択してSSIDなどを適切に設定すれば有線の代わりにWiFiでmoodeを動かすことができます。
DHCPで設定した内容は/etc/dhcpcd.confに記載されますがSTATICの設定は/etc/network/interfacesに記載されます。以降デフォルトのAPモードに戻すにはDHCPにして入力したところは一旦空白にする必要があります。
wifiドングルの2個挿しはOS上ではそれぞれIPアドレスを取得可能ですが当方で試した限りに於いてはmoode playerのメニューにwlan1が出現しないのでそれ以上は試していません。

タブレットのwifi設定でSSID(Moode)とpassword(modeaudio)を登録して接続してみましょう。

http:172.24.1.1

moode-wifi02
アクセスするのに172.24.1.1ではわかりにくいので名前解決をしましょう。

ログインして(root)
/etc/hostsに書き加えます。

/etx/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
127.0.1.1       moode
172.24.1.1      moode

dnsmasqを再起動

# systemctl restart dnsmasq

以降からはmoodeでアクセスできます。

moode playerにはアクセスできたがインターネットにでれない!!!

moodeOSはアクセスポイント化に必要なhostapd,dnsmasqなど必要なパッケージ、設定はできていますがインターネットに出るためのルーティング設定だけは自前で設定する必要があります。
/etc/sysctl.conf編集

# vi /etc/sysctl.conf
net.ipv4.ip_forward=1 <----コメント外す

/proc/sys/net/ipv4/ip_forward 0から1に変更

# echo 1 > /proc/sys/net/ipv4/ip_forward

iptables設定 ユーザーPiで実行(rootではダメ)

$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

ルーティングテーブルのセーブ ユーザーrootで実行(sudoではダメ)

$ sudo su
# iptables-save > /etc/iptables.ipv4.nat

起動時に読み込み /etc/network/interfacesに追記

# vi /etc/network/interfaces
pre-up iptables-restore < /etc/iptables.ipv4.nat

再起動

# reboot

ここらはssh接続とユーザーによる権限の関係が複雑に絡み合うのでわかりにくいですが再起動後はインターネットに接続できるはずです。

moode playerでネットワーク設定を行った場合/etc/network/interfaces以下の設定を書き換えてしまうことがあるのでinterfaces以下を確認して無ければ再度設定して再起動します。

iptablesの設定は以下のコマンドで確認できます。
何らかの関係でデフォルトに戻った場合は再度上記のiptablesの設定が必要です。

デフォルト設定

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
       
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
         
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

ルーティング設定

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

参考 Raspberry Piのアクセスポイント化 & ルータ化がうまくいかない時はこの通りにやればおk