Haha, just writing a "me too here", I just came to the same conclusion, but I think my setup is better and cheaper, if a tiny bit more complex. For example, the above would need to install to all computers which is a no go for me. Also this is dependent on the USB switching, cannot be triggered fully remotely.
- DDC commands for monitor input switching
- USB KVM that has only one button to switch - mine was 25$, there are plenty of models out there
- Stream deck or prebuilt macropads are super expensive (80$+) for what they are - a few buttons. Get a cheap AliExpress macropad, they go for 5-10-15$ and have all kinds of layouts. They are also much smaller, you can get just one, or 2-3-4 buttons. Don't use the crappy software they ship with, there are github projects to program them. https://github.com/rOzzy1987/MacroPad
- FingerBot 16$ (if you already have HomeAssistant, Zigbee+BT it's faster) or Switchbot 28$ (bluetooth, has a bit more delay) to press the USB KVM button.
- Then an AHK switch to watch for keyboard shortcuts, and trigger both the DDC commands and the USB switch button.
It has a few seconds delay, but it's controlled from one source only, and can be also fully triggered remotely.
I'm sure your setup has extra advantages over regular KVM switch and was an enjoyable hacking project for you. But from a price perspective, it's possible to buy a 4-way 4K HDMI KVM switch with a control pad on AliExpress for 29.25$. I don't know how much shipping to US will cost though, shipping to Europe was 15$.
I researched a lot for KVMs before. The problem is the video output is hard to get right. What about 120hz+, multi-monitor, how stable the thing is long term. I also thought this is a long solved problem but it isn't. Looking at Ali there isn't a model with too many reviews that can do the above.
You only need input source set. I think most mainstream brands support it - you don't need DDC directly, the easiest way is using the included driver which usually provides a utility console commands. Most common suggestion is something from Dell (with its Dell Display Manager).
Unfortunately I would need this to work on Windows, Mac, and Linux, and my home monitor (Samsung) only has a Windows driver. I can use a very simple m1ddc command on my Mac to select the input on my office monitor (Dell), but not my home monitor.
No. The macropad would be connected to one PC which would be the controller, so you press that regardless which output is selected, maybe this wasn't clear. But this is only needed to trigger - theorietically it could be triggered by a third device (eg RasPi connected to the display(s) via HDMI).
Maybe to add, this is also better than a KVM because it supports any number of display outputs which you can connect between the two devices. It's more practical to use a USB-C dock though.
After researching KVMs I also came to the same conclusion that ddc is the solution.
My use case is a bit different. I have two Windows machines and a dual monitor setup. I use NirSoft ControlMyMonitor which has a CLI and a Elgato Stream Deck.
In a normal KVM approach both monitors are showing only one computer. My use case is a bit odd- I want one computer on monitor A and the other on monitor B. I may also want to flip that. I use a portrait and landscape setup. Then I want to be able to switch mouse/keyboard independently of monitor configuration.
Each computer runs the Stream Deck software and the Stream Deck is connected to the USB switch.
Does there exist any hardware knob that you can put between display and displayport cable to adjust brightness? I hate the fiddly menus in monitors and in linux no ddc utils work for me (some "leds" that should include monitor brightness only has keyboard leds)
If you can't control the brightness from Linux when using proper software tools, then it's likely your monitor simply doesn't support the brightness control commands and inserting another device between your GPU and monitor won't achieve anything.
> your monitor simply doesn't support the brightness control commands
Or it does but the state of DDC/CI (and HDMI-CEC) is very sad as implementation is inconsistent and subpar to say the least (from order of commands to timing to subtle difference in required payloads that would make the display reject commands).
A dedicated device would cut the GPU out of the equation, but most likely patching ddc tools can be equally fruitful.
I found even these simple USB Switchers to be quite expensive, and sometimes they require drivers that don't work on Linux. I quickly sketched a simple circuit board with USB hubs and a switch and ordered them assembled (!) from one of those DIY-fabs (JLCPCB or PCBWay). They cost 25€ for 5 pcs, each with one 2-to-1 switch. I don't have any experience in circuit design and didn't have to solder anything, and they work perfectly.
These would go pretty well with this software, maybe I'll give it a try.
That sounds awesome -- Please post the designs somewhere accessible! My experience of kvms is that they're either cheap and don't work in weird ways or expensive and do work, but with quirks. I think no small part of it is earthing and the avoidance of ground loops at different potentials.
After doing a bunch of research I eventually bought a monitor with a KVM built in and I’ve had almost no issues with it. It does imply if you go this route that you are stuck with a single monitor setup, but if that is how you work anyway it’s totally fine and great.
Yes I noticed prices had increased a bit over the last couple of years. Perhaps there's a market for yours.
Interesting to hear that some USB switchers don't quite work in Linux. I had assumed they were just very basic USB hubs so no special drivers required. I know some USB switches have fancier things like inter-PC file transfer or mouse sharing like this one (https://www.aliexpress.com/item/1005006202631772.html), and that often requires special software and drivers.
I bought this one  for USD 13 in 2019 and still use it with display-switch (which the OP mentions) to this day.
It's as "dumb" as is possible, according to one of the reviews the ports can be a little iffy if you've plugged things into it too many times, but it's still working perfectly for me for my 2x Dell P2419H monitors.
I chose this one due to all the wires being on the back, but I'd also be happy with the one with the remote in the OP's GitHub page.
Good KVMs, specifically the ones from Level1Tech, are smart enough to keep all monitors connected virtually so all your windows stay in place when you switch back and forth between machines. There is no delay of plugging devices in because from the perspective of the client PCs the USB/display port devices were never gone. Of course you can connect a bunch of peripherals to a dock and switch the upstream thunderbolt connection, but that doesn't work correctly.
Crappy KVM solutions are easy. Good ones are hard.
Rextron (the OEM behind Level1Techs' kVMs) has a version with EDID emulation, but it only supports usb1.1, not 3.0 or above. I sent a casual question to their contact to see what getting a branded one looks like and the Level1Techs ones are not sold at a huge markup, only about 20% or so.
Yeap! This is my setup for MacOS and Linux with display port: KVM Switch Dual Monitor DisplayPort 1.4 8K@30Hz 4K@144Hz 2 in 2 Out,DP1.4 KVM Switch and 4 USB3.0 for 2 Computers,Backnward Compatible DP1.2 with DP+UBS Cables and Wired Controller https://a.co/d/5A3IG5P
The only ones I know of are the ConnectPRO ones. I have a UDP2-14AP, but it's really finicky. It works great with some systems and monitors, even at high resolutions and refresh rates. But other systems (for me, my MacBook) involve several blank-and-move-all-your-windows-around cycles before it settles and becomes usable after switching to it. I suspect this might be a monitor compatibility thing with the Mac, but I'm not sure.
Anyway, it's pricey and picky about compatibility, so it's hard to recommend, but I'm not aware of anything comparable in terms EDID emulation and support for high res/refresh modes.
Edit: Based on a sibling comment, the situation may have changed and there may be comparable ones around!
Most newer Dell monitors have built -in KVMs and hubs. It's nice, becuase with wireless peripherals that USB receivers, it's a cableless setup. With a laptop, it's just a single cable to hookup everything.
I have an Intel Macbook 2019 for work. I've tried a couple different kvm solutions but they all had issues, always on the Mac side. The best I got was <1 sec switching from Mac to Linux and 10-15 seconds switching from Linux to Mac for everything to stabilize.
macOS has either always lacked (like Display port MST) or later broken/crippled (like DisplayLink support) some important features for multi-monitor setups. I wonder if those things or similar things are somehow implicated in these KVM-enabled monitors.
I also had hell even with an Intel Macbook Pro. This whole just works thing Apple has been able to project is unfortunate. I have refused using Apple products from work because of how poorly their products integrate. It's not Dell. It's Apple. Any other monitor manufacturer will have the same issues.
Apple also refuses to implement a protocol that allows controlling the brightness and volume of a non-Apple monitor from the keyboard or even macOS itself. It's infuriating. The only monitors it works with are Apple's and the two overpriced Apple-sanctioned LG monitors sold in the Apple Store.
I use an app called MonitorControl on a M1 16" MBP running Sonoma that adjusts both the MBP screen and external HP 25f monitor. It adjusts the brightness and contrast of whichever screen the cursor is in.
A 16" Macbook Pro starts at $2,499. I do expect it to just work with basic peripherals and protocols for them.
I'm just explaining how it doesn't just work, and that I'm perfectly happy not using their products. My comment was also a correction that it's on Apple, and not Dell, as to why Apple products don't work well with non-Apple devices. This is a tactic that Apple uses to try and denigrate non-Apple products and get people to come back to Apple's "premium" versions of those products.
There are clear and easy steps Apple could take, but they won't.
"I don't want to tinker with anything and have everything work out of the box" is Apple's entire value proposition.
That's the one justification that consistently gets upvoted to the top any time someone questions Apple's pricing structure. Please don't change the tune when someone reports a serious ongoing problem.
Also got the Level1Tech one last year, very expensive but worth it imho. I use it to switch between my work and home PC many times a day, and it has worked flawlessly so far with two monitors (4k60hz+2k144hz) using Linux on both machines. USB audio, mic, 4k camera, printer and keyboard+mouse peripherals
How is the latency with these devices? I produce music as a hobby and have many connections to deal with and as low latency as possible is ideal. I am looking for something I can switch between 3 different devices basically. Work laptop, MacBook Pro, and custom Linux PC. The 2 latter ones I produce on. Would this device work for that?
I haven't noticed any additional latency, but my workload isn't particularly latency critical (I do sometimes game in the 144hz display and it's as smooth as it was before I got the KVM). They don't have a 3-computer version afaik so you'd need to go with this one probably: https://www.store.level1techs.com/products/p/14-display-port...
I have had great success with a generic KVM I found on amzn , but it now appears to be unavailable, which is a shame because I wanted to buy another. Perhaps I can find it somewhere else. It has never failed to switch between sources and the only delay, as some others are pointing out, is the HDMI handshake process inherent to the monitors themselves.
I did have a considerably more expensive TESmart  but couldn't use it because it had some weird incompatibility between it, thunderbolt docking station  I used with it (which also work flawlessly), and the MBPs connected to it. I could never figure out why, even raising the issue to support with no luck.
You don't feel skeptical of products from a company called "GREATHTEK-More Convenient"? I am far too paranoid to plug random technology like that into my computers. It makes shopping for such things on Amazon nearly impossible.
Given that GPU cards tend to have more DP ports than HDMI ports, why might that be? Why don't makers of KVM switches follow the same preference as GPU's do? (or vice versa. Why do we have two standards anyway)
I was hopeful and tried using this Monoprice KVM switch (linked below), but it just wasn't worth it in my experience. Despite supporting Display Port 1.4, I could not use my monitor to its full ability with my PC (3440x1400 @165Hz w/ 10 bit color). Dropping the connection when switching inputs was also incredibly annoying; every time I switched away from my Macbook it would go to sleep.
I'm happy to switch inputs on both the USB switch and my monitor separately because it's not actually too large of a hassle, and the monitor doesn't "disconnect" when switching video inputs on my monitor so my Macbook doesn't immediately go to sleep.
If anyone is in the market for a KVM switch, consider a USB hub first. You might find yourself satisfied. They're much less of a hassle and cost very little in comparison to a full featured KVM switch.
Still faster than my monitor. It can take long enough to turn on that my laptop goes to sleep (from the password entry screen). And since I'm using the monitor as the KVM, I can't even mash the keyboard to keep it awake, I got to reach over and keep touching the laptop.
One thing to note here with these kind of tools, on displayport they typically only allow commands on the active input. Once you switch to another you can't switch back (unless you do it from the other computer). Which is kind of a hassle.
HDMI on the other hand typically allows the ddc-commands even on ports that are not the active input.
Not sure if the above must be the case but it has been the case for all displays I've used.
Just in time project! Do you know if it is possible to just switch a Thunderbolt dock? I mean: you have, fir example, four computers all supporting Thunderbolt and you just switch a USB-C between those comouters?
I have not tried because I am concern with affecting the hardware. Based on your inspiration I just found Thunderbolt KVMs such as  and .
To clarify (the first thing I wondered) each computer needs its own HDMI cable plugged into its own input on the monitor. So not true KVM as many people would think of it, but this saves you from having to use the monitor's input selector.
At least one of the computers must be on and running Windows, but maybe only one?
Before settling back to one computer, I've done the cable replug thing manually, then used the urgreen USB switch as in the README then settled to using a monitor with built-in KVM switch, and it was the best. The problem is when you want one monitor for work and gaming - 4K (and/or high-refresh) KVM switches are incredibly expensive and tend to be unreliable, so what you usually do is use USB switches and switch input source on the monitor manually, the software here saves you clicking the "change input source" button, but seems to be Windows only, so unless both machines run Windows it'll be a one way switch and you'll have to resort to manual switch back.
The monitor that is suitable for gaming and has high DPI high refresh and built-in KVM switch is Gigabyte M28U, clicking one button switches input source and USB peripherials, works quite nicely, there's also M32U but with less DPI.
Nice one. Yes built-in KVMs are great.
Btw - if you only have two computers, you can get away with running SimpleKVM on just one of them. Because it can detect a USB device being removed (ie. gone to the other computer) and inserted (arrived at this computer).
Where could I explore this further? Are these sequences specific to the device?
My current setup includes two Dell monitors (U2415 with 2x HDMI "MHL" inputs and built in USB-3 hubs.) I'm using these with a Linux X86_64 desktop. I also use Logi vertical mouse and ATK (A.JAZZ) keyboard, both on Bluetooth and both also have dongles.
I would dearly love to use the keyboard/monitor/mouse on a Raspberry Pi 5 (BT and two micro-HDMI ports) with a pure S/W based solution rather than spending $$$ for a H/W KVM switch.
Edit: WRT messy code - no judgement, no shaming here. BTDT.
I had the opposite impression. They were frustrated that the project owner was not responsive enough but also unwilling to hand over the project. Frankly it looked like a hostileish take over attempt but they don't seem to have any visibility so it didn't seem to have worked. At least a year or so ago it looked like that.
Barrier uses all IPs, so I use it with my VPN active but via my cross over cable at the library. If my USB WLAN devices supported ad Hoc mode, it would be over a permanent wireless link between the thinkpads.
My mid-range LG monitor has a built in KVM as well as PBP (picture by picture??) --- Whatever it stands for, I am able to split my 34 inch wide screen between my work Macbook and my personal computer (Linux) - I use an app that I've had forever called Synergy to share my mouse and keyboard between them seamlessly. You can even copy/paste across machines. I personally am hooked on my PBP widescreen+Synergy combo.
I believe there are HDMI splitters on amazon that let you do this with any TV, although I'm not sure how great the quality of output is. I was looking at them once to see about doing split screen gaming with two different consoles.
After trying many hardware and software solutions for easily switching between my rigs, I settled on something much simpler: a monitor with a KVM built-in. It does not have to cost you an absolute fortune. I personally chose the Gigabyte 34" M34WQ; it's probably one of the very best purchases I made in the past two years, and it simplified moving between my work and personal rigs an absolute breeze.
I haven't reviewed the code for this -- but I like this idea a lot!
I would love to see a future piece of software, one that could use any number of USB KVM's like this software does -- but could also serve as the main GUI for any number of local VM's and/or remote VM's -- connected over USB or Ethernet or software-controllable "smart" hardware KVM switch or some other intermediary layer.
In other words, abstract:
a) VM GUI;
b) Connection medium to that VM (USB, Ethernet, Smart Hardware KVM Switch, Firewire, ?, ???)
c) How/where the a given VM GUI is displayed on the local monitoring computer, i.e., be able to shrink screen, display on a multi-row, multi-column display (like a Zoom meeting!), group various related VM GUI's, have a local directory and search for VM (for example, if I've got a software development environment of various x86 Windows VM's and various ARM Android VM's -- then I might want to group by CPU or Operating System or software stack version, etc., etc.)
Now, probably all of this software infrastructure exists in one form or another.
For example, in QEMU, local or remote VM's can be created and then they can be connected to via TCP/IP...
But, to centrally manage all of those QEMU VM's and non-QEMU ones as well, as well as regular PC's running any OS on "bare metal" over any connection medium (a heterogenous network of computing machines) -- that would be the goal of this software!
VNC, or something like it, could be used on the client-side of bare-metal PC's, but wouldn't be necessary for VM's...
Anyway, KVM over USB (the original article), is a great idea!
What I ended up doing is making sure all my computers support Thunderbolt 3/4 (or USB 4 at minimum), getting a single good Thunderbolt dock (CalDigit TS4+) and just swap out which computer’s TB cable is plugged into the dock. To ease this I have a little magnetic pad stuck to my desk next to the dock which holds each computer’s cable when not in use.
It works great for my needs. Perfectly for switching between Macs or PCs with Intel iGPUs. It almost works perfectly with my gaming PC (which sometimes does double duty as a Windows/Linux workstation) but its Nvidia GPU can get cranky when used with Thunderbolt GPU passthrough for some reason under both operating systems. I think the issue is actually in drivers, but good luck getting Nvidia to care about this use case. I’m considering putting an old AMD GPU in the second slot on the PC and using that for passthrough duty.
There are pretty reasonable 4-port KVM switches on Aliexpress that support 60Hz 4K and USB-3 for $55 or even less.
I got this https://www.aliexpress.com/item/1005002941646654.html a year ago. It has some minor compatibility problems with my Macbook Pro (or Apples' multiport adapter) which require me to remove and reinsert the USB-C cable from the Macbook once in a while, but it otherwise works very well.
A year later, there are multiple such devices starting from $30, or even less.
It doesn't use DDC commands direct to the monitor(s), instead swapping it for a HDMI matrix combined with a traditional KVM for swapping around inputs smoothly when you roll your mouse over the edge of different operating systems.
The switching client runs on Windows, MacOS and Linux (if you use X).
Many KVMs do not have a "raw" port like you mention. But manufacturers are becoming more enlightened.
The other thing is, many KVMs will add a hub between your keyboard/mouse and the system you're connected to. This is convenient because you have just one cable to each system. But sometimes this is a source of incompatibility. I think the hub requires the system to be able to enumerate devices one-level removed, and the enumeration might be the source of delay. It also might be beyond bios-level firmware, which is less capable than many OS usb stacks. I believe this might have been the problem with mac boot keys.
I know a mechanical usb switch is not very elegant, but I find the reliability it adds is worth it to me.
I am using this https://a.co/d/4Bl8opp to set up my 2 MacBook Pros with 8k Monitor. The good thing about this is, it also has power delivery so that I don't have to use another cable to manage power and replaced my 2 docking stations with this. However, this still sometimes loses signal and I had to switch to other monitor and back with remote to get the signal back which is not ideal but have to live with because of limited options out there. Another limitation is, it supports 8k with 30Hz refresh rate only. I am open to suggestions if anyone has solved this problem.
It’s not really a switch but I just simplified my connection to just a single thunderbolt cable on the computer. With that, they all get the same two monitors, keyboard, mouse, and anything plugged into the dock.
I have a Mac and Windows hooked up the same monitor and keyboard/mouse.
I used a USB-switch and connected the monitors separately with USB-C and VGA. Then I don’t have to route the video though the USB-switch.
Keyboard, Video and Mouse. Usually you would switch both the input devices (keyboard and mouse) and the output (display), allowing to use a single set of peripherals to control and monitor multiple computers.
TIL KVMs existed before the mouse, which explains the odd order.
For this to work, does my primary computer need to be on all the time? The way I understand this, the 'host' computer will be running this piece of software and fires the event for the monitor to switch inputs.
wow, great! (in theory, sadly my monitors suck. Dell one refuses to see dp and the cheap one does not react to hdmi when set through the tool... I got one specific setup with normal kvm that mostly works, all others don't...)
digital nomad sorta implies remote, non-office work, I fail to understand how KVM is helping simulate work as you imply? It just makes switching computers easier, nothing more. You can switch manually or you can just use separate work and personal machines as well.
People use KVM over IP because many computers have company monitoring on them that use location services to determine location. And yes, they could detect if you're using VPN, VNC, RDP, etc. That doesn't work.
I'll explain. You can use a KVM like PiKVM to remotely log in from another location. For example if your employer requires that you work within the US, you can have a PiKVM device installed locally at a family or friend's home in the country and connect to it from outside the US and it would appear as if you're doing your work domestically.
It's basically a hardware remote-desktop at that point though, so the "KVM" part only applies to the KVM device being connected to another physical device on location.
EDIT: To clarify further, the advantage of this is PiKVM is undetectable by work laptops. Nothing is installed on the work laptop, it's strictly HDMI + USB cables going to the KVM. I know this because I use one for my FAANG job.
They have multiple full time jobs. My friend knows a Hungarian guy who had 5 full-time remote US tech jobs during COVID. You can only really do this with American employers since they don't see your other jobs.