Hi everyone,
I wanted to share a project I've been working on called APITuner — a virtual tuner for Channels DVR that works similarly to ADBTuner, but without ADB, root, or developer mode.
First, a huge thank you to @turtletank and everyone who's contributed to ADBTuner over the years. That project (and the community thread around it) is what made this whole approach possible — HDMI encoders, deep links, M3U custom channel sources, importable channel lists, the works. APITuner wouldn't exist without that foundation.
And more broadly, thank you to the Channels community — the folks in the HDMI for Channels threads, everyone who shared encoder setups, channel exports, deep link discoveries, and troubleshooting tips over the years. This ecosystem of tinkerers is what makes custom channel tuning work at all. I'm hoping APITuner can be a useful addition for anyone who wants the same workflow without ADB.
What it does
APITuner controls your Android TV devices over the network, launches the right app/deep link when Channels requests a channel, and relays the MPEG-TS stream from your HDMI encoder back to Channels as a Custom Channels (M3U) source.
Channels DVR → APITuner → Android TV device (launches app)
↓
HDMI encoder ← device HDMI out
Same basic hardware setup as ADBTuner: one HDMI encoder per device. Streaming apps are DRM-protected, so screen capture inside the device isn't an option — the encoder captures HDMI output.
Why not just use ADB?
ADB works great — and ADBTuner is excellent at it. But ADB requires developer options, can be finicky across devices and updates, and isn't always practical on shared household TVs. APITuner offers an ADB-free path using pluggable control backends:
-
http_agent(recommended) — a small Agent APK on each device that sends package-pinned deep links (like ADB'sam start). This is the reliable path for YouTube TV and similar apps, avoiding the "Open with" chooser dialog. -
androidtv_remote— uses the standard Android TV Remote protocol (pair once, no APK). Simpler setup, but can't pin the target app on deep links, so it's better for simpler use cases.
If you're already running ADBTuner and happy with it, keep using it! APITuner is meant as an alternative for folks who want to drop ADB, not a replacement for a working setup.
Channels DVR integration
APITuner exposes an M3U playlist compatible with ADBTuner:
http://:6592/channels.m3u
(or /channels.m3u8 — same playlist)
Add it in Channels under Settings → Add Source → Custom Channels → M3U URL.
You can also filter by provider with ?provider=YouTube%20TV if you use provider_name on your channels.
Channel lists are ADBTuner-compatible — you can import your existing ADBTuner channel JSON export directly. A big thank you to everyone who's built and shared those channel lists over the years; that shared knowledge is a huge part of what makes migration easy.
Quick start
Server (Docker):
mkdir -p apituner-data
docker run -d \
--name apituner \
-p 6592:6592 \
-v "$(pwd)/apituner-data:/data" \
--restart unless-stopped \
Dashboard: http://<docker-host>:6592
Per device:
- Download and install the Agent APK from Releases
- Grant Display over other apps (required) and Usage Access (recommended)
- In the dashboard, add a tuner with backend
http_agent, device IP, port9092, and your encoder stream URL
Then import or add your channels, copy the M3U URL from the dashboard, and add it to Channels.
A few notes
- Default port is 6592 (so it can run alongside ADBTuner on the same host if you're migrating gradually)
- Stream modes:
proxy(default, like ADBTuner) orredirect(Channels hits the encoder directly) - The dashboard/API has no authentication — keep it on a trusted LAN only
Get it
Releases & setup guide: GitHub - matthewfkoch/APITuner: ADB-free virtual tuner for Channels DVR — control Android TV / Google TV devices and relay HDMI-encoder streams as an HDHomeRun-compatible tuner. · GitHub
This is still early (v0.1.3) — I'd love feedback from anyone trying it, especially folks migrating from ADBTuner. Questions and issues welcome on the releases repo.
Thanks again to @turtletank, the ADBTuner contributors, and everyone in this community who's pushed custom channel tuning forward.



