>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
C

Cómo construir un switch KVM de hardware por 11 euros usando dos placas Raspberry Pi Pico

¿Alguna vez has tenido dos ordenadores en tu escritorio pero solo espacio para un teclado y ratón? Generalmente hay dos formas de manejar esto. La primera es por software (como Barrier o Input Leap). Pero entonces empiezan los dolores de cabeza: cortes de red, la VPN corporativa bloquea el tráfico local, o tu ordenador del trabajo no te deja instalar software de terceros. La segunda opción es un switch USB barato de AliExpress. Pulsa un botón en la cajita, esperas un par de segundos a que el sistema operativo reinicialice los dispositivos, y repites esto docenas de veces al día.

El desarrollador hrvach se encontró con esta misma frustración y decidió construir su propio hardware. El proyecto se llama DeskHop. Es un dispositivo abierto que cambia tu teclado y ratón entre dos ordenadores al instante. Puedes cambiar mediante tecla de acceso rápido o simplemente arrastrando el cursor del ratón más allá del borde de la pantalla, como si tuvieras un monitor conectado a dos PCs.

DeskHop case and board

Cómo funciona por dentro

El circuito está construido alrededor de dos placas Raspberry Pi Pico estándar basadas en el chip RP2040. Cada placa se conecta a su propio ordenador a través de USB. Los microcontroladores se comunican entre sí a través de UART mediante un chip de aislamiento galvánico (TI ISO7721DR o ADuM1).

Open Source Hardware Logo

El aislamiento galvánico aquí es genuino: las líneas de tierra y alimentación de los dos PCs están completamente aisladas entre sí. Si un ordenador se quema o produce una sobretensión, el otro se mantiene seguro.

La magia USB del lado del host viene de la biblioteca Pico-PIO-USB. La E/S programable (PIO) en el chip RP2040 convierte los pines GPIO ordinarios en puertos USB completos. Una placa Pico actúa como el host USB donde conectas tu teclado y ratón, mientras ambas placas emulan dispositivos HID estándar para los ordenadores conectados.

Cambio seamless entre pantallas

La mejor característica de DeskHop es la emulación perfecta del escritorio. Cuando mueves el cursor del ratón al borde derecho del monitor del primer ordenador, DeskHop cambia instantáneamente el enrutamiento de señal al segundo ordenador, y el cursor aparece en el borde izquierdo de su pantalla a la misma altura.

DeskHop Mouse Demo

El teclado sigue automáticamente al ratón. Estás escribiendo código en Linux, mueves el ratón a la derecha hacia la pantalla del Mac, y tu siguiente pulsación va a macOS.

DeskHop Typing Demo

Para rastrear la posición del cursor, DeskHop cambia el descriptor HID del ratón a coordenadas absolutas. El dispositivo internamente suma los movimientos relativos para calcular la posición exacta en pantalla.

Si cambiar con el ratón no es conveniente, la tecla de acceso rápido Left Ctrl + Caps Lock siempre funciona.

Extras útiles y modos de operación

El autor añadió varios modos especializados al firmware para abordar puntos de dolor comunes al trabajar con dos sistemas:

  • Modo de ralentización del ratón (Right Ctrl + Right Alt). Cuando presionas la combinación, la sensibilidad del ratón cae drásticamente. Útil cuando necesitas agarrar un solo píxel en un editor gráfico o mover con precisión un control deslizante en un vídeo.
  • Modo gaming (Left Ctrl + Right Shift + G). Las coordenadas absolutas del ratón rompen los controles en muchos juegos 3D y máquinas virtuales. En modo gaming, DeskHop desactiva el cambio automático de pantalla y vuelve al posicionamiento relativo estándar.
  • Bloqueo de conmutación (Right Ctrl + K). Bloquea el control en el ordenador actual para que un movimiento accidental de la mano no envíe el cursor volando al segundo monitor durante una llamada.
  • Modo protector de pantalla (Left Ctrl + Right Shift + S). El cursor comienza a saltar aleatoriamente por la pantalla como una pelota de Pong, evitando que el ordenador entre en suspensión.

Hardware y ensamblaje DIY

El proyecto se diseñó desde el principio para que cualquiera pudiera construirlo en una mesa de cocina. La PCB de dos capas utiliza un número mínimo de componentes.

PCB Image

Componentes para el ensamblaje (PCB v1.1):

| Componente | Cantidad | Precio aproximado | | --- | --- | --- | | Raspberry Pi Pico | 2 uds. | ~8,20 € | | Conector USB-A para placa | 2 uds. | ~0,40 € | | Aislador TI ISO7721DR | 1 ud. | ~1,40 € | | Condensadores y resistencias (0805) | 8 uds. | ~0,44 € | | Chips de protección ESD TPD4E1U06DBVR | 2 uds. | ~0,62 € |

El costo total de los componentes ronda los 11-12 euros. La carcasa se imprime en una impresora 3D en un par de horas, y la placa encaja sin un solo tornillo.

DeskHop with 3D Printed Case

Para quienes no quieran soldar ellos mismos, los archivos gerber están disponibles en el repositorio. Puedes pedir una placa ensamblada o un kit a Elecrow.

PCB Assembly Guide

Firmware y configuración

Puedes compilar el proyecto desde el código fuente usando CMake o Docker:

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

Si compilar desde el código fuente parece demasiado trabajo, hay un archivo firmware.uf2 listo para usar en la sección de releases. Para flashear el dispositivo, solo mantén presionado Left Ctrl + Right Shift + C + O. DeskHop se reiniciará y fingirá ser una unidad virtual llamada "DESKHOP" donde simplemente sueltas el archivo .uf2.

Se proporciona una combinación de teclas de acceso rápido Right Shift + F12 + Y para calibrar la altura de transición entre monitores de diferentes tamaños.

Border height difference

La configuración está diseñada pensando en la seguridad. Sin servidores web ni servicios en la nube. Cuando entras en modo de configuración, aparece un archivo config.htm en la unidad virtual. Lo abres localmente en Chrome o Yandex Browser y editas los parámetros a través de WebHID directamente en el navegador.

Multiple screens per output

Web Browser with URL

Web Config

El autor dedicó una sección separada a las preocupaciones de seguridad:

  • Sin portapapeles compartido ni transferencia de archivos entre sistemas.
  • Sin interfaces de red, Wi-Fi ni Bluetooth.
  • Los ordenadores no pueden forzar la actualización del firmware del dispositivo sin presionar botones físicos en el teclado.

Limitaciones y trucos

El proyecto quedó genial, pero nada es perfecto. Aquí hay algunas cosas que saber antes de empezar a construir:

  1. Configuraciones de múltiples monitores. A partir de la actualización de Windows 10 KB50036, el comportamiento de coordenadas HID absolutas se rompió para múltiples monitores. El cursor puede quedarse pegado en la primera pantalla. Hay soluciones experimentales en el firmware, pero el problema aún se está resolviendo.
  2. Periféricos complejos. Teclados con pantallas, pads de macros y ratones con 20 botones extra pueden no funcionar correctamente. Los teclados de oficina simples y mecánicos sin codificadores exóticos funcionan bien.
  3. Alimentación. Ambos ordenadores deben alimentar sus puertos USB. Si un PC está completamente sin alimentación, el dispositivo no arrancará sin un hub externo.

Mouse polling rate

La tasa de polling del ratón alcanza 1.000 Hz, así que no sentirás ningún retardo durante el movimiento.

¿Merece la pena hacerlo?

DeskHop es un excelente proyecto DIY para un fin de semana. Si trabajas en dos estaciones simultáneamente y estás cansado de los retrasos del software KVM o de hacer clic en botones de switches chinos baratos, esta cajita se paga sola desde el primer día. El código fuente en C y los esquemas de PCB son completamente abiertos bajo la licencia GPL-3.0.

Proyectos relacionados