id = "avrdude"
name = "AVRDUDE"
homepage = "https://github.com/avrdudes/avrdude"
description = "AVRDUDE is a utility for programming AVR microcontrollers."
executables = ["avrdude"]
platforms = ["macos", "linux"]
[dotfiles]
paths = [
"[configHome]/avrdude/avrdude.rc",
"~/.avrduderc",
]
exclude = []
secret = []
side_effect = false
[commands]
format = 1
label = "Program an AVR"
description = "Read, write or verify a memory of an AVR device through a programmer. Several -U operations, programmer extended parameters and developer wildcards are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.source]]
id = "help"
kind = "help"
url = "https://github.com/avrdudes/avrdude/blob/main/src/main.c"
revision = "main 2026-10-27"
evidence = """
-p --part <part> Specify AVR device; -p ? lists all known parts
-b --baud <baudrate> Override RS-232 baud rate
-c --programmer <pgm> Specify programmer; -c ? and -c ?type list all
-P --port <port> Connection; -P ?s or -P ?sa lists serial ones
-F --force Override invalid signature or initial checks
-e --erase Perform a chip erase at the beginning
-U --memory <mem>:r|w|v:<file>[:fmt]
-n --test-memory Do not write to the device whilst processing -U
-V --noverify-memory Do not automatically verify during -U
-v --verbose Verbose output; -v -v for more
"""
[[commands.field]]
id = "part"
label = "AVR part"
description = "Device name, for example atmega328p. Use -p ? to list known parts."
type = "string"
option = ["--part", "-p"]
sources = ["help"]
[[commands.field]]
id = "programmer"
label = "Programmer"
description = "Programmer id, for example arduino or usbasp."
type = "string"
option = ["--programmer", "-c"]
sources = ["help"]
[[commands.field]]
id = "port"
label = "Port"
description = "Serial device or other connection of the programmer."
type = "string"
option = ["--port", "-P"]
sources = ["help"]
[[commands.field]]
id = "baud"
label = "Baud rate"
type = "integer"
option = ["--baud", "-b"]
sources = ["help"]
[[commands.field]]
id = "memory"
label = "Memory operation"
description = "Format mem:r|w|v:file[:fmt], for example flash:w:firmware.hex:i."
type = "string"
option = ["--memory", "-U"]
multiple = true
effect = "overwrite"
sources = ["help"]
[[commands.field]]
id = "erase"
label = "Chip erase first"
type = "boolean"
option = ["--erase", "-e"]
effect = "overwrite"
sources = ["help"]
[[commands.field]]
id = "force"
label = "Override signature check"
type = "boolean"
option = ["--force", "-F"]
effect = "overwrite"
sources = ["help"]
[[commands.field]]
id = "test_memory"
label = "Dry run (do not write)"
type = "boolean"
option = ["--test-memory", "-n"]
sources = ["help"]
[[commands.field]]
id = "noverify"
label = "Skip verification"
type = "boolean"
option = ["--noverify-memory", "-V"]
sources = ["help"]
[[commands.field]]
id = "verbose"
label = "Verbose"
type = "count"
option = ["--verbose", "-v"]
sources = ["help"]
[[commands.task]]
id = "flash"
label = "Flash firmware"
fields = ["part", "programmer", "port", "baud", "memory", "erase", "verbose"]
required = ["part", "programmer", "memory"]
[[commands.task]]
id = "dry-run"
label = "Test without writing"
set = { test_memory = [true] }
lock = ["test_memory"]
fields = ["part", "programmer", "port", "memory", "test_memory", "verbose"]
required = ["part", "programmer", "memory"]
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["part", "programmer", "port", "memory", "baud"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["erase", "force", "test_memory", "noverify", "verbose"]