Skip to content

[Feature Request] Support Android 11+ “Wireless debugging” (TLS + pairing code/QR) #784

@CurseStaff

Description

@CurseStaff

Pre-issue checklist

  • I've searched the issue list but couldn't find the feature I want

How can Tango be improved?

On Android 11+ (including many TVs/boxes), Wireless debugging is no longer plain ADB over TCP (e.g. port 5555). It requires a pairing step (code or QR) and then runs ADB over a TLS channel.

This project works great when adbd is listening openly on a TCP port (legacy ADB over Wi-Fi), but it fails in standard Wireless debugging mode because the pairing + TLS layer is missing.

We’d like to know whether there is work in progress for Wireless debugging, and if not, whether you’re open to contributions. We can help implement and test on real Android TV / STB devices.


Our usage today (works well)

Runtime: Node.js (embedded in an Android app via a native Node runtime).

Connection: “Direct Sockets”, following the documented contract:

ReadableStream via StructDeserializeStream(AdbPacket)

WritableStream<Consumable> via AdbPacketSerializeStream + WrapWritableStream

Transport: AdbDaemonTransport.authenticate({ serial, connection, credentialStore })

Auth:

PKCS#8 RSA credential store (persistent host key). We also support a single embedded host key for our fleet to avoid repeated prompts.

Optionally sending the public key first in legacy TCP mode to trigger the approval prompt.

ADB usage:

Subprocess via subprocess.noneProtocol.spawnWaitText([...])

How should the API change?

Proposed direction (API sketch)

New device, e.g. AdbWirelessDevice or AdbDaemonTlsDevice, providing:

pair({ host, pairingPort, code | qr, credentialStoreForTls })

connect({ host, tlsPort, tlsCredentials }) → returns packetized ADB streams over TLS

Optional mDNS discovery (_adb-*_tcp) for convenience (Node/browser), or accept explicit parameters for a first iteration.

A TLS credential store distinct from the ADB RSA host key store.

Keep AdbDaemonTransport as-is; it consumes ADB packet streams regardless of the underlying transport.

(Optional) Other information

Do you already have an internal prototype/branch for Wireless debugging (pairing + TLS) on Android 11+?

Thanks for the excellent packetized ADB stack (StructDeserializeStream / AdbPacketSerializeStream + Consumable streams). We’d be happy to help bring Wireless debugging (Android 11+) support if it isn’t already underway.

CurseGroup Company teams

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions