Pi-Cast KVM Switch

Open source KVM switch made for the PiKVM that not only switches the HDMI and USB signals but also the ATX signal.

Similar projects worth following
Pi-Cast KVM Switch is one of the accessories of the Pi-Cast project. Pi-Cast is an On-The-Go PiKVM hardware. You can find more information on this link

When I designed the Pi-Cast project I was looking for a KVM switch to work with it, but most KVM switches on the market only switch the HDMI and USB signals. This means when using these KVM switches we lost power management after switching to other PCs. So I decided to make my own KVM switch.

The original PiKVM Hat uses the RJ45 to transceive only the ATX signals. If we want to switch the ATX signals, we will need an 8-channel 1:2 multiplexer chipset even though the ATX signals are only 4-channel. This's because the ATX signals from the RJ45 connector are isolated by the optical coupler. We will need + and - for one ATX signal as the below picture shows. 

But if we put the optical coupler on the ATX board instead of the Hat. We only need a 4-channels 1:2 multiplexer chipset. Guess what? The USB 3.0 1:2 multiplexer can multiplex 6 channels. After taking 2 channels for the USB 2.0 signals there are still 4 left, we can use them for the ATX signals. So just one chip for both USB 2.0 and ATX, it makes the BOM list simple.

I decided to go further by using the RJ45 to transceive both the ATX and USB signals as the schematic shows below.  

This change will make cable management simplify. We now only need two cables an HDMI cable and an RJ45 ethernet cable instead of three cables (HDMI, RJ45, and USB). 

The disadvantage of this change is that you can't use the original ATX control board from PiKVM Hat with this KVM switch. But since I've made my own ATX control board this wouldn't be a big deal.

ATX control board

Demo video for Jan 1st update:

What had been done:

  1. HDMI signal switching works.
  2. USB signal switch works.
  3. ATX signal switch works.
  4. USB hub works.
  5. Add MCU so that can be controlled by one Raspberry Pi GPIO pulse to switch the PC sources instead of using the GPIO H/L status.
  6. Add a manual switch button.
  7. Add active PC led indicators.
  8. Add active PC status pins so that the PiKVM can read which PC is activated.


  1. Design an adapter to mount on the Raspberry Pi 40 pins header.


Demo video for switching between a Windows PC and a Raspberry Pi 4B.

quicktime - 27.46 MB - 12/31/2022 at 03:53



schematic for the ATX and USB control board.

Adobe Portable Document Format - 37.76 kB - 12/26/2022 at 10:59



Early version schematic.

Adobe Portable Document Format - 349.02 kB - 12/26/2022 at 10:55


  • USB serial control and adapter board

    vileer01/24/2023 at 04:01 0 comments

    This week we received the adapter board so that the KVM switch could be easily stacked on top of the Pi-Cast. The adapter board also supports PoE ethernet and a fan for the Pi-Cast.

     In the prev design, we use the gpio to control the switch, but in the new version we've added another control method call serial control, you can control the switch by the USB-to-Serial port. The control protocol is compatible with the EZCOO.


    vileer01/06/2023 at 14:26 0 comments

    I just received the new design PCB. After assembly and some fly wires job, everything works fine.

    And I got a comment from Louis S. He said that if I choose the RJ45 port as the IO port that someone may plug it into the network equipment which may cause the device damage especially when the RJ45 port was plugged into which supports PoE.

    So I decided to follow the original  PiKVM Hat design and placed the optocoupler between the GPIO and the RJ45 port. This change means that the RJ45 port no longer transceivers the USB signal, we will still need 3 cable features all function.

    The change for the fly wires job and place optocoupler for signal isolation will be present in the next version PCB.

  • Pi-Cast KVM Switch Got Brain

    vileer01/01/2023 at 14:37 0 comments

    Adding an MCU to control the KVM switch is one of the Todo lists. This weekend I just finish the concept by wiring up all the stuff with an MCU EVT board. The MCU I choose is CH32V003F4P6( a 32-bit RISC-V MCU running at 48MHz, more detail here). 

    With the help of the MCU, the KVM switch can be controlled by the PiKVM web UI or the manual switch button, the web UI can also indicate which pc is active in the meantime. In the next version, I'll add 2 LEDs on the PCB to indicate the active PC too.

    The PCB file that combines the KVM switch and the MCU into one PCB board was finished. Hopefully, I will get the PCB from the factory next week. I'll post an update at that time.

View all 3 project logs

Enjoy this project?



vileer wrote 01/04/2024 at 05:52 point

I am working on a 4-ports version. You can subscribe on the campaign page, once we release it, you will get a notification. Here is the campaign link:

  Are you sure? yes | no

John (EBo) David wrote 12/29/2023 at 15:25 point

This looks very interesting.  I am looking to purchase/build something similar in the near future.  The one thing that would be nice to see as an added feature is the ability to chain several of these together so that I can switch between more than 2 machines.  

My use case is that I have a work laptop (which gets swapped in/out regularly), a home Linux laptop (which is mostly on , and used for most development), and a workbench where I may have 1 or 2 optional machines hooked up for testing and development. This is all fluid, and changes regularly.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates