Zend certified PHP/Magento developer

USB Keyboard works with dock or switching hub, but not with both

Hardware Setup

I have a 2019 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)

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