Firmware

IO Board Firmware Flashing

Flashing of the ATTiny micro controller present on the IO Board for bypass operations.

Updated June 30, 2026 firmware, pcb, programming

1. Introduction

Welcome to the YGN Effects Framework documentation! Every YGN IO board carries a small AVR microcontroller (the ATTiny 202) that handles relay switching, LED states and power-on behaviour. Before the board can do any of that, it needs its firmware. This guide walks you through loading it.

You won’t open an IDE or write a single line of code. One copy-and-paste avrdude command sets the chip’s fuses and flashes the firmware in about ten seconds. If you can open a terminal, you’re all set.


2. Required Tools

Below is a quick-glance checklist of everything you’ll need:

Item Purpose YGN Notes
Serial-UPDI interface Bridges your computer’s USB port to the ATTiny 202’s UPDI programming pin. We use the Adafruit UPDI Friend but any serial UPDI interface will work.
3 × 2 pogo-pin probe
(1.27 mm pitch)
Spring-loaded test fixture that presses onto the board’s ICSP pads. They come in a variety of shapes and forms, pick whatever is easy for you to handle and that comes with some kind of header attached.

Tip: If you already own a generic USB-to-TTL adapter, you can use it instead. You’ll find the wiring information here.


3. Setting-Up the Toolchain

Software

Only avrdude is required. It is available through most distribution package managers.

Platform Install hint Test it
Linux sudo apt install avrdude (Debian/Ubuntu)
sudo dnf install avrdude (Fedora)
sudo pacman -S avrdude (Arch)
avrdude -v should print version info.
macOS brew install avrdude Same avrdude -v sanity-check.
Windows Download the ZIP from the project’s GitHub Releases page → extract → add the folder to your PATH (so avrdude.exe runs from any prompt). Open Windows Terminal and run avrdude -v.

1.27 mm pogo-pin footprint

The ICSP pins are located right under the ATTiny. The pinout is as follows:

Pin # Function Notes
1 NC  
2 PA0 / UPDI One-wire data line
3 NC  
4 +5 V Target power from programmer
5 NC  
6 GND Target power from programmer

Tip: Pins 2, 4 & 6 are plated holes. Your pogo probe’s guide posts snap into them and keep everything square while you press.

Wiring to the UPDI Friend

The UPDI Friend should be wired this way:

UPDI Friend pin Probe pad
GND 6
UPDI (D) 2
5 V OUT 4 (optional)

Note: The UPDI Friend supplies power to the ATTiny through the 5 V OUT connection. Your target board does not need to be powered up or connected to anything else during flashing.


4. Flashing the Firmware

With the toolchain in place and the probe wired up, you’re ready to flash.

Locating the firmware

The firmware.hex file lives in the _output folder of the firmware directory for your pedal. For the Small IO Board it is at:

small/firmware/small-standard-firmware/_output/firmware.hex

Open a terminal and navigate to that _output folder. The flash command references the file as ./firmware.hex, so your working directory needs to be there.

Finding your serial port

The port name depends on your operating system. Plug in the UPDI Friend, then identify it:

Platform Typical port How to find it
Linux /dev/ttyUSB0 or /dev/ttyACM0 Run ls /dev/tty* before and after plugging in. The new entry is your port.
macOS /dev/tty.usbserial-XXXX Same trick: ls /dev/tty.* after plugging in.
Windows COM3 (or similar) Open Device Manager → Ports (COM & LPT) after plugging in.

Note: On Linux, your user account may need special permissions or a udev rule to access the serial port. Check your distribution’s documentation for the right approach.

Running the command

  1. Press the pogo-pin probe firmly onto the ICSP pads.
  1. Run the command below, replacing /dev/ttyUSB0 with your actual port:
avrdude -c serialupdi -p t202 -P /dev/ttyUSB0 -b 57600 \
  -U wdtcfg:w:0x00:m \
  -U bodcfg:w:0x00:m \
  -U osccfg:w:0x01:m \
  -U tcd0cfg:w:0x00:m \
  -U syscfg0:w:0xC4:m \
  -U syscfg1:w:0x06:m \
  -U append:w:0x00:m \
  -U bootend:w:0x00:m \
  -U flash:w:./firmware.hex:i

Note: On Linux, add -C /etc/avrdude.conf right after avrdude if the command reports a missing configuration file. On macOS and Windows this flag is not needed.

The command sets all required fuses and flashes the firmware in one pass. You will see avrdude reporting each write and verify operation as it goes. A successful run ends with:

avrdude done.  Thank you.

Troubleshooting

avrdude OS error: cannot open port /dev/ttyUSB0: Permission denied

Your user account doesn’t have access to the serial port. On Linux, this typically means you need special permissions or a udev rule. Check your distribution’s documentation for the right approach.

avrdude OS error: file ./firmware.hex is not readable: No such file or directory

The command can’t find the firmware file. Make sure your terminal is in the _output folder before running the command.

avrdude times out or reports “initialization failed”

Check that the probe is making firm, even contact across all six pads. Keep gentle, steady downward pressure throughout the process.


5. Testing the Flash

One quick check confirms everything went as planned.

  1. Set the DIP switch on the IO board to the ON position.
  2. Power the board.
  3. Listen for a single audible click from the relay as the board initialises.

The click confirms the firmware is running and reading the DIP switch correctly: the board is powering up in its active state as instructed.

Note: With the DIP switch in the OFF position, the board powers up in bypass mode and the relay will not click on start-up. Both behaviours are correct. The switch simply sets the power-on default for the finished pedal.

If you hear no click with the switch set to ON, go back and confirm the flash completed without errors, then check your solder joints on the relay footprint.

That’s it. Your IO board is programmed and ready to be installed in your build.

Found an Issue?

Help improve this documentation by reporting errors or suggesting improvements.