Bridge
Give your badge internet through this phone.
The badge speaks Bluetooth LE, and a Chromium browser can open a BLE link. So when there's no Wi-Fi for the badge, this phone can be its uplink: the badge hands each HTTP request over the radio, this tab runs it on the phone's own connection, and streams the answer back. Registration, the app store, small script fetches — anything the badge would do over Wi-Fi.
The link is granted by you to this tab only. But read the security note below before you bridge anything — the trust model over the bridge is not the same as the badge on Wi-Fi.
This phone terminates TLS. Every request the badge makes over the bridge is decrypted, read, and re-encrypted here — this tab can see and modify all of it. The badge's pinned-CA broker guarantee does not apply over the bridge. Only bridge badges you own, and treat anything you tunnel as visible to this device.
01 Connect a badge
Put the badge in range and hit connect — the browser shows a chooser of nearby badges advertising the Nordic UART service. Nothing is bridged until you pair.
How it works
The badge and phone already share a Nordic UART link over BLE — the same one the app store and push tooling use. The bridge adds a small framed protocol on top of it.
- The badge asks, the phone fetches
- When the badge has no Wi-Fi but the bridge is on, its
httpcalls are packed into%REQframes and sent over BLE. This tab decodes them, runsfetch()on the phone's network with the badge's cookies deliberately withheld, and streams the response back in%DATAchunks. Responses over 32 KB are truncated — fine for registration and small scripts, not for large downloads. - You hold the pairing code
- Bridging only starts after you type the six-digit code from the badge's screen. It's the same authorisation gate the badge uses for any privileged BLE command, so a phone in range can't bridge for a badge it wasn't handed the code for.
- A guard, not a promise
- The phone refuses to fetch loopback, private, link-local and
.localaddresses by default, so a badge can't use your phone to probe its own LAN. You can lift that for a service you own with the toggle. It's a literal-URL check — a public name that resolves to a private address at fetch time is not caught, so bridge only badges you trust. - iPhone can't be the bridge
- Web Bluetooth is a Chromium feature — desktop Chrome/Edge and Chrome on Android. Apple
ships no Web Bluetooth in any iOS browser, so an iPhone or iPad can't run this side. Use an
Android phone, or a laptop, as the uplink. Everything on Solana OS that gates on
wifi.connected()just works once the bridge is up.