Can I use this to import the feed of hockey games from the FanDuel sports app into ChannelsDVR? If so, ELI5?
Much like ADBTuner, this project is intended to be used with linear channels for which there is guide data.
If FanDuel meets those first two requirements, the next consideration would be developing the scripts to do the virtual tuning.
It's not overly complicated, if you have experience with Bash scripting. However, no work has been done to support this particular app, so you'd need to be willing/able to do the work
@bnhf Does the fire tv live scripts work on the Prime Video app on Google TV or would something have to be developed?
Subbing to Fan Duel through Prime Channels adds the linear feed to the live tv guide.
I've never tested the firetv/livetv scripts on non firetv devices, but I doubt they would work. The concepts used for stepping through a live TV guide would likely be at least similar though.
The trickest part of the whole process on the FireTV, was that a unique M3U had to be created for each device, as each channel had its own unique device-specific identifier. Those M3Us were created at ah4c spin-up, and once created, everything functioned as usual.
Stepping through a Live TV guide is not a fast process, so you want to limit the number of channels to less than 30 if possible.
If the Google TV supports a way jump directly to a channel in the live guide (with search or channel numbers), that would make things way easier. No way to do that on the FireTV -- it was strictly a up/down arrow process.
New to channels, recently Iāve moved out of xfinity territory and into spectrum territory and with this they have discontinued cable card support for new accounts, Iāve tried to get them but they wonāt budge even with a fcc complaint. Has anyone explored this HDMI method with the cable companies boxes instead of a streaming device? It only costs me $10 per HD box on spectrum, it would be nice to have 3 of them each connected to a encoder/capture card in the server and the ability for channels to send IR remote commands to tune the box to the requested channel, similar to how channels will request an HD home run to tune to a channel. This would solve the issue of cable companies refusing to issue cable cards. I also have access to a Dish setup, and extra Joey boxes are only $5-$7 a month.
One thing I miss with my Xfinity+HDHR setup was the ability to stream any channel from anywhere, without the ridiculous āin homeā restrictions.
I haven't used this to send IR control requests but it should be possible with this. You'll probably have to do it through some extra hardware and curl.
NextPVR has this functionality built in and it works well so maybe use that and add it on as a Custom Channel?
@ChannelSam and maybe one or two others use ah4c with AppleTV boxes running the Spectrum app. I think this would be better than trying to capture from a stack of cable boxes using IR tuning.
And cheaper. Those box fees ain't cheap
My setup uses multiple used ATV 4k's (spent between $45-$55 for them on Ebay) that I installed Spectrum App on, LinkPi HDMI encoder and ah4c:appletv build. I have another ATV 4k waiting that I haven't but in the system yet.
Spectrum doesn't currently support 3rd party android and firetv hardware for their app.
Their is a Roku app but it doesn't support deeplinks or channel number inputs.
You could buy/rent the Spectrum Xumo boxes and send it IR commands or possibly adb commands if these boxes support that. I wasn't willing to pay for something that is just a "restricted" android box.
My setup works pretty flawlessly the only issue I have had is if you are on a channel longer than 4hours it brings up the still watching screen and even if you send pyatv remote commands it will not clear the dialog box. It keeps insisting you use a remote to respond and doesn't seem to see the commands coming in from the pyremote program as equivalent.
It is on my list to set up an IR emitter to send an IR command before this timer shows up but I have been side tracked and haven't gotten to it. The only time this is really needed is for really long movies or sporting events...I should have this done and know if it works before next years football season starts
Similarly I have setup RS232 by toying with the scripts and chatgpt, and ripped out the adb portion and replaced it with tcp commands to control legacy devices. Same concept will work with IR. I'm looking at upgrading my setup for directv osprey boxes with network IR emitters since adb is a pain for me every month or so when i need to reauth on the directv osprey boxes. I have been playing around with a global cache IP to IR device and it receives commands over a network and controls just about anything with IR. Worth looking at if you ran into similar quirks with adb. It is my only quirk so far.
I've been polishing up a new "autocrop" capability for ah4c. This is something that will appeal particularly to Xfinity customers that also have a LinkPi Encoder.
As Xfinity subscribers know, there are six premium movie channels offered, that are broadcast with black borders on all four sides. This is annoying to say the least, and generally results in those channels not being watched.
I though about using ffmpeg for this project, but that would mean using CPU/GPU power on a Docker host to re-process a stream already being encoded. It made more sense to me to do the needed cropping (while preserving the aspect ratio) along with the encoding. The downside is the need to use an encoder's API (which may not always be available), but LinkPi has one -- so I'm using it!
Here's what I'm doing:
For any channels specified in a new CROP_CHANNELS env var, when watching live or recording, the stream will be evaluated to determine the pixel dimensions of the viewing area (to get the aspect ratio), and to determine the pixel size of the black bars. The black bars will then be removed on the sides, and the top/bottom black bars reduced proportionally with the aspect ratio.
The process will then sleep for the length of time of the current airing, when the cropping will be removed briefly, to allow the next movie (or whatever) to begin so the process can be repeated. This allows for "marathon" viewing on a given premium channel, with autocrop adjustments made per event.
Recordings work the same way. Also, if you are watching one of these channels in real time, and tune away before the conclusion, cropping will be reset to zeros on the encoder.
If there's anyone interested in helping with some of the final testing on this, let me know, and I'll give you the details on the new Docker Compose required. I'm pretty happy with the way this is coming together, and given that I almost never watched these channels due to this black border nonsense, it's a nice upgrade.
Here's what it looks like "behind the scenes" (i.e. inside the container) when recording a channel using autocrop. Note there's also a script running that defeats the 4-hour Still Watching pop-ups:
root 1307 1 0 21:35 ? 00:00:00 /bin/bash ./scripts/firetv/xfinity/bmitune.sh SHOCe-65782923196768
root 1310 1307 0 21:35 ? 00:00:00 /bin/bash ./192.168.1.93/keep_watching.sh
root 1312 1310 0 21:35 ? 00:00:00 sleep 4h
root 1416 1 0 21:36 ? 00:00:00 /bin/bash /opt/192.168.1.52/stream0.sh
root 1426 1416 0 21:36 ? 00:00:00 sleep 9237
The stream0.sh script will reset the cropping, when the event's start_time+duration is reached. If one was tucking-in for back-to-back movies, or recording a marathon, the keep_watching script would keep the pop-ups away.
I am trying to get Direct TV Stream set up in AH4C using a fire tv stick 4k max
STREAMER_APP=scripts/firetv/dtvstream
For the source in Channels I have MPEG-TS and the URL of http://192.168.4.35:7654/m3u/dtvstream.m3u
I can view what is happening in my encoder page. If I click on a channel, the DTV app opens and sits there for quite awhile, then a keyboard appears and the channel name is entered. The channel opens and plays. Sometimes it will work and will continue to play, but usually it doesnāt. The app closes, then the firetv goes to sleep. I donāt see any problem in the AH4C log. It just calls stopbmitune.sh
I noticed that sometimes the search will bring up a list of programs, rather than the channel. SYFY and HGTV both did this. In the direct TV app I can manually tune to these stations, so it isnāt finding something like OnDemand
I tried dtvstreamdeeplinks.m3u, but I could not get it to work at all.
Ever since we've been able to tune with deeplinks, I haven't been maintaining the remote control emulation version. When DTV makes any changes to the app, the process typically needs tweaking.
The deeplink approach is really the way to go these days, though you do need to capture the deeplinks that are right for you -- which vary significantly by region and package.
If you haven't done that, look at this post, and several related posts after it:
The remote control emulation approach was good, when that was the only option -- but deeplinks are super reliable, faster, and less subject to app interface changes.
Just curious. I have a similar setup with spectrum on ATVs. I do not have the issue with the still watching message. I record sports all the time that are > 4 hours and have never seen that. In the Spectrum app settings under preferences, I have the Sleep Timer set to 12 hours. I have always assumed that is what this setting does. Is yours set that way?
@chasut
Funny you should mention it. This past week I was going through all the settings on the Spectrum App while upgrading/setting up another one on a different box and saw the 12 hour thing. I thought I had set them all for the longest time possible when I first set each one up but...
I don't know if the longest time possible was changed at some point during an App upgrade in the last year+ and I didn't realize it but my primary ATV 4k Tuner was set at 4hrs while the other one was set to 12 hours.
I did a test play and left it run for over 8 hours so I think that issue is probably solved.
I am still going to finish working on my IR control project.
My parts arrived from alixpress and digikey this week (that is why I was setting up another ATV I have, to use as a test bed)
I am attempting to build an ip to ir controller that uses an ESP32 and I believe it would be able to control up to 8 ir emitters that can send separate unique signals to different hardware.
Global Cache makes the IP2IR Ethernet to IR box but it costs at least $65 used on ebay and is usually running closer to $80 and up. It can only control 3 IR outputs.
If I don't use it for something now, I will at least have it in my back pocket just in case...I have now seen a couple xumo streaming boxes on ebay for $20 without a remote...I would never pay $60 for these basterized locked down android boxes...but at $20 I would consider them for Spectrum tuners if I need more tuners...I also worry that Spectrum will suddenly decide to disable deeplinks on ATV or just screw it up with an update.
I looked through the dtvstreamdeeplinks.m3u and the resourceId was correct for the stations that I pay for.
They are listed as
http://{{ .IPADDRESS }}/play/tuner/CNNHD~d3603aea-f5d8-e789-786c-43c5e8799428
Is this correct? The post you pointed to has a different format
I still have no joy.
That's the correct format -- though the ID portion is not correct for me, as I'm a satellite customer.
So what do you mean by no joy? Where is it failing? Posting some ah4c Portainer logs would probably be helpful. Restart the container, and try to tune to one channel, then grab the logs -- all the way back to container start so we can figure out what's going on.
And, just to be sure there's not something basic amiss, go ahead and post the env vars from your ah4c Portainer-Stack. Also a few details about your setup might be helpful, like what OS are you running CDVR on, and is Docker/Portainer on the same host?
Be sure to post your logs in a code block (3 backticks before and after the text) to keep things readable and compact.
EDIT: BTW, the difference in format with the Callsign and the ResourceID, is just to allow us to pass both values from the M3U to the scripts (separated by a tilde). Those two values are then used in the expected deeplink format when sent via adb.
For example, here's a complete container start and single channel tune I did, so you can see what it's supposed to look like:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.20.0.2 ah4c
192.168.110.50 firestick-rack1
192.168.110.192 firestick-rack2
192.168.110.41 firestick-rack3
192.168.110.162 firestick-rack4
192.168.110.116 firestick-travel2
192.168.110.130 encoder_48007
192.168.110.49 encoder_23393
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached
connected to firestick-rack1:5555
connected to firestick-rack2:5555
connected to firestick-rack3:5555
connected to firestick-rack4:5555
failed to connect to 'firestick-travel2:5555': Host is unreachable
Existing ./scripts/firetv/directv/prebmitune.sh found, and will be preserved
Existing ./scripts/firetv/dtvdeeplinks/prebmitune.sh found, and will be preserved
Existing ./scripts/firetv/directv/bmitune.sh found, and will be preserved
Existing ./scripts/firetv/dtvdeeplinks/bmitune.sh found, and will be preserved
Existing ./scripts/firetv/directv/stopbmitune.sh found, and will be preserved
Existing ./scripts/firetv/dtvdeeplinks/stopbmitune.sh found, and will be preserved
Existing directv.m3u found, and will be preserved
Existing dtvdeeplinks.m3u found, and will be preserved
Existing dtvosprey.m3u found, and will be preserved
Existing dtvstream.m3u found, and will be preserved
Existing dtvstreamdeeplinks.m3u found, and will be preserved
Existing foo-fighters.m3u found, and will be preserved
Existing fubo.m3u found, and will be preserved
Existing hulu.m3u found, and will be preserved
Existing livetv.m3u found, and will be preserved
Existing nbc.m3u found, and will be preserved
Existing npo.m3u found, and will be preserved
Existing pbs-seatac.m3u found, and will be preserved
Existing pbs-worcester.m3u found, and will be preserved
Existing silicondust.m3u found, and will be preserved
Existing sling.m3u found, and will be preserved
Existing spectrum.m3u found, and will be preserved
Existing xfinity.m3u found, and will be preserved
Existing youtubetv_shield.m3u found, and will be preserved
Existing youtubetv.m3u found, and will be preserved
[START] ah4c is starting
[ENV] Not loading env
[ENV] IPADDRESS htpc6:7654
[ENV] ALERT_SMTP_SERVER smtp.gmail.com:587
[ENV] ALERT_AUTH_SERVER smtp.gmail.com
[ENV] ALERT_EMAIL_FROM [Redacted]
[ENV] ALERT_EMAIL_PASS [Redacted]
[ENV] ALERT_EMAIL_TO [Redacted]
[ENV] ALERT_WEBHOOK_URL
[ENV] ALLOW_DEBUG_VIDEO_PREVIEW
[ENV] Creating tuner 1
[ENV] ENCODER1_URL http://encoder_48007/0.ts
[ENV] TUNER1_IP firestick-rack1:5555
[ENV] CMD1
[ENV] TEECMD1
[ENV] PRE SCRIPT ./scripts/firetv/dtvdeeplinks/prebmitune.sh
[ENV] START SCRIPT ./scripts/firetv/dtvdeeplinks/bmitune.sh
[ENV] STOP SCRIPT ./scripts/firetv/dtvdeeplinks/stopbmitune.sh
[ENV] REBOOT SCRIPT ./scripts/firetv/dtvdeeplinks/reboot.sh
[ENV] Creating tuner 2
[ENV] ENCODER2_URL http://encoder_48007/4.ts
[ENV] TUNER2_IP firestick-rack2:5555
[ENV] CMD2
[ENV] TEECMD2
[ENV] PRE SCRIPT ./scripts/firetv/dtvdeeplinks/prebmitune.sh
[ENV] START SCRIPT ./scripts/firetv/dtvdeeplinks/bmitune.sh
[ENV] STOP SCRIPT ./scripts/firetv/dtvdeeplinks/stopbmitune.sh
[ENV] REBOOT SCRIPT ./scripts/firetv/dtvdeeplinks/reboot.sh
[ENV] Creating tuner 3
[ENV] ENCODER3_URL http://encoder_48007/8.ts
[ENV] TUNER3_IP firestick-rack3:5555
[ENV] CMD3
[ENV] TEECMD3
[ENV] PRE SCRIPT ./scripts/firetv/dtvdeeplinks/prebmitune.sh
[ENV] START SCRIPT ./scripts/firetv/dtvdeeplinks/bmitune.sh
[ENV] STOP SCRIPT ./scripts/firetv/dtvdeeplinks/stopbmitune.sh
[ENV] REBOOT SCRIPT ./scripts/firetv/dtvdeeplinks/reboot.sh
[ENV] Creating tuner 4
[ENV] ENCODER4_URL http://encoder_48007/12.ts
[ENV] TUNER4_IP firestick-rack4:5555
[ENV] CMD4
[ENV] TEECMD4
[ENV] PRE SCRIPT ./scripts/firetv/dtvdeeplinks/prebmitune.sh
[ENV] START SCRIPT ./scripts/firetv/dtvdeeplinks/bmitune.sh
[ENV] STOP SCRIPT ./scripts/firetv/dtvdeeplinks/stopbmitune.sh
[ENV] REBOOT SCRIPT ./scripts/firetv/dtvdeeplinks/reboot.sh
[ENV] Creating tuner 5
[ENV] ENCODER5_URL http://encoder_23393/0.ts
[ENV] TUNER5_IP firestick-travel2:5555
[ENV] CMD5
[ENV] TEECMD5
[ENV] PRE SCRIPT ./scripts/firetv/dtvdeeplinks/prebmitune.sh
[ENV] START SCRIPT ./scripts/firetv/dtvdeeplinks/bmitune.sh
[ENV] STOP SCRIPT ./scripts/firetv/dtvdeeplinks/stopbmitune.sh
[ENV] REBOOT SCRIPT ./scripts/firetv/dtvdeeplinks/reboot.sh
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] GET /favicon.ico --> github.com/gin-gonic/gin.(*RouterGroup).StaticFile.func1 (2 handlers)
[GIN-debug] HEAD /favicon.ico --> github.com/gin-gonic/gin.(*RouterGroup).StaticFile.func1 (2 handlers)
[GIN-debug] Loaded HTML Templates (11):
- editm3u.html
- logs.html
- m3us.html
- status_and_logs.html
- config.html
- edit.html
- index.html
- routes.html
- status.html
- stream.html
-
[GIN-debug] GET /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (2 handlers)
[GIN-debug] HEAD /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (2 handlers)
[GIN-debug] GET / --> main.run.func1 (2 handlers)
[GIN-debug] GET /routes --> main.run.func2 (2 handlers)
[GIN-debug] GET /play/tuner:tuner/:channel --> main.run.func3 (2 handlers)
[GIN-debug] GET /m3u/:channel --> main.run.func4 (2 handlers)
[GIN-debug] GET /env --> main.run.func5 (2 handlers)
[GIN-debug] GET /logs/text --> main.run.func6 (2 handlers)
[GIN-debug] GET /logs --> main.run.func7 (2 handlers)
[GIN-debug] GET /status/andlogs --> main.run.func8 (2 handlers)
[GIN-debug] GET /logs/json --> main.run.func9 (2 handlers)
[GIN-debug] GET /video --> main.run.func10 (2 handlers)
[GIN-debug] GET /status --> main.statusPageHandler (2 handlers)
[GIN-debug] GET /api/status --> main.apiStatusHandler (2 handlers)
[GIN-debug] GET /stream --> main.run.func11 (2 handlers)
[GIN-debug] GET /test/webhook --> main.run.func12 (2 handlers)
[GIN-debug] GET /test/email --> main.run.func13 (2 handlers)
[GIN-debug] GET /status/channelsactivity --> main.run.func14 (2 handlers)
[GIN-debug] GET /edit --> main.run.func15 (2 handlers)
[GIN-debug] POST /save --> main.run.func16 (2 handlers)
[GIN-debug] POST /m3usave/:file --> main.run.func17 (2 handlers)
[GIN-debug] GET /m3us --> main.run.func18 (2 handlers)
[GIN-debug] GET /editm3u/:file --> main.run.func19 (2 handlers)
[GIN-debug] GET /config --> main.run.func20 (2 handlers)
[GIN-debug] POST /configsave --> main.run.func21 (2 handlers)
[START] ah4c is ready
[GIN-debug] Listening and serving HTTP on :7654
> ws-scrcpy@0.8.1-dev start
> node ./index.js
Listening on:
http://ah4c:8000 http://localhost:8000
http://127.0.0.1:8000 http://172.20.0.2:8000
http://[::1]:8000
[firestick-rack4:5555] start server: "24184"
[GIN-debug] Request: 100.98.232.107 GET /static/logos/exit.png, latency: 345.141Āµs, status: 200
[GIN-debug] Request: 100.98.232.107 GET /static/logos/reboot.png, latency: 452.634Āµs, status: 200
Attempting network tune for device http://encoder_48007/0.ts firestick-rack1:5555 HBOwHD~6da0d147-0635-4fe0-a003-19c6dc089af5
[EXECUTE] Running [./scripts/firetv/dtvdeeplinks/prebmitune.sh firestick-rack1:5555 HBOwHD~6da0d147-0635-4fe0-a003-19c6dc089af5]
[EXECUTE] Stdout: 'already connected to firestick-rack1:5555
Starting: Intent { cmp=com.att.tv/com.clientapp.MainActivity }
Starting com.att.tv on firestick-rack1:5555
prebmitune.sh is exiting for firestick-rack1:5555 with exit code 0
'
[EXECUTE] Stderr: '+ streamerIP=firestick-rack1:5555
+ streamerNoPort=firestick-rack1
+ adbTarget='adb -s firestick-rack1:5555'
+ mkdir -p firestick-rack1
+ trap finish EXIT
+ main
+ adbConnect
+ adb connect firestick-rack1:5555
+ local -i adbMaxRetries=2
+ local -i adbCounter=0
+ true
+ adb -s firestick-rack1:5555 shell input keyevent KEYCODE_WAKEUP
+ local adbEventSuccess=0
+ [[ 0 -eq 0 ]]
+ break
e
+ packageLaunch=com.clientapp.MainActivity
+ packageName=com.att.tv
++ adb -s firestick-rack1:5555 shell pidof com.att.tv
+ packagePID=
+ '[' '!' -z ']'
+ adb -s firestick-rack1:5555 shell am start -n com.att.tv/com.clientapp.MainActivity
+ echo 'Starting com.att.tv on firestick-rack1:5555'
+ finish
+ echo 'prebmitune.sh is exiting for firestick-rack1:5555 with exit code 0'
'
[EXECUTE] Finished running ./scripts/firetv/dtvdeeplinks/prebmitune.sh in 1.41769269s
[EXECUTE] Running [./scripts/firetv/dtvdeeplinks/bmitune.sh HBOwHD~6da0d147-0635-4fe0-a003-19c6dc089af5 firestick-rack1:5555]
[IO] io.Copy: write tcp 172.20.0.2:7654->100.111.146.77:58369: write: broken pipe
[IOINFO] Successfully copied 57742340 bytes
[IOINFO] Transfer speed: 4.243280688625403 Mbits/second
Performing Close() for firestick-rack1:5555
[EXECUTE] Running [./scripts/firetv/dtvdeeplinks/stopbmitune.sh firestick-rack1:5555 HBOwHD~6da0d147-0635-4fe0-a003-19c6dc089af5]
[EXECUTE] Stdout: 'Current PID for this script is 134
Not a special channel (exit nor reboot)
Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...
Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...
Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...
Active audio stream detected with -17.2 LUF.
Starting: Intent { act=android.intent.action.VIEW (has data) cmp=com.att.tv/com.clientapp.MainActivity }
bmitune.sh is exiting for firestick-rack1:5555 with exit code 0
'
[EXECUTE] Stderr: '++ echo HBOwHD~6da0d147-0635-4fe0-a003-19c6dc089af5
++ awk -F~ '{print $2}'
+ channelID=6da0d147-0635-4fe0-a003-19c6dc089af5
++ echo HBOwHD~6da0d147-0635-4fe0-a003-19c6dc089af5
++ awk -F~ '{print $1}'
+ channelName=HBOwHD
+ specialID=HBOwHD
+ streamerIP=firestick-rack1:5555
+ streamerNoPort=firestick-rack1
+ adbTarget='adb -s firestick-rack1:5555'
+ packageName=com.att.tv
+ packageAction=com.clientapp.MainActivity
+ [[ false == '' ]]
+ speedMode=false
+ trap finish EXIT
+ main
+ updateReferenceFiles
+ mkdir -p firestick-rack1
+ [[ -f firestick-rack1/stream_stopped ]]
+ echo 0
+ [[ -f firestick-rack1/last_channel ]]
+ echo 0
+ echo 134
+ echo 'Current PID for this script is 134'
+ matchEncoderURL
+ case "$streamerIP" in
+ encoderURL=http://encoder_48007/0.ts
+ specialChannels
+ '[' HBOwHD = exit ']'
+ '[' HBOwHD = reboot ']'
+ [[ -f firestick-rack1/adbCommunicationFail ]]
+ echo 'Not a special channel (exit nor reboot)'
+ launchDelay
+ local lastChannel
+ local lastAwake
+ local timeNow
+ local timeElapsed
+ local maxTime=14400
+ lastChannel=0
+ lastAwake=0
++ date +%s
+ timeNow=1742180256
+ timeElapsed=1742180256
+ '[' -f firestick-rack1/adbAppRunning ']'
+ activeAudioCheck 42 true 0 1
++ date +%s
+ local startTime=1742180256
+ local maxDuration=42
+ local minimumLoudness=-50
+ local sleepBeforeAudioCheck=0
+ local sleepAfterAudioCheck=1
+ local preTuneAudioCheck=true
+ true
0
++ ffmpeg -t 1 -i http://encoder_48007/0.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I: /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ (( 1742180261 - 1742180256 > 42 ))
++ echo '-70.0 > -50'
++ bc -l
+ (( 0 ))
+ echo 'Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...'
1
+ true
0
++ ffmpeg -t 1 -i http://encoder_48007/0.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I: /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ (( 1742180268 - 1742180256 > 42 ))
++ echo '-70.0 > -50'
++ bc -l
+ (( 0 ))
+ echo 'Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...'
1
+ true
0
++ ffmpeg -t 1 -i http://encoder_48007/0.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I: /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ (( 1742180274 - 1742180256 > 42 ))
++ echo '-70.0 > -50'
++ bc -l
+ (( 0 ))
+ echo 'Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...'
1
+ true
0
++ ffmpeg -t 1 -i http://encoder_48007/0.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I: /{print $2}'
+ checkLoudness=-17.2
++ date +%s
+ (( 1742180280 - 1742180256 > 42 ))
++ echo '-17.2 > -50'
++ bc -l
+ (( 1 ))
+ echo 'Active audio stream detected with -17.2 LUF.'
+ break
+ echo HBOwHD
+ tuneChannel
+ adb -s firestick-rack1:5555 shell am start -n com.att.tv/com.clientapp.MainActivity dtvnow://deeplink.directvnow.com/play/channel/HBOwHD/6da0d147-0635-4fe0-a003-19c6dc089af5
Warning: Activity not started, intent has been delivered to currently running top-most instance.
+ echo -e '#!/bin/bash\n\nwhile true; do sleep 4h; adb -s firestick-rack1:5555 shell am start -n com.att.tv/com.clientapp.MainActivity dtvnow://deeplink.directvnow.com/play/channel/HBOwHD/6da0d147-0635-4fe0-a003-19c6dc089af5; done'
+ chmod +x ./firestick-rack1/keep_watching.sh
+ finish
+ echo 'bmitune.sh is exiting for firestick-rack1:5555 with exit code 0'
+ [[ -n 4h ]]
+ nohup ./firestick-rack1/keep_watching.sh
Terminated
'
[EXECUTE] Finished running ./scripts/firetv/dtvdeeplinks/bmitune.sh in 1m48.869562694s
[EXECUTE] Stdout: 'Streaming stopped for firestick-rack1:5555
Sleep initiated for firestick-rack1:5555
firestick-rack1/stream_stopped written with epoch stop time
'
[EXECUTE] Stderr: '+ streamerIP=firestick-rack1:5555
+ streamerNoPort=firestick-rack1
+ adbTarget='adb -s firestick-rack1:5555'
+ packageName=com.att.tv
+ [[ false == '' ]]
+ speedMode=false
+ main
+ bmituneDone
+ bmitunePID=134
++ pgrep -f firestick-rack1/keep_watching.sh
+ keepWatchingPID=217
++ ps -o ppid= -p 217
+ keepWatchingPPID=' 216'
++ pgrep -P 217
+ keepWatchingCPID=218
+ ps -p 134
+ [[ -n 4h ]]
+ pkill -P 216
+ kill 218
+ rm ./firestick-rack1/keep_watching.sh
p
+ [[ false == \t\r\u\e ]]
+ stop='am force-stop com.att.tv'
+ adb -s firestick-rack1:5555 shell am force-stop com.att.tv
2
+ echo 'Streaming stopped for firestick-rack1:5555'
+ adbSleep
+ sleep='input keyevent KEYCODE_SLEEP'
+ adb -s firestick-rack1:5555 shell input keyevent KEYCODE_SLEEP
+ echo 'Sleep initiated for firestick-rack1:5555'
+ date +%s
+ echo 'firestick-rack1/stream_stopped written with epoch stop time'
'
[EXECUTE] Finished running ./scripts/firetv/dtvdeeplinks/stopbmitune.sh in 3.016701781s
[GIN-debug] Request: 100.111.146.77 GET /play/tuner/HBOwHD~6da0d147-0635-4fe0-a003-19c6dc089af5, latency: 1m53.355905624s, status: 200
I have Docker Desktop and Portainer in Win11
When I clicked on CNN the DTV app opened, but stayed on that home page. The keyboard appeared after awhile, but no text was entered. Then the app closed.
My env
TAG=latest
DOMAIN=localdomain
ADBS_PORT=5037
HOST_PORT=7654
WSCR_PORT=7655
IPADDRESS=192.168.4.35:7654
NUMBER_TUNERS=1
TUNER1_IP=192.168.4.225:5555
ENCODER1_URL=http://192.168.4.89:81/ts/1_0
TUNER2_IP=
ENCODER2_URL=
TUNER3_IP=
ENCODER3_URL=
TUNER4_IP=
ENCODER4_URL=
TUNER5_IP=
ENCODER5_URL=
STREAMER_APP=scripts/firetv/dtvstream
CHANNELSIP=192.168.4.213
ALERT_SMTP_SERVER=
ALERT_AUTH_SERVER=
ALERT_EMAIL_FROM=
ALERT_EMAIL_PASS=
ALERT_EMAIL_TO=
UPDATE_SCRIPTS=true
UPDATE_M3US=ftrue
TZ=US/Eastern
SPEED_MODE=false
KEEP_WATCHING=4h
HOST_DIR=/data