firmware to identify xx32F103xx micro-controllers
Go to file
King Kévin 6a0568fd64 fix typo 2021-02-25 17:21:00 +01:00
libopencm3@90753950bb add libopencm3 2021-02-25 16:50:32 +01:00
.gitmodules add libopencm3 2021-02-25 16:50:32 +01:00
LICENSE.txt add license for source code 2021-02-25 16:52:17 +01:00
Makefile add Makefile to compile firmware 2021-02-25 16:51:54 +01:00 fix typo 2021-02-25 17:21:00 +01:00
identifier.bin add binary firmwar for ease of use 2021-02-25 16:53:36 +01:00
identifier.c add identifier source code 2021-02-25 16:51:18 +01:00
identifier.elf add binary firmwar for ease of use 2021-02-25 16:53:36 +01:00
identifier.hex add binary firmwar for ease of use 2021-02-25 16:53:36 +01:00

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