{
  "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
    },
    "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\n  -b --baud <baudrate>     Override RS-232 baud rate\n  -c --programmer <pgm>    Specify programmer; -c ? and -c ?type list all\n  -P --port <port>         Connection; -P ?s or -P ?sa lists serial ones\n  -F --force               Override invalid signature or initial checks\n  -e --erase               Perform a chip erase at the beginning\n  -U --memory <mem>:r|w|v:<file>[:fmt]\n  -n --test-memory         Do not write to the device whilst processing -U\n  -V --noverify-memory     Do not automatically verify during -U\n  -v --verbose             Verbose output; -v -v for more\n"
      }
    ],
    "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"
        ]
      },
      {
        "id": "programmer",
        "label": "Programmer",
        "description": "Programmer id, for example arduino or usbasp.",
        "type": "string",
        "option": [
          "--programmer",
          "-c"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "port",
        "label": "Port",
        "description": "Serial device or other connection of the programmer.",
        "type": "string",
        "option": [
          "--port",
          "-P"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "baud",
        "label": "Baud rate",
        "type": "integer",
        "option": [
          "--baud",
          "-b"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "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"
        ]
      },
      {
        "id": "erase",
        "label": "Chip erase first",
        "type": "boolean",
        "option": [
          "--erase",
          "-e"
        ],
        "effect": "overwrite",
        "sources": [
          "help"
        ]
      },
      {
        "id": "force",
        "label": "Override signature check",
        "type": "boolean",
        "option": [
          "--force",
          "-F"
        ],
        "effect": "overwrite",
        "sources": [
          "help"
        ]
      },
      {
        "id": "test_memory",
        "label": "Dry run (do not write)",
        "type": "boolean",
        "option": [
          "--test-memory",
          "-n"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "noverify",
        "label": "Skip verification",
        "type": "boolean",
        "option": [
          "--noverify-memory",
          "-V"
        ],
        "sources": [
          "help"
        ]
      },
      {
        "id": "verbose",
        "label": "Verbose",
        "type": "count",
        "option": [
          "--verbose",
          "-v"
        ],
        "sources": [
          "help"
        ]
      }
    ],
    "task": [
      {
        "id": "flash",
        "label": "Flash firmware",
        "fields": [
          "part",
          "programmer",
          "port",
          "baud",
          "memory",
          "erase",
          "verbose"
        ],
        "required": [
          "part",
          "programmer",
          "memory"
        ]
      },
      {
        "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"
        ]
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "part",
          "programmer",
          "port",
          "memory",
          "baud"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "erase",
          "force",
          "test_memory",
          "noverify",
          "verbose"
        ]
      }
    ]
  }
}
