You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android TV休眠时频繁重启致ADB断开的排查与解决问询

Android TV休眠模式下ADB频繁断开的原因、排查与解决

问题背景

Android TV(Android 10,内核4.19.75)在休眠模式下ADB连接频繁断开,观察到PowerHAL进程PID每次异常时都不同,怀疑设备频繁重启。已尝试拔掉HDMI线、重置系统,问题仍存在。

休眠时的ADB Logcat日志

03-05 00:50:40.242  9534  9647 I uicksetsdk.son: Starting a blocking GC Alloc
03-05 00:50:40.242  9534  9647 I uicksetsdk.son: Starting a blocking GC Alloc
03-05 00:50:40.271  9534  9647 I uicksetsdk.son: Alloc concurrent copying GC freed 19943(12MB) AllocSpace objects, 29(3092KB) LOS objects, 49% free, 2295KB/4590KB, paused 110us total 28.982ms
03-05 00:50:40.671  9986  9986 D LIBIWPRIV: Ethernet_WoPacket  ifc_set_Ethernet_listen_port
03-05 00:50:40.671  9986  9986 D MTK PowerHAL: ACFGGGGGGGGGGGGGGGGGGGGGGGGGGGGG : AM_BRDCST_MSG_PRE_POWER_OFF
03-05 00:50:41.178  2902  9975 I BatteryStatsService: In wakeup_callback: suspend aborted
03-05 00:50:41.179  2902  3203 D AlarmManager: Wakeup history#0 Wakeup alarmType=RTC_WAKEUP package=com.mediatek.agent wakeups=1 alarms=1 whenElapsed=0 when=2023-03-04 23:47:47 nowRTC=2023-03-04 23:47:47 workSource=null uid=1000 tag="*walarm*:mtk.intent.rtctimer.set.bgm"
03-05 00:50:41.179  2902  3203 D AlarmManager: Wakeup history#1 Wakeup alarmType=ELAPSED_WAKEUP package=android wakeups=3 alarms=3 whenElapsed=-21s956ms when=-21s956ms nowRTC=2023-03-04 23:48:10 workSource=null uid=1000 tag="*walarm*:DeviceIdleController.deep"
03-05 00:50:41.179  2902  3203 D AlarmManager: Wakeup history#2 Wakeup alarmType=ELAPSED_WAKEUP package=android wakeups=4 alarms=4 whenElapsed=0 when=0 nowRTC=2023-03-05 00:50:32 workSource=null uid=1000 tag="*walarm*:DeviceIdleController.deep"
03-05 00:50:41.179  2902  3203 D AlarmManager: Wakeup alarmType=ELAPSED_WAKEUP package=android wakeups=5 alarms=5 whenElapsed=0 when=0 nowRTC=2023-03-05 00:50:41 workSource=null uid=1000 tag="*walarm*:DeviceIdleController.deep"
03-05 00:50:41.180  2902  2980 W AlarmManager: Unrecognized alarm listener com.android.server.DeviceIdleController$4@2730dbf
03-05 00:50:41.225  9810  9990 W adbd    : timed out while waiting for FUNCTIONFS_BIND, trying again
03-05 00:50:41.225  9810  9990 I adbd    : UsbFfs: connection terminated: monitor thread finished
03-05 00:50:41.225  9810  9810 I adbd    : UsbFfs: already offline
03-05 00:50:41.225  9810  9810 I adbd    : destroying transport UsbFfs
03-05 00:50:41.225  9810  9810 I adbd    : UsbFfsConnection being destroyed
03-05 00:50:41.268  9810  9811 I adbd    : opening control endpoint /dev/usb-ffs/adb/ep0
03-05 00:50:41.268  9810  9811 I adbd    : UsbFfsConnection constructed
03-05 00:50:41.437  9993  9993 D MTK PowerHAL: for GCM case,update port info
03-05 00:50:41.437  9993  9993 D MTK PowerHAL: wopacket Sony behavior(for GCM case,update port info)
03-05 00:50:41.437  9993  9993 D MTK PowerHAL: enable WoPacket before power off
03-05 00:50:41.437  9993  9993 D MTK PowerHAL: XXXXXenter: AP 7668 a_nw_wlan_set_ip_and_port_to_driver
03-05 00:50:41.437  9993  9993 D MTK PowerHAL: XXXXX AP first clear all ethernet port
03-05 00:50:41.437  9993  9993 D LIBIWPRIV: Ethernet_WoPacket  ifc_clear_listen_port
03-05 00:50:41.438  9993  9993 D MTK PowerHAL: XXXXXXXXget valid Ex v4port 40918
03-05 00:50:41.438  9993  9993 D MTK PowerHAL: (WOWL)tcp v6 port2 = set_wow_tcp 0 8008,8009,1900,40918
03-05 00:50:41.438  9993  9993 D MTK PowerHAL: XXXXXethernet tcp port0 is 8008
03-05 00:50:41.438  9993  9993 D MTK PowerHAL: XXXXXethernet tcp port1 is 8009
03-05 00:50:41.438  9993  9993 D MTK PowerHAL: XXXXXethernet tcp port2 is 1900
03-05 00:50:41.438  9993  9993 D MTK PowerHAL: XXXXXethernet tcp port3 is 40918
03-05 00:50:42.273  9810  9991 W adbd    : timed out while waiting for FUNCTIONFS_BIND, trying again
03-05 00:50:42.273  9810  9991 I adbd    : UsbFfs: connection terminated: monitor thread finished
03-05 00:50:42.273  9810  9810 I adbd    : UsbFfs: already offline
03-05 00:50:42.273  9810  9810 I adbd    : destroying transport UsbFfs
03-05 00:50:42.273  9810  9810 I adbd    : UsbFfsConnection being destroyed
03-05 00:50:42.338  9810  9811 I adbd    : opening control endpoint /dev/usb-ffs/adb/ep0
03-05 00:50:42.339  9810  9811 I adbd    : UsbFfsConnection constructed
03-05 00:50:42.976  9993  9993 D LIBIWPRIV: Ethernet_WoPacket  ifc_set_Ethernet_listen_port
03-05 00:50:42.977  9993  9993 D MTK PowerHAL: (WOWL)udp port = set_wow_udp 0 5353
03-05 00:50:42.977  9993  9993 D MTK PowerHAL: XXXXXethernet udp port0 is 5353
03-05 00:50:43.341  9810  9994 W adbd    : timed out while waiting for FUNCTIONFS_BIND, trying again
03-05 00:50:43.341  9810  9994 I adbd    : UsbFfs: connection terminated: monitor thread finished
03-05 00:50:43.342  9810  9810 I adbd    : UsbFfs: already offline
03-05 00:50:43.342  9810  9810 I adbd    : destroying transport UsbFfs
03-05 00:50:43.342  9810  9810 I adbd    : UsbFfsConnection being destroyed
03-05 00:50:43.388  9810  9811 I adbd    : opening control endpoint /dev/usb-ffs/adb/ep0
03-05 00:50:43.389  9810  9811 I adbd    : UsbFfsConnection constructed
03-05 00:50:44.391  9810  9995 W adbd    : timed out while waiting for FUNCTIONFS_BIND, trying again
03-05 00:50:44.391  9810  9995 I adbd    : UsbFfs: connection terminated: monitor thread finished
03-05 00:50:44.391  9810  9810 I adbd    : UsbFfs: already offline
03-05 00:50:44.391  9810  9810 I adbd    : destroying transport UsbFfs
03-05 00:50:44.391  9810  9810 I adbd    : UsbFfsConnection being destroyed
03-05 00:50:44.458  9810  9811 I adbd    : opening control endpoint /dev/usb-ffs/adb/ep0
03-05 00:50:44.458  9810  9811 I adbd    : UsbFfsConnection constructed
03-05 00:50:44.515  9993  9993 D LIBIWPRIV: Ethernet_WoPacket  ifc_set_Ethernet_listen_port
03-05 00:50:44.515  9993  9993 D MTK PowerHAL: ACFGGGGGGGGGGGGGGGGGGGGGGGGGGGGG : AM_BRDCST_MSG_PRE_POWER_OFF

核心原因分析

  1. 休眠流程异常中断:日志中suspend aborted表明系统尝试进入休眠状态,但被唤醒事件打断,导致休眠流程反复触发。
  2. 深度休眠控制器频繁唤醒:AlarmManager中多条DeviceIdleController.deep的唤醒记录,说明设备的深度空闲管理机制在频繁唤醒设备,干扰休眠流程。
  3. USB功能重启导致ADB断开:adbd的FUNCTIONFS_BIND timeout和连接销毁重建日志,是因为休眠时USB子系统被关闭或重启,直接导致USB ADB连接中断。
  4. PowerHAL进程重启而非整机重启:PowerHAL的PID变化是因为休眠流程异常触发了进程重启,并非整机重启,整机重启会有更明显的系统启动日志。

排查步骤

  • 检查唤醒锁:执行adb shell dumpsys power,查看Wake Locks部分,确认是否有应用或系统服务持有唤醒锁阻止设备进入稳定休眠。
  • 分析设备空闲模式:执行adb shell dumpsys deviceidle,查看深度休眠模式的触发频率和状态,确认是否存在异常的唤醒调度。
  • 检查系统闹钟:执行adb shell dumpsys alarm | grep DeviceIdleController,过滤深度休眠相关的闹钟,查看是否有异常频繁的唤醒计划。
  • 查看内核日志:执行adb shell dmesg,检查休眠/唤醒过程中的内核级错误,比如MTK平台的驱动问题导致休眠失败。
  • 排除第三方应用干扰:暂时卸载所有第三方应用,测试休眠是否正常,排查是否是第三方应用触发的异常唤醒。

绕过方案(若为系统默认行为)

  • 禁用深度休眠模式:执行adb shell dumpsys deviceidle disable,但会增加设备功耗。
  • 改用无线ADB连接:先执行adb tcpip 5555,再通过adb connect [TV的IP地址]:5555建立无线连接,避免USB休眠导致的断开。
  • 调整网络唤醒配置:如果设备已root,修改PowerHAL的WoPacket(网络唤醒)配置,减少触发频率;或在TV设置中关闭网络唤醒功能。
  • 保持USB供电稳定:确保TV的USB端口在休眠时仍保持供电,部分设备可在开发者选项中开启“USB调试始终保持唤醒”。

内容的提问来源于stack exchange,提问作者optimuscomposite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 00:42:37