1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspberry Piを野外で使う際のコンソールの検討(続報)

Last updated at Posted at 2020-11-12

前回、Raspberry Piを野外で使うためにスマフォにテザリング的手法で接続してVNCを使う方法を紹介した。ところが最近のAndroidのバージョンアップにより、スマフォ側のDHCPで割り当てられるネットワークアドレスが変動するようになり、RPi側のIPアドレスを決め打ちする方法が常に動くとは限らなくなってしまった。まぁ特に驚きはしない、というか今時分あんなやり方で動いていたことの方がむしろ驚きなのだが、このままでは困るので回避策を考えてみようと思う。

前回紹介した接続方法のうち、動かなくなったのはUSBテザリングとWiFiホットスポットである。Bluetoothテザリングのアドレスは依然として固定であり、そのまま動いている。これは不幸中の幸いであるが、いつ突然動かなくなるかわからない。とりあえず /etc/dhcpcd.conf からusb0とWiFiホットスポットの静的IPアドレス指定をはずし、IPアドレスが変動する前提でどうすればいいかを考える。

トライ1: Bonjour Service Discoveryの使用

MultiVNCというAndroid用VNCビューワは、Bonjour Service Discoveryをサポートしているらしい。つまりRPiの方からVNCサーバをBonjourサービスとしてアドバタイズすれば、IPアドレスが変動しようがMultiVNCからRPi上のVNCサーバを発見して接続できるはずである。これが期待通り動けば理想的だ。

ではVNCサーバのアドバタイズの設定をしてみよう。まずavahi daemonが動いている必要があるが、既にmDNSを有効にしてあるのでここはクリア済みとする。次にこのあたりを参考に以下のような /etc/avahi/services/rfb.service を書く。

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_rfb._tcp</type>
    <port>5901</port>
  </service>
</service-group>

これだけでMultiVNCからVNCサーバを発見、接続することができた!…と喜んだのも束の間、発見できるのはスマフォとRPiがWiFiネットワークでつながっているときだけで、テザリング用にぶらさがっているアドレスに対しては検索が行われないようである。MultiVNCのソースコードを見に行くと、確かにこのへんを見る限りWiFi限定になっているようだ。issue切ったりPR切ってもいいのだが、ユースケースがトリッキーなのでなんか気の毒な気がする。

というわけで、この方法は惜しくも問題を解決しないことが判明。

トライ2: Service Browserの使用

VNCサーバをBonjourサービスとしてアドバタイズするようにできたのだから、Android上のBonjourサービスブラウザを使えばIPアドレスくらいわかるんでないの?というわけで、Service Browserを試してみた。結論から言うと、これがほぼ期待通りであった。

Service Browserは非常にそっけない、いかにも開発者ツール然としたアプリだが、USBテザリングやWiFiホットスポットで接続したRPi上のVNCサーバを _rfb._tcp. (Remote Framebuffer) として発見し、そのIPアドレスを見ることができる。なぜかBluetoothテザリングの場合は発見できないこともあるのだが、Bluetoothテザリングはまだアドレス固定なので困らない。

別のアプリにBonjour Browserというのがあるが、これはサービスタイプがHTTPのものだけを発見するものである。これは、type_http._tcp にしたサービス定義を /etc/avahi/services/ に作っておけば同様に使える。IPアドレスを見たいだけなので実際にHTTPサーバを立てる必要はない。

Service BrowserでIPアドレス確認⇒VNC Viewerにそのアドレスを入力して接続という面倒なステップを踏む必要があるが、まぁ使えるのでよしということにする。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?