0

Hardware Setup

I have a 2020 MacBook Pro and a Windows machine plugged into a USB switcher with an external 5v power supply. The cable from the switcher to the MacBook is plugged into a the 3.0 port on a Belkin dock, which the MacBook is plugged into. The keyboard is a Massdrop CTRL.

The keyboard in questions works perfectly in the this setup when the switcher is set to the Windows machine, but not when it's switch to the Mac.

I've test all cables as well. The cable between the switcher and dock works fine when the dock is skipped and it gets plugged into the MacBook (the keyboard works).

I've narrowed the issue down to something to do with the dock and the switcher together. The keyboard works perfectly well when either only the dock or the switcher is used with the MacBook, but not when both are used. Other USB keyboards work just fine with both the dock and switcher used.

Debugging

Here are some additional debugging details that I've gathered so far:

$ system_profiler SPUSBDataType when keyboard plugged into dock:

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

And when plugged into switcher:

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

$ dmesg | grep USB before and after plugging the keyboard into the switcher and diffed:

[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 with the keyboard plugged into the dock (working):

+-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>

And when plugged into the switch hub:

+-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>

Taking the hub to dock cable and putting it directly in the MacBook in place of the dock (keyboard works in this configuration):

+-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>

At this point I'm not familiar enough with USB to know how to proceed further.

2
  • 1
    In the comments below you mention using a different switch than in the original question in an attempt to resolve the issue, and issue is still not resolved. The question should then be edited to reflect this change in the problem or a new question opened. Those coming to this question cold should not have to read all the comments to know what has already been tried to resolve the issue.
    – MacGuffin
    Commented Dec 12, 2021 at 16:18
  • Did you manage to get it fixed, or found a KM switch that wasn't faulty in this configuration? I'm experiencing the same issues as you with differnt hardware.
    – iMoses
    Commented Aug 27, 2023 at 16:15

1 Answer 1

1

The USB switcher violated a very basic USB specification by using USB-A ports as inputs, it's nearly certain that they broke the spec elsewhere. It's not working correctly likely because they did not follow the specifications required of them. The USB-A to USB-A cables that came with the USB switch are a potential fire hazard if someone were to use them with anything other than the USB switch they came with. In the product description they warn the device can interfere with 2.4 GHz Wi-Fi and Bluetooth, another sign of poor design. This switch is broken, send it back for a refund if you can. Do not get another switch like it because that will be just as broken. The design is broken.

Depending on how you plugged things in it is possible you damaged your computer or hub using that cable that came with the switch, the cable with USB-A on both ends. That cable will possibly short circuit the power supplied by USB ports. Please stop experimenting with it. Throw it away or send it back.

The USB spec requires that ports that connect to a host need to be USB-B/female, USB-C/female, a captive cable with a male USB-A or USB-C, or a proprietary connector. It's rare to see a proprietary connector on USB devices any more but they were common on cell phones and other portable electronics before USB-C, usually some flimsy flat and wide connector with spring clips to hold it in place. Device ports should be female USB-A or USB-C, but violating this spec would be unusual since anything else would make it difficult to plug in devices.

9
  • Thanks. Could you please add what I should be looking for, or whether it's not possible to make a device that functions similarly and is compliant with the spec? My use case is switching USB devices between two computers, one of which needs a dock in between it and the switching hub. For example, this device uses Type-C to Type-C instead, is this more appropriate? newegg.com/p/36F-0073-00014
    – Nathan K
    Commented Dec 8, 2021 at 19:52
  • I also see this fills the same function but uses Type-B for the switch end of the cables iogear.com/product/GUS432CA1KIT
    – Nathan K
    Commented Dec 8, 2021 at 20:19
  • While helpful, this doesn't actually answer my question. Using an entirely new switcher (the iogear one linked in my other comment), the exact same problem persists. The issues seems to lie either within MacOS or the keyboard's firmware.
    – Nathan K
    Commented Dec 10, 2021 at 23:19
  • 1
    I suspect the issue now lies with not getting enough power to your USB devices. The Belkin dock is taking power only from the one USB-C port and the IOGear switch is trying to power four USB ports from a single USB port, or from an optional micro-B power supply. The keyboard with a bunch of lights in it is going to draw more power than one that does not. That's likely why other keyboards work but the one that lights up does not.
    – MacGuffin
    Commented Dec 11, 2021 at 3:55
  • 1
    @NathanK What you describe will not rule out the power issue. By removing the dock from the chain you also remove the power limitations of the dock. The USB-C port on a Mac is capable of 15 watts but the power output of the Belkin dock is much less. Look at the specs: belkin.com/us/support-article?articleNum=217446 They don't even list how much power comes out, likely because it is embarrassingly low or even so low it doesn't meet the USB specs. The problem is not the firmware, the problem is you are stacking unpowered USB hubs which will leave devices without enough power.
    – MacGuffin
    Commented Dec 12, 2021 at 16:09

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .