+++ title = "Debug Builds and the Debug Console" description = "A firmware you can drive from your desk: its console over Wi-Fi, its screen as a PNG, its SD card, its crash dumps, and a way back when an update goes wrong." template = "guide-index.html" page_template = "guide-page.html" sort_by = "weight" weight = 1 [extra] eyebrow = "Developer docs" +++ A **Debug Build** is the same firmware plus a **Debug Console**: the serial console, over Wi-Fi, behind a token. It is the most useful thing in the project. With it you can: - **see everything the device prints**, boot messages included, without a cable; - **run every serial command** from your desk; - **press keys** and **take screenshots**, so a UI change can be tested and looked at remotely; - **copy files** to and from the SD card; - **read crash reports and fetch core dumps**, decoded against the exact build that crashed; - **update the firmware** over the same Wi-Fi, and know that a bad update rolls back to a build that still has the console. Start with [Debug Builds](/dev/debug/debug-builds/) to put one on a device, then [the Debug Console](/dev/debug/console/). The rest are what you can do with it.