iap2_open:libusb_open_device_with_vid_pid 失败,0424 和 4911

问题描述

尝试通过 microchip 24XXX USB 集线器将 iPhone 连接到 Android Auto OS。设备能够成功通过角色切换。之后,Android Auto 尝试在设备模式下连接 USB 集线器,USB 权限失败。它不是在框架中发生,而是在 libusb 的“libusb_open_device_with_vid_pid()”的底层模块中发生。

Logfile : 查找关键字:Roleswitch,iAP2,iap2_open,libusb_open_device_with_vid_pid Failed with 0424 and 4911

这是我通过 adb shell 调用的 lsusb:

Bus 003 Device 001: ID 1d6b:0002
Bus 002 Device 002: ID 0424:4915
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 003: ID 0424:49a0
Bus 004 Device 001: ID 1d6b:0003
Bus 002 Device 001: ID 1d6b:0001
Bus 002 Device 010: ID 0424:4911 <---- this is the device which is failing.
nautilus:/ # ls -l /dev/bus/usb/*
/dev/bus/usb/001:
total 0
crw-rw---- 1 root usb 189,0 2021-02-09 14:42 001

/dev/bus/usb/002:
total 0
crw-rw---- 1 root usb 189,128 2021-02-09 14:42 001
crw-rw---- 1 root usb 189,129 2021-02-09 22:22 002
crw-rw---- 1 root usb 189,130 2021-02-10 15:42 003
crw-rw---- 1 root usb 189,137 2021-02-10 15:42 010 --- this is my device.

/dev/bus/usb/003:
total 0
crw-rw---- 1 root usb 189,256 2021-02-09 14:42 001

/dev/bus/usb/004:
total 0
crw-rw---- 1 root usb 189,384 2021-02-09 14:42 001

根据日志,除了一些 sepolicy 拒绝之外,我找不到任何线索可能是什么问题,


mfid    : type=1400 audit(0.0:1029): avc: denied { open } for path="/dev/i2c-5" dev="tmpfs" ino=13334 scontext=u:r:watchdogd:s0 tcontext=u:object_r:i2c_device:s0 tclass=chr_file permissive=1

mfid    : type=1400 audit(0.0:1030): avc: denied { ioctl } for path="/dev/i2c-5" dev="tmpfs" ino=13334 ioctlcmd=0x703 scontext=u:r:watchdogd:s0 tcontext=u:object_r:i2c_device:s0 tclass=chr_file permissive=1

Binder:4509_4: type=1400 audit(0.0:1031): avc: denied { read } for name="usb" dev="tmpfs" ino=8011 scontext=u:r:system_app:s0 tcontext=u:object_r:usb_device:s0 tclass=dir permissive=1

我已经尝试在 /device/vendor/hardware/ueventd.hardware.rc

添加一些权限
/dev/i2c-5                               0666    media           media
/dev/bus/usb                             0666    root            usb

还尝试将包包含在 permission/privapp-permissions-hardware.xml

<privapp-permissions package="com.sample.mirroring.control.service">        
      <permission name="android.permission.MANAGE_USB"/>
</privapp-permissions>

sepolicy/vendor/file_contexts

/dev/i2c-5       u:object_r:i2c_device:s0                                                                                                                 
/dev/bus/usb     u:object_r:usb_device:s0                                                                                                               /sys/devices/platform/soc/ee000000.usb/usb3/busnum  u:object_r:sysfs:s0   

尝试执行生成这些缺失策略的 audit2allow。 sepolicy/vendor/system_app.te

allow system_app shell_data_file:dir search;
allow system_app system_app_data_file:sock_file { create getattr setattr };
allow system_app system_data_file:dir { add_name };

不确定要添加内容。请指导我解决这个问题。提前致谢。

问候 PK。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...