Nokia SymbianやSony Ericssonの古い携帯電話にはBluetoothが載っている一方、Wi-Fiは積んでいない。各国で2Gと3Gの停波が進むなか、こうした端末はインターネットへの出口を失いつつある。
sigdev氏が公開した「Satura Bridge」は、その出口をESP32で作り直す。携帯電話がBluetooth PANでESP32につながり、ESP32が手元のWi-Fiを上位回線として使う。端末側からは通常のBluetooth PAN接続に見えるため、該当のプロファイルに対応してさえいれば専用のドライバーもソフトウェアも要らない。
設定も端末側で完結する。BluetoothでSatura Bridgeを探して接続し、PINを求められたら0000を入れる。あとは携帯電話のブラウザーで任意のhttpページを開くと設定画面に飛ぶので、Wi-Fiの名前とパスワードを入力する。設定はフラッシュメモリーに残り、次回以降は自動でつながる。
最も苦労したのは、Bluetooth ClassicのネットワーキングをESP32上で安定させながら、Wi-FiとNAT、DNS、再接続の処理を同時に回し、なおかつメモリーを使い切らないことだった。作業の大半はタスクの管理と再接続の処理、ヒープ使用量を抑えることに費やされたという。応答しなくなった部分だけを再起動し、機器全体の再起動を避けるウォッチドッグも組み込んだ。
性能も公表している。実測で下り0.15〜0.20Mbps、上り0.20〜0.27Mbps、遅延は150〜200msだった。同時につなげる端末は1台で、消費電流はUSBから約200mAになる。1つのESP32でBluetooth ClassicとWi-Fiを同時に動かすことと、Bluetooth PANそのものの能力が上限を決める。それでも当時のブラウザーや軽いページ、メッセージのやり取りには足りるとする。
ハードウェアは推奨がM5Stack Core2で、最小構成ならESP32-WROOM-32でも動く。BluetoothとWi-Fiが同時に動いてESP32の無線資源を分け合うため、内蔵の小さなアンテナより外部アンテナを備えた基板の方が到達距離も安定性も上がると注意を促す。
動作を確かめた組み合わせとして、Sony Ericsson J108、古いAndroid端末、ブラウザーのNetFront 3.4、J2MEアプリケーションを挙げる。一方、Windows 10搭載機をつなぐ用途では現状動かない。
ビルドにはESP-IDF v5.4.xを使い、BluetoothはBTstackが担う。ライセンスはMITで、ブラウザーからの書き込みにも対応するためソフトウェアを入れずに導入できる。今後はESP32モジュールを2個載せた専用基板の開発と、Ethernetへの対応を検討している。