>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
C

Zo bouw je een hardware KVM-switch voor 11 euro met twee Raspberry Pi Pico's

Heb je ooit twee computers op je bureau gehad, maar ruimte voor maar één toetsenbord en muis? Er zijn meestal twee manieren om hiermee om te gaan. De eerste is softwarematig (zoals Barrier of Input Leap). Maar dan beginnen de problemen: netwerkuitval, bedrijfs-VPN blokkeert lokaal verkeer, of je werkcomputer laat je geen software van derden installeren. De tweede optie is een goedkope USB-switch van AliExpress. Je drukt op een knop op het kleine kastje, wacht een paar seconden tot het besturingssysteem de apparaten opnieuw initialiseert, en herhaalt dit tientallen keren per dag.

Ontwikkelaar hrvach liep tegen precies deze frustratie aan en besloot zijn eigen hardware te bouwen. Het project heet DeskHop. Het is een open apparaat dat je toetsenbord en muis direct tussen twee computers omschakelt. Je kunt omschakelen via een hotkey of gewoon door de muiscursor over de rand van het scherm te slepen, net alsof je één monitor hebt aangesloten op twee pc's.

DeskHop case and board

Hoe het van binnen werkt

Het circuit is opgebouwd rond twee standaard Raspberry Pi Pico's gebaseerd op de RP2040-chip. Elke kaart maakt verbinding met zijn eigen computer via USB. De microcontrollers communiceren met elkaar via UART door middel van een galvanische isolatiechip (TI ISO7721DR of ADuM1).

Open Source Hardware Logo

De stroomisolatie hier is echt: de massa- en stroomlijnen van de twee pc's zijn volledig van elkaar geïsoleerd. Als de ene computer doorbrandt of een stroomstoot produceert, blijft de andere veilig.

De USB-magie aan de hostzijde komt van de Pico-PIO-USB-bibliotheek. De programmeerbare I/O (PIO) in de RP2040-chip zet gewone GPIO-pinnen om in volwaardige USB-poorten. Eén Pico fungeert als de USB-host waar je je toetsenbord en muis op aansluit, terwijl beide kaarten standaard HID-apparaten emuleren voor de verbonden computers.

Naadloos omschakelen tussen schermen

Het beste kenmerk van DeskHop is naadloze desktop-emulatie. Wanneer je de muiscursor naar de rechterrand van het beeldscherm van de eerste computer beweegt, schakelt DeskHop de signaalroutering onmiddellijk om naar de tweede computer, en verschijnt de cursor op dezelfde hoogte aan de linkerrand van het scherm.

DeskHop Mouse Demo

Het toetsenbord volgt automatisch de muis. Je typt code op Linux, beweegt de muis naar rechts naar het Mac-scherm, en je volgende toetsaanslag gaat naar macOS.

DeskHop Typing Demo

Om de cursorpositie te volgen, schakelt DeskHop de HID-muisdescriptor om naar absolute coördinaten. Het apparaat telt intern relatieve bewegingen op om de exacte positie op het scherm te berekenen.

Als omschakelen met de muis niet handig is, werkt de Left Ctrl + Caps Lock hotkey altijd.

Handige extra's en werkmodi

De auteur heeft verschillende gespecialiseerde modi aan de firmware toegevoegd om veelvoorkomende pijnpunten bij het werken met twee systemen aan te pakken:

  • Muisvertragingmodus (Right Ctrl + Right Alt). Wanneer je de combinatie indrukt, daalt de muisgevoeligheid scherp. Handig wanneer je een enkele pixel moet pakken in een grafische editor of een schuifregelaar precisie moet verplaatsen in een video.
  • Gamingmodus (Left Ctrl + Right Shift + G). Absolute muiscoördinaten breken besturing in veel 3D-games en virtuele machines. In gamingmodus schakelt DeskHop automatisch omschakelen tussen schermen uit en keert terug naar standaard relatieve positionering.
  • Schakelvergrendeling (Right Ctrl + K). Vergrendelt de besturing naar de huidige computer zodat een onbedoelde handbeweging de cursor niet naar de tweede monitor stuurt tijdens een gesprek.
  • Schermbeveiligingsmodus (Left Ctrl + Right Shift + S). De cursor begint willekeurig over het scherm te springen als een Pong-bal, waardoor de computer niet in slaapstand gaat.

Hardware en doe-het-zelf-assemblage

Het project is vanaf het begin ontworpen zodat iedereen het op een keukentafel kan bouwen. De tweelaagse PCB gebruikt een minimaal aantal componenten.

PCB Image

Onderdelen voor assemblage (PCB v1.1):

| Component | Aantal | Geschatte prijs | | --- | --- | --- | | Raspberry Pi Pico | 2 stuks | ~8,20 € | | USB-A-connector voor bord | 2 stuks | ~0,40 € | | TI ISO7721DR-isolator | 1 stuk | ~1,40 € | | Condensatoren en weerstanden (0805) | 8 stuks | ~0,44 € | | TPD4E1U06DBVR ESD-beschermingschips | 2 stuks | ~0,62 € |

De totale kosten voor onderdelen komen rond de 11-12 euro uit. De behuizing print in een paar uur op een 3D-printer, en het bord klikt zonder een enkele schroef op zijn plaats.

DeskHop with 3D Printed Case

Voor degenen die niet zelf willen solderen, zijn er gerber-bestanden beschikbaar in de repository. Je kunt een gemonteerd bord of een kit bestellen bij Elecrow.

PCB Assembly Guide

Firmware en configuratie

Je kunt het project bouwen vanuit de broncode met CMake of Docker:

docker-compose -f misc/docker.yml run --rm build_container

Als bouwen vanuit de broncode te veel werk lijkt, is er een kant-en-klare firmware.uf2 file in de releases-sectie. Om het apparaat te flashen, houd je Left Ctrl + Right Shift + C + O ingedrukt. DeskHop herstart en doet alsof het een virtuele schijf is genaamd "DESKHOP" waar je gewoon het .uf2 bestand op neerzet.

Een hotkey-combinatie Right Shift + F12 + Y is beschikbaar voor het kalibreren van de overganghoogte tussen monitoren van verschillende formaten.

Border height difference

De configuratie is ontworpen met veiligheid in gedachten. Geen webservers of clouddiensten. Wanneer je de installatiemodus opent, verschijnt er een config.htm bestand op de virtuele schijf. Je opent het lokaal in Chrome of Yandex Browser en bewerkt parameters via WebHID rechtstreeks in de browser.

Multiple screens per output

Web Browser with URL

Web Config

De auteur heeft een apart hoofdstuk gewijd aan beveiligingsoverwegingen:

  • Geen gedeeld klembord of bestandsoverdracht tussen systemen.
  • Geen netwerkinterfaces, Wi-Fi of Bluetooth.
  • Computers kunnen de firmware van het apparaat niet geforceerd bijwerken zonder fysieke knoppen op het toetsenbord in te drukken.

Beperkingen en valkuilen

Het project is goed uitgevoerd, maar niets is perfect. Hier zijn een paar zaken om te weten voordat je begint met bouwen:

  1. Multi-monitor setups. Vanaf Windows 10 update KB5001387 werkt het absolute HID-coördinaatgedrag niet meer goed bij meerdere monitoren. De cursor kan aan het eerste scherm blijven plakken. Er zijn experimentele workarounds in de firmware, maar het probleem wordt nog opgelost.
  2. Complexe randapparatuur. Toetsenborden met schermen, macro-pads en muizen met 20 extra knoppen werken mogelijk niet correct. Eenvoudige kantoortoetsenborden en mechanische toetsenborden zonder exotische encoders werken prima.
  3. Stroom. Beide computers moeten stroom leveren aan hun USB-poorten. Als één PC volledig is uitgeschakeld, start het apparaat niet op zonder een externe hub.

Mouse polling rate

De muis polling rate bereikt 1.000 Hz, dus je ervaart geen merkbare vertraging tijdens het bewegen.

Is het de moeite waard om te maken?

DeskHop is een uitstekend weekendproject voor doe-het-zelvers. Als je op twee werkstations tegelijk werkt en genoeg hebt van softwarematige KVM-vertragingen of het klikken op goedkope Chinese switches, verdient dit kleine kastje zichzelf op de eerste dag terug. De C-broncode en PCB-schema's zijn volledig open onder de GPL-3.0-licentie.

Gerelateerde projecten