Open3

Bluetoothテザリングに接続してきたデバイスのHTTPSサーバに接続できるか調査

okuokuokuoku

諸般の事情でIoTデバイスをいくつか作らないといけないので、UIとしてiPhoneとかAndroidのWebブラウザが使えるかどうかを調査することにした。

テザリングを使うと、Bluetoothを使ってデバイスとiPhoneの間でLANを組むことができる。

[デバイス] == Bluetooth ==> [iPhone]

テザリングの常識的な用途はiPhoneを単なるルータとして使ってデバイスがインターネットにアクセスできるようにすることだが、これを悪用して デバイスが提供するWeb UI をiPhoneから操作したい。アプリとか作るより簡単だしね。

okuokuokuoku

iPhone (iOS 15)

とりあえず適当なUbuntu 20.04 と接続してみたところ、ほぼ完璧な動作をすることがわかった。

  • https://ubuntu.local のように、ホスト名でアクセスできる。これはiPhoneはmDNSに標準で対応しているため。
  • mDNSがIPv6リンクローカルアドレスを返却した場合はそちらでアクセスする
  • 事前にHTTPSで使うTLS証明書を仕込んでおけば、それが使われる

Bluetoothテザリングをすると、 "Ethernet" が設定にあらわれ、そちらでイーサネット的な設定をできる。

... 普通のテザリング用途にはどう考えても要らないので謎の機能と言える。。あと、Windowsから接続すると画面上部が緑点灯するが、Ubuntuから接続した場合は特に何も起きないのも謎。

ちなみにセルラーのないiPadやiPod touchではテザリング親機になれない("設定" → "インターネット共有" が無い)。

okuokuokuoku

Android11

Androidは多少挙動が不審なものの、

  • IPv4アドレス直打ちであればアクセスできた
  • .local はOS標準ではresolveできなかった

挙動が不審なのは、AndroidはiOSと異なりNAP(アクセスポイント)とPANU(直接接続)の両方をサポートしているようにアドバタイズするために見える。

IPv4アドレスはDHCPの都合上不定になるので、できればmDNSかIPv6のリンクローカルアドレスで接続したいが。。まぁ自前でresolveしてブラウザ開くアプリを作れば良い話ではあるけど専用アプリが必要な時点で負けた気分になる。QRコード生成とかかなぁ。。