PwnLink · 2026
A phone app for a Pi in the field
In progressIndependent engineer
Running a Raspberry Pi in the field from a laptop is impractical. A generic Bluetooth terminal lacks location support, a versioned protocol, and a connection that survives the screen turning off.
The constraint
The phone and the Pi meet on a Bluetooth personal area network. There is no assumption of a stable internet path. Interface captures will be added once they exist.
Built with
KotlinBluetoothGPS
How it works
Phone and Raspberry Pi on a Bluetooth PAN. Versioned JSON over the link. GPS originates on the phone. A foreground service keeps the socket.
- Android
- Bluetooth PAN
- Raspberry Pi
- GPS
- JSON protocol
- Foreground service
The calls that shaped it
Each decision with the pressure that forced it and the price it keeps costing.
Bluetooth PAN, not a cloud relay
The phone discovers the device from the incoming WebSocket address on the PAN. The path is local.
Versioned JSON both ways
A custom protocol, not an informal stream of strings, so a firmware bump can fail closed.
Foreground service
GPS can stream and the link stays up while the screen is off. A connection that drops when the device is locked is not usable in the field.
A device without mobile data needs a protocol and a network you control. The app provides both.
Field hardware with no steady internet gets a phone companion on the same local network, a protocol that fails closed, and a connection that survives the screen being locked.
Where it stands
In progress. Field hardware work: Bluetooth PAN, versioned protocol, and a foreground service for a device with no steady internet.
What was handed over
- Protocol version notes
- How discovery is supposed to happen
- What the foreground service is allowed to do