adb accessory 填坑

usb设备的连接流程,支持AOA 整体的逻辑流程 对应的代码和log 分析如下: 1,UsbDeviceManager.java 中监听 kernel 上报的 UEvent 事件, 这里 USB UEVENT: {SUBSYSTEM=misc, MAJOR=10, SEQNUM=2022, ACTION=change, ACCESSORY=START, DEVNAME=usb_accessory, MINOR=41, DEVPATH=/devices/virtual/misc/usb_accessory} 215 /* 216 阅读详情

参考:https://blog.youkuaiyun.com/yingzhao80/article/details/45511351

Android下USB Accessory设备连接后处理流程

(1)手动切到device mode,也就是开启OTG 模式(mtk 9652可以用sw的方式做切换,但是只有port0才可以切换)

echo 1> /sys/devices/Mstar-otq/software_id

cat/sys/devices/Mstar-otq/software.id确认

(2) 需要开启adb mode(这个很重要,之前一直是mtp模式下去试,usb的wevent log一点都没有,浪要了很多时间跟kernel的xd debug,试了很多次发现需要切到adb mode下才会监续下去)

Development option里顶开启usb debugging即司

getprop |grep -i usb 确认一下

(3) 确认板子是否有accessory的feature

device-common .mk

#usb accessory configuration

PRODUCT_COPY_FILES += \

frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml

device.mk

# usb accessory

PRODUCT_PACKAGES +=\

com.android.future.usb.accessory

 

mtv_core_hardware.xml

  •  <!--feature name="android.hardware.usb.accessory"/-->

    +     <feature name="android.hardware.usb.accessory"/>

 

console:/ # pm list features | grep -i usb

feature android.hardware.usb.accessory

feature:android.hardware.usb.host

(4)adb mode下连接无人机,会kernel panic

但是cat init.xxxx.usb.rc里是由这个action的,直接抓kernel log也没有相关报错,orz

很奇怪,用linux vim也没看到有这个..

推荐用cat -v去查看,能看到某些特殊字符

mkdirM-BM- /config/usb_gadget/g1/functions/accessory.gs2

修改init.XXX.usb.rc,去掉M-BM-

这一步,真的是运气爆棚,恰好用busybox vi发现,不然真的GG,不知哪位前辈埋的坑

(5)获取不到无人机usbaccessory的信息(mAccessoryStrings=null),导致startAccessoryMode的enableAccessory= null

395    private void startAccessoryMode() {
396        if (!mHasUsbAccessory) return;
397
398        mAccessoryStrings = nativeGetAccessoryStrings();
399        boolean enableAudio = (nativeGetAudioMode() == AUDIO_MODE_SOURCE);
400        // don't start accessory mode if our mandatory strings have not been set
401        boolean enableAccessory = (mAccessoryStrings != null &&
402                mAccessoryStrings[UsbAccessory.MANUFACTURER_STRING] != null &&
403                mAccessoryStrings[UsbAccessory.MODEL_STRING] != null);
404
405        long functions = UsbManager.FUNCTION_NONE;
406        if (enableAccessory) {
407            functions |= UsbManager.FUNCTION_ACCESSORY;
408        }
409        if (enableAudio) {
410            functions |= UsbManager.FUNCTION_AUDIO_SOURCE;
411        }
412
413        if (functions != UsbManager.FUNCTION_NONE) {
414            mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_ACCESSORY_MODE_ENTER_TIMEOUT),
415                    ACCESSORY_REQUEST_TIMEOUT);
416            setCurrentFunctions(functions);
417        }
418    }

这里mAccessoryStrings = nativeGetAccessoryStrings()为null,导致enableAccessory=false没有往下走,猜测无人机配置有问题,需要driver去查,但是三不管地带,而且由于客户人力不够,配合提供反馈及其有限情况下,只能我这边先上层动一刀了

修改:获取不到AccessoryString就默认默认配置一个,使其go on 

(6)kernel log一直在循环发送USB_STATE的uevent CONNECTED COONFIGURED DISCONNECTED

(7)按现在目前设置为dji,可以跳过那个没有获取到无人机信息导致进不去accessory mode的问题,但是这边看flow,后面会根据配置信息去匹配能响应的activity

这就需要客户在自己的apk中去配置了

Android UsbAccessory中你需要小心的坑及解决方案 本文旨在解决Usb连接过程中的问题而不注重具体实现过程,如果有对Usb连接过程感兴趣的朋友可以查看Android官方文档 目录 目录 现实背景 存在问题 问题原因 解决方案 小结 现实背景 现在智能硬件发展迅速,各种运动相机、无人机不断发展,而其中大部分都通过Usb跟手机之间建立链路连接通信,所以怎么处理好Usb的连接问题就显得很重要。 存在问题 ... 阅读详情

相关推荐

android关于硬件USB权限综合解读

前言 这篇是以极大疑惑为驱动的文章,综合了大多数文章对USB权限申请的常规方法,及特殊操作。带着这样的疑惑来看这篇文章:为什么部分机型在硬件连接手机时没有任何的权限请求提示框呢? 1.常规申请 修改AndroidManifest.xml 2.主动申请 3.无感申请 4.Android SDK适配 ...

baidu_33512336的博客 1575

Android usb 配件模式通信示例

在 open() 方法中,我们获取连接的 UsbDeviceConnection 对象,并使用它来获取读取和写入数据的输入/输出流。在本例中,我们将接收连接到 Android 设备的 USB 主机发送的数据并向 USB 主机发送响应。接着,在 res/xml 文件夹中创建一个名为 accessory_filter.xml 的文件,用于指定 USB 配件的属性及其应用程序的信息。如果已连接,则尝试打开连接。以上就是Android usb 配件模式下的示例,在实际的开发过程中会比较复杂,但原理基本类似。

欢迎来到“無昂博奥”的博客 1240

android.hardware.usb.accessory.xml和android.hardware.usb.host.xml

做usb accessory通信时,myUsbManager.getAccessoryList();return null,说是少文件。解决办法是先root手机,然后把这两个文件推送到手机的/system/etc/permissions目录下。

Android rom开发:GMS xml属性详解

众所周知,google play store存在根据apk的所使用到的功能来过滤的机制,这个机制会控制在不同的硬件设备上显示的apk数量。在盒子开发上,很多硬件功能没有,比如说:摄像头、加速度传感器、指南针、陀螺仪等等。如果不添加相应的属性在gms中的话,play store商店里面很多apk就无法显示。针对这些硬件属性,特有此博客。 硬件功能 指出应用使用或需要某项硬件功能,请在 and...

Android 5705

android.hardware.usb.host.xml和android.hardware.usb.accessory.xml

里面就一行配置,居然拿出来卖49积分,真坑

(详细教程)opencv+pycharm+笔记本摄像头 做一个人脸识别

文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 一、安装opencv-python 这里推荐使用pycharm直接安装opencv-python 打开文件——设置——python解释器——点击+号 搜索opencv-python,点击安装包,等待片刻即可安装好 检查是否安装好,新建一个项目输入以下代码,若无报错则安装好 import cv2 二、准备分类器 咱们使用opencv官方提供的分类器,包括面部识别,侧...

qq_52852432的博客 1万+

使用adb无线连接手机进行开发和调试,适用于usb host/accessory设备调试

原文:http://developer.android.com/guide/topics/connectivity/usb/index.htmlConnect the Android-powered device via USB to your computer.From your SDK platform-tools/ directory, enter adb tcpip ...

weixin_33725515的博客 349

同花顺API实战指南:从零搭建股票数据自动化采集系统

本文提供了一份详尽的同花顺API实战指南,手把手教你从零开始搭建股票数据自动化采集系统。内容涵盖API权限申请、Python环境配置、数据采集与存储脚本编写、自动化定时任务实现以及数据清洗等核心环节,旨在帮助量化交易与数据分析爱好者构建稳定可靠的数据源,解放双手,提升研究效率。

weixin_29200741的博客 2395

linux chipidea usb,找到一篇关于Linux usb gadget 非常使用的说明和使用教程

按照上一篇文章对gadget_configfs.txt的翻译,以imx8qxp mek的板子做为验证,配置为mass storage进行验证。内核打开对应的宏1、必须打开CONFIG_CONFIGFS_FS和CONFIG_USB_LIBCOMPOSITE的宏,前者为用户空间提供访问配置内核驱动的configfs文件系统,后者提供usb gadget composite框架;2、必须打开UDC(US...

weixin_39611666的博客 1825

【科研导航】【计算机视觉与图像处理】从顶刊到潜力股:跨学科(电子/电气/信息)SCI期刊投稿全景图

本文全面解析了计算机视觉与图像处理领域的SCI期刊投稿策略,涵盖从顶刊到潜力股的各类期刊特点。重点介绍了IEEE Transactions系列、Elsevier旗舰期刊以及二区优质期刊的审稿偏好和投稿技巧,特别适合电子/电气/信息交叉学科的研究者。文章还提供了三区、四区期刊的实用投稿建议,帮助科研新手快速找到适合的发表平台。

weixin_30897233的博客 81

从零到英雄:如何用FPGA和AD9288打造你的第一台便携式示波器

本文详细介绍了如何利用FPGA和AD9288 ADC芯片从零开始打造一台高性能便携式示波器。通过硬件架构设计、高速数据采集系统实现及信号处理与显示系统的开发,读者可以掌握400Msps采样率的实现方法,并了解关键器件选型与系统优化技巧。

jjj34的博客 277

Android USB通信(accessory)

公司属于北斗通信行业,项目大多都需要和各式各样的硬件设备相结合来满足项目需求,因此所涉及到的各种技术也相对比较冷门。前段时间有个项目用到了一款定制北斗设备,需要用到它自带的 type-c 线连接手机使用,开发时发现它是通过 USB(accessory)来连接手机设备的,现在项目完成了,就在这里记录和分享一下,有任何错漏或可优化之处欢迎大家留言。

无 4091

【Transformer 相关理论深入理解】注意力机制、自注意力机制、多头注意力机制、位置编码

transformer原理

qq_38253797的博客 2万+

安卓USB开发教程 <三> USB Accessory

USB Accessory(配件模式) USB 配件模式允许用户连接专为 Android 设备设计的 USB 主机硬件。配件必须遵守 Android Accessory Development Kit 文档中列出的 Android 配件协议。 这使得 Android 设备无法充当 USB 主机时仍然可以与 USB 硬件交互。 当 Android 设备处于 USB 配件模式时,所连接的 A

SoldierJazz的专栏 7475

vos如何对接okcc(保姆级教程)

1.添加账户 点击 系统->账户管理 [图片] 2.创建费率 系统->费率管理 点击添加

qq_46333281的博客 3453

翁恺-C语言程序设计 PTA习题集

代码练习题

qq_46085472的博客 7639

为Android添加开机启动脚本

最近在做项目的过程中,遇到了这么一个需求,需要在Android(4.2.2)启动时候执行以下命令,命令的具体含义不再解释: mount -t usbfs none /proc/bus/usb 最初做法是将其加入init.rc文件中,但是发现此方法行不通,原因到现在也未查明,希望知道原因的朋友能够留言告知,不胜感激o(∩_∩)o 。 接着查阅相关资料,发现将命令写入一个

simonjay2007的专栏 4万+

ican项目四汽车零件智能测量

ican项目四汽车零件智能测量

weixin_72050316的博客 560

【Android】联通性 -- USB从属模式

本文译自:http://developer.android.com/guide/topics/connectivity/usb/accessory.html          USB的从属模式允许用户连接到专门给Android设备设计的USB主机硬件。这些附件必须遵循在Android从属模式开发工具文档中描述的Android从属模式协议。这个协议允许Android设备即使不作为USB主机依然能够

小田的专栏 2776

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android.hardware.usb.host.xml文件的作用

查询资料后发现是因为系统.\system\etc\permissions目录下缺少android.hardware.usb.host.xml文件,导致系统无法在正常情况下进入USB Host模式,而必须使用额外的USB Type-C to Type-A Hub才能触发OTG默认。如果有硬件问题,调试参数也是解决不了的。低端项目如果没有otg功能,比如硬件不满足,为了避免CTS进行相关测试,需要将改文件删除,如。首先android.hardware.usb.host.xml,手机是有的,目录在这个地方。

qq_40991601的博客 1002

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

android accessory,Android USB开发小结:host模式与accessory模式

很早之前就想对Android USB的两种模式作个小结,但是一直没有空去搞,毕竟USB这块应该属于冷门方向,并且应用层能够做的比较少也很简单。最近刚好在做大疆无人机的二次开发,想着对USB连接检测这块做下优化,毕竟Android终端主要是通过USB连接到远程控制器来与无人机进行交互。但与AndroidUSBCamera一文中提及的USB Camera场景不同,无人机使用的是Android终端的ac...

weixin_39700625的博客 1375

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ANDROID ACCESSORY 通信协议建立过程 -----解析好后可以在单片机做主机来于安卓手机通信

ANDROID ACCESSORY 通信协议建立过程  (2012-11-23 11:46:36) 转载▼ 标签:  杂谈   accessory   android 分类: 技术 http://zwz94.blog.163.com/blog/static/3206039520123374251251/

蓝松SDK 3220

Android USB系统(一)

1.1PAD作为USB Device设备 USB Device的功能很丰富,其支持的协议越来越多包括:MTP、ADB、rndis、mass storage、accessory、audio_source、CDROOM等。 1.1.1代码简单分析 在代码中涉及到的目录主要有: 1.frameworks/base/services/java/com/android/server/usb/ -----usbService.java用来管理usb协议,其通过property系统与init.xxx.usb.r.

w2064004678的博客 3174

config usb g android,init.common.usb.rc

on bootmount configfs none /configmkdir /config/usb_gadget/g1 0770 shell shellmkdir /config/usb_gadget/g1/strings/0x409 0770 shell shellwrite /config/usb_gadget/g1/bcdUSB 0x0200write /config/usb_gadge...

weixin_39834328的博客 682

Android USB Accessory方案研究

此文关于Android USB Accessory方案研究。

蒋文的博客 8030

android usb解析(一)UsbDeviceManager(and5.1)

版权声明:本文为转载文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/kc58236582/article/details/47810987 先来理下整个usb的架构,用户从UsbManager调用接口,会binder通信到UsbService。而UsbService又有两个实例,一个  UsbHostM...

grf123的专栏 2429
上一篇: WSL- Window子系统使用详细教程
下一篇: android R TV recentUI功能打通
长门_Pefect
博客等级 码龄11年 38粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值