Obsah

Flash firmware T-Keyboard ESP32-C3 pro LilyGO T-Deck

Tento návod popisuje nahrání novějšího firmware do klávesnice T-Keyboard, která je součástí zařízení LilyGO T-Deck.

Novější firmware vylepšuje podporu stisku více kláves najednou, například při použití Shift. Díky tomu není potřeba mačkat každou klávesu samostatně a psaní se chová přirozeněji.

Firmware také umožňuje softwarově ovládat podsvícení klávesnice. Například při začátku psaní se může podsvícení automaticky zapnout.

Klávesnice T-Keyboard používá samostatný čip ESP32-C3, proto se firmware nahrává přes USB-UART programátor přímo do klávesnicového modulu.

Firmware: T-Keyboard_Keyboard_ESP32C3_250620.bin

Potřebné vybavení

Zapojení

V návodu byl použit tento USB-UART převodník:

LaskaKit převodník 6pin USB-TTL UART CP2102 s DTR pinem

Na převodníku jsou piny označené:

DTR, RXD, TXD, +5V, GND, 3V3

Pro flashování T-Keyboard se používají pouze piny TXD, RXD, GND a případně 3V3. Pin DTR se v tomto ručním postupu nepoužívá a pin +5V se nezapojuje.

Zapojení mezi USB-UART programátorem a T-Deck:

USB-UART programátor T-Deck
TXD RX
RXD TX
GND GND
3V3 VCC, pokud napájíme z programátoru
DTR / DRT nezapojovat
+5V nezapojovat

Používat pouze 3.3V logiku. Pin +5V z USB-UART programátoru nezapojovat.

Před zapnutím zařízení musí být připojená anténa. Zařízení se při flashování zapíná a provoz bez připojené antény může poškodit rádiovou část.

Pro vstup do bootloaderu je potřeba propojit pin BOOT s GND a následně zařízení resetovat nebo připojit napájení.

Fotky zapojení:

{{ :todo:t-keyboard-zapojeni-1.jpg?direct |Zapojení T-Deck}} {{ :todo:t-keyboard-zapojeni-2.jpg?direct |Detail programovacího headeru

Instalace esptool

Na macOS / Linux:

python3 -m pip install esptool

Na Windows:

py -m pip install esptool

Ověření komunikace

Nejdříve jsem ověřil, že je ESP32-C3 dostupné v bootloaderu.

Na macOS byl sériový port:

/dev/cu.usbserial-0001

Příkaz:

esptool --chip esp32c3 --port /dev/cu.usbserial-0001 --baud 115200 --before no-reset --after no-reset read-mac

Pokud je vše správně zapojené, výstup obsahuje informace o čipu a MAC adresu, například:

Connected to ESP32-C3
Chip type: ESP32-C3
MAC: xx:xx:xx:xx:xx:xx

Flash firmware

Firmware soubor:

T-Keyboard_Keyboard_ESP32C3_250620.bin

Flashovací příkaz na macOS:

esptool --chip esp32c3 --port /dev/cu.usbserial-0001 --baud 115200 --before no-reset --after no-reset write-flash -z --flash-mode dio --flash-freq 80m 0x0 T-Keyboard_Keyboard_ESP32C3_250620.bin

Během flashování musí být BOOT stále propojený s GND.

Po dokončení:

  1. odpojit propojení BOOTGND
  2. resetovat nebo odpojit a znovu připojit napájení
  3. klávesnice by měla naběhnout s novým firmwarem

Poznámky pro Linux

Na Linuxu bude port typicky:

/dev/ttyUSB0

nebo:

/dev/ttyACM0

Příklad příkazu:

esptool --chip esp32c3 --port /dev/ttyUSB0 --baud 115200 --before no-reset --after no-reset read-mac

Pokud není přístup k portu povolený, je potřeba přidat uživatele do skupiny dialout:

sudo usermod -aG dialout $USER

Poté je nutné se odhlásit a znovu přihlásit.

Poznámky pro Windows

Na Windows bude port ve tvaru například:

COM3

Příklad ověření:

esptool --chip esp32c3 --port COM3 --baud 115200 --before no-reset --after no-reset read-mac

Příklad flashování:

esptool --chip esp32c3 --port COM3 --baud 115200 --before no-reset --after no-reset write-flash -z --flash-mode dio --flash-freq 80m 0x0 T-Keyboard_Keyboard_ESP32C3_250620.bin

Pokud se port nezobrazuje, může být potřeba nainstalovat ovladač pro použitý USB-UART převodník, například CH340 nebo CP210x.

Řešení problémů

Failed to connect: No serial data received

ESP32-C3 neodpovídá. Zkontrolovat:

Invalid head of packet

Zařízení posílá data, ale pravděpodobně není v bootloader režimu.

Pomohlo použít ruční boot režim a volbu:

--before no-reset --after no-reset

Postup:

  1. propojit BOOT s GND
  2. resetovat zařízení nebo znovu připojit napájení
  3. spustit read-mac
  4. pokud projde, spustit flashování

Flashování je nestabilní

Doporučení:

Ověřený postup

V tomto případě byl nejdříve ověřen čip příkazem:

esptool --chip esp32c3 --port /dev/cu.usbserial-0001 --baud 115200 --before no-reset --after no-reset read-mac

Poté byl firmware úspěšně nahrán příkazem:

esptool --chip esp32c3 --port /dev/cu.usbserial-0001 --baud 115200 --before no-reset --after no-reset write-flash -z --flash-mode dio --flash-freq 80m 0x0 T-Keyboard_Keyboard_ESP32C3_250620.bin