USB 键盘可与基座或交换集线器配合使用,但不能同时与两者配合使用

USB 键盘可与基座或交换集线器配合使用,但不能同时与两者配合使用

硬件设置

我有一台 2020 MacBook Pro 和一台 Windows 机器,插在USB 切换器使用外部 5v 电源。从转换器到 MacBook 的电缆插入贝尔金基座,MacBook 插入其中。键盘是Massdrop CTRL

当切换器设置为 Windows 机器时,有问题的键盘在此设置下可以完美运行,但当切换到 Mac 时则不行。

我也测试了所有电缆。当跳过底座并将其插入 MacBook 时,转换器和底座之间的电缆工作正常(键盘可以使用)。

我已将问题缩小到与底座和转换器一起使用的问题。当 MacBook 仅使用底座或转换器时,键盘可以正常工作,但当两者同时使用时则不行。其他 USB 键盘在使用底座和转换器时可以正常工作。

调试

以下是我迄今为止收集的一些其他调试详细信息:

$ system_profiler SPUSBDataType当键盘插入基座时:

CTRL Keyboard:
    Product ID: 0xeed2
    Vendor ID: 0x04d8  (Microchip Technology Inc.)
    Version: 1.01
    Serial Number: 1608915629
    Speed: Up to 12 Mb/s
    Manufacturer: Massdrop Inc.
    Location ID: 0x01420000 / 7
    Current Available (mA): 500
    Current Required (mA): 500
    Extra Operating Current (mA): 0

当插入切换器时:

Hub:
    Product ID: 0xeec5
    Vendor ID: 0x04d8  (Microchip Technology Inc.)
    Version: 1.01
    Location ID: 0x01330000

$ dmesg | grep USB将键盘插入切换器之前和之后的差异:

[3366142.613770]: 978319.845701 AppleUSB20HubPort@01330000: AppleUSBHostPort::terminateDevice: destroying 0x04d8/eec5/0101 (IOUSBHostDevice): connect change interrupt
[3366142.615398]: 978319.847330 AppleUSB20HubPort@01330000: AppleUSBHostPort::enumerateDeviceComplete_block_invoke: enumerated stale device
[3366142.615419]: 978319.847352 IOUSBHostDevice@01330000: IOUSBHostDevice::start_block_invoke: device will not be registered for matching
[3366142.672090]: AppleUSBHostRequestCompleter::clearPipeStallThreadCall: clearStall for pipe <ptr> failed (0xe00002bc)
[3366144.672617]: 978321.904549 AppleUSB20HubPort@01330000: AppleUSBHostPort::terminateDevice: destroying 0x04d8/eec5/0101 (IOUSBHostDevice): connect change interrupt
[3366144.674165]: 978321.906097 AppleUSB20HubPort@01330000: AppleUSBHostPort::enumerateDeviceComplete_block_invoke: enumerated stale device
[3366144.674183]: 978321.906116 IOUSBHostDevice@01330000: IOUSBHostDevice::start_block_invoke: device will not be registered for matching
[3366144.731852]: AppleUSBHostRequestCompleter::clearPipeStallThreadCall: clearStall for pipe <ptr> failed (0xe00002bc)

$ ioreg -p IOUSB将键盘插入底座(工作):

+-o Root  <class IORegistryEntry, id 0x100000100, retain 26>
  +-o AppleUSBVHCIBCE Root Hub Simulation@80000000  <class AppleUSBRootHubDevice, id 0x1000003e3, registered, matched, active, busy 0 (7 ms), retain 15>
  | +-o Headset@80400000  <class AppleUSBDevice, id 0x1000003e5, registered, matched, active, busy 0 (0 ms), retain 11>
  | +-o Apple T2 Controller@80100000  <class AppleUSBDevice, id 0x1000003eb, registered, matched, active, busy 0 (0 ms), retain 13>
  | +-o Touch Bar Backlight@80700000  <class AppleUSBDevice, id 0x1000003f1, registered, matched, active, busy 0 (0 ms), retain 13>
  | +-o FaceTime HD Camera (Built-in)@80200000  <class AppleUSBDevice, id 0x1000003f8, registered, matched, active, busy 0 (0 ms), retain 13>
  | +-o Touch Bar Display@80600000  <class AppleUSBDevice, id 0x100000401, registered, matched, active, busy 0 (0 ms), retain 13>
  | +-o Ambient Light Sensor@80300000  <class AppleUSBDevice, id 0x10000040f, registered, matched, active, busy 0 (0 ms), retain 11>
  | +-o Apple Internal Keyboard / Trackpad@80500000  <class AppleUSBDevice, id 0x100105c59, registered, matched, active, busy 0 (2 ms), retain 19>
  +-o AppleUSBXHCI Root Hub Simulation@00000000  <class AppleUSBRootHubDevice, id 0x10008f0dc, registered, matched, active, busy 0 (0 ms), retain 8>
  +-o AppleUSBXHCI Root Hub Simulation@14000000  <class AppleUSBRootHubDevice, id 0x10009c5ff, registered, matched, active, busy 0 (1 ms), retain 8>
  +-o AppleUSBXHCI Root Hub Simulation@01000000  <class AppleUSBRootHubDevice, id 0x100105acb, registered, matched, active, busy 0 (1 ms), retain 11>
    +-o USB3.1 Hub@01100000  <class AppleUSBDevice, id 0x1001064ee, registered, matched, active, busy 0 (0 ms), retain 11>
    +-o USB2.1 Hub@01300000  <class AppleUSBDevice, id 0x100106505, registered, matched, active, busy 0 (0 ms), retain 14>
    | +-o Razer Naga Pro@01340000  <class AppleUSBDevice, id 0x10010651d, registered, matched, active, busy 0 (3 ms), retain 19>
    | +-o G533 Gaming Headset@01310000  <class AppleUSBDevice, id 0x10010655a, registered, matched, active, busy 0 (1 ms), retain 17>
    | +-o KM360 MX@01320000  <class AppleUSBDevice, id 0x100106594, registered, matched, active, busy 0 (1 ms), retain 13>
    +-o IOUSBHostDevice@01400000  <class AppleUSBDevice, id 0x1001071a9, registered, matched, active, busy 0 (0 ms), retain 12>
      +-o CTRL Keyboard@01420000  <class AppleUSBDevice, id 0x1001071ba, registered, matched, active, busy 0 (3 ms), retain 17>

当插入交换集线器时:

+-o Root  <class IORegistryEntry, id 0x100000100, retain 26>
  +-o AppleUSBVHCIBCE Root Hub Simulation@80000000  <class AppleUSBRootHubDevice, id 0x1000003e3, registered, matched, active, busy 0 (7 ms), retain 15>
  | +-o Headset@80400000  <class AppleUSBDevice, id 0x1000003e5, registered, matched, active, busy 0 (0 ms), retain 11>
  | +-o Apple T2 Controller@80100000  <class AppleUSBDevice, id 0x1000003eb, registered, matched, active, busy 0 (0 ms), retain 13>
  | +-o Touch Bar Backlight@80700000  <class AppleUSBDevice, id 0x1000003f1, registered, matched, active, busy 0 (0 ms), retain 13>
  | +-o FaceTime HD Camera (Built-in)@80200000  <class AppleUSBDevice, id 0x1000003f8, registered, matched, active, busy 0 (0 ms), retain 13>
  | +-o Touch Bar Display@80600000  <class AppleUSBDevice, id 0x100000401, registered, matched, active, busy 0 (0 ms), retain 13>
  | +-o Ambient Light Sensor@80300000  <class AppleUSBDevice, id 0x10000040f, registered, matched, active, busy 0 (0 ms), retain 11>
  | +-o Apple Internal Keyboard / Trackpad@80500000  <class AppleUSBDevice, id 0x100105c59, registered, matched, active, busy 0 (2 ms), retain 19>
  +-o AppleUSBXHCI Root Hub Simulation@00000000  <class AppleUSBRootHubDevice, id 0x10008f0dc, registered, matched, active, busy 0 (0 ms), retain 8>
  +-o AppleUSBXHCI Root Hub Simulation@14000000  <class AppleUSBRootHubDevice, id 0x10009c5ff, registered, matched, active, busy 0 (1 ms), retain 8>
  +-o AppleUSBXHCI Root Hub Simulation@01000000  <class AppleUSBRootHubDevice, id 0x100105acb, registered, matched, active, busy 0 (1 ms), retain 10>
    +-o USB3.1 Hub@01100000  <class AppleUSBDevice, id 0x1001064ee, registered, matched, active, busy 0 (0 ms), retain 11>
    +-o USB2.1 Hub@01300000  <class AppleUSBDevice, id 0x100106505, registered, matched, active, busy 0 (0 ms), retain 14>
      +-o Razer Naga Pro@01340000  <class AppleUSBDevice, id 0x10010651d, registered, matched, active, busy 0 (3 ms), retain 19>
      +-o G533 Gaming Headset@01310000  <class AppleUSBDevice, id 0x10010655a, registered, matched, active, busy 0 (1 ms), retain 17>
      +-o KM360 MX@01320000  <class AppleUSBDevice, id 0x100106594, registered, matched, active, busy 0 (1 ms), retain 13>

将集线器连接到基座电缆并将其直接放入 MacBook 中以代替基座(键盘在此配置下可用):

+-o Root  <class IORegistryEntry, id 0x100000100, retain 25>
  +-o AppleUSBVHCIBCE Root Hub Simulation@80000000  <class AppleUSBRootHubDevice, id 0x1000003e3, registered, matched, active, busy 0 (7 ms), retain 15>
  | +-o Headset@80400000  <class AppleUSBDevice, id 0x1000003e5, registered, matched, active, busy 0 (0 ms), retain 11>
  | +-o Apple T2 Controller@80100000  <class AppleUSBDevice, id 0x1000003eb, registered, matched, active, busy 0 (0 ms), retain 13>
  | +-o Touch Bar Backlight@80700000  <class AppleUSBDevice, id 0x1000003f1, registered, matched, active, busy 0 (0 ms), retain 13>
  | +-o FaceTime HD Camera (Built-in)@80200000  <class AppleUSBDevice, id 0x1000003f8, registered, matched, active, busy 0 (0 ms), retain 13>
  | +-o Touch Bar Display@80600000  <class AppleUSBDevice, id 0x100000401, registered, matched, active, busy 0 (0 ms), retain 13>
  | +-o Ambient Light Sensor@80300000  <class AppleUSBDevice, id 0x10000040f, registered, matched, active, busy 0 (0 ms), retain 11>
  | +-o Apple Internal Keyboard / Trackpad@80500000  <class AppleUSBDevice, id 0x100105c59, registered, matched, active, busy 0 (2 ms), retain 19>
  +-o AppleUSBXHCI Root Hub Simulation@00000000  <class AppleUSBRootHubDevice, id 0x10008f0dc, registered, matched, active, busy 0 (0 ms), retain 8>
  +-o AppleUSBXHCI Root Hub Simulation@14000000  <class AppleUSBRootHubDevice, id 0x10009c5ff, registered, matched, active, busy 0 (1 ms), retain 8>

目前我对 USB 还不够熟悉,不知道如何继续。

答案1

USB 切换器违反了非常基本的 USB 规范,使用 USB-A 端口作为输入,几乎可以肯定他们在其他地方也违反了规范。它无法正常工作,很可能是因为他们没有遵循要求的规范。如果有人将 USB 切换器附带的 USB-A 转 USB-A 电缆与随附的 USB 切换器以外的其他设备一起使用,则可能会引起火灾。在产品说明中,他们警告说该设备可能会干扰 2.4 GHz Wi-Fi 和蓝牙,这是设计不良的另一个迹象。这个开关坏了,如果可以的话,请将其寄回以获得退款。不要再买类似的开关了,因为它也会一样坏。设计有问题。

根据您插入设备的方式,您可能会使用交换机附带的电缆(两端都带有 USB-A 的电缆)损坏计算机或集线器。该电缆可能会使 USB 端口供电短路。请不要再用它做实验了。扔掉它或寄回。

USB 规范要求连接到主机的端口必须是 USB-B/母头、USB-C/母头、带有 USB-A 或 USB-C 公头的固定电缆或专有连接器。现在 USB 设备上很少看到专有连接器,但在 USB-C 出现之前,它们在手机和其他便携式电子设备上很常见,通常是一些薄而扁平的宽连接器,带有弹簧夹将其固定到位。设备端口应该是母头 USB-A 或 USB-C,但违反此规范是不寻常的,因为任何其他方式都会使插入设备变得困难。

相关内容