firmware to identify xx32F103xx micro-controllers
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
King Kévin 6a0568fd64 fix typo 2 years ago
libopencm3@90753950bb add libopencm3 2 years ago
.gitmodules add libopencm3 2 years ago
LICENSE.txt add license for source code 2 years ago
Makefile add Makefile to compile firmware 2 years ago fix typo 2 years ago
identifier.bin add binary firmwar for ease of use 2 years ago
identifier.c add identifier source code 2 years ago
identifier.elf add binary firmwar for ease of use 2 years ago
identifier.hex add binary firmwar for ease of use 2 years ago

the f103id is a firmware for the STM32F103C micro-controller and alternatives (e.g. clones). it will identify which silicon die it is actually running on.


the firmware to be flashed is identifier.bin. the easiest way to program the firmware is using the embedded UART bootloader. for that short the BOOT0 pin to VCC while powering up the device. connect to the USART1 serial port. then you can use stm32flash or simply run make flash.


connect to the USART1 serial port (USART1_TX is PA9 and USART1_RX is PA10) with the following setting: 115200 8N1. type 'h' to list all available commands. type 'a' to run all identification techniques.


the firmware can perform following checks:

  • read unique ID
  • read MCU ID
  • read CPU ID
  • read JEP ID
  • read ROM table
  • check flash size
  • check SRAM size
  • check peripheral
  • check memory map
  • check MCU ID errata

based on the check it can figure out:

  • manufacturer
  • chip family
  • pin count
  • most likely micro-controller


it is able to identify following variants:

  • STM32F103Cx (includes STM32F101Cx)
  • CKS32F103Cx
  • GD32F103Cx
  • HK32F103Cx
  • APM32F103Cx

it can also identify other variants, but this has not been tested.

I have not been able to operate the BLM32F103C8.

if you have tested it on other devices, please send the results (e.g. after running 'show all information') to and I will integrated it in the list (and firmware).


to compile the firmware yourself:

  • install arm-none-eabi-gcc to compile the firmware.
  • get libopencm3 using git submodule update --init --recursive.
  • compile using make

to flash:

  • install stm32flash to flash using the UARt bootlaoder
  • flash using make flash

alternatively to flash:

  • install OpenOCD to flash using SWD (e.g. ST-LINK/V2 programmer)
  • flash using make flash_swd