Skip to content

File Bridge 1.19.0 — the cable pairs itself

Latest

Choose a tag to compare

@sayanthns sayanthns released this 18 Sep 11:56
· 2 commits to main since this release

The cable pairs itself now. Server and Mac app only — the APK is unchanged from
v1.17.0, attached
here so the newest release always carries a working one.

Autopair

This is the whole reason the watch loop exists rather than a button alone.

On the one occasion this phone did publish an adb interface, it was there for
less time than it takes to notice and click. The tunnel came up — armed was
populated — and the pairing went unused because nobody was fast enough. A human
cannot reliably catch a five-second window; a watchdog can.

The loop now arms the reverse mapping and fires the deep link on its own, once
per appearance
. Once matters: am start every 5 s would keep yanking the app
to the foreground. A serial is forgotten when it disappears, so replugging pairs
again. --no-autopair turns it off.

--adb

Points at a different adb binary. Anyone whose SDK sits somewhere find_adb()
does not look needs it — and it is how the cable path finally got tested without
a phone at all: point it at a stub that reports one device, accepts reverse,
and refuses am start the way the real phone did.

That stub is what confirmed autopair fires exactly once across two ticks, clears
on unplug, re-fires on replug, and that the AM start: log line keeps the
refusal text while redacting the access key.

This does not make the cable work by itself

Being plain about it: the phone still has to publish an adb interface, and no
code here can influence that. What this removes is the human timing problem,
which was a real reason a working tunnel got wasted.

Also recorded this release: the phone re-enables USB tethering by itself, seen
three times returning to idProduct 4234 with live RNDIS nodes minutes after
being confirmed off at 4221. That is probably the whole explanation for the adb
interface never appearing — MagicOS looks to auto-enable tethering when a host
attaches, and the RNDIS composition it builds carries no adb interface. The one
adb sighting came seconds after a manual toggle: a transition window, not a
steady state. So the thing to hunt on the phone is whatever re-arms tethering on
connect, not the USB debugging switch alone.

Where both wired paths stand

Code complete, tested to the socket, and neither works on the hardware they were
built against:

Path Blocked by What would unblock it
adb reverse the phone never publishes the adb interface (255/66/1) stopping whatever re-arms tethering on connect
USB tethering macOS has no RNDIS driver, and never has a phone that tethers over CDC ECM or NCM

HANDOFF.md records this so nobody re-runs the exercise expecting a different
answer, and docs/handoffs/ now carries a session handoff with the open items.

Wifi remains the working transport and is not a consolation prize — it moved
this project's own 6.3 MB APK at 17.34 MB/s, against a cable that negotiates
USB 2.0 High Speed in every mode observed.

Versions

Piece Version
Server 1.19.0
Mac app 1.19.0
Android app 1.13.0 (versionCode 16) — unchanged

Debug-signed. Installs and upgrades in place, not Play Store distributable.