143a5ec4eSXin LI 243a5ec4eSXin LI#------------------------------------------------------------------------------ 3*ae316d1dSXin LI# $File: uf2,v 1.6 2024/09/04 19:08:08 christos Exp $ 443a5ec4eSXin LI# uf2: file(1) magic for UF2 firmware image files 543a5ec4eSXin LI# 643a5ec4eSXin LI# https://github.com/microsoft/uf2 743a5ec4eSXin LI# 843a5ec4eSXin LI# Created by Blake Ramsdell <blaker@gmail.com> 943a5ec4eSXin LI 1043a5ec4eSXin LI0 string UF2\n UF2 firmware image 1143a5ec4eSXin LI!:ext uf2 1243a5ec4eSXin LI# This is for checking the other magic numbers, do we want to do that? 1343a5ec4eSXin LI#>4 lelong 0x9E5D5157 howdy 1443a5ec4eSXin LI#>>508 lelong 0x0AB16F30 doody 1543a5ec4eSXin LI>8 lelong &0x0001 \b, not main flash 1643a5ec4eSXin LI>8 lelong &0x1000 \b, file container 1743a5ec4eSXin LI>8 lelong &0x2000 \b, family 1843a5ec4eSXin LI 1943a5ec4eSXin LI# To update the UF2 family data, use this fine command 2043a5ec4eSXin LI# 2143a5ec4eSXin LI# families=`curl \ 2243a5ec4eSXin LI# https://raw.githubusercontent.com/microsoft/uf2/master/utils/uf2families.json \ 2343a5ec4eSXin LI# | jq -r '.[] | ">>28\tlelong\t\(.id)\t\(.description)"' | sort -n -k 3` && \ 2443a5ec4eSXin LI# perl -0777 -i -pe \ 2543a5ec4eSXin LI# "s/(### BEGIN UF2 FAMILIES\\n).*(\\n### END UF2 FAMILIES)/\$1$families\$2/s" \ 2643a5ec4eSXin LI# uf2 2743a5ec4eSXin LI 2843a5ec4eSXin LI### BEGIN UF2 FAMILIES 2943a5ec4eSXin LI>>28 lelong 0x00ff6919 ST STM32L4xx 3043a5ec4eSXin LI>>28 lelong 0x04240bdf ST STM32L5xx 31*ae316d1dSXin LI>>28 lelong 0x06d1097b ST STM32F411xC 32*ae316d1dSXin LI>>28 lelong 0x11de784a M0SENSE BL702 3343a5ec4eSXin LI>>28 lelong 0x16573617 Microchip (Atmel) ATmega32 3443a5ec4eSXin LI>>28 lelong 0x1851780a Microchip (Atmel) SAML21 3543a5ec4eSXin LI>>28 lelong 0x1b57745f Nordic NRF52 3643a5ec4eSXin LI>>28 lelong 0x1c5f21b0 ESP32 3743a5ec4eSXin LI>>28 lelong 0x1e1f432d ST STM32L1xx 3843a5ec4eSXin LI>>28 lelong 0x202e3a91 ST STM32L0xx 3943a5ec4eSXin LI>>28 lelong 0x21460ff0 ST STM32WLxx 40*ae316d1dSXin LI>>28 lelong 0x22e0d6fc Realtek AmebaZ RTL8710B 4143a5ec4eSXin LI>>28 lelong 0x2abc77ec NXP LPC55xx 42*ae316d1dSXin LI>>28 lelong 0x2b88d29c ESP32-C2 43*ae316d1dSXin LI>>28 lelong 0x2dc309c5 ST STM32F411xE 4443a5ec4eSXin LI>>28 lelong 0x300f5633 ST STM32G0xx 4543a5ec4eSXin LI>>28 lelong 0x31d228c6 GD32F350 46*ae316d1dSXin LI>>28 lelong 0x332726f6 ESP32-H2 47*ae316d1dSXin LI>>28 lelong 0x3379CFE2 Realtek AmebaD RTL8720D 48*ae316d1dSXin LI>>28 lelong 0x3d308e94 ESP32-P4 49*ae316d1dSXin LI>>28 lelong 0x4b684d71 Sipeed MaixPlay-U4 (BL618) 5043a5ec4eSXin LI>>28 lelong 0x4c71240a ST STM32G4xx 51*ae316d1dSXin LI>>28 lelong 0x4f6ace52 LISTENAI CSK300x/400x 5243a5ec4eSXin LI>>28 lelong 0x4fb2d5bd NXP i.MX RT10XX 53*ae316d1dSXin LI>>28 lelong 0x51e903a8 Xradiotech 809 5443a5ec4eSXin LI>>28 lelong 0x53b80f00 ST STM32F7xx 55*ae316d1dSXin LI>>28 lelong 0x540ddf62 ESP32-C6 5643a5ec4eSXin LI>>28 lelong 0x55114460 Microchip (Atmel) SAMD51 57*ae316d1dSXin LI>>28 lelong 0x57755a57 ST STM32F4xx 5843a5ec4eSXin LI>>28 lelong 0x5a18069b Cypress FX2 5943a5ec4eSXin LI>>28 lelong 0x5d1a0a2e ST STM32F2xx 6043a5ec4eSXin LI>>28 lelong 0x5ee21072 ST STM32F103 61*ae316d1dSXin LI>>28 lelong 0x621e937a Nordic NRF52833 6243a5ec4eSXin LI>>28 lelong 0x647824b6 ST STM32F0xx 63*ae316d1dSXin LI>>28 lelong 0x675a40b0 Beken 7231U/7231T 6443a5ec4eSXin LI>>28 lelong 0x68ed2b88 Microchip (Atmel) SAMD21 65*ae316d1dSXin LI>>28 lelong 0x699b62ec WCH CH32V2xx and CH32V3xx 66*ae316d1dSXin LI>>28 lelong 0x6a82cc42 Beken 7251/7252 6743a5ec4eSXin LI>>28 lelong 0x6b846188 ST STM32F3xx 6843a5ec4eSXin LI>>28 lelong 0x6d0922fa ST STM32F407 6943a5ec4eSXin LI>>28 lelong 0x6db66082 ST STM32H7xx 70*ae316d1dSXin LI>>28 lelong 0x6e7348a8 LISTENAI CSK60xx 71*ae316d1dSXin LI>>28 lelong 0x6f752678 Nordic NRF52832xxAB 7243a5ec4eSXin LI>>28 lelong 0x70d16653 ST STM32WBxx 73*ae316d1dSXin LI>>28 lelong 0x72721d4e Nordic NRF52832xxAA 74*ae316d1dSXin LI>>28 lelong 0x77d850c4 ESP32-C61 75*ae316d1dSXin LI>>28 lelong 0x7b3ef230 Beken 7231N 76*ae316d1dSXin LI>>28 lelong 0x7be8976d Renesas RA4M1 7743a5ec4eSXin LI>>28 lelong 0x7eab61ed ESP8266 7843a5ec4eSXin LI>>28 lelong 0x7f83e793 NXP KL32L2x 7943a5ec4eSXin LI>>28 lelong 0x8fb060fe ST STM32F407VG 80*ae316d1dSXin LI>>28 lelong 0x9517422f Renesas RZ/A1LU (R7S7210xx) 81*ae316d1dSXin LI>>28 lelong 0x9af03e33 GigaDevice GD32VF103 82*ae316d1dSXin LI>>28 lelong 0x9fffd543 Realtek Ameba1 RTL8710A 83*ae316d1dSXin LI>>28 lelong 0xa0c97b8e ArteryTek AT32F415 8443a5ec4eSXin LI>>28 lelong 0xada52840 Nordic NRF52840 8543a5ec4eSXin LI>>28 lelong 0xbfdd4eee ESP32-S2 8643a5ec4eSXin LI>>28 lelong 0xc47e5767 ESP32-S3 8743a5ec4eSXin LI>>28 lelong 0xd42ba06c ESP32-C3 88*ae316d1dSXin LI>>28 lelong 0xde1270b7 Boufallo 602 89*ae316d1dSXin LI>>28 lelong 0xe08f7564 Realtek AmebaZ2 RTL8720C 9043a5ec4eSXin LI>>28 lelong 0xe48bff56 Raspberry Pi RP2040 91*ae316d1dSXin LI>>28 lelong 0xe48bff57 Raspberry Pi MC: Absolute (unpartitioned) download 92*ae316d1dSXin LI>>28 lelong 0xe48bff58 Raspberry Pi MC: Data partition download 93*ae316d1dSXin LI>>28 lelong 0xe48bff59 Raspberry Pi RP2350, Secure Arm image 94*ae316d1dSXin LI>>28 lelong 0xe48bff5a Raspberry Pi RP2350, RISC-V image 95*ae316d1dSXin LI>>28 lelong 0xe48bff5b Raspberry Pi RP2350, Non-secure Arm image 96*ae316d1dSXin LI>>28 lelong 0xf71c0343 ESP32-C5 9743a5ec4eSXin LI### END UF2 FAMILIES 9843a5ec4eSXin LI 9943a5ec4eSXin LI>>28 default x 10043a5ec4eSXin LI>>>28 lelong x %#08x 10143a5ec4eSXin LI>8 lelong&0x2000 0 \b, file size 10243a5ec4eSXin LI>>28 lelong x %#08x 10343a5ec4eSXin LI>8 lelong &0x4000 \b, MD5 checksum present 10443a5ec4eSXin LI>8 lelong &0x8000 \b, extension tags present 105*ae316d1dSXin LI>12 lelong x \b, base address %#08x 10643a5ec4eSXin LI>24 lelong x \b, %u total blocks 107