Открытый протокол
Обзор открытого протокола
Открытый протокол USB KVM SuperKVM Открытый протокол USB KVM состоит из двух частей Первая описывает универсальный поток клавиатуры и мыши. Чтобы упростить повторное использование сторонними разработчиками, мы следуем фреймингу CH9329 , поэтому существующий открытый код часто быстро адаптируется под наши KVM Вторая часть — расширение KVM: всё, что выходит за рамки клавиатуры и мыши (OTA, переключение USB диска, чтение информации об устройстве, различные переключатели) Скорость UART На стороне хоста USB KVM SuperKVM используется виртуальный USB CDC‑COM , поэтому поддерживаются скорости от 9600 до 6 М бод . Рекомендуем 2 М бод или максимально возможную для вашей цепочки инструментов Фрейм CH9329 Определение полей Смещение Поле Длина Описание 0 HEAD1 1 Фиксированно 0x57 1 HEAD2 1 Фиксированно 0xAB 2 ADDR 1 Адрес устройства, по умолчанию 0x00 3 CMD 1 Байт команды (см. подробный PDF) 4 LEN 1 Число следующих байт DATA 5 DATA LEN Семантика полезной нагрузки по подробному PDF 5+LEN SUM 1 Контрольная сумма: побайтовое сложение от HEAD1 до последнего байта DATA, затем & 0xFF Сейчас реализованы только три команды: Клавиатура (CMD= 0x02 ) Абсолютная мышь (CMD= 0x04 ) Относительная мышь (CMD= 0x05 ) MCU обрабатывает эти три кадра, но не отправляет ответы из соображений эффективности UART. Обратитесь в поддержку, если нужны подтверждения Документация CH9329: официальный PDF Расширения SuperKVM Для единообразия расширения используют такой же заголовок в стиле CH9329, но переопределяют последующие поля Определение полей Порядок на линии ( HEAD — байты 57 AB , то есть запись big endian 0x57AB ; далее числовые поля преимущественно little endian ): Смещение Поле Длина Порядок байт Примечания 0 head 2 литералы 0x57 , 0xAB При чтении как uint16 LE видно 0xAB57 , но логически это расширенный кадр 2 channel 1 — Соответствует полю ADDR в CH9329 3 sn 4 LE Порядковый номер 7 total len 4 LE Длина TLV : type(2)+len(4)+полезная нагрузка , то есть 6 + байт полезной нагрузки ( create protocol packet ) 11 type 2 LE Подкоманда 13 len 4 LE Длина полезной нагрузки ( total len = 6 + len ) 17 payload len — Прикладные данные 17+len CRC 4 LE См. алгоритм CRC ниже Третий байт несёт идентификатор канала : 0 — совместимость с CH9329, любое другое значение — расширения Алгоритм CRC Псевдокод в стиле JavaScript Реализация на C Значения channel ( CH ID ) Значение (hex) Макрос Назначение Типичное использование 00 CH ID CH9329 Канал CH9329 Совместимость клавиатуры/мыши 01 CH ID DEVICE Информация и управление Версия, переключение USB диска и т. д. 02 CH ID OTA OTA Обновления загрузчика и приложения 03 CH ID EXT PERIPHERAL Внешняя периферия Управление аппаратными модулями 04 CH ID SHELL Проброс Shell Двунаправленный Shell при поддержке устройством 05 CH ID LOG Журналы Поток журналов KVM в веб интерфейс Подпротоколы по каналам Документация уточняется. При срочной необходимости свяжитесь с поддержкой
Canonical: https://wiki.superkvm.com/ru-RU/open/protocol · Marketing: https://www.superkvm.com · GitHub: https://github.com/superkvm