====== 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: [[https://github.com/Xinyuan-LilyGO/T-Deck/blob/master/firmware/T-Keyboard_Keyboard_ESP32C3_250620.bin|T-Keyboard_Keyboard_ESP32C3_250620.bin]]
===== Potřebné vybavení =====
* USB-UART programátor s 3.3V logikou
* použitý převodník: [[https://www.laskakit.cz/prevodnik-6pin-usb-ttl-uart--cp2102--dtr-pin/|LaskaKit převodník 6pin USB-TTL UART CP2102 s DTR pinem]]
* propojovací kabely
* nainstalovaný ''esptool''
===== Zapojení =====
V návodu byl použit tento USB-UART převodník:
[[https://www.laskakit.cz/prevodnik-6pin-usb-ttl-uart--cp2102--dtr-pin/|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í:
{{::img_4982.jpg?400|{{ :todo:t-keyboard-zapojeni-1.jpg?direct |Zapojení T-Deck}}}}
{{:c3_boot.jpg?400|{{ :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í:
- odpojit propojení ''BOOT'' → ''GND''
- resetovat nebo odpojit a znovu připojit napájení
- 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:
* zda je správně propojeno ''TXD → RX'' a ''RXD → TX''
* zda je propojené ''GND''
* zda je zařízení napájené
* zda je ''BOOT'' propojený s ''GND'' před resetem nebo připojením napájení
* zda se používá správný sériový port
==== 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:
- propojit ''BOOT'' s ''GND''
- resetovat zařízení nebo znovu připojit napájení
- spustit ''read-mac''
- pokud projde, spustit flashování
==== Flashování je nestabilní ====
Doporučení:
* použít baudrate ''115200''
* zkrátit propojovací kabely
* nepoužívat 5V logiku
* pokud USB-UART nedokáže dodat dostatečný proud z 3V3 pinu, napájet zařízení jinak a mezi zařízeními propojit pouze ''GND'', ''TX'' a ''RX''
===== 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