我有一部手机通过 USB 连接到我的电脑。
查看设备信息时使用
sudo udevadm info --attribute-walk
Run Code Online (Sandbox Code Playgroud)
产品和供应商 ID 显示正常,但没有ATTR{serial}。我正在使用的应用程序 (Android adb) 需要设备报告序列号才能正常工作。
有什么办法可以伪造设备的序列号,例如使用 udev 规则?
澄清:问题不在于如何获取USB设备的序列号,而在于如何设置序列号。
我有一部 Android 手机,它不会通过 USB 报告序列号,而 adb 工具不太喜欢这个。到目前为止,似乎没有任何简单的解决方案。然而,现在购买合适的 Android 手机进行开发非常容易。
首先,确保未报告序列号的设备确实是问题所在。adb devices
如果没有权限访问 下的相应设备,会将序列号列为全问号/dev/bus/usb/
。另请记住 adb 会启动服务器,您可能需要终止该服务器才能重新探测。
假设确实是设备的问题,我赶紧检查了adb源代码。它出现register_device
在core/adb/usb_linux.c
直接从设备读取序列号中。core/adb/usb_libusb.c
调用libusb_get_device_descriptor
来执行此操作(检查 libusb 源代码)从 sysfs 或直接从设备获取它。所以不幸的是,任何 udev 技巧都无济于事。
您的选择似乎是:
adb
(它是开源的)。我认为这对于 Stack Overflow 来说是一个更多的问题。