haimgel / display-switch

Turn a $30 USB switch into a full-featured multi-monitor KVM switch
https://haim.dev/posts/2020-07-28-dual-monitor-kvm/
MIT License
2.85k stars 112 forks source link

More robust input switching #30

Open haimgel opened 3 years ago

haimgel commented 3 years ago

To achieve more robust switching, and to not flicker the monitor uselessly, the app should do something like this, when input switch if required:

Unfortunately, the DDC implementation varies between different monitors and is often buggy. The write command also does not have meaningful feedback (we don't know if it succeeded or not), and for some monitors, we do need to retry to reliably switch the inputs.

andornaut commented 3 years ago

My setup:

Macbook (closed lid) -
                       \
                         -->  KVM  -->  External display on DisplayPort1
                       /
Linux desktop --------

When switching from Linux to Mac the external display will sometimes not wake-up. I have found that display-switch can help workaround this flakiness by sending a DDC input switch command (even though only one input is connected). My display-switch.ini is as follows:

usb_device = "1532:0e03"
on_usb_connect = "DisplayPort1"

The monitor is connected to the KVM via DisplayPort1, and there are no other display cables attached to the monitor.

This workaround seems to work. (Though there are some issues WRT the timing of the DDC input-switch command, which I hope can be improved via the addition of a retry mechanic to display-switch. Please see #48). I wonder if implementing this issue as stated in the description would make this use case no longer viable?

If already on the desired input, do nothing.

Perhaps the behaviour above could be toggled by a setting, as I believe that sending a "redundant" input-switch command has the pleasant side-effect of fixing the wake-up issue with my Macbook. Incidentally, this issue seems somewhat common with Macbook + KVMs. I'm using a Level1tech's KVM and would like to suggest display-switch as a solution to others experiencing these issues.

haimgel commented 3 years ago

Yeah, your issue is not exactly the same, but related. It makes sense to do what you're proposing here (thanks for the PR!), and hopefully I'll expand on that in the future.