FAQ
This page is problem-first: it lists the symptom, then gives the shortest path to diagnose and fix it. Both CLI snippets and GUI actions are included.
Connection / portsโ
Device / serial port not in the dropdownโ
Symptom: the port selector is empty, or tyutool list-ports prints nothing.
- Unplug/replug, swap cable, swap port.
- Install the driver (CH340/CP2102/FT232).
- Re-check with the CLI:
tyutool list-ports
tyutool usb-port-survey # raw USB metadata for cross-system debugging
- On macOS see macOS serial permission.
- On Linux, confirm you are in the
dialout/ttygroup and log out and back in.
Click refresh or reopen the app.
macOS serial permissionโ
Symptom: the port is visible but you get a permission error.
sudo dseditgroup -o edit -a $USER -t user dialout
Then log out and back in. On newer macOS, allow it under Privacy & Security โ Accessories. See the project README Troubleshooting.
Port busyโ
Symptom: Permission denied / Device or resource busy.
Close other programs (Serial Debug, Arduino IDE, minicom, picocom); avoid running the GUI and CLI at the same time; you can turn on auto-release.
Flashingโ
Flash fails / handshake failsโ
Symptom: Handshake failed / Failed to sync.
Causes: wrong chip model (-d bk7231n / -d esp32 / -d t5ai); wrong baud (drop to 115200 first); device not in download mode (tyutool reset); wiring / power.
First do a minimal repro: tyutool read -d <chip> -p <port> -l 0x1000.
Erase reports "unaligned"โ
Symptom: unaligned / address not aligned / sector boundary.
Erase requires 4 KiB alignment:
# Correct: both start and length aligned to 4 KiB
tyutool erase -d bk7231n -s 0x0000 -l 0x200000
tyutool erase -d bk7231n -s 0x8000 -l 0x4000
# Wrong: 0x9000 is not a multiple of 4 KiB
tyutool erase -d bk7231n -s 0x9000 -l 0x1000 # โ reports unaligned
Use the GUI's align action, or round down to a multiple of 0x1000.
Progress stallsโ
Symptom: a stage sits at 0% for a long time, or retries repeatedly.
Drop the baud (921600 โ 460800 โ 115200); swap cable/power; turn on debug logs or CLI --verbose to debug/trace (location at CLI ยท global options); cancel gracefully with Ctrl+C.
Authorizationโ
Authorization failsโ
Symptom: authorize write failed / UUID/AuthKey invalid.
Credentials are one-device-once (used ones are spent); first do an auth-read tyutool authorize -p <port>; --uuid / --authkey must be passed together; specify -d for timing.
Credentials come from the Tuya developer platform and are bound to a chip/product.
Credential display issuesโ
Symptom: you can't see the full value, or copying yields ****.
The GUI masks by default โ click Show or the copy button. With the CLI, auth-read:
tyutool authorize -p <port>
tyutool authorize -p <port> -d esp32 # read with chip-specific timing
Clear the clipboard promptly after copying.
Platformโ
Linux blank window (WebKit compositing failure)โ
export WEBKIT_DISABLE_COMPOSITING_MODE=1
Then launch the AppImage; you can add it to ~/.bashrc. See the project README.
Windows missing WebView2โ
Install the Edge WebView2 Runtime Evergreen: download page โ Evergreen Standalone Installer โ run and restart.
For enterprise/offline, the Fixed Version offline package works too.
Logs & feedbackโ
How to report a bug (with logs)โ
- Export / open logs. GUI: Settings โ Diagnostics โ View logs โ "Export logs and report a problem" = zip + pre-filled issue. CLI: read the
log:line in the banner;--verboseprints to stderr. - Use the issue template. Issues โ New issue, pick Bug report.
- Fill in the key fields: Version / OS / Chip / Platform / baud / Steps / Expected vs actual.
- Attach the session log. Drag the zip into the issue, or for the CLI paste
tyutool-<timestamp>.log.
Logs may contain sensitive info (UUID/AuthKey) โ mask it first.