It's plugged into the same box that is running the channels server. I don't know how to check that "transcoding is available and being used". Other than playing the current channel, I don't think the server was doing anything else when I was watching it this morning, but there are shows that record daily so that could happen regularly if another channel being captured was watched. I don't record from the USB captured channels. The server is a windows machine running 11 pro, AMD Ryzen 7 7735HS with Radeon Graphics, 3201 Mhz, 8 Core(s), 16 Logical Processor(s), 24GB memory with 1 TB SS Storage.
That should be sufficient for either hardware or software transcoding. So, it's back to the Capture Card as the prime suspect.
Made those changes and now it looks like it tries to start, but it gets stuck at the "Remux" screen. It looks like it might be that it's trying to tune the DirectStream channels and not my satellite channels. Is there a way to make sure it's using the correct m3u?
Can you post some logs, from FastChannels, ah4c and CDVR, showing a complete failed tune? Are you using the latest Docker Compose (2026.09.03), and do you have a FASTCHANNELS_URL defined in your env var overrides?
@KineticMan Did the changes you made to support DTV Satellite subscribers make the latest build?
Log from ah4c.
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE++ ))
+ echo ''
+ echo '[TIMEOUT] Retrying trigger (2)'
+ trigger
+ local url=/play/fc-player/directv/1964.m3u8
+ '[' -n 192.168.88.113:5555 ']'
+ url='/play/fc-player/directv/1964.m3u8?adb=192.168.88.113:5555'
+ echo '[TRIGGER] /play/fc-player/directv/1964.m3u8?adb=192.168.88.113:5555'
+ curl -s -o /dev/null --max-time 10 '/play/fc-player/directv/1964.m3u8?adb=192.168.88.113:5555'
+ COUNTER=0
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE++ ))
+ echo ''
+ echo '[TIMEOUT] Retrying trigger (3)'
+ trigger
+ local url=/play/fc-player/directv/1964.m3u8
+ '[' -n 192.168.88.113:5555 ']'
+ url='/play/fc-player/directv/1964.m3u8?adb=192.168.88.113:5555'
+ echo '[TRIGGER] /play/fc-player/directv/1964.m3u8?adb=192.168.88.113:5555'
+ curl -s -o /dev/null --max-time 10 '/play/fc-player/directv/1964.m3u8?adb=192.168.88.113:5555'
+ COUNTER=0
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ grep -A 12 package=com.fastchannels.player
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE > 3 ))
+ (( COUNTER++ ))
+ '[' notplaying == notplaying ']'
+ sleep 1
+ is_media_playing
+ adb -s 192.168.88.113:5555 shell dumpsys media_session
+ grep -A 12 package=com.fastchannels.player
+ grep -q -e 'state=PlaybackState {state=3' -e 'state=PlaybackState {state=PLAYING(3)'
+ echo -n .
+ (( COUNTER > 15 ))
+ (( FAILSAFE++ ))
+ echo ''
+ echo '[TIMEOUT] Retrying trigger (4)'
+ trigger
+ local url=/play/fc-player/directv/1964.m3u8
+ '[' -n 192.168.88.113:5555 ']'
+ url='/play/fc-player/directv/1964.m3u8?adb=192.168.88.113:5555'
+ echo '[TRIGGER] /play/fc-player/directv/1964.m3u8?adb=192.168.88.113:5555'
+ curl -s -o /dev/null --max-time 10 '/play/fc-player/directv/1964.m3u8?adb=192.168.88.113:5555'
+ COUNTER=0
+ (( FAILSAFE > 3 ))
+ echo ''
+ echo '[FAIL] Could not confirm playback for directv:1964 on 192.168.88.113:5555. Giving up.'
+ exit 1
'
2026/09/14 17:26:48 [EXECUTE] Finished running ./scripts/firetv/fastchannels/bmitune.sh in 1m11.904671996s
2026/09/14 17:26:48 [ERR] Failed to run start script: exit status 1
Log from CDVR.
2026/09/14 17:25:15.907630 [ERR] Failed to fetch station 8396 for channel 8217 on X-M3U: Invalid station ID: 8396
2026/09/14 17:25:15.908630 [ERR] Failed to fetch station 1104 for channel 8473 on X-M3U: Invalid station ID: 1104
2026/09/14 17:25:15.909630 [ERR] Failed to fetch station 8391 for channel 8448 on X-M3U: Invalid station ID: 8391
2026/09/14 17:25:15.911137 [ERR] Failed to fetch station 883 for channel 8121 on X-M3U: Invalid station ID: 883
2026/09/14 17:25:15.911137 [ERR] Failed to fetch station 6654 for channel 8472 on X-M3U: Invalid station ID: 6654
2026/09/14 17:25:15.912144 [ERR] Failed to fetch station 886 for channel 8124 on X-M3U: Invalid station ID: 886
2026/09/14 17:25:15.912144 [ERR] Failed to fetch station 885 for channel 8126 on X-M3U: Invalid station ID: 885
2026/09/14 17:25:15.914143 [ERR] Failed to fetch station 882 for channel 8125 on X-M3U: Invalid station ID: 882
2026/09/14 17:25:15.916145 [ERR] Failed to fetch station 880 for channel 8122 on X-M3U: Invalid station ID: 880
2026/09/14 17:25:15.916145 [ERR] Failed to fetch station 884 for channel 8127 on X-M3U: Invalid station ID: 884
2026/09/14 17:25:15.921649 [ERR] Failed to fetch station 881 for channel 8123 on X-M3U: Invalid station ID: 881
2026/09/14 17:25:15.925655 [ERR] Failed to fetch station 6803 for channel 8477 on X-M3U: Invalid station ID: 6803
2026/09/14 17:25:16.993018 [ERR] Failed to fetch station 6654 for channel 8472 on X-M3U: Invalid station ID: 6654
2026/09/14 17:25:16.994019 [ERR] Failed to fetch station 880 for channel 8122 on X-M3U: Invalid station ID: 880
2026/09/14 17:25:17.003534 [ERR] Failed to fetch station 884 for channel 8127 on X-M3U: Invalid station ID: 884
2026/09/14 17:25:17.003534 [ERR] Failed to fetch station 886 for channel 8124 on X-M3U: Invalid station ID: 886
2026/09/14 17:25:17.004534 [ERR] Failed to fetch station 8396 for channel 8217 on X-M3U: Invalid station ID: 8396
2026/09/14 17:25:17.004534 [ERR] Failed to fetch station 8391 for channel 8448 on X-M3U: Invalid station ID: 8391
2026/09/14 17:25:17.008050 [ERR] Failed to fetch station 1104 for channel 8473 on X-M3U: Invalid station ID: 1104
2026/09/14 17:25:17.008050 [ERR] Failed to fetch station 883 for channel 8121 on X-M3U: Invalid station ID: 883
2026/09/14 17:25:17.010053 [ERR] Failed to fetch station 881 for channel 8123 on X-M3U: Invalid station ID: 881
2026/09/14 17:25:17.010053 [ERR] Failed to fetch station 882 for channel 8125 on X-M3U: Invalid station ID: 882
2026/09/14 17:25:17.010053 [ERR] Failed to fetch station 6803 for channel 8477 on X-M3U: Invalid station ID: 6803
2026/09/14 17:25:17.011048 [ERR] Failed to fetch station 885 for channel 8126 on X-M3U: Invalid station ID: 885
2026/09/14 17:25:36.665544 [TNR] Opened connection to M3U-USBHDMI for ch10000 USB HDMI Capture
2026/09/14 17:25:36.669266 [TNR] Opened connection to M3U-FastChannelsAH4CDirectvAndroidBridgeah4c for ch11007 ESPN HD
2026/09/14 17:25:36.669266 [HLS] Starting live stream for channel 11007 from 192.168.88.245
2026/09/14 17:25:37.059034 [HLS] ffmpeg: capture-usb-hdmi: [aist#0:1/pcm_s16le @ 000001fa1e911d80] Guessed Channel Layout: stereo
2026/09/14 17:25:37.059034 [HLS] ffmpeg: capture-usb-hdmi: [vost#0:0/h264_amf @ 000001fa1e9521c0] -enc_time_base -1 is deprecated, use -enc_timebase demux
2026/09/14 17:25:37.059034 [HLS] ffmpeg: capture-usb-hdmi: [aost#0:1/aac @ 000001fa1e954c40] -enc_time_base -1 is deprecated, use -enc_timebase demux
2026/09/14 17:25:38.305665 [HLS] Probed live stream in 1.0801216s: h264 1920x1080 progressive 5610722bps
2026/09/14 17:25:38.659122 [HLS] Session ch11007-dANY-ip192.168.88.245 started in 1.9892984s
2026/09/14 17:25:49.203759 [HLS] Stopping transcoder session ch11007-dANY-ip192.168.88.245 (out=11.609978s finished=false first_seq=1 last_seq=11)
2026/09/14 17:25:49.203759 [TNR] Closed connection to M3U-FastChannelsAH4CDirectvAndroidBridgeah4c for ch11007 ESPN HD
2026/09/14 17:25:49.207789 [SNR] Buffer statistics for ch11007 ESPN HD: buf=0% drop=0%
2026/09/14 17:25:49.240479 [ERR] Failed to start stream for ch11007: M3U: GET: http://192.168.88.30:7654/play/tuner/directv:1964: 500 Internal Server Error
2026/09/14 17:25:49.240479 [HLS] Couldn't generate master playlist for ch11007-dANY-ip192.168.88.245: M3U: GET: http://192.168.88.30:7654/play/tuner/directv:1964: 500 Internal Server Error
2026/09/14 17:25:49.240479 [HLS] Stopping transcoder session ch11007-dANY-ip192.168.88.245 (out=0s finished=false first_seq=0 last_seq=-1)
2026/09/14 17:25:50.049999 [SNR] Buffer statistics for 192.168.88.30 (192.168.88.30) for ch10000 USB HDMI Capture: buf=0% drop=0%
2026/09/14 17:25:50.049999 [ERR] Error during stream M3U-USBHDMI ch10000 USB HDMI Capture: read |0: file already closed
2026/09/14 17:25:50.049999 [TNR] Closed connection to M3U-USBHDMI for ch10000 USB HDMI Capture
2026/09/14 17:25:50.050545 [HLS] ffmpeg: capture-usb-hdmi: [aost#0:1/aac @ 000001fa1e954c40] Error submitting a packet to the muxer: Invalid argument
2026/09/14 17:25:50.050545 [HLS] ffmpeg: capture-usb-hdmi: [out#0/mpegts @ 000001fa1e967380] Error muxing a packet
2026/09/14 17:25:50.075832 [HLS] ffmpeg: capture-usb-hdmi: [out#0/mpegts @ 000001fa1e967380] Error writing trailer: Invalid argument
2026/09/14 17:25:50.075832 [HLS] ffmpeg: capture-usb-hdmi: [out#0/mpegts @ 000001fa1e967380] Error closing file: Invalid argument
FastChannels doesn't show any log entries for the time I tried to tune.
This is only a partial log, showing when the script is looping waiting for playback. We need to look at the entire log for this failed tune, which begins with calling prebmitune.sh. If you can't pull the whole think in the ah4c WebUI, then go to Portainer-Logs.
These log lines are concerning. Do you have the stream set for MPEG-TS in your new Custom Channels Source?
From Portainer
[EXECUTE] Finished running ./scripts/firetv/fastchannels/bmitune.sh in 1m11.904671996s
[ERR] Failed to run start script: exit status 1
Attempting network tune for device http://192.168.88.30:8089/devices/M3U-USBHDMI/channels/10000/stream.mpg?format=ts&codec=copy 192.168.88.113:5555 directv:1964
[EXECUTE] Running [./scripts/firetv/fastchannels/prebmitune.sh 192.168.88.113:5555 directv:1964]
[EXECUTE] Stdout: '[STARTING] prebmitune.sh 192.168.88.113:5555
already connected to 192.168.88.113:5555
'
[EXECUTE] Stderr: '+ TUNERIP=192.168.88.113:5555
+ echo '[STARTING] prebmitune.sh 192.168.88.113:5555'
+ [[ 192.168.88.113:5555 =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(:[0-9]+)?$ ]]
++ adb connect 192.168.88.113:5555
+ OUTPUT='already connected to 192.168.88.113:5555'
+ echo 'already connected to 192.168.88.113:5555'
+ [[ already connected to 192.168.88.113:5555 == *\u\n\a\b\l\e\ \t\o\ \c\o\n\n\e\c\t* ]]
+ [[ already connected to 192.168.88.113:5555 == *\f\a\i\l\e\d\ \t\o\ \c\o\n\n\e\c\t* ]]
+ exit 0
'
[EXECUTE] Finished running ./scripts/firetv/fastchannels/prebmitune.sh in 123.028704ms
[EXECUTE] Running [./scripts/firetv/fastchannels/bmitune.sh directv:1964 192.168.88.113:5555]
Tuner 0 is active - skipping
[ERR] Failed to tune device(s) not available
[GIN-debug] Request: 172.27.0.1 GET /play/tuner/directv:1964, latency: 200.454µs, status: 500
[IO] io.Copy: write tcp 172.27.0.2:7654->172.27.0.1:38218: write: broken pipe
[IOINFO] Successfully copied 914828 bytes
[IOINFO] Transfer speed: 0.3067267126465802 Mbits/second
Performing Close() for 192.168.88.113:5555
[EXECUTE] Running [./scripts/firetv/fastchannels/stopbmitune.sh 192.168.88.113:5555 directv:1964]
[EXECUTE] Stdout: '[STOPPING] stopbmitune.sh directv:1964 192.168.88.113:5555
'
[EXECUTE] Stderr: '+ TUNERIP=192.168.88.113:5555
+ STATION=directv:1964
+ echo '[STOPPING] stopbmitune.sh directv:1964 192.168.88.113:5555'
+ adb -s 192.168.88.113:5555 shell am start -n com.fastchannels.player/.PlaybackActivity --es command warm_stop --es channel_key directv:1964
+ exit 0
'
[EXECUTE] Finished running ./scripts/firetv/fastchannels/stopbmitune.sh in 252.130604ms
[GIN-debug] Request: 172.27.0.1 GET /play/tuner/directv:1964, latency: 24.242808222s, status: 200
Yes. Should it be HLS?
This one is fairly obvious -- no tuner available. Make sure channels doesn't show your "virtual encoder" as active. Also, ah4c needs to not have your single tuner locked.
No, MPEG-TS is correct.
The tuner shows it's authorized in the ah4c setup in FastChannels and I can see it in ah4c dashboard.
I don't think authorization is an issue. But I do need to see a complete failed tuning cycle on a tuner that's not "in use". Single tuners are tricky, as it takes a bit before they're released. Check ah4c and your "virtual encoder" source to confirm neither is holding a previous tune.
Ok - so what and how do I check?
I rebooted the firestick and this time when it tried to tune, it said transcoding started but only showed the firestick home page. I keep trying to get the failed tune log, but it changes too quickly in both Portainer and ah4c logs.
I guess I would set something up that's independent of CDVR. You could probably use OBS Studio or maybe even the Windows Camera app. Connect to the Capture Card with one of those, and then initiate a stream on any app (using the streaming stick's remote) that would be long enough to trigger this audio sync drift.
If it happens in that environment, then you'll need to try a different Capture Card -- if not, then you could try the same using your CDVR "virtual encoder". If that passes the same test (by launching an app using the streaming stick's remote, and letting it run long enough to confirm audio sync stability) -- then we'll have to dig into the last piece further.
I've been using this setup for coming up on two weeks with DTV, and haven't had any audio sync issues, and I've streamed individual channels for many hours -- so I feel like the last, FC Player piece is stable with DTV.
In Container logs, you can specify the number of log lines, and stop Portainer from auto-refreshing the logs, and go back 10,000 lines if you want. I don't want that many lines
, just the complete block from the failed tune.
