3 pontos por GN⁺ 2024-02-12 | 1 comentários | Compartilhar no WhatsApp
  • SimpleKVM é um programa para Windows que permite controlar vários computadores com um único conjunto de teclado, mouse e monitor, sendo uma alternativa para reduzir o custo de KVMs de alta resolução e alta taxa de atualização
  • O usuário conecta cada computador ao monitor, liga o teclado e o mouse a um USB Switch e então executa o SimpleKVM em um dos computadores
  • A troca pode ser feita pelo botão do USB Switch ou por hotkey, e o programa detecta a conexão/desconexão de dispositivos USB ou a entrada da hotkey
  • A troca de entrada do monitor é feita por meio de comandos DDC/CI, compatíveis com muitos monitores, e também há suporte a configuração com múltiplos monitores
  • O download é oferecido na seção releases do GitHub, e no momento há apenas versão para Windows

O problema que o SimpleKVM resolve

  • SimpleKVM é um programa para controlar vários computadores com um único teclado, mouse e monitor
  • KVMs comuns tendem a ser caros, especialmente os modelos que suportam alta resolução e alta taxa de atualização
  • O SimpleKVM permite montar uma configuração parecida usando um USB Switch barato, sem gastar centenas de dólares

Configuração necessária

  • O usuário faz a configuração na seguinte ordem
    • Conecta os computadores ao monitor
    • Conecta o mouse e o teclado ao USB Switch
    • Executa o SimpleKVM em um dos computadores
  • Depois disso, é possível alternar entre os computadores pelo USB Switch ou por hotkey

Como funciona

  • O programa detecta quando um dispositivo USB é conectado ou desconectado
  • A entrada de hotkey também pode ser usada como gatilho de troca
  • Ao alternar, ele envia comandos DDC/CI ao monitor para mudar a fonte de entrada
  • DDC/CI é um método suportado por muitos monitores

Múltiplos monitores e ambiente de execução

  • O SimpleKVM oferece suporte a múltiplos monitores
  • As versões podem ser baixadas na seção releases
  • No momento, o build disponível é para Windows

Exemplos de USB Switch

Configuração para iniciar com o sistema e origem

  • Para executar automaticamente na inicialização, clique no botão de configurações e marque Run at Startup
  • O SimpleKVM foi inspirado pelo programa display-switch, de haimgel

1 comentários

 
GN⁺ 2024-02-12
Opiniões no Hacker News
  • É mais ou menos um “cheguei à mesma conclusão”, mas acho que minha configuração é um pouco mais complexa, porém melhor e mais barata
    O método acima é difícil para mim porque precisa ser instalado em todos os computadores, e depende da troca via USB, então não permite um acionamento totalmente remoto
    Em vez disso, trato a troca de entrada do monitor com comandos DDC, o USB com um USB KVM de US$ 25 com um único botão, e a entrada do botão com um macropad do AliExpress de US$ 5 a US$ 15
    Produtos prontos como o Stream Deck custam mais de US$ 80 por alguns botões, então são caros; já macropads baratos podem ser programados com projetos do GitHub como https://github.com/rOzzy1987/MacroPad em vez do software incluído
    O botão do USB KVM é pressionado por um FingerBot de US$ 16 ou um Switchbot de US$ 28, e o AHK monitora atalhos de teclado para acionar junto os comandos DDC e o botão do switch USB
    Há alguns segundos de atraso, mas o controle fica em um único lugar e também é possível executar tudo de forma totalmente remota

    • Parece que todo mundo chegou a conclusões parecidas. Ao tentar automatizar só com um switch USB no Windows e no macOS, enfrentei vários problemas como valores DDC incorretos e detecção de eventos de dispositivo: https://nokappa.notion.site/Making-a-software-KVM-using-only...
      No fim ficou meio instável, e outras coisas estavam ainda mais bagunçadas, então acabei desistindo da maior parte
      O macropad é uma boa ideia, e sempre foi chato posicionar o switch USB
    • Essa configuração tem vantagens em relação a um switch KVM comum e deve ter sido um projeto de hacking interessante, mas, olhando só o preço, dá para comprar no AliExpress um KVM HDMI 4K de 4 portas com painel de controle por US$ 29,25
      Não sei quanto é o frete para os EUA, mas o envio para a Europa foi US$ 15
    • Quero uma configuração assim, mas meu monitor não oferece suporte a comandos DDC suficientes. Alguém recomenda algum monitor?
    • Você disse que não gosta do fato de “o método acima precisar ser instalado em todos os computadores”, mas essa solução também não acaba exigindo instalar um script AHK em todos os computadores?
  • Ao pesquisar KVMs, cheguei à mesma conclusão de que, no fim, DDC era a solução
    No meu caso são dois PCs Windows e uma configuração com dois monitores, e uso o NirSoft ControlMyMonitor, que tem CLI, com um Elgato Stream Deck
    Um KVM comum faz os dois monitores mostrarem apenas um computador, mas eu quero exibir um computador no monitor A e outro no monitor B, e alterná-los entre si quando necessário
    Uso um monitor na vertical e outro na horizontal, e quero alternar mouse e teclado independentemente da configuração dos monitores
    Rodo o software do Stream Deck em cada computador, e o Stream Deck fica conectado ao switch USB

    • Fico curioso para saber se tudo funciona bem, inclusive os bindings conectados ao Stream Deck
    • DDC é sigla de quê?
  • Até um switch USB simples era bem caro, e às vezes exigia drivers que não funcionavam no Linux
    Então desenhei rapidamente uma plaquinha de circuito simples com um hub USB e um switch, e mandei montar em uma fabricante DIY como JLCPCB ou PCBWay
    Cinco unidades de um switch 2-para-1 com um único botão saíram por 25 euros; eu não tinha experiência com projeto de circuitos nem soldei nada, mas funciona perfeitamente
    Parece que combinaria bem com este software, então talvez eu tente

    • Nesse tipo de switch, tudo acontece fisicamente, então não precisa de software, e dá para comprar na Amazon por cerca de 20 euros
      Acho menos caro do que uma fabricação personalizada
    • Seria ótimo se você publicasse o projeto em algum lugar acessível. Quando KVM é barato, costuma não funcionar de formas estranhas; quando é caro, funciona, mas muitas vezes tem quirks
      Acho que uma parte importante é o aterramento e evitar loops de terra entre potenciais diferentes
    • Parece mesmo que os preços subiram um pouco nos últimos anos. Talvez exista mercado até para um produto feito por conta própria
      É interessante que alguns switches USB não funcionem bem no Linux
      Eu achava que, por serem hubs USB simples, não precisariam de drivers separados, mas produtos com recursos avançados, como transferência de arquivos entre PCs ou compartilhamento de mouse, como https://www.aliexpress.com/item/1005006202631772.html, muitas vezes exigem software e drivers especiais
    • Em 2019 comprei https://www.amazon.com/gp/product/B01HV1N674 por US$ 13, e ainda uso junto com o display-switch mencionado pelo OP
      É um dispositivo o mais “burro” possível; segundo uma das avaliações, se você conectar e desconectar vezes demais, a porta pode ficar um pouco instável, mas nos meus dois monitores Dell P2419H ainda funciona perfeitamente
      Escolhi esse produto porque todos os cabos ficam na parte de trás, e o modelo com controle remoto na página do GitHub do OP também parece bom
    • Alguns produtos linkados pelo TA tinham preços bem razoáveis
      Usei e pesquisei alguns enquanto procurava uma configuração parecida, mas nenhum deles exigia driver
  • Uso udev para isso. Quando o switch USB aparece, envio um comando DDC
    ACTION=="add", SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="1a40", ENV{ID_MODEL_ID}=="0101", RUN+="/usr/bin/ddcutil --sn ABCDEFGHI setvcp 60 0x0f"

  • Um bom KVM, especialmente os produtos da Level1Tech, mantém todos os monitores virtualmente conectados o tempo todo, então as posições das janelas permanecem as mesmas ao alternar entre máquinas
    Do ponto de vista do PC cliente, o dispositivo USB/DisplayPort nunca desapareceu, então também não há atraso de reconectar o dispositivo
    Também dá para conectar um monte de periféricos a um dock e alternar apenas o Thunderbolt upstream, mas esse método não funciona direito
    KVM ruim é fácil; KVM bom é difícil
    Sem relação com https://www.store.level1techs.com/products/hardware

    • Comprei um KVM da Level1Tech, mas ele não tinha suporte a emulação de EDID
      Ao alternar entre um Mac e uma máquina Linux (Gnome), o Mac entra em repouso, e o Gnome volta para a configuração padrão de monitores e move as posições das janelas
      Existem KVMs DP 1.2 com emulação de EDID, mas aí você perde as vantagens do DP 1.4
      Isso também aparece no fórum de FAQ: https://forum.level1techs.com/t/official-l1techs-kvm-faq-ult...
    • A maioria dos monitores Dell recentes tem KVM e hub integrados
      Usados com periféricos sem fio que usam receptor USB, permitem uma configuração sem cabos, o que é ótimo, e no notebook basta conectar um único cabo para tudo funcionar
    • Comprei um produto da Level1Tech no ano passado e foi muito caro, mas, pessoalmente, valeu a pena
      Alterno várias vezes ao dia entre o PC de trabalho e o PC pessoal, e até agora funciona perfeitamente com dois monitores, 4K 60 Hz e 2K 144 Hz, em duas máquinas Linux
      Tenho conectados áudio USB, microfone, câmera 4K, impressora, teclado e mouse
    • O bug de as posições das janelas não serem preservadas só acontece em gerenciadores de janelas ruins
      Um gerenciador de janelas decente é inteligente o bastante para devolver as janelas à posição original quando o monitor volta
    • Eu estava usando muito bem um KVM genérico que encontrei na Amazon https://www.amazon.com/gp/product/B088WGKFZH, mas é uma pena que agora parece estar esgotado
      Nunca tive falha ao trocar de fonte, e o atraso de que outras pessoas falaram era apenas o processo de handshake HDMI do próprio monitor
      Também havia o TESmart, bem mais caro, https://www.amazon.com/gp/product/B08N494N7X, mas não consegui usá-lo por causa de algum problema estranho de compatibilidade com um dock Thunderbolt https://www.amazon.com/gp/product/B08HR3T837 e um MBP
      Cheguei a falar com o suporte, mas nunca conseguiram descobrir a causa
  • Um ponto de atenção com ferramentas desse tipo é que, no DisplayPort, normalmente os comandos só são permitidos para a entrada ativa
    Depois que você muda para outra entrada, não consegue voltar, a menos que execute o comando no outro computador, o que é inconveniente
    Já no HDMI, comandos DDC normalmente são permitidos mesmo em portas que não são a entrada ativa
    Não sei se isso é obrigatório, mas foi assim em todos os monitores que usei

  • É exatamente o projeto de que eu estava precisando. Fico curioso se também seria possível alternar apenas um dock Thunderbolt
    Por exemplo, tendo quatro computadores compatíveis com Thunderbolt e alternando entre eles apenas um USB-C
    Não tentei por medo de afetar o hardware e, inspirado por este post, procurei um KVM Thunderbolt e encontrei coisas como https://sabrent.com/products/sb-tb4k e https://www.reddit.com/r/Thunderbolt/comments/11gos6n/kvm_sw...

    • Melhor não criar muita expectativa quanto a isso. Thunderbolt só parece USB-C por fora; é melhor encará-lo como PCIe que, por acaso, tem o formato de um conector USB
    • Parece bem provável que dê problema. Os docks Thunderbolt que tenho passam por algo parecido com um tempo de boot toda vez que são ligados ou alternados
      Se você tolerar o atraso, talvez funcione
    • Thunderbolt deve ter requisitos muito específicos, então é provável que o switch também seja caro
  • Em resumo, cada computador precisa conectar seu próprio cabo HDMI a cada entrada do monitor
    Não é o KVM de verdade que muita gente imagina, mas sim uma forma de não precisar apertar o botão de seleção de entrada do monitor
    Pelo menos uma máquina precisa estar ligada e rodando Windows, mas provavelmente basta que uma só esteja nessa condição

    • Basta uma máquina rodando Windows e executando o programa
      Quando detecta que o dispositivo USB foi inserido, ele muda a entrada do monitor para o computador Windows; quando detecta que o dispositivo USB foi removido, muda para o computador Linux
    • No Linux, dá para alternar entradas com ddcutil, então deve ser fácil fazer algo parecido
      Já uso algo semelhante: ao pressionar um atalho, executo um script que muda a rotação do monitor com xrandr
  • Até voltar a usar apenas um computador, eu ficava desconectando e conectando cabos manualmente, depois usei o switch USB da Ugreen mencionado no README e, no fim, acabei adotando um monitor com KVM integrado, que foi a melhor opção
    O problema é quando você quer usar o mesmo monitor para trabalho e jogos
    Switches KVM 4K ou de alta taxa de atualização são caríssimos e tendem a ser pouco confiáveis, então normalmente se usa um switch USB e se troca a entrada do monitor manualmente
    Este software reduz a necessidade de apertar o botão de “alterar fonte de entrada”, mas parece ser exclusivo para Windows; portanto, se as duas máquinas não forem Windows, só dá para alternar em uma direção e, ao voltar, é preciso fazer a troca manualmente
    Um monitor adequado para jogos, com alto DPI, alta taxa de atualização e KVM integrado, é o Gigabyte M28U
    Com um único botão, a fonte de entrada e os periféricos USB mudam juntos, e funciona bastante bem
    Também existe o M32U, mas o DPI é mais baixo

    • Se forem apenas dois computadores, basta executar o SimpleKVM em um deles
      Isso porque ele consegue detectar quando o dispositivo USB foi removido — ou seja, quando passou para o outro computador — e quando foi inserido — ou seja, quando voltou para este computador
    • Fico curioso se os outros computadores para os quais o monitor foi alternado detectam que o display desapareceu
    • O Gigabyte M27U tem um painel melhor e, graças ao DPI mais alto, fica muito mais agradável no macOS
  • Eu também fiz algo parecido por conta própria e fiz funcionar sem switch USB nem outro hardware
    Envio comandos DDC para monitores HDMI/USB-C e bytecode HID++ para teclado e mouse Logi MX
    O código está bagunçado demais para compartilhar, mas quem quiser fazer algo próprio pode estruturá-lo enviando sequências de bytes para alternar para cada host no Logi Bolt Receiver, Logitech Unified Receiver, MX Keys Mini Bluetooth e MX Anywhere 3 Bluetooth

    • Onde seria bom procurar para saber mais sobre isso? Também tenho curiosidade se essas sequências variam de acordo com o dispositivo
      Minha configuração atual tem dois monitores Dell U2415 e um desktop Linux x86_64, e uso um mouse vertical Logi compatível tanto com Bluetooth quanto com dongle, além de um teclado ATK (A.JAZZ)
      Quero compartilhar teclado/monitor/mouse de forma puramente por software usando o Bluetooth e as duas portas micro-HDMI do Raspberry Pi 5, e não quero gastar muito dinheiro com um KVM de hardware