Use the sections below to configure server addresses, playback behavior, guide data, credentials, and maintenance tasks.
Setup
Core addresses and display behavior used by feeds, playback URLs, and the admin UI.
🌐
FastChannels Server URL
Set the address players and other devices should use to reach this server
Address other devices should use to reach this FastChannels server for generated M3U, XML, logo, poster, and playback URLs. Include http:// and the port if needed (most installs use :5523). This only changes generated URLs; it does not change the Docker published port. To move the web UI itself to another port, change the compose port mapping and restart the container.
No port specified — this is fine if you're behind a reverse proxy, but most direct installs need :5523.
Browser address: https://graceinthepines.synology.me
Detected server address: https://graceinthepines.synology.me
If this field is set, generated feed URLs will use it exactly, even if you open the admin UI from a different host or port.
If FastChannels is running in Docker and you opened the UI with localhost, auto-detect is usually not what other devices need, so set this field manually.
📺
Channels DVR
Register feeds as custom M3U sources in your DVR with one click
Base URL of your Channels DVR server (port 8089). To find it, open my.channelsdvr.net → Settings → General — your server address is listed there. If FastChannels and Channels DVR are on the same machine and the Test Connection button fails with your LAN IP, try http://172.17.0.1:8089 instead (the Docker host gateway).
Auto-refresh guide data hourly
When enabled, FastChannels forces Channels DVR to re-import guide data for all registered FastChannels lineups once per hour. Only applies if you've added feeds via the "Add to Channels DVR" button.
🕒
Time Zone
Control how timestamps display across the admin UI and FastChannels logs
Type an IANA timezone like America/New_York or Europe/London — use a canonical Area/Location name, not a legacy alias like US/Eastern (see the full list ↗). This controls admin timestamps and FastChannels app log timestamps, and overrides the container TZ for the app.
Playback
Controls that affect playlist output, stream routing, image delivery, and DRM bridge behavior.
🔓
PrismCast (DRM bridge) Beta
Route DRM channels through a PrismCast capture server so they play in Channels DVR
Bridge DRM channels (keep them active)
On: DRM channels (e.g. Roku FairPlay) stay active and route through the PrismCast feed — kept out of the standard feed, badged 🔒🌉. Off (default): they're disabled and dropped. Only DRM-capable sources can bridge.
Also see FastChannels Player below — a second, independent way to bridge DRM channels. If both are enabled, FastChannels Player wins for its trusted sources; everything else still routes through PrismCast.
Your PrismCast server (default port :5589). DRM channels go through PrismCast, everything else streams direct. Like the regular feed, it splits into a standard playlist at https://graceinthepines.synology.me/m3u/prismcast (pairs with /epg.xml) and a Gracenote one at https://graceinthepines.synology.me/m3u/prismcast/gracenote.
Where PrismCast's Chrome reaches this server's /watch pages. DRM needs a secure context: use loopback (http://127.0.0.1:5523) when PrismCast's Chrome runs on the same host as FastChannels' published port, such as a native/Homebrew PrismCast install with FastChannels in Docker. Use trusted HTTPS when PrismCast runs on another host. Blank reuses the Server URL.
A plain http:// LAN IP isn't a secure context — DRM won't decrypt.
Caps the video variant loaded by the browser before PrismCast captures it. Lower this on underpowered servers if DRM streams black out or PrismCast reports buffering/recovery.
📲
FastChannels Player Experimental Beta
Remote-trigger a Fire TV / Android TV device to play DRM channels, captured back in by an HDMI encoder
Requires the FastChannels Player app installed on the device (ADB debugging must be turned on first). Its decoded output is captured back in by an HDMI encoder — either a single fixed one, or a broader set of hardware driven through ah4c — for re-ingestion elsewhere (e.g. Channels DVR).
Enable FastChannels Player
Required before either capture method below takes effect. Only applies to a trusted subset of DRM sources: Sling, NBCUniversal TVE, PBS, Amazon Prime (free), DirecTV Stream, Vidaa, Philo, Roku, and Fubo.
adb port (:5555) is derived automatically. Used to adb-trigger playback and to install the app — shared by both capture methods below.
"Install" pushes the app to the device over adb — no manual sideload, and no need to
touch "Apps from Unknown Sources" on the device (that setting only gates the on-device tap-to-install
flow, not adb). Requires the IP address above to be saved first, and ADB debugging already turned on
on the device itself.
Stop playback when nobody's watching
Detects idle bridged channels two ways: Channels DVR's own activity status, and a heartbeat
from FastChannels' own /watch page while it's open. After ~5 minutes with neither
signal, the device is stopped. This can't see a third-party client (Plex/Threadfin, a bare VLC
playlist, etc.) pointed directly at the M3U — only enable this if Channels DVR and/or the
FastChannels web player are the only ways bridged channels get watched.
Show captions when available
Renders an English subtitle/CC track when the stream advertises one. Works on most
sources. Applies the next time a channel is triggered, not to a stream already
playing.
Configure one of the capture methods below (and enable the bridge) to get this feed's M3U/EPG URLs.
Single HDMI encoder
The original capture method: one fixed encoder stream URL, e.g. Channels DVR's own
capture:// source. Simplest option if you're already set up with the specific
encoder FastChannels documents.
Where a bridged channel plays from once the device is triggered. With Channels DVR's native capture:// source, this is that channel's own stream URL: http://<host>:8089/devices/ANY/channels/<guide number>/stream.mpg.
ah4c
Drives FastChannels Player through ah4c
instead of a single fixed encoder URL — useful if your HDMI encoder isn't the one FastChannels
documents directly (ah4c already supports Hauppauge, Magewell, DeckLink, and any network encoder).
Adds a second, ah4c-routed M3U option next to the standard one on the Feeds page.
Enable ah4c support
Off by default — leaves the single-encoder output above untouched.
Where ah4c itself is reachable — its /play/tuner/<channel> is what the generated M3U points at.
The exported scripts tell ah4c how to adb-trigger FastChannels Player and confirm playback started — drop them into ah4c's own mounted scripts directory (see the download for exact instructions).
🧪
Experimental Output
Try optional playlist directives for specific DVR behaviors
Rewrite stream timestamps in M3U Experimental
Adds tvc-stream-timestamps="rewrite" to generated M3U entries for Channels DVR. This may help recordings with bad durations or timestamp corruption, but can affect in-progress playback on some streams.
🖼️
Image Proxy & Caching
Control whether logos and program artwork are served through FastChannels
Enable image proxy & caching
When enabled, channel logos and program artwork are cached and served through FastChannels — ensuring consistent delivery regardless of upstream CDN availability. When disabled, all image URLs point directly to the upstream provider. Note: some sources (e.g. Roku) require proxying for program artwork to display correctly; disabling this may cause missing artwork for those channels.
Guide Data
Defaults for newly discovered channels and Gracenote guide mapping.
🆕
New Channels
Control whether newly discovered channels enter your feeds automatically
Auto-allow new channels into feeds
When enabled (default), channels found by a scrape are added enabled and flow straight into your feeds. When disabled, newly discovered channels are added disabled — find them in Channels under the Review → Needs review filter and enable the ones you want. Individual sources can override this on the Sources page.
🎬
Gracenote Guide Data
Control automatic guide ID assignment during scraping
Auto-assign Gracenote IDs
When enabled, scrapers populate Gracenote guide IDs for channels that support it. Channels with manually assigned IDs are never affected.
Community Map URL
Remote CSV fetched on startup and refreshed daily. Leave blank to use the default FastChannels community Gist.
Contribution Webhook URL
Where user contributions are sent when they click Contribute in the Community Map. Defaults to the FastChannels community webhook — leave blank to use the default.
Credentials
Shared provider sign-in details used by TV Everywhere backed sources.
📡
TV Everywhere
Shared provider credentials for legal TVE-backed sources
TV Provider Sign-In
Choose your TV provider, then enter the same username and password you use on that provider's site. These credentials are stored only in the local FastChannels database and are never returned to the browser after saving.
🧪 Beta — TVE sign-in has only been tested and confirmed working with Cox, Sling TV, and Xfinity/Comcast. YouTube TV is also supported but less thoroughly tested — entitlement and session refresh can be less reliable. The dropdown lists every provider Adobe Pass supports, but sign-in with providers outside those four is unverified and may fail.
Optional. Shared by any TVE source that needs a home market — currently just FOX One, where it drives both regional entitlement/blackout scoping and which local FOX affiliate shows up as a channel. Enter it once here rather than per source.
Used by TVE sources such as A+E Networks TVE.
One-time sign-in directly with Google — independent of any single network. Once signed in, every YouTube TV network below can authorize silently without opening a browser again.
🧪 Beta — YouTube TV as a provider is less thoroughly tested than Xfinity/Comcast and Cox; entitlement and session refresh can be less reliable.
Last test: error at 2026-09-07T12:26:26.690881 — FOX One YouTubeTV MVPD auth failed: YouTubeTV: no scripted sign-in is wired up for this provider yet.
⚠ TVE is disabled — the toggle on the right is off, so every network's scraper and every "Sign in" click will fail until it's turned back on and saved.
TVE network sign-in status — sign in to each network individually below, or all at once.
Loading…
Sign in for TV Everywhere
Launching browser…
Maintenance
Database backup, restore, and runtime health information.
💾
Database Backup
Back up and restore your FastChannels database
Create
Download a gzip-compressed copy of
fastchannels.db —
all channels, sources, feeds, settings, and Gracenote assignments. Store it somewhere safe.
Restore
Replaces the current database, then reloads workers.
This cannot be undone — download a backup first.
From a nightly auto-backup
Checking…
From a file (.db / .db.gz)
No file chosen
📊 System Stats
Loading…
Community Gracenote Map
Channels with curated community IDs. Applying sets the channel to Manual mode — it won't be overwritten by future scrapes.
Status legend
Applied
Community tmsid is already the active ID on this channel
Available
No Gracenote ID set, in auto mode — community tmsid can be applied
Has native ID
Channel is in auto mode with a scraped ID that doesn't match the community tmsid
Manual
Channel is in manual mode with a different tmsid than the community one
Off
Gracenote is disabled for this channel entirely
Channel
Source
ID
Status
Loading…
Checking…
Checking…
Loading…
Loading suggestions…
Restore from Auto-Backup
These nightly snapshots live on the server in
/data/backups.
Restoring replaces the current database. This cannot be undone.
Restart the container afterward so all background workers pick up the restored data.
Loading…
PrismCast setup test
Checks reachability, the watch-page secure context, and runs a real capture end-to-end.
…
Export ah4c scripts
Generates a prebmitune.sh /
bmitune.sh /
stopbmitune.sh /
reboot.sh set for
ah4c, so it can drive
FastChannels Player instead of Hulu/YouTube TV — useful if your HDMI encoder isn't the one FastChannels
documents directly. Extract into ah4c's mounted scripts directory and set
STREAMER_APP=scripts/<dir>/<name>
to match.
Pre-filled from this page's own address — confirm it, since the ah4c container may run on a different machine/network than the one you're browsing from.
Disable Gracenote?
This will disable automatic Gracenote ID assignment and clear all Gracenote IDs
(including manually assigned ones). Channels will use scraped guide data only.
To re-enable per-channel, use Set Auto on the Channels page.