互联网远程唤醒android车机(车机连接USB 4G模块)的实现

背景知识

usb唤醒功能的场景是系统休眠后,usb设备发起总线唤醒信号(dp、dm的电平变化),从而使usb主控制器产生中断送到cpus,cpus进行系统的整机唤醒。

类似普通的点击鼠标进行远程唤醒,点击鼠标后,鼠标发送一个K信号(低速设备为dp拉高),主控制器产生中断送到cpus从而唤醒整机。

互联网远程唤醒是指类似如下功能:

车机通过4G模块接入互联网,运行微信等程序然后休眠下去,另一个微信通过互联网给车机的微信发消息,来唤醒车机(更正:最后通过QQ发送语音通话的方式来测试)。


一 调试总结

1、系统不能识别mini pcie接口的usb 4G模块

    调试usb设备第一步是能识别到USB设别的PID/VID(lsusb命令),用u盘替换4G模块排查4G模块的问题,用飞线的方式来排查mini pcie usb接口的问题。最后确认是mini pcie硬件接口存在问题,因为飞线出来可以识别到usb 4G模块

2、系统被唤醒后马上进入休眠

    原因是此时驱动没有持有android系统的wake_lock(4G模块驱动接手函数xin_ncm_rx_fixup中调用wake_lock_timeout)

3、系统被唤醒后屏幕不亮

    应用没有去点亮屏幕

4、4G模块自己休眠了

   车机休眠后,车机的usb控制器正常供电和工作,但是模块会收到usb suspend中断(因为车机的USB控制器停止周期性地发送SOF包)。所以模块固件要进行特别处理,避免模块本身进入休眠。

   


二 验证与测试方法

1、需要让安卓系统进入休眠,部分应用如91助手会阻止系统进入休眠,mini usb调试线也需要断开连接

2、直接接入usb鼠标,移动鼠标来唤醒车机,可以用来单独测试车机的usb唤醒功能

3、通过手机QQ给车机上的QQ发送语音通话,测试完整的远程唤醒功能


你可能感兴趣的:(互联网远程唤醒android车机(车机连接USB 4G模块)的实现)