RelayPony 2.0
Devices find each other on networks where they used to give up
The headline: transfers now work over a phone's own hotspot. Previously the phone would share a
hotspot, the other device would join it, and neither could see the other — with no way to force it.
The cause was that Android's device discovery follows the phone's default network. While
tethering, that's mobile data, so the phone was announcing itself over cellular and never touching
the subnet it was actually sharing. No amount of retrying on the other device could have helped.
RelayPony now runs a second discovery mechanism alongside the original one, using broadcast rather
than multicast and sending from each network interface explicitly instead of whichever one the system
considers default. It also survives guest and hotel Wi-Fi that filters multicast.
Discovery is no longer the only way through
Even with two mechanisms, some networks isolate clients from each other entirely. So discovery is now
a convenience rather than a requirement:
- Send by address — pick a paired device, type its address, send. Same encryption, same pairing
requirement; only the way the connection is found is different. - The Receive screen shows this phone's address, so there's something to type on the other side.
- A fixed transfer port (45789) instead of a different one every launch, so an address stays
valid and a firewall rule stays written.
Wi-Fi Direct explains itself
Wi-Fi Direct couldn't start while the phone was sharing a hotspot — a phone's radio can't be a
hotspot and a Wi-Fi Direct device at the same time — and it reported this as
Discover failed (framework busy, try again), which pointed nowhere. It now says what's actually
wrong, and retries a transient failure instead of giving up immediately.
Notes
- Pairings and identities are unchanged; this is not a breaking update.
- The new discovery publishes this device's name and its public key on the local network — the same
facts the previous discovery already published, and nothing more. Files are still encrypted to a
pinned key, so an impostor announcement gains nothing. - New interface text is English-only for now; other languages fall back until translated.
Thanks to @Vikranttiw, whose report is the reason all of this exists.