Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Гайд KMBox B Pro — Фикс NG Screen и ручной запуск через Python

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
565
Реакции
14
Народ, кто плотно сидит на KMBox B Pro, наверняка ловили этот бесячий NG Screen (No Good), когда девайс просто уходит в ребут при попытке вызвать boot.py или банальный km.move().

Суть проблемы: стандартный запуск через внутренний скрипт иногда триггерит защиту или баг прошивки, из-за чего коробка виснет. Нашел рабочий костыль — мы будем имитировать логику загрузки, отправляя команды напрямую через COM-порт, обходя штатный порядок инициализации.

Что делает этот метод:
  1. Открывает прямой канал через Serial.
  2. Инициализирует частоту опроса и скорость передачи (baud rate).
  3. Настраивает кривые движения (Bezier/Missile tracking).
  4. Позволяет на лету менять VID/PID, чтобы минимизировать шансы детекта по железу.
  5. Выводит кастомную инфу на TFT-экранчик девайса.

Сам скрипт на Python:
Код:
Expand Collapse Copy
import serial
import time

# Подключаемся к своему COM-порту
s = serial.Serial('COM28', 115200, timeout=1)

def send_command(command):
    s.write((command + '\r\n').encode('utf-8'))
    time.sleep(0.1)  # Даем девайсу переварить команду

# Базовые конфиги
mcu = 500
rate = 115200
trace_type = 0

send_command(f'km.freq({mcu})') 
send_command(f'km.baud({rate})') 
send_command(f'km.trace_type({trace_type})') 

# Режим работы (1: USB, 6: USB+BT)
mode1 = 1 
bt1 = 0 
send_command(f'bt.enable({bt1})') 
send_command(f'km.mode({mode1})')

# Смена VID/PID — мастхэв для скрытности
send_command('device.VID("04d9")') 
send_command('device.PID("a09f")') 
send_command('device.enable(1)') 

send_command('km.delay(100)')

# Отрисовка статуса на экране
send_command('tft.fill(TFT.BLACK)')
send_command('tft.text((2, 15), "Kmbox B Pro", TFT.RED, sysfont, 2, nowrap=True)')
send_command('tft.text((22, 80), "OK", TFT.GREEN, sysfont, 8, nowrap=True)')

# Тестовое микродвижение для проверки
send_command("km.move(10,0)")
s.close()

1. VID/PID: В примере стоят дефолтные значения, лучше смените на свои от какой-нибудь старой мышки, чтобы античит меньше триггерился.
2. Trace Type: 0 — это кривые Безье, 1 — более жесткий трекинг. Для легита лучше оставлять 0.
3. NG Screen: Если девайс всё равно падает в NG при вызове km.trace_enable(), просто закомментируйте эту строку, она часто вызывает конфликты на свежих прошивках.

Метод не идеальный, но как временное решение, чтобы оживить кирпич или обойти кривой бут — работает стабильно.

Кто уже ковырял новые ревизии прошивок, есть ли смысл перешиваться или лучше оставаться на старых стабильных билдах?
 
Назад
Сверху Снизу