AVR Builder & Flasher
Compile and flash AVR microcontroller projects straight from VS Code using
avr-gcc and avrdude — no Makefile required. Works with USBasp and any
other avrdude-supported programmer.

📖 Read the full user guide — installation, configuration reference, troubleshooting, and FAQ.
🔗 Built by Youssef Abdelhakem · More projects on GitHub
Prerequisites
Install these and make sure they're on your PATH (or point to them
explicitly in settings — see below):
- avr-gcc / avr-objcopy / avr-size (AVR-GCC toolchain)
- avrdude
- USBasp driver (Windows: libusb via Zadig; Linux: udev rule for the
16c0:05dc device; macOS: usually works out of the box with avrdude
from Homebrew)
Quick checks:
avr-gcc --version
avrdude -v
Project layout
The extension expects your workspace to look like this (folders are
configurable):
my-project/
src/ <- all .c/.cpp files here (searched recursively)
main.c
build/ <- created automatically: .o, .elf, .hex
Commands
Open the Command Palette (Ctrl+Shift+P / Cmd+Shift+P) or use the status
bar buttons in the bottom right:
| Command |
What it does |
AVR: Build |
Compiles all sources, links, produces .hex |
AVR: Flash |
Builds, then flashes the .hex via avrdude |
AVR: Build and Flash |
Same as Flash (build always runs first) |
AVR: Clean |
Deletes the output directory |
Build/flash output streams live into the "AVR Builder" output channel.
Settings
Configure per-project in .vscode/settings.json (Workspace settings), or
set defaults in your User settings. All are under the avrBuilder.* prefix.
{
"avrBuilder.mcu": "atmega328p",
"avrBuilder.fcpu": 16000000,
"avrBuilder.programmer": "usbasp",
"avrBuilder.port": "usb",
"avrBuilder.baudRate": 0,
"avrBuilder.sourceDir": "src",
"avrBuilder.outputDir": "build",
"avrBuilder.projectName": "",
"avrBuilder.optimizationLevel": "-Os",
"avrBuilder.extraCFlags": [],
"avrBuilder.extraAvrdudeFlags": [],
"avrBuilder.avrdudeConfigPath": "",
"avrBuilder.avrGccPath": "avr-gcc",
"avrBuilder.avrObjcopyPath": "avr-objcopy",
"avrBuilder.avrSizePath": "avr-size",
"avrBuilder.avrdudePath": "avrdude",
"avrBuilder.showSizeAfterBuild": true
}
Notes:
port defaults to "usb", correct for USBasp (it's not a serial device).
For serial programmers (Arduino-as-ISP, stk500, etc.) set it to your
actual port, e.g. "COM5" or "/dev/ttyUSB0", and set baudRate
(e.g. 19200 or 115200).
projectName controls the output .elf/.hex base name; leave blank to
use the workspace folder's name.
- If a tool isn't on your
PATH, set its full path, e.g.
"avrBuilder.avrGccPath": "C:\\avr-gcc\\bin\\avr-gcc.exe".
Installing the extension
You'll have received an avr-builder-1.0.1.vsix file. Install it with
either method:
VS Code UI:
Extensions view → ... menu (top right) → "Install from VSIX..." → select
the file.
Command line:
code --install-extension avr-builder-1.0.1.vsix
Building from source (optional)
npm install
npm run compile
npx vsce package
This produces a fresh .vsix in the project root.
License
MIT