No internet connection
  1. Home
  2. Technical Support

Issue with Tinypilot and AIMOS KVM - unable to activate hotkeys

By @jon.ds
    2021-08-23 09:59:36.264Z

    Hi,

    Just received my device and hooked it up to the AIMOS 4 port KVM I bought in anticipation of using it with the Tinypilot.

    So I've hooked it up, and added a powered HDMI splitter. I've booted and it's all looking good - but a couple of issues present themselves:

    1. Keyboard and Mouse activity is not relayed when the TP is plugged in to the Keyboard or Mouse USB ports on the KVM - those ports do work if I connect a mouse and keyboard
    2. If I plug the TP into one of the hub ports, the mouse and keyboard is relayed - however, I'm unable to activate the hotkeys - they don't work - which I suspect is only supported on the Keyboard USB port.

    I note that the KVM is listed as Full Compatibility on Github, and that the hotkeys are support.

    If anyone has any insight, would be much appreciated.

    Thanks,

    • 8 replies
    1. I've tested that model, and the keyboard hotkeys work in my tests. Can you check this video and verify that your connections are the same?

      1. J
        In reply tojon.ds:
        @jon.ds
          2021-08-25 09:46:58.332Z

          Thanks for coming back to me Michael. I can confirm that that is how I have my cabling setup - admittedly not as messy :D

          I've tried various things, including using an extension adapter, to rule out an issue with the port on the KVM - but still...

          There is some worrisome logging however:
          TinyPilot logs
          Aug 25 05:43:50 tinypilot python[606]: self.run()
          Aug 25 05:43:50 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:50 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:50 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:50 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:50 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:50 tinypilot python[606]: Process Process-324:
          Aug 25 05:43:50 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:50 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:50 tinypilot python[606]: self.run()
          Aug 25 05:43:50 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:50 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:50 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:50 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:50 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:50 tinypilot python[606]: Process Process-325:
          Aug 25 05:43:50 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:50 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:50 tinypilot python[606]: self.run()
          Aug 25 05:43:50 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:50 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:50 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:50 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:50 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:50 tinypilot python[606]: Process Process-326:
          Aug 25 05:43:50 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:50 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:50 tinypilot python[606]: self.run()
          Aug 25 05:43:50 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:50 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:50 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:50 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:50 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:51 tinypilot python[606]: Process Process-327:
          Aug 25 05:43:51 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:51 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:51 tinypilot python[606]: self.run()
          Aug 25 05:43:51 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:51 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:51 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:51 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:51 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:51 tinypilot python[606]: Process Process-328:
          Aug 25 05:43:51 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:51 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:51 tinypilot python[606]: self.run()
          Aug 25 05:43:51 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:51 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:51 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:51 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:51 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:51 tinypilot python[606]: Process Process-329:
          Aug 25 05:43:51 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:51 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:51 tinypilot python[606]: self.run()
          Aug 25 05:43:51 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:51 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:51 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:51 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:51 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:52 tinypilot python[606]: Process Process-330:
          Aug 25 05:43:52 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:52 tinypilot python[606]: self.run()
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:52 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:52 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:52 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:52 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:52 tinypilot python[606]: Process Process-331:
          Aug 25 05:43:52 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:52 tinypilot python[606]: self.run()
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:52 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:52 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:52 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:52 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:52 tinypilot python[606]: Process Process-332:
          Aug 25 05:43:52 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:52 tinypilot python[606]: self.run()
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:52 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:52 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:52 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:52 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:52 tinypilot python[606]: Process Process-333:
          Aug 25 05:43:52 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:52 tinypilot python[606]: self.run()
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:52 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:52 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:52 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:52 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:52 tinypilot python[606]: Process Process-334:
          Aug 25 05:43:52 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:52 tinypilot python[606]: self.run()
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:52 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:52 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:52 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:52 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:52 tinypilot python[606]: Process Process-335:
          Aug 25 05:43:52 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:52 tinypilot python[606]: self.run()
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:52 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:52 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:52 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:52 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:52 tinypilot python[606]: Process Process-336:
          Aug 25 05:43:52 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:52 tinypilot python[606]: self.run()
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:52 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:52 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:52 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:52 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:52 tinypilot python[606]: Process Process-337:
          Aug 25 05:43:52 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:52 tinypilot python[606]: self.run()
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:52 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:52 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:52 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:52 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:52 tinypilot python[606]: Process Process-338:
          Aug 25 05:43:52 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:52 tinypilot python[606]: self.run()
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:52 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:52 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:52 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:52 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:52 tinypilot python[606]: Process Process-339:
          Aug 25 05:43:52 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:52 tinypilot python[606]: self.run()
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:52 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:52 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:52 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:52 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown
          Aug 25 05:43:52 tinypilot python[606]: Process Process-340:
          Aug 25 05:43:52 tinypilot python[606]: Traceback (most recent call last):
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
          Aug 25 05:43:52 tinypilot python[606]: self.run()
          Aug 25 05:43:52 tinypilot python[606]: File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
          Aug 25 05:43:52 tinypilot python[606]: self._target(*self._args, **self._kwargs)
          Aug 25 05:43:52 tinypilot python[606]: File "/opt/tinypilot/app/hid/write.py", line 18, in _write_to_hid_interface_immediately
          Aug 25 05:43:52 tinypilot python[606]: hid_handle.write(bytearray(buffer))
          Aug 25 05:43:52 tinypilot python[606]: BrokenPipeError: [Errno 108] Cannot send after transport endpoint shutdown

          1. J
            In reply tojon.ds:
            @jon.ds
              2021-08-25 09:49:57.371Z

              I should add, I also downloaded a fresh img and wrote to a new SD, just to rule out corruption on the original.

              1. In reply tojon.ds:

                Are you seeing those errors when you have it connected to the USB hub port? And do you get the same behavior on both USB hub ports?

                Are you able to use hotkey switching successfully if you plug a real keyboard into the USB hub port?

                1. J
                  In reply tojon.ds:
                  @jon.ds
                    2021-08-26 08:58:43.603Z2021-08-26 09:05:15.302Z
                    1. So those error messages are present regardless of whether the TP USB cable is plugged in to:
                      Hub 1, Hub 2, Keyboard and Mouse - I've shutdown/powered off then power on between each boot and the errors are still in the logs
                    2. When plugging in a normal keyboard into the KVM Keyboard port, the hotkeys DO work.

                    To reiterate the original post - when plugged in to either of the hub ports, the TP is able to control the connected PCs - but not initiate the switching.

                    I have now also tried swapping out the PI with an 8gb Pi4 I have. Same result.

                    When following syslog, the same Python errors are being spammed - any time the TP web window is in focus.

                    1. When following syslog, the same Python errors are being spammed - any time the TP web window is in focus.

                      Are you connected to a target machine that has a GUI? If you're using TinyPilot to manage a machine that's console-only, those errors are expected because TinyPilot is trying to forward mouse input when you move the mouse across the screen, but the target machine won't accept mouse input.

                      To reiterate the original post - when plugged in to either of the hub ports, the TP is able to control the connected PCs - but not initiate the switching.

                      Sorry, I can't figure out what might be going wrong here. This same setup works on my end with the same equipment.

                      Are you using the cables that you purchased from TinyPilot? Is there anything between the TinyPilot device and the AIMOS KVM aside from the gray microUSB to USB cable?

                      If this breaks the scenario you had in mind, send me an email and I can offer you a return for a full refund.

                    2. J
                      In reply tojon.ds:
                      @jon.ds
                        2021-08-26 22:06:13.370Z

                        I did some troubleshooting late last night and made some progress. With regard to the cables, yes I am using the ones provided.

                        Would you be able to send me an img for an older release? Say from around the time you tested?

                        The USB gadget code is the cause of the issue - by stripping out the mouse and mass storage configuration I could get it to work - adding back in the mouse, the keyboard still worked but the mouse was erratic and unusable - I suspect that is solvable by tuning the configuration of the mouse in the init script.

                        1. Sure, can you send me an email? The one in your profile seems to not accept incoming messages. I'll reply privately with a copy of the old image.