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.
Seems like we all have! I ran into quite a few hiccups when I tried to automate this with a Windows and MacOS machine with just a USB switch (bad DDC values, detecting device events, etc). https://nokappa.notion.site/Making-a-software-KVM-using-only...
I ended up mostly giving up because it was a bit janky and I always had something else in more disarray.
Sweet idea on the macropad! I haven't used them before and placement of the USB switch is always a pain.
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.
The only issue I found was random disconnects when using a backlit LED keyboard and the stream deck on the same non-powered USB switch. I switched to a powered USB switch and that issue is gone.
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.
They don't require software as everything happens physically. And they go for around 20€ on Amazon, I'd say less expensive than having a custom one made.
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 [1] 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.
TA linked to a few that are quite reasonable in price. I’ve owned a couple while searching for a similar set up and not a single one that I researched or bought required drivers.
Good KVMs, specifically the ones from Level1Tech[1], 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!
You can "favorite" a comment and then access your favorite comments from your profile. Replying to a comment with a noop just to "follow" it lowers the snr for everyone else.
To favorite the comment click on the time the comment was posted and then on the following page click favorite.
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.
2 years later switched from m1 to m2 and it no longer works well enough (may also be the Sonoma upgrade stil gotta verify that). The devices get disconnected and glitch etc.
Went to check with dell and monitor is "not supported" on macos.
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.
I ended up going with the nuclear option of an IP KVM https://www.raritan.com/support/product/dominion-kx-iv-101 that will do all the resolutions I want at 60hz. It was very expensive, but on the bright side it lets me keep work laptops completely unmodified and easily swappable.
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.
Right, but that's part of the point. Apple should just have this inside macOS.
From MonitorControl's GitHub README, emphasis mine:
> Most modern LCD displays from all major manufacturers supported implemented DDC/CI protocol via USB-C, DisplayPort, HDMI, DVI or VGA to allow for hardware backlight and volume control.
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.
I'm a little interested in one of these as an option to eventually replace my Dell WD19 USB-C DP-alt mode dock for my Dell notebook and my Desktop PC which connects by HDMI cables.
One question I couldn't see an answer to is whether or not the I can make the network port "sticky" to my Dell notebook (plugged in over USB-C), or will it "move" to my Desktop PC when I switch to it?
I read last year how recent standard made higher wattage delivery over USB-C now standard (I think it was the latest Thunderbolt one), so I'm waiting until these monitors can do that.
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...
The windows not staying in place bug only occurs with crappy window managers. Decent ones are smart enough to put the windows back where they were when the monitors come back.
I have had great success with a generic KVM I found on amzn [0], 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 [1] but couldn't use it because it had some weird incompatibility between it, thunderbolt docking station [2] 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)
> Crappy KVM solutions are easy. Good ones are hard.
In this case what's crappy is those desktops rearranging windows when you turn off a monitor. I'd rather have my PC not know whether a monitor is connected or not, like used to be with vga.
I really want one but I just can't justify paying like 800-900€ for a dual-monitor four-computer one when I have a USB switcher and can just switch inputs on my monitors.
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.
You still have to do a handshake (determine resolution, refresh rate, etc) before you get a picture, and that takes maybe 3 seconds. Some monitors can handshake a bit faster, but not by much.
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 [1] and [2].
Wouldn't count on that. Thunderbolt is USB-C just visually. It's probably better to think of it as PCIe that coincidentally has the shape of a USB connector.
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?
Yes only one computer needs to have Windows and run the program.
If it detects the USB device being inserted, it changes monitor inputs to the Windows computer. If it detects the USB device being removed, it changes monitor inputs to the Linux computer.
ddcutil can do input switching on Linux, so it would be easy to do something similar there. I already do a similar thing with xrandr for monitor rotation, running a script when I press a hotkey.
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).
The monitor remains connected to the machine, the machine is unaware monitor is no longer using it as input source, but I assume this part, maybe there's some CEC notification firing.
I wrote sth similar for myself, without requirement of USB switch or other hardware. it sends DDC command to HDMI/USB-C monitor and HID++ byte code to Logi MX keyboard and mouse.
Code is too messy to share but here's snippet if anyone want to write their own:
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.
Thanks!
Edit: WRT messy code - no judgement, no shaming here. BTDT.
There's a blog post about a similar thing but without any extra hardware. It uses barrier and a few simple scripts. (monitor does have to support switching via dcc).
It's not perfect especially since the input switching for the display is quite slow but there's leg in hardware kvms too.
My monitor doesn't have dcc. I've worked around that part by activating automatic input selection and xset dpms force off'ing on the device I want to switch away from.
yeah, but even they recommend using barrier right? It's strange situation where the maintainers left the project to work on a project without users. It makes sense from a developer perspective though.
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!
Only after I've got my ham radio license that I learned how these USB switches are annoying sources of RFI, even the more expensive ones. KVM switches are fine though.
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.
With my COVID obsession of live streaming while writing code, I ended up building something a little more elaborate. https://github.com/timgws/kvm-switch
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.
I've been pretty happy with a monitor acting as a kvm, where the usb output (usb-c or usb-3) can be mapped to a display output.
It's nice for a wfh setup where I have a personal desktop and a work laptop, and I can quickly switch between them just by changing the display output.
Same! The fact that it's cross platform helps a lot to ensure commands aren't missed. If I'm switching while one computer is off, the other can still send the command.
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.
I'm familiar with this strategy but haven't used it myself yet. It's interesting no one else in this thread knows about this. They assume it's a multiple job fraud type of situation.
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.
If you only have two PCs, you only need to run the program on one of them.
When it detects a USB device being plugged in, it changes the monitor input to this computer. When a USB device is removed, it changes the monitor input to the other computer.
- 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 ended up mostly giving up because it was a bit janky and I always had something else in more disarray.
Sweet idea on the macropad! I haven't used them before and placement of the USB switch is always a pain.
At the end of the day this is what I would recommend, it is pricey but everyone swears to it: https://www.store.level1techs.com/products/p/14-kvm-switch-d...
With your solution, one needs to install the AHK script on all computers though?
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.
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.
The only issue I found was random disconnects when using a backlit LED keyboard and the stream deck on the same non-powered USB switch. I switched to a powered USB switch and that issue is gone.
The switch I'm using is IOgear 2x4 with a USB 5v 2a power brick. https://www.iogear.com/product/GUS402/
https://en.wikipedia.org/wiki/Display_Data_Channel
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.
In addition to the other links posted, ddcutil.org has some more good info: https://www.ddcutil.com/#introduction
These would go pretty well with this software, maybe I'll give it a try.
Otherwise some KVM that is decent is as you imply not going to be cheap. The one that I have seen recommended on here before is https://www.store.level1techs.com/products/p/14-kvm-switch-d...
The manufacturer themselves even outright says it’s not perfect, but from what I can tell it’s probably the best one on the market right now
Not if you use DP-MST (DisplayPort Multi-Stream Transport, to "daisy-chain" monitors).
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.
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.
[1]: https://www.amazon.com/gp/product/B01HV1N674
Crappy KVM solutions are easy. Good ones are hard.
[1] https://www.store.level1techs.com/products/hardware (no affiliation)
- Mac goes to sleep
- Gnome will default back the default monitor configuration and move the windows around
They do have a 1.2 DP KVM with EDID emulation, but you loose all the benefits of the 1.4 DP.
Its all on their FAQ forums
https://forum.level1techs.com/t/official-l1techs-kvm-faq-ult...
EDID emulation done right is expensive.
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!
To favorite the comment click on the time the comment was posted and then on the following page click favorite.
2 years later switched from m1 to m2 and it no longer works well enough (may also be the Sonoma upgrade stil gotta verify that). The devices get disconnected and glitch etc.
Went to check with dell and monitor is "not supported" on macos.
I am at a loss for words.
I ended up going with the nuclear option of an IP KVM https://www.raritan.com/support/product/dominion-kx-iv-101 that will do all the resolutions I want at 60hz. It was very expensive, but on the bright side it lets me keep work laptops completely unmodified and easily swappable.
Disclaimer: meant to be humorous.
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.
From MonitorControl's GitHub README, emphasis mine:
> Most modern LCD displays from all major manufacturers supported implemented DDC/CI protocol via USB-C, DisplayPort, HDMI, DVI or VGA to allow for hardware backlight and volume control.
And a blog entry by the author of Lunar, an app mentioned elsewhere for this problem: https://alinpanaitiu.com/blog/journey-to-ddc-on-m1-macs/
These are not examples of "just works". Apple intentionally does these things to cripple integration into non-Apple products.
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.
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.
One question I couldn't see an answer to is whether or not the I can make the network port "sticky" to my Dell notebook (plugged in over USB-C), or will it "move" to my Desktop PC when I switch to it?
I read last year how recent standard made higher wattage delivery over USB-C now standard (I think it was the latest Thunderbolt one), so I'm waiting until these monitors can do that.
I did have a considerably more expensive TESmart [1] but couldn't use it because it had some weird incompatibility between it, thunderbolt docking station [2] 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.
My two cents.
[0] https://www.amazon.com/gp/product/B088WGKFZH
[1] https://www.amazon.com/gp/product/B08N494N7X
[2] https://www.amazon.com/gp/product/B08HR3T837
In this case what's crappy is those desktops rearranging windows when you turn off a monitor. I'd rather have my PC not know whether a monitor is connected or not, like used to be with vga.
A lot of software didn't really care and just sent signals into the void, but it's possible to do that with DVI or DP, too.
https://www.amazon.com/dp/B083JKDNRJ
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.
https://www.amazon.com/dp/B093N1DR8Y
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.
2 2.5k/1440p monitors both 144hz and it switches every time. Highly recommend. Albeit a bit pricey.
- https://askubuntu.com/questions/1042641/how-to-set-custom-lo...
- https://support.apple.com/guide/mac-help/set-sleep-and-wake-...
etc
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.
I have not tried because I am concern with affecting the hardware. Based on your inspiration I just found Thunderbolt KVMs such as [1] and [2].
[1] https://sabrent.com/products/sb-tb4k
[2] https://www.reddit.com/r/Thunderbolt/comments/11gos6n/kvm_sw...
It would probably work if you were okay with the delays.
At least one of the computers must be on and running Windows, but maybe only one?
If it detects the USB device being inserted, it changes monitor inputs to the Windows computer. If it detects the USB device being removed, it changes monitor inputs to the Linux computer.
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.
I wrote sth similar for myself, without requirement of USB switch or other hardware. it sends DDC command to HDMI/USB-C monitor and HID++ byte code to Logi MX keyboard and mouse.
Code is too messy to share but here's snippet if anyone want to write their own:
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.
Thanks!
Edit: WRT messy code - no judgement, no shaming here. BTDT.
It's not perfect especially since the input switching for the display is quite slow but there's leg in hardware kvms too.
https://xpufx.com/posts/hundred-percent-software-kvm-switch/
1. lock screen
2. Switch USB switch to the other source
3. Press space to activate the other PC
4. Monitor should automatically sitch to the "new" active source.
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!
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.
I use it between a Windows PC & a Macbookpro (Linux version available but I don't have Linux)
Unfortunately I can't install it on my work computer due to policy & VPN.
The benefit of SimpleKVM is that I just have to run it on my home PC, and I can switch between work and home.
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).
So I use mechanical USB switches.
for keyboard and mouse, I use two of these:
https://www.amazon.com/dp/B01I0Y3GEE/
They have no extra keyboard/mouse latency, and no weird side effects like boot keys that don't work or modifier keys that are in the wrong state.
Issues I've had before with mouse/keyboard:
- hotkey conflicts
- mac boot keys break (hold down <key> for <some boot function>)
- modifiers stick in wrong state
- weird delays
- combinations with mouse+keyboard break
Pro: you shouldn't have the issues you listed. Con: you'll lose the hot key commands for the KVM.
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.
It's nice for a wfh setup where I have a personal desktop and a work laptop, and I can quickly switch between them just by changing the display output.
Also allows copy-paste across OSes.
https://github.com/debauchee/barrier
[0] https://github.com/haimgel/display-switch
https://github.com/feschber/lan-mouse
TIL KVMs existed before the mouse, which explains the odd order.
https://en.wikipedia.org/wiki/KVM_switch
Well not for me because my boxes run multiple operating systems, but for someone with just multiple windows computers it would be great.
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.
When it detects a USB device being plugged in, it changes the monitor input to this computer. When a USB device is removed, it changes the monitor input to the other computer.
The benefit of SimpleKVM is that I just have to run it on my home PC, and I can switch between work and home.