Aerial 在 TCL MT9655(雷鸟 55S595C Ultra)上的实测:ADB over TLS 授权死锁的排查与 T-Cast 6553 无 ADB 安装、远程诊断方案
发布时间:2026/10/22 2:03:11 锦皓数字建站
上的实测:ADB over TLS 授权死锁的排查与 T-Cast 6553 无 ADB 安装、远程诊断方案`)
【免费下载链接】aerial-tv给国产电视的一块干净桌面参照 tvOS 设计的开源 Android TV 桌面没有广告开机自动接管。A tvOS-style launcher for Xiaomi, TCL and other China-market TVs.项目地址https://gitcode.com/gh_mirrors/ae/aerial-tv点击查看免费下载本文基于 aerial-tv 仓库中 TCL MT9655 机型实测笔记 展开记录一台雷鸟 55S595C UltraMediaTek MT96554K上 Aerial 从「能装进去」到「无法接管 HOME」的完整排查过程包括 ADB over TLS 的逐条实测证据、adb pair/adb connect为何全部失败、无 ADB 授权时如何通过 TCL 多屏互动T-CastTCP 6553完成安装与远程诊断以及目前仍未解决的死锁点。读完本文你可以复现这套对「只开放无线调试」的国行电视的排查思路并掌握 T-Cast 高级指令发任意 Intent、电视截图、模拟遥控按键的具体用法与坑位。一、测试机与平台概况以下信息来自实测笔记的机型档案也是后文所有结论的适用前提零售型号雷鸟55S595C Ultra设备串号FF-CN-0015-S595CPRO-TX固件V8-0015T11-LF1V487。平台 MediaTekMT96553840×21604 GB / 64 GB。原桌面TCL 自有桌面。已确认com.android.settings与com.android.tv.settings两个包都不存在用 T-Cast263指令以多个 class 试过画面无变化android.settings.SETTINGS/android.settings.ACCESSIBILITY_SETTINGS以 action-only 方式发送也没有 Activity 响应。安装的 flavorguardstandard被 TCL 的LauncherStrategy拒绝与 MT5879 机型 一致。实测结论APK 能装进去但拿不到 ADB 授权 ⇒ 无法完成 HOME 接管。这里先解释一下guard与standard两个 flavor 的差异它决定了这台电视上「声明 HOME 的包根本装不进去」。app/build.gradle.kts 中的注释说明了设计意图// standard: a normal HOME app. guard: no HOME intent filter at all, for China-market firmwares // (some TCL / Hisense builds) that refuse to install any package declaring CATEGORY_HOME. The guard // build takes over Home through its accessibility service instead. flavorDimensions home productFlavors { create(standard) { dimension home } create(guard) { dimension home versionNameSuffix -guard } }从源码结构看HOME 声明只存在于standardflavor 的 AndroidManifest.xml 中MainActivity额外挂上android.intent.category.HOME而公共 AndroidManifest.xml 的MainActivity只有LEANBACK_LAUNCHER。也就是说standard正常声明 HOME在允许安装 launcher 的固件上可以直接设为默认桌面guard不声明 HOME绕过 TCL 校验链里的LauncherStrategy见 MT5879 笔记APK 声明了 MAIN HOME 且签名与平台不一致即拒绝转而靠无障碍服务HomeGuardServiceapp.orchard.tv.guard.HomeGuardService接管 HOME 键。这也解释了 MT9655 上standard版走stage 3 → stage 4被拒、guard版一次通过的现象。但注意guard flavor 解决了「装不进去」解决不了「装进去后没有 shell 权限」的问题——这正是后文死锁的来源。二、ADB 授权为什么走不通ADB over TLS 的实测证据MT9655 上拿不到 ADB 授权不是「没找到开关」而是协议层面就没有留给客户端的授权入口。以下是实测笔记中逐条记录的证据链对调试端口发标准 ADBCNXN24 字节头含crc32与magic设备回的不是CNXN/AUTH而是STLSarg00x01000000magic0xacb3abac校验通过。故意不升级 TLS 再发一次CNXN设备仍然回STLS⇒ 强制 TLS没有任何明文回落。STLS协商后 TLS 握手可成功TLSv1.3 /TLS_AES_256_GCM_SHA384但服务端随后拒绝客户端证书带证书~/.android/adbkey派生、CNadb 自签→CERTIFICATE_UNKNOWN不带证书 →CERTIFICATE_REQUIRED持续重试 40 次全部失败说明「远程自证」被协议禁止授权只能在电视侧完成。adb connect→failed to connectadb pair→protocol fault。扫描 30000–50000 发现过两个端口42803调试端口发CNXN回STLS与37115TCP 可连但发CNXN后 4 秒零回应符合配对服务特征。对37115发STLS同样零回应用 6 位投屏码做adb pair也无响应 ⇒投屏码不是 ADB 配对码。一个容易踩的排查提醒ADB 消息头是24 字节cmd, arg0, arg1, data_length, data_crc32, magic小端只发 16 字节会让设备不回应容易误判成「端口开着但不是 adbd」。做这类协议级排查时字节长度本身就是第一嫌疑。与 MT5879 的关键差异这张对比表把 MT9655 的问题定位得非常清楚——两个平台虽然都是 TCL 国行、都需要 guard flavor但 ADB 行为完全不同来源tcl-mt9655-cn.md项MT5879已验证机型MT9655本机ADB 类型传统 adbd明文 5555弹「允许 USB 调试吗」ADB over TLSAndroid 11 无线调试无弹窗端口固定 5555每次开关都变实测 34007 → 33837 → 40357 →42803授权方式电视上点允许无配对码入口无法授权5555/5554/5037开全程 closed连发两次CNXN均被强制STLS无障碍设置页可打开设置里没有该入口要点总结传统 adbd 的授权是「电视弹窗 → 人点允许」脚本可以靠uiautomatorinput tap自动完成MT5879 笔记中就是这么自动同意多屏互动安装提示框的而 MT9655 的无线调试授权走配对码 证书电视侧没有任何入口展示配对码或接受新设备。端口每次重启都变意味着即便找到了授权方法工具也得先做端口发现adb connect硬编码的 5555 直接出局。无障碍设置页不存在则 Aerial 的 HOME 接管依赖的enabled_accessibility_services写入也无法通过设置界面手动完成详见第六节。三、安装多屏互动仍然可行但下载地址必须是公网 URL3.1 实测结果aerial-guard.apkv1.14 一次通过PROGRESS stage 3 → stage 5standard版走stage 3 → stage 4被 TCL 安装校验拒绝原因见 MT5879 笔记中的系统校验链PmStrategy拒绝 ADB/pm 安装、LauncherStrategy拒绝非平台签名的 HOME 声明包、ThridStrategy只放行系统应用发起的显式安装而多屏互动作为 system uid 1000 的应用用PackageInstallersession 安装恰好能过链。⚠与 MT5879 的做法不同MT5879 文档用adb reverse tcp:8765 tcp:8765http://127.0.0.1:8765/Aerial.apk。本机没有 ADB做不了 reverse。实测电视不接受局域网http://Mac IP:非标端口/...的 URL——HTTP 服务日志里完全没有来自电视的请求本机 macOS 防火墙为 disabled已排除。改用公网可访问 URL即可成功例如https://gh-proxy.com/https://github.com/pengchujin/aerial-tv/releases/download/v1.14/aerial-guard.apk。⇒ 由此得出的改进建议install.sh在没有 ADB 授权的场景下把下载地址参数改成可配置的外网 URL而不是默认走adb reverse。3.2 协议实现tools/tcast-push.py这条安装链路的协议实现在 tools/tcast-push.py文件头注释本身就是一份精炼的协议说明与 T-Cast 协议文档 相互印证TCP 端口 6553每条消息是「4 字节大端长度 UTF-8 文本」字段之间用分隔。握手第一条消息发15910明文握手电视回25310以及一条159…设备信息。心跳发150电视回150YES会话安静太久会被电视断开源码中每 5 秒发一次心跳电视约 20 秒无流量会断链。安装指令223INSTALL包名名字下载地址2versionCode大小MBapkPathMd5。来源填2本地并带上apkPathMd5就会跳过商店查询也跳过版本和签名检查直接在电视右上角弹「多屏互动正在发起应用推送同意后将接收应用并进行安装 [拒绝] [同意]」。回复223INSTALL…confirm_pending|denied同意之后会连续收到223PROGRESS包名名字阶段百分比…阶段 1 是下载中、3 是安装中、5 是装好了、2 是失败。脚本用法与源码行为对照如下tools/tcast-push.py tv-ip url package label versionCode [timeout-seconds]# tools/tcast-push.py节选L49-L98 的核心逻辑 sock socket.create_connection((tv, PORT), timeout5) # PORT 6553 sock.settimeout(1) send(sock, 15910) # 明文握手 path_md5 hashlib.md5(url.encode()).hexdigest() send(sock, .join([223, INSTALL, package, label, url, 2, version, 20, , , , path_md5])) # 之后进入循环解析 INSTALL/PROGRESS 消息stage 5 返回 0装好、stage 2 返回 1失败 # 每 5 秒补发 150 心跳防止电视断开安静会话会话一断进行中的安装也会丢两个值得注意的实现细节tcast_install()在 tools/install.sh 中的完整形态是先nc -z探活 6553 端口本机起一个只绑127.0.0.1:8765的python3 -m http.server再adb reverse tcp:8765 tcp:8765把电视的127.0.0.1:8765转发到本机服务电视下载的就是http://127.0.0.1:8765/Aerial.apk不需要在局域网上开端口。MT9655 恰好卡在这一步——没有 ADB 就没有 reverse且实测电视不请求局域网非标端口于是只能换成公网 URL。多屏互动的安装提示框默认焦点在「拒绝」上遥控器要先按「右」再按 OKT-Cast 协议文档 列为必踩坑之一。3.3 加密握手模式扩展T-Cast 协议文档 还记录了第二种握手格式159clientName1clientId1电视回包的第 6 个字段是algorithm当它 1时之后所有消息收与发都是 AES 加密的参数值算法AES-128-CBCPKCS7 填充keytnscreentnscreen16 字节 ASCIIIV字节1234567890abcdef1234567890abcdef不是这串 ASCII 文本本身而是其十六进制解码实测中用明文发指令也能被电视接受223INSTALL明文发送照样成功但此时回包是密文需要用上面的 key/IV 解密才能看懂解密时不要重复调finalize()否则会抛异常被吞掉、误判成「密钥不对」。对只需要安装/截图/按键的用途走15910明文握手即可。四、设置面板测绘9 个分类没有无障碍com.tcl.settings/.ui.MainActivity打开左侧悬浮面板共 9 类图像 / 声音 / 网络 / 蓝牙 / 信号源 / AI智能 / 通用 / 个性化 / 关于。逐类翻查的结论通用 语言、位置、输入法、开关机设置、快捷指令、呼吸灯、气泡说明 →无无障碍个性化主题 桌面壁纸选取壁纸、氛围屏保「选取屏保」为禁用态与「屏保时间关闭」联动、屏保时间关于本机 电视名称、本机信息、网络信息、软件更新。223GET解出只有12 个可启动应用云视听小电视、天气预报、应用商店、多屏互动、影视仓、用户中心、机顶盒设置、com.tcl.settings设置、app.orchard.tvAerial、VidHub、媒体中心、网易云音乐。⚠每次新建 TCP 连接都会让 TCL 侧边设置面板自动关闭相当于「手机已连接」提示抢焦点。所以「打开设置 → 按键导航 → 截图确认」必须在同一个连接里一口气跑完否则按键会全部落到桌面上。这是无 ADB 诊断流程中最容易翻车的点。五、无 ADB 时的补救T-Cast 6553 的高级指令多屏互动除了223INSTALL还支持更多指令完整协议与加密协商见 docs/tcast-protocol.md指令作用本机实测2631 activity / 2 broadcastintentJSON发任意 Intent等于远程am start可指定component{pkg,cls}✅ 拉起app.orchard.tv/.MainActivity成功225电视截图回包带图片 URL✅ 可拿到 89 KB PNG视频层截不到字幕/时钟可见149keyCode模拟遥控按键up11/down12/left13/right14/ok15/back16/menu18/home19✅ 可用于盲导航223GET应用列表回包按切分每条包名::显示名✅ 解出 12 个应用协议文档中的完整指令表还包括223OPEN包名启动应用只接受包名不接受 component、151xy鼠标移动、155textIME 文本注入、2802 / 2803亮度、242系统音量、160imeiname连接提示149的 keyCode 完整映射为 up11 down12 left13 right14 ok15 back16 menu18 home19 power20 vol_up21 mute23 source29 enter68数字 1-9 1-9、0 10。263的 Intent JSON 字段格式{ action: android.intent.action.MAIN, category: null, component: { pkg: app.orchard.tv, cls: app.orchard.tv.MainActivity }, extraList: [ { type: 0, key: k, value: v } ], flagList: [268435456], launchType: 1 }extraList的type0String、1int、2booleanflagList常用268435456FLAG_ACTIVITY_NEW_TASKlaunchType0service/window、1activity⚠ 实测关键限制component置null走 action-only 时电视似乎不派发android.settings.SETTINGS、android.settings.ACCESSIBILITY_SETTINGS均无反应。要拉起具体页面必须指定 component而这需要先知道固件里真实的包名/类名可用223GET拿。这套指令组合起来就是完整的无 ADB 远程诊断能力225截图看画面 →263发 Intent 打开目标页面 →149盲导航 → 再225确认。但也必须明确其边界——仍无法替代 ADB无障碍开关、appops 自启动放行、screensaver_components屏保组件替换这三样都需要 shell 权限在 tools/install.sh 中对应的正是settings put secure enabled_accessibility_services、appops set APP_AUTO_START、settings put secure screensaver_components这几条adb shell命令。六、仍未解决无障碍入口 无授权 ADB 构成的死锁现状无障碍入口被固件删除 ⇒ 无法手动开启「Aerial 桌面守护」ADB 又是 TLS-only 且无授权通道 ⇒ 死锁。现状Aerial 只能当普通 App 用点图标进按 HOME 回 TCL 桌面。对照源码可以精确描述这个死锁的两侧接管侧guardflavor 的 HOME 接管完全依赖无障碍服务 HomeGuardService。GuardSetup 的类注释说明了机制需要WRITE_SECURE_SETTINGS开发权限tools/install.sh通过 ADB 授予界面上无法申请才能在系统把服务从启用列表移除后重新写回enabled_accessibility_servicesrebindIfStalled()处理「已启用但没绑定」状态先移除、1.5 秒后加回触发重新绑定。这些操作在 MT9655 上全都够不到没有 ADB 授不了权限设置里又没有无障碍入口。屏保侧install.sh会把secure screensaver_components换成app.orchard.tv/app.orchard.tv.dream.AerialDream并通过ConfigReceiver广播own_screensavertrue配合 GuardSetup.keepScreensaver 的开机自检同样需要 ADB。已试过且无效的手段避免重复排查adb pair/adb connect含投屏码自建 ADB-over-TLS 客户端自签证书android.settings.SETTINGS/ACCESSIBILITY_SETTINGSaction-only 与指定 class 均无效com.android.settings/com.android.tv.settings包不存在TCL 设置 9 个分类逐个翻查无障碍不在其中屏保只列自家内容工厂菜单路径信源 → 模拟接受 → 菜单 → 设置 → 显示 → 专业设定 → 对比度 → 数字键1950未验证成功待作者确认的三个问题实测笔记以三个开放问题收尾这也是该机型状态的最新边界MT9655 平台是否有别的 ADB 入口工厂菜单那条路径开出的是不是传统 adbd明文 5555 弹窗授权完全没有 ADB 时guardflavor 是否还有其他接管 HOME 的可能不依赖无障碍需要补哪些 logcat /dumpsys才能定位授权通道七、给同平台排障者的要点清单综合以上实测针对「只开放 Android 11 无线调试、且无线调试无配对入口」这一类国行电视可以沉淀出以下排查顺序先确认 ADB 形态扫 30000–50000 端口对候选端口发完整 24 字节的 ADBCNXN头。回STLS即 TLS-only 调试端口回CNXN/AUTH才是传统 adbd。注意 24 字节头的完整性否则会被误判成非 adbd。TLS-only 时不要指望adb pair/投屏码配对服务端口对CNXN/STLS零回应、投屏码与 ADB 配对码不是同一套东西这条路在 MT9655 上已封死。安装改走多屏互动6553用tools/tcast-push.py或等效客户端明文握手15910223INSTALLsource2 apkPathMd5下载地址用公网 URL5 秒一次心跳保活电视端先按「右」再按 OK。诊断用 263/225/149/223 组合发 Intent 要带明确componentaction-only 不派发截图注意视频层是黑的独立硬件图层字幕与时钟可见所有「打开设置 → 导航 → 截图」操作放在同一个 TCP 连接内完成。明确接管依赖再下结论guard flavor 的 HOME 接管链路是WRITE_SECURE_SETTINGS 无障碍服务 屏保组件替换三者全要 shell 权限固件删了无障碍入口且 ADB 无授权通道时就是本文所述的死锁当前唯一可用形态是普通 App。适用前提与限制本文全部结论基于雷鸟 55S595C Ultra固件V8-0015T11-LF1V487单台设备的实测同平台不同固件的 ADB 形态与设置面板可能不同T-Cast 6553 指令集来源于 TCL 多屏互动 5.30 的逆向见 docs/tcast-protocol.md不同固件版本的行为需要另行验证。赞分享【免费下载链接】aerial-tv给国产电视的一块干净桌面参照 tvOS 设计的开源 Android TV 桌面没有广告开机自动接管。A tvOS-style launcher for Xiaomi, TCL and other China-market TVs.项目地址https://gitcode.com/gh_mirrors/ae/aerial-tv点击查看免费下载相关推荐T-Cast 6553 协议实战aerial-tv 的加密握手、补充指令表与无 ADB 远程诊断T Cast 6553 协议实战aerial tv 的加密握手、补充指令表与无 ADB 远程诊断 本文以 aerial tv 仓库的协议补充文档为主体完整梳让 Aerial 在 TCL MT5879 雷鸟电视上跑起来破解 TCL 系统校验链的安装、接管与适配全记录让 Aerial 在 TCL MT5879 雷鸟电视上跑起来破解 TCL 系统校验链的安装、接管与适配全记录 本文基于 Aerial一个参照 tvOS 设计Aerialaerial-tv电视安装实战从 adb 连接、权限授予到主页键接管与还原的完整手册Aerialaerial tv电视安装实战从 adb 连接、权限授予到主页键接管与还原的完整手册 本文基于仓库中的 site/en/agent.md ht上一篇Apereo CAS 指标存储SimpleMicrometer 内存后端的回退机制与配置实战下一篇Win-ACME 完整指南让 Windows 服务器 SSL 证书自动续期创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。