Raspberry Pi 4をWifi AccessPoint化 5GHz / 40MHz幅
2年ほど前にPi3をAP化する方法を紹介しました。今回はPi4で同じことをします。
実は、RPiPlayで途切れがちなAirPlay動画転送をもっとよくしたいと思ったからです。シンプルな構成の方が良さそうですよね。
< 今回の接続図 >
全体の配線はこのようになります。
ネット上の動画をストリーミング再生するのはiPadですが、そのデータをAirPlayにてPi4へと送り戻してHDMIから動画を出力するという感じ。
なんだかややこしいことになっていますが、先日の接続よりはシンプルになります。
< 前回の接続図 WIFIルーターがあった>
先日の接続はこうでした。Wifiルーターの機能(正確にはアクセスポイント)をPi4に実装してしまおうという話です。
設定は少々長いのでお付き合いください。
以降、sshでログイン後のコマンドです。ピンク文字がコマンド。青文字はファイル編集内容です。コピペしてください。
最新のRaspberry Pi OS(2021-05-07-raspios-buster-armhf-lite)を使用しました。
raspi-configで国を設定する
sudo raspi-config コマンドで国を設定します。
5 Localisation Options
> L4 WLAN Country
> JP Japan
OKを選択したら再起動します。
ソフトウェアのインストール
avahi、hostapd、dnsmasqという3つのソフトウェアを使って実現しています。 avahiはRaspbianに最初から入っているので、残り2つをインストール&設定していきます。
sudo apt-get update
sudo apt-get install hostapd dnsmasq -y
とコマンドを打ってインストールします。
hostapd : アクセスポイントのソフト。
dnsmasq : ホスト名とIPアドレスを覚えるDNSサーバソフト。
今回、dnsmasqはシンプルなDHCPサーバとして使用しています。ホスト名など覚えません。 つまり本来のDNSの機能を使っていません。
DHCPクライアント設定
sudo nano /etc/dhcpcd.conf で開いて以下を追記します。
# define static profile
profile static_eth0
static ip_address=192.168.1.50
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
# fallback to static profile on eth0
interface eth0
fallback static_eth0
denyinterfaces wlan0
interface wlan0
static ip_address=172.24.1.1/24
static routers=172.24.1.1
static domain_name_servers=172.24.1.1
static broadcast 172.24.1.255
保存して閉じます。
LAN側(eth0)のIPアドレスはご自身の環境に合わせてください。
ここでstatic を指定しているのは、インターネット側のルーターに接続せずにiPadとPi4とを接続し、ローカルのWiFiのみでAriPlay出来るようにするためです。常時ルーターへ接続するなら下記の2行のみでOKです。
interface wlan0
static ip_address=172.24.1.1/24
hostapdの設定(5GHz AP設定)
sudo nano /etc/hostapd/hostapd.conf で新規ファイルを作って下記の青文字をコピペして書き込みます。
driver=nl80211
interface=wlan0
country_code=JP
hw_mode=a
ieee80211d=1
#ieee80211h=1
ieee80211n=1
ieee80211ac=1
wmm_enabled=1
vht_oper_chwidth=0
channel=36
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_pairwise=TKIP
ssid=Pi4-AP
wpa_passphrase=raspberry
保存して閉じます。ssidとパスフレーズはご自由に設定してください。チャンネルは36もしくは44のみ有効らしいです。
sudo nano /etc/default/hostapd で開いて下記の1行を追記します。
DAEMON_CONF="/etc/hostapd/hostapd.conf"
dnsmasqでのDHCPサーバー設定
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf で下記を書き込みます。
interface=wlan0
dhcp-range=172.24.1.10,172.24.1.100,255.255.255.0,24h
保存して閉じます。
172.24.1.10 から 172.24.1.100 までのアドレスをWiFi側のDHCP用として登録しています。
ソフト起動&リブート
sudo systemctl enable hostapd
sudo systemctl enable dnsmasq
sudo reboot
一旦、再起動します。
一応ここでAP化は出来ているハズです。
IPv4をFORWARDING
続けてIPv4 フォワードをEnableしていきましょう。
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo nano /etc/sysctl.conf で開いて下記を追加 (というか該当箇所のコメントアウト # を外す)
net.ipv4.ip_forward=1
保存して終了。
iptables でルーティング、フォワーディングの設定(NAT設定)
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
iptablesの設定保存と自動呼出し
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
sudo nano /etc/rc.local で開いて exit 0 より上の行に下記を追加して再起動時にiptablesをレストアするようにします
iptables-restore < /etc/iptables.ipv4.nat
保存して終了。
sudo reboot
再起動すれば完了です。
接続確認
どうかな?
5GHzで40MHz幅で接続できることを確認できました。androidのWIFI Analyzer アプリの表示。
ついでに速度も見てみましょう。
WIFI-APとしては、さほど速くないようです。有線LANで接続すると50~90Mbpsくらいは出る環境ですので、Pi4のWifiがボトルネックになっていると思われます。
iPadからのAirPlayの方も繋がりました。
レスポンスは外付けWifiルーターを介していた時と変わらないか、僅かに速いくらいです。約0.2秒ほどの遅延を感じます。
肝心の動画再生ですが、動作の不安定さは殆ど変わりませんでした。
AirPlayによる転送は、音声専用だとAppleロスレスコーデックで転送しているため音質は非常に良いのが特徴です。しかし、動画を転送するときはビットレートの低いAAC(AAC-ELD)になるらしく、あまり音質は良くありません。ついでに音飛び、ひずみ、無音なども時折発生します。ラズパイを再起動すると復帰したりしますので、ソフトウェアの完成度がまだ低い可能性が高いですね。今後に期待しましょう。
Unofficial AirPlay Protocol Specification
これはプロトコルを解析してまとめているサイトです。
スタンドアローンAirPlay
この呼び方が正しいのか微妙ですが 1対1で接続する方法です。
Internetへ接続していないPi4のローカルWifiのみでもAirPlay接続できて、HDMI出力からiPad画面、写真、pdfなどを映すことができました。こちらは成功と言えそうです。Mac BookからAirPlayでプレゼンするなどには向きそうですね。
Pi4の起動時間(AirPlay接続できるまでの時間)は、有線LANに接続していると20秒程度です。
LANを接続しないと何かのタイムアウトまでの時間がかかり40~50秒くらいに伸びます。IPアドレスはstaticにしたつもりなので、IPフォワーディング関係でしょうかね。時間があったら調べてみようかと思います。
ちなみに、WindowsやAndroidから画面ミラーリングするにはmiracastという手法を使います。もちろんPi4でもできるらしいので興味がある方は検索してみてください。
http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_miracast_lazycast/
参考にしたサイト様
https://www.itmedia.co.jp/news/articles/2008/14/news042.html
http://jotmemo.blog65.fc2.com/blog-entry-41.html
https://qiita.com/JhonnyBravo/items/5df2d9b2fcb142b6a67c
https://nw-electric.way-nifty.com/blog/2018/05/pi-3wifi-access.html
にほんブログ村
ブログランキングに参加中です。 めざせ1位!
もしよろしければ「ぽちっと」お願いします。
« Raspberry Pi 4 でAirPlayしてYoutube動画を楽しむ方法(RPiPlay) | トップページ | Moode Audio R7.3.0用のSabreberry32ドライバリリース »
「Raspberry Pi」カテゴリの記事
- MotionEyeと余っているラズパイで監視カメラ(2024.11.21)
- 秋の夜長にはRaspberryPi5 RT-linux セルフビルド(2024.10.13)
- 秋の夜長にはRaspberryPi5 64bit版 Sabreberry32 ドライバコンパイル(2024.10.10)
- RaspberryPi 5 の公式OSは32bit版でも64bit?(2024.10.09)
- 秋の夜長にはRaspberry Pi5 64bit カーネル・セフル・ビルド (2024.10.07)
« Raspberry Pi 4 でAirPlayしてYoutube動画を楽しむ方法(RPiPlay) | トップページ | Moode Audio R7.3.0用のSabreberry32ドライバリリース »
コメント