id: fireos-tcl-aftche92d8 title: "TCL 65M8LF Fire TV (AFTCHE92D8)" contributors: - alexanderkoh platform: fireos status: tested tested_on: "tcl9618_aosp-user 14 UD2A.240505.001.W1 AU105 release-keys (Android 14, SDK 34)" models: - "TCL 65M8LF" adb: port: 5555 transport: wifi developer_mode: >- Enabled by the owner with the remote: the usual path is Settings > My Fire TV > About, select the device name 7 times, then Developer Options > ADB debugging. The exact menu names on this build were not recorded. ip_location: "The TV's network status screen lists IP address, gateway, DNS and MAC; the exact menu path was not recorded." prompts: - name: "Allow USB debugging?" blocks_automation: true fix: "Tick Always allow from this computer, press OK on the remote. Do not reconnect while it is on screen: during repeated disconnect and connect attempts two approvals did not take effect, though the cause was not isolated. The state changed to device once it was approved without a reconnect." data: packages: data/fireos/packages.txt protected: data/fireos/protected.txt never_disable: data/fireos/never-disable.txt user_apps: data/fireos/user-apps.txt quirks: - "TCL's TclAppBoot blocks automatic starts unless an app holds the AUTO_START app-op, and it was ignore for both dnsfilter.android and tv.dumbtv.home. Logcat shows '[TclAppBoot]:forbid bind service' for the Guard and '[TclAppBoot]:forbid startForeground' for DNSFilterService, with reason callee_does't_have_OP_AUTO_START_permission." - "Probably because of that, dnsfilter.sh's self-test failed with every blocked host NOT BLOCKED, so all.sh stopped before launcher.sh. The app stayed stopped=true with no tun interface, and a reboot did not help. adb shell am start -n dnsfilter.android/.DNSProxyActivity brought the filter up by hand." - "launcher.sh then failed with 'Fire OS did not bind the HOME guard'. Parental controls were left unchanged and their state was not read. Running appops set tv.dumbtv.home AUTO_START allow, appops set dnsfilter.android AUTO_START allow and appops write-settings, then launcher.sh again, fixed it. After a reboot the filter and dumbtv home both came back without help, and blocked hosts stayed blocked 3 minutes later. Since this report, dnsfilter.sh and launcher.sh grant AUTO_START and write the app-ops themselves; not yet re-run on this set." - "The network hands out an IPv6 DNS server first and the router's IPv4 address second. net.dns1 to net.dns4 are empty, so only the gateway is routed into the tunnel. No leak showed: blocked hosts answered 127.0.0.1 from the shell 40 s and 3 minutes after boot. That check only covers lookups from the adb shell." - "debloat.sh: 10 disabled, 0 protected, 0 system-disabled, 27 absent, 0 suspect. com.amazon.tv.developer.dataservice kept running straight after disable-user, and was not running after a reboot. lockdown.sh limited crashmanager, rdmapplication, tv.csapp and device.software.ota. All 10 stayed disabled through reboots." - "32-bit userland (armeabi-v7a) with 2.4 GB of RAM, so sideloaded apps need armeabi-v7a builds. The DNS filter's blocklist showed 395 entries in dnsfilter.sh and 383 in verify.sh." - "com.amazon.client.metrics, com.amazon.metrics, com.amazon.device.logmanager and com.amazon.kso.blackbird are on this build and on none of the package lists, and were left enabled. TCL's own packages were not touched." notes: "Full pass with PRIME=1 ALEXA=1 LAUNCHER=1 DNSFILTER=1 YOUTUBE=0: verify.sh printed all checks passed, but only after the owner granted AUTO_START by hand and the filter app was opened once. Video playback in each streaming app was not checked as part of this report." verify: blocked: data/blocklists/verify-blocked.txt allowed: data/blocklists/verify-allowed.txt