Pitch: USBridge Remote: por que criar mais um software de acesso remoto?
Já existem muitos programas de acesso remoto. No entanto, a maioria exige criação de conta, bloqueia recursos atrás de assinaturas ou depende de servidores externos. Sempre achei esse modelo limitante, porque acredito que o usuário deveria ter controle total sobre sua própria infraestrutura.
Foi por isso que comecei a desenvolver o USBridge Remote, um projeto gratuito e de código aberto.
GitHub:
https://github.com/USBridge-Technologies/USBridge-Remote
O interessante é que ele não nasceu com o objetivo de competir com outras soluções de acesso remoto. Na verdade, começou como parte de um projeto completamente diferente.
Tudo começou com um projeto de KVM over IP
Atualmente estou desenvolvendo o USBridge KVM 2.0, um dispositivo KVM over IP. Além de transmitir a tela da BIOS, ele também utiliza OCR integrado para reconhecer o texto exibido e permitir sua leitura até mesmo via terminal SSH.
Inicialmente eu estava desenvolvendo apenas o software responsável por controlar esse hardware. Mas quando chegou a hora de implementar o streaming de vídeo, o projeto começou a tomar outro rumo.
Minha primeira ideia era criar também um protocolo próprio de streaming. Pouco tempo depois percebi que isso não fazia sentido. Já existem projetos open source excelentes, como Sunshine e Moonlight, então preferi integrá-los em vez de reinventar algo que já funciona muito bem.
Passei então a concentrar o trabalho na redução da latência e na otimização da arquitetura. Depois de várias melhorias, percebi que o software já era bom o suficiente para funcionar como uma solução independente de acesso remoto. Foi assim que nasceu o USBridge Remote.
Dois níveis de acesso em uma única interface
O desenvolvimento do USBridge KVM 2.0 continua normalmente.
Quando o sistema operacional está funcionando, um agente de software assume todo o controle remoto. Caso o computador esteja parado na BIOS ou o sistema operacional tenha travado completamente, o hardware KVM assume automaticamente.
O objetivo é oferecer uma experiência contínua, utilizando a mesma interface para os dois cenários.
Wayland foi um dos maiores desafios
Quem utiliza Linux provavelmente já encontrou dificuldades para fazer acesso remoto em ambientes Wayland.
Grande parte das soluções atuais solicita autorização sempre que a captura de tela é iniciada. Em um computador pessoal isso pode ser aceitável, mas em servidores ou máquinas sem monitor torna-se um problema sério.
Quis resolver essa limitação de forma definitiva. Em vez de utilizar as APIs tradicionais de captura de tela, implementei a captura diretamente na camada do driver gráfico.
Como resultado, o acesso remoto totalmente não assistido funciona no Wayland sem exibir repetidamente janelas de autorização.
Pessoalmente, considero essa uma das partes mais importantes do projeto.
Aproveitando o que já existe
Também decidi não criar um protocolo próprio de rede.
O projeto utiliza Tailscale (WireGuard) para estabelecer conexões seguras mesmo atrás de NAT, sem necessidade de abrir portas no roteador.
Acredito que um bom projeto open source não precisa reinventar tudo. Faz mais sentido utilizar tecnologias maduras onde elas já resolvem bem o problema e concentrar os esforços apenas no que realmente traz inovação.
Streaming de baixa latência
O streaming utiliza Sunshine e Moonlight, podendo chegar a 2K e 240 FPS, dependendo do hardware disponível.
A comunicação é feita por UDP, priorizando baixa latência em vez da confiabilidade absoluta do TCP. Em redes instáveis isso pode ocasionar pequenas perdas de quadros, mas esse é um compromisso esperado em aplicações que priorizam resposta em tempo real.
Desenvolvimento contínuo
O projeto continua evoluindo.
Nas últimas semanas implementei:
compartilhamento de área de transferência entre computador local e remoto;
suporte a múltiplos monitores.
No momento, alterações na configuração dos monitores ainda exigem uma reconexão, mas isso já está planejado para ser automatizado nas próximas versões.
Também pretendo adicionar suporte ao ZeroTier e continuar refinando toda a experiência do usuário.
Feedback é muito bem-vindo
O projeto ainda está em fase beta, então todo feedback faz diferença.
Se encontrar algum bug ou tiver sugestões de melhorias, ficarei muito feliz em receber um Issue no GitHub.
GitHub
https://github.com/USBridge-Technologies/USBridge-Remote
Vídeo de demonstração
https://youtu.be/bQxQNPJdqu8
Obrigado por ler!