ADBTuner: A "channel tuning" application for networked Google TV / Android TV devices

Could you please take a look at my file for package name to use and if it should support deeplinks ? The one from droplist (allente.b2c.tvclient) does not open the app

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1116000517" android:versionName="1.22.4.0" android:compileSdkVersion="33" android:compileSdkVersionCodename="13" package="allente.b2c.tvclient" platformBuildVersionCode="33" platformBuildVersionName="13" xmlns:ns1="http://schemas.android.com/apk/distribution" ns1:requiredSplitTypes="base__abi,base__density" xmlns:ns2="http://schemas.android.com/apk/distribution" ns2:splitTypes="">
    <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="33"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="com.google.android.leanbacklauncher.recommendations.permission.RECOMMENDATIONS"/>
    <uses-permission android:name="com.netflix.ninja.permission.TILES"/>
    <uses-permission android:name="com.netflix.ninja.permission.NETFLIX_KEY"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-feature android:name="android.software.leanback" android:required="true"/>
    <uses-feature android:name="android.software.live_tv" android:required="true"/>
    <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
    <uses-feature android:name="android.hardware.wifi" android:required="false"/>
    <queries>
        <package android:name="no.nrk.tv"/>
        <package android:name="no.tv2.sumo"/>
        <package android:name="com.viaplay.android"/>
        <package android:name="se.svt.android.svtplay"/>
        <package android:name="com.hbo.hbonow"/>
        <package android:name="dk.dr.tvplayer"/>
        <package android:name="fi.mtvkatsomo"/>
    </queries>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
    <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
    <uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA"/>
    <uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA"/>
    <uses-permission android:name="com.android.providers.tv.permission.ACCESS_ALL_EPG_DATA"/>
    <uses-permission android:name="com.technicolor.android.user.provider.permission.READ_USER_DATA"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
    <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"/>
    <uses-permission android:name="com.netflix.ninja.permission.TOKEN"/>
    <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30"/>
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE"/>
    <application android:theme="@style/AppTheme" android:label="@string/app_name" android:icon="@mipmap/allente_app_logo" android:name="tv.threess.threeready.app.App" android:allowBackup="false" android:largeHeap="true" android:banner="@drawable/allente_banner" android:extractNativeLibs="false" android:networkSecurityConfig="@xml/network_security_config" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:isSplitRequired="true">
        <meta-data android:name="firebase_performance_logcat_enabled" android:value="true"/>
        <meta-data android:name="firebase_crashlytics_collection_enabled" android:value="true"/>
        <activity android:name="tv.threess.threeready.ui.generic.activity.MainActivity" android:exported="true" android:launchMode="singleTask" android:configChanges="keyboard|keyboardHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <action android:name="tv.threess.threeready.ui.SEARCH_RESULT"/>
                <action android:name="tv.threess.threeready.ui.VIEW_AUDIO_SETTINGS"/>
                <action android:name="tv.threess.threeready.ui.VIEW_CHANNEL_SEARCH_SETTINGS"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="@string/scheme" android:pathPrefix="@string/path_prefix_mini_epg"/>
                <data android:scheme="@string/scheme" android:path="@string/path_live" android:pathPrefix="@string/path_prefix_play"/>
                <data android:scheme="@string/scheme" android:pathPrefix="@string/path_prefix_app"/>
            </intent-filter>
        </activity>
        <receiver android:name="tv.threess.threeready.ui.generic.view.DayChangedBroadcastReceiver" android:enabled="true" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.TIME_SET"/>
            </intent-filter>
        </receiver>
        <provider android:name="tv.threess.threeready.data.allente.search.AllenteGlobalSearchProvider" android:enabled="true" android:exported="true" android:authorities="@string/global_search_provider">
            <meta-data android:name="SupportedSwitchActionType" android:value="CHANNEL|TVINPUT"/>
        </provider>
        <provider android:name="tv.threess.threeready.data.config.ConfigProvider" android:enabled="true" android:exported="true" android:authorities="@string/config_provider"/>
        <provider android:name="tv.threess.threeready.data.log.EventProvider" android:enabled="true" android:exported="false" android:authorities="@string/event_provider"/>
        <service android:name="tv.threess.threeready.data.log.EventService" android:enabled="true" android:exported="false"/>
        <provider android:name="tv.threess.threeready.data.tv.TvProvider" android:enabled="true" android:exported="false" android:authorities="@string/tv_provider"/>
        <provider android:name="tv.threess.threeready.data.pvr.PvrProvider" android:enabled="true" android:exported="false" android:authorities="@string/pvr_provider"/>
        <provider android:name="tv.threess.threeready.data.vod.VodProvider" android:enabled="true" android:exported="false" android:authorities="@string/vod_provider"/>
        <receiver android:name="tv.threess.threeready.data.netflix.receiver.NetflixAuthenticationReceiver" android:enabled="true" android:exported="true">
            <intent-filter>
                <action android:name="com.netflix.ninja.intent.action.TOKEN_REQUEST"/>
            </intent-filter>
        </receiver>
        <service android:name="com.google.firebase.components.ComponentDiscoveryService" android:exported="false" android:directBootAware="true">
            <meta-data android:name="com.google.firebase.components:com.google.firebase.crashlytics.CrashlyticsRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
            <meta-data android:name="com.google.firebase.components:com.google.firebase.perf.FirebasePerfRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
            <meta-data android:name="com.google.firebase.components:com.google.firebase.analytics.connector.internal.AnalyticsConnectorRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
            <meta-data android:name="com.google.firebase.components:com.google.firebase.remoteconfig.RemoteConfigRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
            <meta-data android:name="com.google.firebase.components:com.google.firebase.installations.FirebaseInstallationsRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
            <meta-data android:name="com.google.firebase.components:com.google.firebase.datatransport.TransportRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
            <meta-data android:name="com.google.firebase.components:com.google.firebase.abt.component.AbtRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
        </service>
        <provider android:name="androidx.startup.InitializationProvider" android:exported="false" android:authorities="allente.b2c.tvclient.androidx-startup">
            <meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup"/>
            <meta-data android:name="androidx.emoji2.text.EmojiCompatInitializer" android:value="androidx.startup"/>
            <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup"/>
        </provider>
        <service android:name="androidx.work.impl.background.systemalarm.SystemAlarmService" android:enabled="@bool/enable_system_alarm_service_default" android:exported="false" android:directBootAware="false"/>
        <service android:name="androidx.work.impl.background.systemjob.SystemJobService" android:permission="android.permission.BIND_JOB_SERVICE" android:enabled="@bool/enable_system_job_service_default" android:exported="true" android:directBootAware="false"/>
        <service android:name="androidx.work.impl.foreground.SystemForegroundService" android:enabled="@bool/enable_system_foreground_service_default" android:exported="false" android:directBootAware="false"/>
        <receiver android:name="androidx.work.impl.utils.ForceStopRunnable$BroadcastReceiver" android:enabled="true" android:exported="false" android:directBootAware="false"/>
        <receiver android:name="androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryChargingProxy" android:enabled="false" android:exported="false" android:directBootAware="false">
            <intent-filter>
                <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
                <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
            </intent-filter>
        </receiver>
        <receiver android:name="androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryNotLowProxy" android:enabled="false" android:exported="false" android:directBootAware="false">
            <intent-filter>
                <action android:name="android.intent.action.BATTERY_OKAY"/>
                <action android:name="android.intent.action.BATTERY_LOW"/>
            </intent-filter>
        </receiver>
        <receiver android:name="androidx.work.impl.background.systemalarm.ConstraintProxy$StorageNotLowProxy" android:enabled="false" android:exported="false" android:directBootAware="false">
            <intent-filter>
                <action android:name="android.intent.action.DEVICE_STORAGE_LOW"/>
                <action android:name="android.intent.action.DEVICE_STORAGE_OK"/>
            </intent-filter>
        </receiver>
        <receiver android:name="androidx.work.impl.background.systemalarm.ConstraintProxy$NetworkStateProxy" android:enabled="false" android:exported="false" android:directBootAware="false">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
            </intent-filter>
        </receiver>
        <receiver android:name="androidx.work.impl.background.systemalarm.RescheduleReceiver" android:enabled="false" android:exported="false" android:directBootAware="false">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <action android:name="android.intent.action.TIME_SET"/>
                <action android:name="android.intent.action.TIMEZONE_CHANGED"/>
            </intent-filter>
        </receiver>
        <receiver android:name="androidx.work.impl.background.systemalarm.ConstraintProxyUpdateReceiver" android:enabled="@bool/enable_system_alarm_service_default" android:exported="false" android:directBootAware="false">
            <intent-filter>
                <action android:name="androidx.work.impl.background.systemalarm.UpdateProxies"/>
            </intent-filter>
        </receiver>
        <receiver android:name="androidx.work.impl.diagnostics.DiagnosticsReceiver" android:permission="android.permission.DUMP" android:enabled="true" android:exported="true" android:directBootAware="false">
            <intent-filter>
                <action android:name="androidx.work.diagnostics.REQUEST_DIAGNOSTICS"/>
            </intent-filter>
        </receiver>
        <meta-data android:name="com.bumptech.glide.integration.okhttp3.OkHttpGlideModule" android:value="GlideModule"/>
        <receiver android:name="com.google.android.gms.measurement.AppMeasurementReceiver" android:enabled="true" android:exported="false"/>
        <service android:name="com.google.android.gms.measurement.AppMeasurementService" android:enabled="true" android:exported="false"/>
        <service android:name="com.google.android.gms.measurement.AppMeasurementJobService" android:permission="android.permission.BIND_JOB_SERVICE" android:enabled="true" android:exported="false"/>
        <provider android:name="com.google.firebase.provider.FirebaseInitProvider" android:exported="false" android:authorities="allente.b2c.tvclient.firebaseinitprovider" android:initOrder="100" android:directBootAware="true"/>
        <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
        <service android:name="androidx.room.MultiInstanceInvalidationService" android:exported="false" android:directBootAware="true"/>
        <service android:name="com.google.android.datatransport.runtime.backends.TransportBackendDiscovery" android:exported="false">
            <meta-data android:name="backend:com.google.android.datatransport.cct.CctBackendFactory" android:value="cct"/>
        </service>
        <service android:name="com.google.android.datatransport.runtime.scheduling.jobscheduling.JobInfoSchedulerService" android:permission="android.permission.BIND_JOB_SERVICE" android:exported="false"/>
        <receiver android:name="com.google.android.datatransport.runtime.scheduling.jobscheduling.AlarmManagerSchedulerBroadcastReceiver" android:exported="false"/>
        <provider android:name="com.conviva.platforms.android.ProcessLaunchProvider" android:exported="false" android:authorities="allente.b2c.tvclient.ProcessLaunchProvider"/>
        <meta-data android:name="com.android.vending.splits.required" android:value="true"/>
        <meta-data android:name="com.android.stamp.source" android:value="https://play.google.com/store"/>
        <meta-data android:name="com.android.stamp.type" android:value="STAMP_TYPE_DISTRIBUTION_APK"/>
        <meta-data android:name="com.android.vending.splits" android:resource="@xml/splits0"/>
        <meta-data android:name="com.android.vending.derived.apk.id" android:value="3"/>
    </application>
</manifest>

Possibly.
In adbtuner the package name should be allente.b2c.tvclient.
The URL you will be looking for should contain /live

AndroidManifest.xml

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:pathPrefix="@string/path_prefix_mini_epg" android:scheme="@string/scheme"/>
    <data android:path="@string/path_live" android:pathPrefix="@string/path_prefix_play" android:scheme="@string/scheme"/>
    <data android:pathPrefix="@string/path_prefix_app" android:scheme="@string/scheme"/>
</intent-filter>


strings.xml

<string name="path_prefix_mini_epg">/mini-epg</string>
<string name="scheme">allente</string>
<string name="path_live">/live</string>
<string name="path_prefix_play">/play</string>

Thanks but , allready tested allente.b2c.tvclient , and it does not open the app. and the url i´ve tested looks like this: https://tv.allente.se/play/live/20001

If the app doesn’t open that would indicate that you may not be using the correct URL for deep linked content. It needs to match the pattern as described in that XML segment I posted.

I believe it needs to be something like allente://play/live or allente://mini-epg/.
(yes, allente:// instead of https)

1 Like

I figured as much, but it was worth a try. Now I have a lot of reading to do on ah4c
Thanks

Just started a fresh thread on ah4c, in the interest of reducing the startup reading/research:

2 Likes

It does work. Fire TV shows that HDCP alert when trying 4K and when you hit Continue it serves the 1080p stream.

Thanks ! allente.b2c.tvclient with allente://play/live/20001 opens the app and plays the channel for maybe 20 seconds and then closes the stream.
Is that the case because i don`t have any hdmi encoder yet? I´ve just wanted to know all was working before buying the PiLink.

If you want 4K you will need an intermediate device to strip HDCP 2.x. I’m not familiar with which devices are best, but have seen such mentioned in channels forum.

2 Likes

The docker logs might provide more insight.
If you haven't yet, try enabling compatibility mode for that channel in ADBTuner. It might be closing the stream and giving up because it can't detect the video playback.

After ages of perfect functioning with ADBTuner, I'm back with sadly timeouts. All that changed was I dropped from two tuners to one. I did try updating to the newest build (at the time of writing!). Any ideas from the logs?

INFO:     Started server process [1]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
2024-02-01 15:58:23.950 - server - ADBTuner setup complete.
INFO:     Uvicorn running on http://0.0.0.0:5592 (Press CTRL+C to quit)
2024-02-01 15:58:40.159 - uvicorn.access - 192.168.6.61:53000 - "GET / HTTP/1.1" 200
2024-02-01 15:58:40.214 - uvicorn.access - 192.168.6.61:53000 - "GET /css/style.css?t=1706803120 HTTP/1.1" 200
2024-02-01 15:58:40.235 - uvicorn.access - 192.168.6.61:53000 - "GET /js/main.js?t=1706803120 HTTP/1.1" 200
2024-02-01 15:58:40.287 - lib.adb - ADB: Connecting to device (attempt 1).
2024-02-01 15:58:40.295 - lib.adb - ADB: Connecting to device (attempt 1).
2024-02-01 15:58:40.385 - lib.adb - ADB: Connected.
2024-02-01 15:58:40.385 - lib.adb - ADB: 192.168.6.199 - dumpsys display
2024-02-01 15:58:40.385 - lib.adb - ADB: Connected.
2024-02-01 15:58:40.385 - lib.adb - ADB: 192.168.6.199 - pm list packages -3
2024-02-01 15:58:40.450 - lib.adb - ADB: 192.168.6.199 - getprop ro.build.version.release
2024-02-01 15:58:40.461 - uvicorn.access - 192.168.6.61:53002 - "GET /admin/tuner/installed-packages?_=1706803120180 HTTP/1.1" 200
2024-02-01 15:58:40.496 - lib.adb - ADB: Android Version: 12.0.
2024-02-01 15:58:40.509 - httpx - HTTP Request: GET http://192.168.6.198/ts/1_0 "HTTP/1.0 200 Ok"
2024-02-01 15:58:41.542 - uvicorn.access - 192.168.6.61:53000 - "GET /admin/tuner/metadata?_=1706803120178 HTTP/1.1" 200
2024-02-01 16:01:42.968 - server - Reserved tuner 2
2024-02-01 16:01:42.968 - server - Using tuner id: 2
2024-02-01 16:01:42.968 - uvicorn.access - 192.168.6.248:54700 - "GET /stream/20 HTTP/1.1" 307
2024-02-01 16:01:42.970 - server - Tuner: Tuning to Fubo Sports 8 on Chromecast Fubo 2
2024-02-01 16:01:42.971 - lib.adb - ADB: Connecting to device (attempt 1).
2024-02-01 16:01:43.058 - lib.adb - ADB: Connected.
2024-02-01 16:01:43.059 - lib.adb - ADB: 192.168.6.199 - dumpsys display
2024-02-01 16:01:43.125 - lib.adb - ADB: 192.168.6.199 - getprop ro.build.version.release
2024-02-01 16:01:43.172 - lib.adb - ADB: Android Version: 12.0.
2024-02-01 16:01:43.172 - lib.adb - ADB: 192.168.6.199 - pm list packages -3
2024-02-01 16:01:43.242 - lib.adb - ADB: 192.168.6.199 - pidof com.fubo.firetv.screen
2024-02-01 16:01:43.353 - lib.adb - ADB: Stopping media playback.
2024-02-01 16:01:43.353 - lib.adb - ADB: 192.168.6.199 - input keyevent KEYCODE_MEDIA_STOP
2024-02-01 16:01:43.427 - lib.adb - ADB: 192.168.6.199 - am start -a android.intent.action.VIEW -d "https://link.fubo.tv/al1%3Fv%3D1%26a%3Dplay%26t%3Dchannel%26channel_id%3D1238520106" com.fubo.firetv.screen
2024-02-01 16:01:45.074 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-01 16:01:47.942 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-01 16:01:51.262 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-01 16:01:54.333 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-01 16:01:57.407 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-01 16:01:58.074 - lib.adb - Checking for profile screen
2024-02-01 16:02:00.380 - lib.adb - Checking for profile screen
2024-02-01 16:02:03.041 - lib.adb - Checking for profile screen
2024-02-01 16:02:05.517 - lib.adb - Checking for profile screen
2024-02-01 16:02:07.948 - lib.adb - Checking for profile screen
2024-02-01 16:02:11.224 - lib.adb - Checking for profile screen
2024-02-01 16:02:13.764 - server - Tuner: Could not detect playback state. Giving up after 30.79 seconds. Display was on, application (com.fubo.firetv.screen) was running.
2024-02-01 16:02:13.764 - server - Released tuner 2
2024-02-01 16:02:13.764 - lib.adb - ADB: Stopping media playback.
2024-02-01 16:02:13.764 - lib.adb - ADB: 192.168.6.199 - input keyevent KEYCODE_MEDIA_STOP
2024-02-01 16:02:13.860 - lib.adb - ADB: 192.168.6.199 - input keyevent KEYCODE_MEDIA_PAUSE
2024-02-01 16:11:18.132 - server - Reserved tuner 2
2024-02-01 16:11:18.132 - server - Using tuner id: 2
2024-02-01 16:11:18.132 - uvicorn.access - 192.168.6.248:44986 - "GET /stream/20 HTTP/1.1" 307
2024-02-01 16:11:18.134 - server - Tuner: Tuning to Fubo Sports 8 on Chromecast Fubo 2
2024-02-01 16:11:18.134 - lib.adb - ADB: Connecting to device (attempt 1).
2024-02-01 16:11:18.321 - lib.adb - ADB: Connected.
2024-02-01 16:11:18.321 - lib.adb - ADB: 192.168.6.199 - dumpsys display
2024-02-01 16:11:18.384 - lib.adb - ADB: 192.168.6.199 - getprop ro.build.version.release
2024-02-01 16:11:18.432 - lib.adb - ADB: Android Version: 12.0.
2024-02-01 16:11:18.432 - lib.adb - ADB: 192.168.6.199 - pm list packages -3
2024-02-01 16:11:18.508 - lib.adb - ADB: 192.168.6.199 - pidof com.fubo.firetv.screen
2024-02-01 16:11:18.615 - lib.adb - ADB: Stopping media playback.
2024-02-01 16:11:18.615 - lib.adb - ADB: 192.168.6.199 - input keyevent KEYCODE_MEDIA_STOP
2024-02-01 16:11:18.691 - lib.adb - ADB: 192.168.6.199 - am start -a android.intent.action.VIEW -d "https://link.fubo.tv/al1%3Fv%3D1%26a%3Dplay%26t%3Dchannel%26channel_id%3D1238520106" com.fubo.firetv.screen
2024-02-01 16:11:20.336 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-01 16:11:23.172 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-01 16:11:26.446 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-01 16:11:29.737 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-01 16:11:32.802 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-01 16:11:33.271 - lib.adb - Checking for profile screen
2024-02-01 16:11:35.759 - lib.adb - Checking for profile screen
2024-02-01 16:11:38.221 - lib.adb - Checking for profile screen
2024-02-01 16:11:40.678 - lib.adb - Checking for profile screen
2024-02-01 16:11:42.934 - lib.adb - Checking for profile screen
2024-02-01 16:11:45.279 - lib.adb - Checking for profile screen
2024-02-01 16:11:47.645 - lib.adb - Checking for profile screen
2024-02-01 16:11:49.855 - server - Tuner: Could not detect playback state. Giving up after 31.72 seconds. Display was on, application (com.fubo.firetv.screen) was running.
2024-02-01 16:11:49.855 - server - Released tuner 2
2024-02-01 16:11:49.855 - lib.adb - ADB: Stopping media playback.
2024-02-01 16:11:49.855 - lib.adb - ADB: 192.168.6.199 - input keyevent KEYCODE_MEDIA_STOP
2024-02-01 16:11:49.957 - lib.adb - ADB: 192.168.6.199 - input keyevent KEYCODE_MEDIA_PAUSE
2024-02-01 16:15:00.876 - uvicorn.access - 192.168.6.248:56280 - "GET /channels.m3u HTTP/1.1" 200

What's happening on screen with the Fubo app when this happens? Is the video playing?

if i remember right, to use Fubo, you have to be on the experimental version.
I know they just pushed out a new version of the app.

Mine hasn’t worked in weeks either.

I have now got my Linkpi v3 and i can stream directly from it with vlc http://192.168.0.118/live/stream0
Adbtuner is set up and tunes channels fine. But i get no video output from m3u or in Chrome preview from adbtuner. Im guessing some setting is missing in my docker container?

2024-02-02 14:25:45.339 - server - Reserved tuner 1
2024-02-02 14:25:45.340 - server - Using tuner id: 1
2024-02-02 14:25:45.341 - uvicorn.access - 192.168.0.128:50041 - "GET /stream/14 HTTP/1.1" 307
2024-02-02 14:25:45.354 - server - Tuner: Tuning to Viasat History on Chromecast
2024-02-02 14:25:45.360 - lib.adb - ADB: Connecting to device (attempt 1).
2024-02-02 14:25:45.614 - lib.adb - ADB: Connected.
2024-02-02 14:25:45.614 - lib.adb - ADB: 192.168.0.123 - dumpsys display
2024-02-02 14:25:45.747 - lib.adb - ADB: 192.168.0.123 - getprop ro.build.version.release
2024-02-02 14:25:45.824 - lib.adb - ADB: Android Version: 12.0.
2024-02-02 14:25:45.824 - lib.adb - ADB: 192.168.0.123 - pm list packages -3
2024-02-02 14:25:45.924 - lib.adb - ADB: 192.168.0.123 - pidof allente.b2c.tvclient
2024-02-02 14:25:46.031 - lib.adb - ADB: Stopping media playback.
2024-02-02 14:25:46.032 - lib.adb - ADB: 192.168.0.123 - input keyevent KEYCODE_MEDIA_STOP
2024-02-02 14:25:46.142 - lib.adb - ADB: 192.168.0.123 - am start -a android.intent.action.VIEW -d "allente://play/live/50114" allente.b2c.tvclient
2024-02-02 14:25:47.877 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-02 14:25:50.288 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-02 14:25:52.683 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-02 14:25:55.122 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-02 14:25:57.461 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-02 14:25:59.792 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-02 14:26:02.193 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-02 14:26:04.552 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-02 14:26:06.860 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-02 14:26:09.150 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-02 14:26:11.394 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-02 14:26:13.764 - server - Tuner: Waiting for playback start. Status: unknown
2024-02-02 14:26:15.362 - server - Tuner: Could not detect playback state. Giving up after 30.01 seconds. Display was on, application (allente.b2c.tvclient) was running.
2024-02-02 14:26:15.362 - server - Released tuner 1
2024-02-02 14:26:15.362 - lib.adb - ADB: Stopping media playback.
2024-02-02 14:26:15.362 - lib.adb - ADB: 192.168.0.123 - input keyevent KEYCODE_MEDIA_STOP
2024-02-02 14:26:15.456 - lib.adb - ADB: 192.168.0.123 - input keyevent KEYCODE_MEDIA_PAUSE
2024-02-02 14:26:15.613 - uvicorn.access - 192.168.0.128:50041 - "GET /stream/1/14 HTTP/1.1" 404

Yup the video does play if I hit it with IINA/VLC

Hey @Bossmann This may be due to how LinkPi presents the streaming URL. I see you mention the link http://192.168.0.118/live/stream0 works in VLC. This is the format LinkPi presents for the stream, but what is not commonly know is this is a redirect to obscure the actual port number being used. VLC can do the redirect, ABBTuner does not.

Try the following link in VLC: http://192.168.0.118:8090/stream0

The above link is the actual link format for the stream, without LinkPI hiding the port 8090 in a pretty link. If the link above works in VLC, use it for your Streaming Endpoint in ADBTuner.

Thanks but didn`t help

This redirect thing is actually fixed in the current versions of ADBTuner!

Can you try enabling compatibility mode in adbtuner for that channel?

Does enabling compatibility mode change anything? It's having trouble detecting video playback which used to not be an issue with Fubo.

2 Likes

@turtletank is there a way to hardcore the ADB fingerprint that ADB Tuner uses? I have several times selected the always allowed prompt and from time to time I still get the pop up on my devices.

image