在 T2 Macbook Pro 上看不到所有带有 PyUSB 和 libusb 的 USB 设备

问题描述

我一直在使用 PyUSB 和 libusb 来处理我的 USB 设备。在底层,PyUSB 使用 libusb-1.0.24.dylib 访问所有 USB 设备。这很好用,但我在使用它来查看我的网络摄像头时遇到了问题。事实上,我什至无法为我的网络摄像头获取 USB 描述符,这让我感到惊讶。

我有一台配备 T2 芯片的 Macbook Pro 2019。当我在系统信息中查找我的 USB 设备时,我知道所有内部 USB 设备似乎都在 T2 芯片后面:

systemInfo-t2

深入研究 ioreg 命令,我可以清楚地看到这些设备是 USB 并且是可见的:

% ioreg -c IoUSBDevice -r 

[...]
+-o FaceTime HD Camera (Built-in)@80200000  <class AppleUSBDevice,id 0x1000005$
  | {
  |   "kUSBSerialNumberString" = "CC2948501XLHNW1BM"
  |   "bDeviceClass" = 239
  |   "bDeviceSubClass" = 2
  |   "iSerialNumber" = 3

当我尝试使用 PyUSB 获取我的 USB 设备列表时,它似乎无法识别 T2 芯片上的任何内容

import usb.core
import usb.util

for bus in usb.busses():
    for device in bus.devices:
        if device != None:
            usbDevice = usb.core.find(idvendor=device.idvendor,idProduct=device.idProduct)
            print(usbDevice)

因此我得到了一些设备:我看到一些位于 T2 芯片后面的 HID 设备,但没有看到我的网络摄像头。同样,我使用了 py-libusb 中的示例代码,它也不会从 T2 芯片返回任何内容,除了 HID 设备。

我不认为 T2 芯片挡住了摄像头:首先 OpenCV2 找到我的网络摄像头没有问题,如果我使用 Parallels Desktop 并将摄像头分配给 Windows,我可以在 Windows 上运行 PyUSB 代码和查看我的网络摄像头 USB 描述符。所以看起来这真的是mac和T2芯片上的libusb。

我尝试请求我的相机的确切 idvendor 和 idProduct,但仍然没有返回。我尝试使用 print(usb.busses()) 进行挖掘,但除了某个位置外,我找不到任何地方都很空。

我知道网络摄像头是由系统提供的 UVC 驱动程序拍摄的,我不需要自己编程,但这不是重点。谁能告诉我这是怎么回事:为什么我看不到 USB 描述符?

解决方法

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

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

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