Protocolo aberto
Visão geral do protocolo aberto
Protocolo aberto USB KVM SuperKVM O protocolo aberto USB KVM tem duas partes A primeira cobre o tráfego genérico de teclado e mouse. Para facilitar a reutilização por terceiros, seguimos o enquadramento CH9329 , de modo que código open source existente costuma ser adaptado rapidamente aos nossos KVM A segunda é o protocolo de extensão KVM: tudo além de teclado e mouse (OTA, comutação de disco USB, leitura de informações do dispositivo, diversas chaves de configuração) Taxa de baud UART No host USB KVM SuperKVM há uma porta serial CDC USB virtual , portanto são suportadas taxas de 9600 a 6 M baud . Recomendamos 2 M baud ou o máximo que sua ferramenta tolerar Quadro CH9329 Definição de campos Offset Campo Comprimento Descrição 0 HEAD1 1 Fixo 0x57 1 HEAD2 1 Fixo 0xAB 2 ADDR 1 Endereço do dispositivo, padrão 0x00 3 CMD 1 Byte de comando (veja PDF detalhado) 4 LEN 1 Número de bytes DATA seguintes 5 DATA LEN Semântica da carga conforme PDF detalhado 5+LEN SUM 1 Soma byte a byte de HEAD1 até o último byte DATA, depois & 0xFF Hoje só três comandos estão implementados: Teclado (CMD= 0x02 ) Mouse absoluto (CMD= 0x04 ) Mouse relativo (CMD= 0x05 ) O MCU processa essas três ordens mas não envia respostas para preservar a eficiência da UART. Fale com o suporte se precisar de confirmações Documentação CH9329: PDF oficial Extensões SuperKVM Por consistência, as extensões reutilizam o cabeçalho estilo CH9329, mas redefinem os campos seguintes Definição de campos Ordem no fio ( HEAD como bytes 57 AB , ou seja notação big endian 0x57AB ; campos numéricos seguintes são principalmente little endian ): Offset Campo Comprimento Endianness Observações 0 head 2 literais 0x57 , 0xAB Interpretado como uint16 LE aparece 0xAB57 , mas logicamente continua um quadro estendido 2 channel 1 — Equivale ao campo ADDR do CH9329 3 sn 4 LE Número de sequência 7 total len 4 LE Comprimento TLV : type(2)+len(4)+carga , ou seja 6 + bytes de carga útil ( create protocol packet ) 11 type 2 LE Subcomando 13 len 4 LE Comprimento da carga ( total len = 6 + len ) 17 payload len — Dados de aplicação 17+len CRC 4 LE Veja o algoritmo CRC abaixo O terceiro octeto carrega o ID do canal : 0 para compatível CH9329, qualquer outro valor para extensões Algoritmo CRC Pseudocódigo estilo JavaScript Implementação em C Valores channel ( CH ID ) Valor (hex) Macro Significado Uso típico 00 CH ID CH9329 Canal CH9329 Compatibilidade teclado/mouse 01 CH ID DEVICE Informação e controle Versão, comutação de disco USB etc. 02 CH ID OTA OTA Atualizações de bootloader e aplicativo 03 CH ID EXT PERIPHERAL Periféricos externos Controle de hardware para módulos externos 04 CH ID SHELL Passagem Shell Shell bidirecional quando o dispositivo expõe 05 CH ID LOG Registros Fluxo de registros KVM para a interface web Subprotocolos por canal Documentação em elaboração. Entre em contato com o suporte para detalhes urgentes
Canonical: https://wiki.superkvm.com/pt-BR/open/protocol · Marketing: https://www.superkvm.com · GitHub: https://github.com/superkvm