Skip to the content
2 layers69.2 × 20.8 mmFastusbasp v2, the printed circuit board in 3D

This is the fast avr programmer for AVR MCUs based on cheap stm32f103c8t6 board with usb-to-serial support.

Size
69.2 × 20.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
25
Nets
47
Pads
111
Tracks, vias
262, 36
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
15 Apr 2017
Updated
7 Sep 2025

Overview

Fastusbasp v2 is an open-source printed circuit board by amitesh-singh, from the amitesh-singh/FASTUSBasp repository on GitHub. It is a 2-layer board of 69.2 × 20.8 mm with 25 parts on 47 nets, routed with 262 tracks and 36 vias.

It is built around the LM1117-3.3. Its parts include 8 capacitors, 7 resistors, 3 connectors, 2 ICs and 2 diodes. It belongs with the interfaces and adapters and microcontroller boards boards and the STM32 boards of this library.

Main components

1

README

README.md

"Buy Me A Coffee"

FASTUSBasp programmer for AVR Microcontrollers

Join the chat at https://gitter.im/FASTUSBasp/Lobby

This is the fast ISP programmer for AVR MCUs based on cheap stm32f103c8t6 aka blue-pill board with usb-to-serial support.

Release

FastUSBASPv2 board

FastUSBASPv2 board

Perf board

perfboard

Correcting wrong pullup at USB D+

This blue pill board has wrong pullup resistor at usb D+ line. You might need to fix it before using blue pill as an AVR programmer. Refer to this guide: http://amitesh-singh.github.io/stm32/2017/10/09/correcting-usbpullup-resistor.html

how to upload firmware

blue pill board with correct pullup at USB D+ line

Download the binaries from https://github.com/amitesh-singh/FASTUSBasp/releases/tag/v1.0.0

If you have fixed the pullup at D+ line, use fastusbasp.bin The pre-compiled binary is at fastusbasp.bin.

shell
$ st-flash write fastusbasp.bin 0x08000000
blue pill board with wrong pullup at USB D+ line

In case, you did not fix the wrong pullup at D+ line, use fastusbasp-wrongpullup.bin binary instead

shell
$ st-flash write fastusbasp-wrongpullup.bin 0x08000000

How to use

ISP connections

It uses SPI2 to communicate to AVR.

Blue pillAVR
PB15MOSI
PB14MISO
PB13SCK
PA8RST
5v or 3.3v5v
GNDGND
Serial connections

Serial ports are PA10(RX) and PA9 (TX). This can be used to debug AVR Microcontrollers.

Blue pillAVR
PA10TX
PA9RX

All pins SPI2(PB15, PB14, PB13), Serial(PA10, PA9) and RST(PA8) used are 5V tolerant.

udev rule

Refer to udev/README.md

On plugging to PC

Linux

When you plug this device to PC, you should get following message ondmesg -wH

shell
[Jan20 13:31] usb 3-1.1: new full-speed USB device number 5 using xhci_hcd
[  +0.107774] usb 3-1.1: New USB device found, idVendor=16c0, idProduct=05dc
[  +0.000004] usb 3-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  +0.000002] usb 3-1.1: Product: fastusbasp
[  +0.000002] usb 3-1.1: Manufacturer: http://amitesh-singh.github.io
[  +0.000001] usb 3-1.1: SerialNumber: AARAV
[  +0.040797] cdc_acm 3-1.1:1.0: ttyACM0: USB ACM device
[  +0.000804] usbcore: registered new interface driver cdc_acm
[  +0.000000] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

/dev/ttyACM0 is the serial port.

Windows
  • Download Zadig (https://zadig.akeo.ie/)
  • Insert device to USB. Wait until windows can't install it.
  • Launch Zadig
  • Select in Zadig our device from ComboBox
  • Select driver Type libusbK
  • Press Install Driver
  • Wait until Zadig is done with installing driver and that results into Windows to detect the device.

Probe AVR

shell
$ avrdude -c usbasp-clone -p m16

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9403 (probably m16)

avrdude: safemode: Fuses OK (E:FF, H:D8, L:CF)

avrdude done.  Thank you.

Upload program to AVR

shell
$ avrdude -c usbasp-clone -p m16 -U flash:w:blink.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9403 (probably m16)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "blink.hex"
avrdude: input file blink.hex auto detected as Intel Hex
avrdude: writing flash (150 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 150 bytes of flash written
avrdude: verifying flash memory against blink.hex:
avrdude: load data flash data from input file blink.hex:
avrdude: input file blink.hex auto detected as Intel Hex
avrdude: input file blink.hex contains 150 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.01s

Read flash

shell
$ avrdude -c usbasp-clone -p m16 -U flash:r:flash.bin:r

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9403 (probably m16)
avrdude: reading flash memory:

Reading | ################################################## | 100% 0.33s

avrdude: writing output file "flash.bin"

avrdude: safemode: Fuses OK (E:FF, H:D8, L:CF)

avrdude done.  Thank you.

$ hexdump flash.bin
0000000 c029 0000 c02f 0000 c02d 0000 c02b 0000
0000010 c029 0000 c027 0000 c025 0000 c023 0000
0000020 c021 0000 c01f 0000 c01d 0000 c01b 0000
0000030 c019 0000 c017 0000 c015 0000 c013 0000
0000040 c011 0000 c00f 0000 c00d 0000 c00b 0000
0000050 c009 0000 2411 be1f e5cf e0d4 bfde bfcd

Flash Read/Write speed

Flash Write speed: 15 KBps Flash Read Speed: 52.5 KBps

Bit clock speed

FASTUSBasp starts out with a fast ISP clock frequency (default: 3 MHz), so the -B bitclock option might be required to achieve stable communication in case target MCU F_CPU is bit low < 12MHz

Supported bitclock speed
  • default (without -B): 3 MHz
  • 1.5 MHz
  • 750 KHz
  • 375 KHz
  • 187.5 KHz

how to compile from source and upload the firmware

To build fastusbasp firmware from source code, follow below guidelines.

compile

Refer my post on how to setup stm32 devlopment environment on Arch linux. http://amitesh-singh.github.io/stm32/2017/04/09/setting-stm32-dev-environment-arch-linux.html

Make sure you have compiled libopencm3 library.

shell
$ git clone --recurse-submodules https://github.com/amitesh-singh/FASTUSBasp
$ mkdir build
$ cd build
$ cmake ../
$ make
Upload the firmware
using STLINK
with st-flash

connect st-link programmer to blue-pill and upload the firmware

shell
$ make fastusbasp-upload
with openocd
shell
$ make fasusbasp-ocdupload
using serial port

Install stm32flash utility on linux. To program stm32f103 via USART, you need to set BOOT0 as 1 and leave BOOT1 as 0.

Connect any usb to uart converter device and connect PA9 to RXD and PA10 to TXD and connect GND.

shell
$ make fastusbasp-serialupload

Links

Parts

25
QtyValueFootprintReferences
4100nfCapacitors_SMD:C_0603C4, C5, C6, C9
21kResistors_SMD:R_0603R2, R7
220RResistors_SMD:R_0603R5, R6
220pFCapacitors_SMD:C_0603C7, C8
2LEDLEDs:LED_0603D1, D4
11.5kResistors_SMD:R_0603R12
1100nFCapacitors_SMD:C_0603C1
110kResistors_SMD:R_0603R1
110uFCapacitors_SMD:C_0805C3
116MHzCrystals:Crystal_SMD_HC49-SDY1
11MResistors_SMD:R_0603R11
1AVR-ISP-6Pin_Headers:Pin_Header_Straight_2x03_Pitch2.54mmISP
1CONN_01X04Pin_Headers:Pin_Header_Straight_1x04_Pitch2.54mmJ2
1LM1117-3.3TO_SOT_Packages_SMD:SOT-223-3_TabPin2U1
1PROGcustomfp:Pin_Header_SMD_pads_1x04_pitch2.54mmJ1
1STM32F103C8TxHousings_QFP:LQFP-48_7x7mm_Pitch0.5mmU2
1USB_OTGConnectors:USB_Micro-BJ3

The 24 most common of 25 parts.

Similar boards

  • 2 layers33.7 × 97.8 mmHAN ESP TSS721, the printed circuit board in 3D

    HAN ESP TSS721

    UtilitechAS/amsreader-firmware

    ESP8266 and ESP32 compatible firmware to read, interpret and publish data to MQTT from smart electrical meters, both DLMS and DSMR is supported

    29 parts470
  • 2 layers52.5 × 36.6 mmESP8266-WebRadio, the printed circuit board in 3D

    ESP8266-WebRadio

    karawin/Ka-Radio

    A wifi webradio with only low cost boards ESP8266 and VS1053 by Jp Cocatrix

    52 parts453
  • 2 layers95.2 × 57.2 mmDomesdayDuplicator, the printed circuit board in 3D

    DomesdayDuplicator

    Domesday86/DomesdayDuplicator

    High-speed LaserDisc RF sampler

    66 parts325GPL-3.0
  • 2 layers189.5 × 204.9 mmSmartSpin2k Panelized, the printed circuit board in 3D

    SmartSpin2k Panelized

    doudar/SmartSpin2k

    Transform your spin bike into a Smart Trainer!

    749 parts292GPL-2.0
  • 4 layers121.9 × 109.2 mmPlinkyblack hwmidi jacks, the printed circuit board in 3D

    Plinkyblack hwmidi jacks

    plinkysynth/plinky_public

    a public release of the plinky sw and hw

    300 parts227
  • 4 layers113.5 × 105.5 mmMultistepper, the printed circuit board in 3D

    Multistepper

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    243 parts208
  • 2 layers275 × 103 mmKeebee, the printed circuit board in 3D

    Keebee

    blakesmith/embedded

    Blake's embedded projects

    159 parts167
  • 2 layers43 × 34.3 mmEspway, the printed circuit board in 3D

    Espway

    espway/espway

    Segway-like robot implemented on ESP8266

    37 parts122LGPL-3.0

Questions

How big is the Fastusbasp v2 PCB?

It measures 69.2 × 20.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Fastusbasp v2 use?

25 parts, built around the LM1117-3.3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Fastusbasp v2 KiCad files?

From the amitesh-singh/FASTUSBasp repository on GitHub, at the commit this page was made from: the board is pcb/fastusbasp_v2.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Fastusbasp v2 design in my own project?

Its repository states no licence, so its author keeps all rights: ask amitesh-singh before reusing the design.