Skip to the content
PCBKitNew board
4 layersKvm base, the printed circuit board in 3D

The main board for the open-source HDMI KVM switch I built.

Copper layers
4
Thickness
1.6 mm
Parts
70
Nets
162
Pads
589
Tracks, vias
4,940, 93
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
30 Jul 2019
Updated
14 Apr 2021

Overview

Kvm base is an open-source printed circuit board by thatoddmailbox, from the thatoddmailbox/kvm-base repository on GitHub. It is a 4-layer board with 70 parts on 162 nets, routed with 4,940 tracks and 93 vias.

It is built around the STM8S003F3P6, TMDS361BPAG and SL2.1A, with the AMS1117-3.3 and FSUSB74UMX among its other parts. Its parts include 29 capacitors, 16 connectors, 12 resistors, 6 ICs and 1 switch. It belongs with the interfaces and adapters boards and the STM8 boards of this library.

Main components

5

README

README.md

kvm-base

Image

The main board for the open-source HDMI KVM switch I built. Contains HDMI and USB switch ICs, allowing you to share two monitors and four USB devices between three different computers.

This is a 1.6mm four layer PCB, designed for JLCPCB's JLC7628 impedance-controlled stackup. It most likely will not work (or will be limited in terms of HDMI performance) on another stackup.

It connects via a PS/2 cable to kvm-keypad—however, it does not use the actual PS/2 protocol.

Two TMDS361B chips are used as HDMI switches, and an FSUSB74 is used as the USB switch.

Assembly

The full Bill of Materials is linked at the end of the README, and you should get the PCB fabricated at JLCPCB with their impedance-controlled JLC7628 process.

A stencil is probably the easiest way to assemble the board, but it's definitely possible to do so without one, as long as you have a hot air rework station. The trickiest parts to solder are probably the FSUSB74 (QFN with 0.4 mm pitch but no thermal pad) and the TMDS361B (TQFP with 0.5 mm pitch).

The HDMI connectors are also somewhat tricky, given that they are on both sides of the board and also have a relatively fine pitch. However, it's doable with a soldering iron, flux, solder wick, and ideally some form of magnification—you just have to be careful to ensure the pins are aligned with the footprint on the board before soldering.

Note on sink-side output stages

Interestingly, the TMDS361B's datasheet pretty clearly states that it's "not intended for source side applications such as external switch boxes", which I probably missed when designing this board.

The consequences of this seem to be that there's little/no ESD protection on the sink side (the monitor output ports), and that the chip has a fairly weak sink-side output stage. That means you probably can't use the output with super long or super cheap cables. The inputs, however, should be fine, since TI claims that the TMDS361B has a "robust TMDS receive stage" that even works with out-of-spec HDMI signals.

Anecdotally, the output does seem to work, but I haven't tested it in that many conditions. This has been tested with a 3 foot HDMI cable going to an Acer EB243YU monitor, using a resolution of 2560 x 1440 at 75 Hz, which is outside of the TMDS361B's spec!

Theoretically, you might be able to work around this by running the output signals to another board with a retimer or redriver, but that's probably somewhat excessive. A future revision should use a different chip and/or integrate a retimer/redriver to the output stage. Unfortunately, it might be somewhat tricky to find an easily accessible HDMI switch chip—most seem to want you to sign an NDA before getting any documentation.

Useful links

Known issues

  • TMDS361B's sink-side output stages, as mentioned above
  • HDMI ports are too close together -- some cables might be too big to fit
  • Some FSUSB74 ports seem to not be working -- this could be a soldering issue
    • Port 2 works perfectly
    • With ports 0 and 1, the computer detects a device but then complains the device is not responding
    • Suspect that probably one of the D+/D- lines is not well connected
  • The HPD and DDC lines are switched along with the ports. This means that switching ports will cause the connected source to think the monitor went away, which might not be what you want
    • A future version will probably need to have some sort of EDID cloning/emulation, or have some way to keep the HPD line high after the monitor is connected?
    • There is a workaround: cover the HPD pin (pin 19) of your HDMI cable with tape to block the HPD signal.
      • This workaround means that some sources, like a laptop, might not autodetect your HDMI cable. You'll need to have some way to rescan. On Linux, you can try the command xrandr --listmonitors.
      • This might be solvable by cutting the cable open and soldering a 10k resistor between HPD and +5V? That's somewhat extra though
  • The device can kinda sorta be powered by a sink—most likely the ESD diodes in the TMDS361B are backfeeding power on the +5V line.
  • The keypad might have some trouble with noise when a PS/2 cable is connected, although it has been worked around in the firmware. A future revision might need a buffer or redriver or something similar? Plain I2C is probably not the best choice for communication between the base and keypad.

Parts

70
QtyValueFootprintReferences
100.1uFCapacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolderC3, C5, C8, C9, C12, C13, C16, C17, C20, C21
810uFCapacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolderC1, C2, C24, C25, C26, C27, C28, C29
81uFCapacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolderC6, C7, C10, C11, C14, C15, C18, C19
8HDMI_Akvm-base:HDMI-001J7, J8, J9, J10, J11, J12, J13, J14
610kResistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR1, R3, R5, R6, R7, R8
45.9kResistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR9, R10, R11, R12
4USB_B_MiniConnector_USB:USB_Mini-B_Lumberg_2486_01_HorizontalJ1, J2, J3, J4
212pFCapacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolderC22, C23
24.02kResistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR2, R4
2TMDS361BPackage_QFP:LQFP-64_10x10mm_P0.5mmU4, U5
2USB_Dual_AConnector_USB:USB_A_Wuerth_61400826021_Horizontal_StackedJ15, J16
10.47uFCapacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolderC4
112MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mm_HandSolderingY1
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U1
1DebugConnector_PinSocket_2.54mm:PinSocket_2x04_P2.54mm_VerticalJ6
1FSUSB74kvm-base:UMLP16U2
1Keypadkvm-base:PS2J5
1ResetButton_Switch_SMD:SW_Push_1P1T_NO_6x6mm_H9.5mmSW1
1SL2.1APackage_SO:SOIC-16_3.9x9.9mm_P1.27mmU6
1STM8S003F3PPackage_SO:TSSOP-20_4.4x6.5mm_P0.65mmU3

The 65 most common of 70 parts.

Questions

What parts does the Kvm base use?

70 parts, built around the STM8S003F3P6, TMDS361BPAG, SL2.1A and AMS1117-3.3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Kvm base KiCad files?

From the thatoddmailbox/kvm-base repository on GitHub, at the commit this page was made from: the board is kvm-base.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Kvm base design in my own project?

Its repository states no licence, so its author keeps all rights: ask thatoddmailbox before reusing the design.

Similar boards

  • 2 layers80 × 46 mmMain control board, the printed circuit board in 3D

    Main control board

    StarweaverAudioLabs/main_control_board

    Main controller board for Haruto's DAC

    51 partsGPL-3.0
  • 2 layers32.1 × 41.2 mmIr signalgen lite, the printed circuit board in 3D

    Ir signalgen lite

    dilshan/ir-clone

    Open-source infrared remote control signal analysis and generating tool

    40 parts58MIT
  • 2 layers72.8 × 32 mmMicro fm radio, the printed circuit board in 3D

    Micro fm radio

    dilshan/rda5807-fm-radio-module

    RDA5807M based stereo FM radio receiver

    56 parts8MIT
  • 2 layers65 × 56 mmRas pi supercap ups, the printed circuit board in 3D

    Ras pi supercap ups

    akuker/SuperUPS

    This is a fork of the original Supercapacitor UPS board for a Raspberry Pi by Scott Baker, http://www.smbaker.com/

    88 parts7
  • 2 layers26.4 × 18.8 mmSTM8S003F3, the printed circuit board in 3D

    STM8S003F3

    TLDR-Electronics/STM8S003F3_PCB_Breakout_and_C_examples

    STM8S003F3 Breakout board and Simple STM8 C examples with the SDCC compiler

    16 parts4MIT
  • 2 layers45 × 46 mmFan robot V3, the printed circuit board in 3D

    Fan robot V3

    Amir-imani/Autonomous-Mobile-Robot

    Thesis project: Design and Construction of a Mobile Robot with Intelligent Path Planning in Dynamic Environments.

    52 parts
  • 2 layers68.8 × 70 mmTempController4Oven, the printed circuit board in 3D

    TempController4Oven

    maupassant9/TemperatureControllerForOven

    Temperature Controller for oven with ESP8266

    37 partsMIT