Show HN: Multi-monitor KVM using just a USB switch


397 points | by fiddyschmitt 13 days ago


  • poisonborz 13 days ago
    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.

    - 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.

    • legojoey17 13 days ago
      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).

      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.

    • sesm 13 days ago
      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$.
      • poisonborz 13 days ago
        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.

        At the end of the day this is what I would recommend, it is pricey but everyone swears to it:

        • CTDOCodebases 12 days ago
          It gets expensive too when you have > 2 monitors.
    • alanbernstein 13 days ago
      I want something like this, but my monitor doesn't support enough DDC commands for it. Any monitor suggestions?
      • poisonborz 13 days ago
        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).
        • alanbernstein 10 days ago
          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.
    • layer8 13 days ago
      > the above would need to install to all computers which is a no go for me.

      With your solution, one needs to install the AHK script on all computers though?

      • poisonborz 13 days ago
        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.

    • fiddyschmitt 13 days ago
      Nice one!
  • MichaelMug 13 days ago
    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.

    • fiddyschmitt 13 days ago
      Cool setup. Is it all working nicely with the Stream Deck & associated bindings?
      • MichaelMug 13 days ago
        Yes it works well.

        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.

    • webdevver 13 days ago
      what does ddc stand for?
      • fiddyschmitt 13 days ago
        Display Data Channel... it's the signal that your video card uses to communicate with yours monitors to do things like adjust brightness.

        • Aardwolf 13 days ago
          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)
          • wtallis 12 days ago
            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.
            • lloeki 12 days ago
              > 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.

            • Aardwolf 12 days ago
              I have an Aten KVM switch in-between, maybe that one is doing something wrong, but it's a good KVM switch otherwise imho
      • MichaelMug 13 days ago
        Apologies. I hate when people do that as well.

        In addition to the other links posted, has some more good info:

      • argsnd 13 days ago
        Display data channel
  • kthxb 13 days ago
    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.

    • thefz 13 days ago
      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.
    • azalemeth 13 days ago
      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.
      • SOLAR_FIELDS 13 days ago
        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.

        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

        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

        • MayeulC 13 days ago
          > It does imply if you go this route that you are stuck with a single monitor setup

          Not if you use DP-MST (DisplayPort Multi-Stream Transport, to "daisy-chain" monitors).

    • fiddyschmitt 13 days ago
      That is so cool!!

      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 (, and that often requires special software and drivers.

    • jonathanlydall 12 days ago
      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.


    • HumblyTossed 13 days ago
      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.
  • nemetroid 13 days ago
    I use udev for this purpose (send a DDC command when the USB switch appears):

      ACTION=="add", SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="1a40", ENV{ID_MODEL_ID}=="0101", RUN+="/usr/bin/ddcutil --sn ABCDEFGHI setvcp 60 0x0f"
  • gizmo 13 days ago
    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.

    [1] (no affiliation)

    • jetster735180 13 days ago
      I bought the Level1Tech KVM and they do no support EDID emulation. I switch between a Mac and a Linux box (Gnome):

      - 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

      • indrora 13 days ago
        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.

        EDID emulation done right is expensive.

      • drakenot 13 days ago
        Do you know of any solid KVMs with EDID emulation and 1.4 DP?
        • oooyay 13 days ago
          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
          • sinfulprogeny 13 days ago
            Under the Extend mode, it says it requires dual-graphics card. What does that mean? Guessing it's an odd translation.
            • breather 13 days ago
              I think it just means if you want to kvm with two monitors over DP you need two DP ports on each computer.
              • oooyay 10 days ago
                yeap, this is how my setup is. Two DP ports are occupied.
        • jpk 13 days ago
          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!

        • whompyjaw 13 days ago
          Replying to follow (idk if there is a way to follow a thread). I have an Apple Display and would need 1.4 DP
          • dfc 13 days ago
            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.

            • Narushia 12 days ago
              TIL, thanks. I think they should make that doable in one click, though.
    • bmitc 13 days ago
      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.
      • Neikius 13 days ago
        Bought one such monitor.

        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.

        • kanisae 13 days ago
          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 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.

        • loloquwowndueo 13 days ago
          How about “apple get your act together with those m2s”? :)

          Disclaimer: meant to be humorous.

        • pxc 13 days ago
          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.
        • bmitc 13 days ago
          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.

          • phubbard 13 days ago
            I've had good luck with the Lunar app - it manages my Dell and LG monitors on an M2. (No affiliation)
          • mjcohen 13 days ago
            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.
            • bmitc 13 days ago
              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.

              And a blog entry by the author of Lunar, an app mentioned elsewhere for this problem:

              These are not examples of "just works". Apple intentionally does these things to cripple integration into non-Apple products.

          • a2tech 13 days ago
            This kind of whining is basically trolling. 'I've tried nothing and I'm angry it doesn't work!'
            • bmitc 13 days ago
              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.

            • dns_snek 12 days ago
              "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.

      • jonathanlydall 12 days ago
        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.

    • simfoo 13 days ago
      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
      • whompyjaw 13 days ago
        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?
        • simfoo 13 days ago
          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:
        • sunshowers 13 days ago
          The added latency, if any, is not noticeable on 120-160Hz monitors. The KVM isn't doing any processing.
    • RVuRnvbM2e 13 days ago
      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.
    • theideaofcoffee 13 days ago
      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.

      My two cents.




      • mostlysimilar 13 days ago
        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.
        • jnk345u8dfg9hjk 11 days ago
          What could they do hypothetically? They don't have network access to phone home, do they?
      • Beijinger 13 days ago
        PWAY Brand. Seems to be available on Aliexpress. just FYI
      • kevin_thibedeau 13 days ago
        For HDMI you have lots of options that provide EDID emulation. For DP there's only one game in town and it costs more than most computers.
        • Aardwolf 12 days ago
          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)
    • Aardwolf 13 days ago
      > 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.

      • toast0 13 days ago
        VGA always had means for detecting a monitor. Originally, a vga monitor would pull down at least one of the id pins, and edid replaced that.

        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.

    • Hamuko 13 days ago
      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.
      • Bagged2347 13 days ago
        I came to this conclusion myself recently. I have the Cable Matters 4 port USB switch and it works just fine for my purposes.

        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.

    • 12345hn6789 13 days ago
      Big+1 to the level 1 techs kvm. Ive had a little over a year and it's flawless.

      2 2.5k/1440p monitors both 144hz and it switches every time. Highly recommend. Albeit a bit pricey.

    • rjzzleep 13 days ago
      Does that impact the time how long the monitor takes from switching between display off and showing something on the screen?
  • tjoff 13 days ago
    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.

  • wslh 13 days ago
    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].



    • MezzoDelCammin 13 days ago
      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.
    • serf 13 days ago
      I would suspect problems, all of my thunderbolt docks seem to have a 'boot-up' period when powered-on and switched to.

      It would probably work if you were okay with the delays.

    • fiddyschmitt 13 days ago
      oooh, not sure. I suspect Thunderbolt has very specific requirements, and switches would be consequently expensive.
  • abraae 13 days ago
    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?

    • fiddyschmitt 13 days ago
      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.

    • mkl 13 days ago
      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.
  • karolist 13 days ago
    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.

    • fiddyschmitt 13 days ago
      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).
    • Kluggy 13 days ago
      Do the other computers detect the lack of a display when they're switched on the monitor?
      • karolist 13 days ago
        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.
      • vladvasiliu 13 days ago
        In my experience, this seems to depend on the monitor. On my LG, the computers think the monitor is still connected.
    • klohto 13 days ago
      the gigabyte m27u is even better panel and looks great with macOS due to high DPI
      • karolist 13 days ago
        Ah, good to know, I think it was not available when I bought mine. I would have preferred 27" to 28" due to DPI.
  • freewizard 13 days ago
    Nice project.

    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:

        hid_devices = [
                'name': 'Logi Bolt Receiver',
                'receivers': hid.enumerate(0x046D, 0xC548),
                'command': [  # MX Keys Mini as first device on the receiver
                    bytes([0x11, 0x01, 0x09, 0x1A, 0x00] + [0] * 15),  # change host to 1
                    bytes([0x11, 0x01, 0x09, 0x1F, 0x01] + [0] * 15),  # change host to 2
                    bytes([0x11, 0x01, 0x09, 0x1D, 0x02] + [0] * 15)]  # change host to 3
            }, {
                'name': 'Logitech Unified Receiver',
                'receivers': hid.enumerate(0x046D, 0xC52B),
                'command': [  # MX Anywhere 3 as first device on the receiver
                    bytes([0x11, 0x01, 0x0A, 0x1A, 0x00] + [0] * 15),  # change host to 1
                    bytes([0x11, 0x01, 0x0A, 0x1E, 0x01] + [0] * 15),  # change host to 2
                    bytes([0x11, 0x01, 0x0A, 0x19, 0x02] + [0] * 15)]  # change host to 3
            }, {
                'name': 'MX Keys Mini Bluetooth',
                'receivers': hid.enumerate(0x046D, 0xB36E),
                'command': [
                    bytes([0x11, 0xFF, 0x09, 0x1E, 0x00] + [0] * 15),  # change host to 1
                    bytes([0x11, 0x01, 0x09, 0x1F, 0x01] + [0] * 15),  # change host to 2
                    bytes([0x11, 0xFF, 0x09, 0x1D, 0x02] + [0] * 15)]  # change host to 3
            }, {
                'name': 'MX Anywhere 3 Bluetooth',
                'receivers': hid.enumerate(0x046D, 0xB025),
                'command': [
                    bytes([0x11, 0xFF, 0x0A, 0x1A, 0x00] + [0] * 15),  # change host to 1
                    bytes([0x11, 0x01, 0x0A, 0x1E, 0x01] + [0] * 15),  # change host to 2
                    bytes([0x11, 0xFF, 0x0A, 0x19, 0x02] + [0] * 15)]  # change host to 3
    • HankB99 13 days ago
      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.

      • jespern 12 days ago
        This works for me:

          import hid
          VID = 0x046D
          HID = 0xB023 # 0xB35B
          if __name__ == "__main__":
              h = hid.device()
    , HID)
              # this works for keyboard
              # h.write([0x11, 0x01, 0x09, 0x1F, 0x01] + [0] * 15)
              # this works for mouse
              h.write([0x11, 0x01, 0x0A, 0x1E, 0x01] + [0] * 15)
    • fiddyschmitt 13 days ago
  • dizhn 13 days ago
    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.

    • liftm 12 days ago
      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.
    • fud101 13 days ago
      I'm using this solution atm. Works quite well except the barrier server on Linux is buggy and I need to frequently restart it.
      • dizhn 12 days ago
        Some ex barrier people cloned (as opposed to forking) the barrier repo and are continuing development on it. It's called input-leap.
        • fud101 11 days ago
          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.
          • dizhn 10 days ago
            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.
    • fiddyschmitt 13 days ago
      Yes Barrier is very nice. I would use it except for the fact that my work laptop is VPN'd and therefore on a different network to my home LAN.
      • 0lde 13 days ago
        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.
      • PinkSheep 13 days ago
        You can override the default route of the VPN for the LAN.
  • atomize 13 days ago
    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.
    • bonton89 12 days ago
      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.
    • starkparker 13 days ago
      Yeah, PBP was a gamechanger. I got a Samsung with it without realizing and now use it almost exclusively.
  • dukoid 13 days ago
    I have been doing this for years without any additional software: just make sure your monitor goes to blank when locking the screen:

    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.

    • alanbernstein 13 days ago
      What monitors have worked for this for you? My Samsung monitor seems to have a hard time finding the source I want.
      • starkparker 13 days ago
        BenQs have it (look for "Input Auto Switch").
      • dukoid 13 days ago
        Philips Briliance BDM4350UC
  • moystard 13 days ago
    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.
  • peter_d_sherman 13 days ago
    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!

  • soldeace 12 days ago
    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.
  • jwells89 13 days ago
    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.

  • PikachuEXE 13 days ago
    For software KVM you can use

    I use it between a Windows PC & a Macbookpro (Linux version available but I don't have Linux)

    • fiddyschmitt 13 days ago
      Love it.

      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.

  • oldgradstudent 13 days ago
    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 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.

  • tim-- 13 days ago
    With my COVID obsession of live streaming while writing code, I ended up building something a little more elaborate.

    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).

    • k8svet 12 days ago
      I'm reading and I'm wondering where the lede is... it seems the matrix device in question is 1000+USD
  • m463 13 days ago
    I have always found that KVM switches have side effects on USB devices.

    So I use mechanical USB switches.

    for keyboard and mouse, I use two of these:

    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

    • k8svet 12 days ago
      Don't use the HID port on the KVM. Aka don't plug mouse and keyboard into the mouse and keyboard port on the KVM.

      Pro: you shouldn't have the issues you listed. Con: you'll lose the hot key commands for the KVM.

      • m463 12 days ago
        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.

    • fiddyschmitt 13 days ago
      Yes I know exactly what you mean - I've experienced the same. I haven't tried a mechanical one before. I'll have to try it out
  • pebblesun 12 days ago
    I am using this 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.
  • chrsig 13 days ago
    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.

  • consumer451 12 days ago
    I realize it’s not the use case in OP, but if each of your machines has a display, Barrier is like a super power.

    Also allows copy-paste across OSes.

  • g1sm 13 days ago
    I’ve been using display-switch[0] for this for a while now. No problems whatsoever. Works on windows/mac/linux.


    • jglamine 13 days ago
      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.
  • hk1337 12 days ago
    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.
  • mandeepj 13 days ago
    This is great, but currently very limited; partial support for Windows. Seems inclined more towards Apple.

  • maCDzP 13 days ago
    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.
  • avodonosov 13 days ago
    Why is it callled a "KVM"? What does it stand for?
  • nottorp 13 days ago
    Looks pretty useful if you don't want to spend more on your KVM switch than you spent on your monitors combined!

    Well not for me because my boxes run multiple operating systems, but for someone with just multiple windows computers it would be great.

    • fiddyschmitt 12 days ago
      Thanks! Even just one instance running on Windows can be used for a Windows+Linux setup
  • mattfrommars 12 days ago
    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.
  • anotheryou 13 days ago
    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...)
  • cactusplant7374 13 days ago
    This is nice. I know some digital nomads are using KVM to evade detection by their employers.
    • karolist 13 days ago
      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.
      • cactusplant7374 12 days ago
        Because they leave their laptop in their home country. Not all companies approve of remote work.
        • karolist 12 days ago
          VPN/VNC/RDP, nothing to do with KVM
          • cactusplant7374 10 days ago
            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.
    • y-c-o-m-b 13 days ago
      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.

      • cactusplant7374 10 days ago
        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.
    • bitcharmer 13 days ago
      What does remote work have to do with "evading detection" via KVM? This makes zero sense.
      • popcalc 13 days ago
        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.
        • bitcharmer 13 days ago
          It still doesn't make much sense to me. Ok, so he's working remotely doing 5 jobs. How does KVM help conceal this fact?
          • popcalc 13 days ago
            Because they give you 5 laptops.
        • cactusplant7374 12 days ago
          It has nothing to do with multiple jobs. A lot of companies don’t want their employees working abroad.
      • vidarh 13 days ago
        I'm guessing avoiding non-work activities on their work machine.
    • ndsipa_pomu 13 days ago
      How do they do that? Is it the case that their boss walks by them and can see what's on their screen so they're switching away from minesweeper?
    • Kluggy 13 days ago
      detection of what exactly?
  • joantune 13 days ago
    Would a USB bluetooth adapter to connect to wireless keyboards and mouses work with this??
    • fiddyschmitt 13 days ago
      I think it should. When you do the setup it asks you to unplug and replug the device, and choose it out of the list. So it should trigger the change.
  • bitcoinmoney 13 days ago
    I use dell display manager with dell monitors and one of the switches in the article.
  • zadwang 13 days ago
    I use DDC and synergy. So no hardware. It is mostly working OK.
  • fiddyschmitt 13 days ago
    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.

  • DeathArrow 13 days ago
    How would this work if your monitor uses HDMI?
    • fiddyschmitt 13 days ago
      Yep HDMI works well. It also works on DisplayPort, DisplayPort Mini, VGA and DVI.
  • craigkilgo 13 days ago
    Does this work? This would be amazing.
  • segasuperstar 13 days ago
    This is genius
  • synergy20 13 days ago
    I have a posix script does the same thing but after a few months the screen was dead, somehow I feel manual switch screen input is safer.
  • iLoveOncall 13 days ago
    Any advantage over Synergy?
    • skykooler 13 days ago
      All computers use the same monitor. This may be an advantage or disadvantage depending on your setup.
    • fiddyschmitt 13 days ago
      Synergy is awesome, but 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.

    • rafamvc 13 days ago
      I use barrier and it is a lot better than synergy.
  • thefz 13 days ago
    Cool project!
  • notso411 13 days ago