How to Recover or Reimage an Arduino UNO Q

How to Recover or Reimage an Arduino UNO Q cover image

This is the "the board is a brick" article. App Lab does not list it. Linux does not boot. You already tried a data USB-C cable and a second USB jack.

Reimaging here means writing a full Linux image with Arduino Flasher CLI while the UNO Q is in Emergency Download Mode (EDL). EDL is a Qualcomm USB recovery mode so a PC can rewrite storage even if Debian is dead.

Part 2 is the hardware. UNO Q only. VENTUNO Q has a separate Ubuntu flash document. Wrong procedure, wrong board.

If App Lab does see the board, use the reinstall-Linux article (App Lab flasher) instead. EDL is the heavier recovery path.

Print Arduino's Flash a Linux Image page or save a PDF. Recovery often happens when the network is ugly. You want the EDL sequence available without loading docs.arduino.cc from the same dead board's hotspot.

Rule out the boring failures

Work this list before EDL. Jumping to flash latest wipes /home/arduino.

  1. Data-capable USB-C. Charge-only cables fake a live board.
  2. Power. If you use a dongle, it must support power delivery. Arduino documents Apple's USB-C dongle as incompatible.
  3. Wait up to a minute after plug-in.
  4. Linux host PC: udev rules for normal mode (2341:0078) and EDL (05c6:9008). Arduino's UNO Q user manual has them. Without them, flash fails in a way that looks like a dead board.
  5. Another computer, if you have one. Rules out a host driver issue. A second cable in the same box is worth more than a third reinstall of App Lab. Label the known-good cable so the next recovery is shorter.

If two people recover boards at once, do not mix Flasher CLI windows. Flash one UNO Q at a time until you know how the tool lists devices.

If the board shows up in App Lab after that, you are not in this article anymore.

Why a "dead" board is rarely dead

Before the steps, one idea makes the whole recovery less mysterious. The Qualcomm chip on the UNO Q has a tiny program baked into the silicon itself, called the boot ROM (ROM means read-only memory, so it cannot be erased). When power arrives, that program starts first and decides what to run next. Normally it hands off to Linux. In Emergency Download Mode it instead waits for a PC to send it a new program over USB.

Because the boot ROM cannot be corrupted by a failed update or a bad package, EDL works even when the storage is completely blank. That is also why this is the "last resort" path. It is nearly always available, and it overwrites everything. Think of it as the board's emergency exit: it is always there, but you do not use it to walk to the kitchen.

Check that the PC can see the board

The most common recovery failure is the computer never noticing the board in EDL, so confirm that before you run the flasher. On Windows, PowerShell can list matching USB devices:

# Looks for any connected device whose hardware ID mentions Qualcomm's vendor
# code (05C6). If nothing prints while the board is in EDL, fix the cable or
# the entry sequence before touching the flasher.
Get-PnpDevice -PresentOnly | Where-Object { $_.InstanceId -match 'VID_05C6' }

On a Linux PC the equivalent is a one-liner:

# lsusb lists USB devices. 05c6:9008 is the EDL identity, and 2341:0078 is the
# normal Arduino identity. Seeing the first one means the board is ready.
lsusb | grep -i -E "05c6|2341"

If the line appears, you are in business. If it does not, no amount of re-running the flasher will help, because the tool is looking for a device the computer cannot see.

Emergency Download Mode

Arduino's Flash a Linux Image tutorial is the source for the button sequence to enter EDL. I am not copying a combo that can change. Follow that page the day you recover.

When EDL works, the USB identity changes. Windows Device Manager should show a new device (Qualcomm download, vendor 05c6, product 9008, not the usual Arduino COM). If Device Manager does not change, you are not in EDL, or the cable has no data wires.

A UNO Q successfully booted into its Debian Linux desktop after a reimage, Xfce's About dialog confirming the OS, kernel, and hardware.

Flasher CLI

  1. Download Arduino Flasher CLI from Arduino's software page. macOS: match Apple Silicon vs Intel.
  2. Board in EDL.
  3. Command Arduino documents:
# Windows: download the newest official image and write it (erases the board)
arduino-flasher-cli.exe flash latest

# macOS / Linux, from the folder that contains the binary ("./" = this folder)
./arduino-flasher-cli flash latest

flash latest downloads and writes the current official UNO Q image.

Keep /home/arduino only if you trust those files:

# Same, but leave /home/arduino (the userdata partition) untouched
arduino-flasher-cli.exe flash latest --preserve-user

If home is where the corruption is, omit the flag. Full wipe.

Do not unplug until the tool exits success. Then reboot, wait, open App Lab, finish first-run (name, password). Default password on an unset board is documented as arduino. Change it. Run official Blink.

Write down the CLI version and the image it fetched if the tool prints them. When you ask for help on a forum, "it failed" without that line rarely gets an answer. Screenshot Device Manager in EDL vs normal too.

Keep a log of the flash

When a flash fails halfway, the error scrolls away and you are left guessing. Saving the output costs nothing and gives you something concrete to read, search, or paste into a forum post. A pipe (the | character) hands one command's output to another command, and tee is a command that shows output on screen while also writing it to a file.

# 2>&1 folds error messages in with normal output so both land in the log.
# tee shows everything live AND saves it to flash-log.txt for later.
./arduino-flasher-cli flash latest 2>&1 | tee flash-log.txt
# Windows version: Tee-Object does the same job as tee.
.\arduino-flasher-cli.exe flash latest 2>&1 | Tee-Object flash-log.txt

Read the log from the bottom up. The last few lines say what the tool was doing when it stopped, and that is almost always more useful than the first error near the top.

If the CLI cannot see EDL

  • Not in EDL (Device Manager unchanged).
  • Wrong CLI build (macOS architecture).
  • Linux udev missing for 9008.
  • Another tool holding USB.

Fix those. Do not reinstall App Lab on the PC as step one. App Lab is not the recovery tool when Linux is dead. The CLI is.

After recovery

Blink example. Then copy projects back from the PC. apt packages you had added are gone on a full image. Reinstall what you still want.

If Blink fails but Linux desktop works, you have an MCU-side problem: Run the App from App Lab, or IDE 2 for a pin test, not another full disk flash.

Keep the Flasher CLI zip on the PC. Recovery is a poor time to discover the school filter blocks Arduino's download page.

Make the next recovery boring

Almost everyone who recovers a UNO Q learns the same lesson, which is that anything stored only on the board is a hostage. The fix is a habit, and it takes minutes. Keep your App Lab projects in a Git repository on the PC (Git is a tool that records every version of a folder of files, so you can always get yesterday's copy back) and push it somewhere other than the board.

# Run inside the folder that holds your App. git init starts tracking it,
# and the commit saves a first snapshot you can always return to.
git init
git add .
git commit -m "Working version before experiments"

After that, a full reimage costs you a few minutes of reinstalling packages, not an afternoon of rebuilding projects from memory.

Troubleshooting

Symptom Likely cause Fix
Device Manager unchanged in EDL Not in EDL, or charge-only cable Arduino's button sequence. Data cable
CLI errors immediately udev, wrong macOS binary Manual USB IDs. Match architecture
Flash OK, no first-run Need to wait / power cycle Unplug, wait, App Lab. Set password

Wrap-up

Recover a silent UNO Q with cable and udev first, then EDL, then arduino-flasher-cli flash latest. That writes Linux, not a sketch. Preserve home only when you mean to. VENTUNO Q is a different document. Official EDL clicks: Arduino's Flash a Linux Image tutorial.

Hack The World and Make Awesome.

Sub-Category

Add new comment

Restricted HTML

  • You can align images (data-align="center"), but also videos, blockquotes, and so on.
  • You can caption images (data-caption="Text"), but also videos, blockquotes, and so on.