概要
Raspberry Piをアクセスポイント化して、Androidスマホから操作したい。
具体的にはAndroidスマホからRaspberry Pi側に用意したWebページ開いて、MP3の一覧を表示。その中から再生用のボタンを押すとRaspberry PiにつながっているBluetoothスピーカーから音楽が再生されるみたいなシステム作ってます。
で、Raspberry Piが家のLAN上にいて、インターネットにつながっている間は期待通りに動くんですけど、Raspberry Piをアクセスポイント化してインターネットから切り離した途端にアンドロイドスマホからRaspberry PiのWebページが開けなくなったという話です。
結論
この状態で、AndroidスマホからRaspberry Piのプライベートネットワークに接続するためには、Androidスマホ側で「モバイルデータ通信」をOFFにする必要があるらしい。
(Raspberry Pi全然関係なかった)
OFFにするための具体的な方法はこの辺
スマホのモバイルデータ通信・Wifiの違いとは何?オフにした時は?
もうちょっと詳しく
こんなシステム
Bluetoothスピーカー
↑ Bluetooth
Raspberry Pi
(アクセスポイント化/WebIOPi)
↑ 無線LAN、HTTP
Androidスマホ
Bluetoothスピーカーもスマホ(ここに移ってるのはスマホじゃないな)もバッテリーで動くし、Raspberry Pi (Zero) もモバイルバッテリーで動かすと、電源無しでどこでも音楽をならせるのです(楽器の伴奏用システムです)。
何が起きた?
システム作ってる間は家のLANにRaspberry Piつなげてまして、多少の問題(WebIOPiの使い方が分からないとか)があったもののけっこう思い通りに動いてたんですよ。
で、これ、家じゃないところで楽器演奏するときでもスピーカーから伴奏流すために作ってたので(家でならこんな面倒なことしないでPCから流すでもいいしね)、Raspberry PiをLANから切り離してアクセスポイント化した途端に、スマホからつながらない問題発生。
上の画像に写ってる Amazon Fire からはつながるものの、スマホからつなげようとしたらスマホのブラウザが ERR_ADDRESS_UNREACHABLE
ってエラーを吐いて全くつながる気配なし。
何が悪いのか全く分からずの私です。
スマホとRaspberry Piの動きを確認してみる
- スマホ「IPアドレスが割り当てられてない」
- Raspi「DHCPでIPアドレス割り当て成功してる」
ふたりの言い分が真っ向から食い違ってます。
「PCからもFireタブレットからも接続できてるし、Raspberry Pi側のhostapdとかdhcpdとかの設定は間違ってないだろう」と思いつつ、何度も何度も同じ設定を確認したり、ちょこちょこと設定を変更したりしても全く症状は改善せず。
スマホが「IPアドレスなし」というだけあって、ブラウザからページを開きに行ってもRaspberry Pi側にはHTTPのリクエストすら来ていません。ERR_ADDRESS_UNREACHABLE
のエラーは伊達じゃない。
なかなか解決に至らなかったのはRaspberry Piの設定ばかり確認していて、Android側の設定をあまりいじってなかったからなんですが、この件に関係しそうなAndroidの設定って見つからなかったんですよ。
同じようなことになっている人がいないか?
これが見つからないんですよね。
「Raspberry Piをアクセスポイント化してスマホから操作する」みたいなサイトはたくさん見つかるんですけど、誰も「スマホからつながらない!」って状態におちいっていない。LANから切り離して操作してみてる人って意外と少ないのでしょうか?
家じゅうのAndroid端末で試してみる
(iPhone等で確認していないのは家に1台もないからです)
Android端末、、、奥さんのスマホ、昔使ってたタブレット、子供にあげた私のお古のスマホ(SIMなし)と色々な端末から接続を確認してみると、どうやらSIMが入ってないやつからならつながるらしいという傾向が見つかりました。
このシステム使うたびにSIMカードを抜いていられないので、「要するに携帯会社のネットワークにつながってなきゃいいんじゃね?」ということで「モバイルネットワーク」をOFFにしたら、これがビンゴ。Raspberry Piにつながるようになりました。
ところで
なんで「モバイルネットワーク」がONのままだとつながらないのでしょう?
どなたか詳しい方教えていただけませんか?