├── .github ├── ISSUE_TEMPLATE │ └── config.yml ├── pull_request_template.md └── workflows │ └── check-format.yml ├── README.md ├── allocated-pids-espressif-devboards.txt ├── allocated-pids.txt └── check-file-format.sh /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | --- 2 | blank_issues_enabled: true 3 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.github/workflows/check-format.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow to help you get started with Actions 2 | 3 | name: CI 4 | 5 | # Controls when the workflow will run 6 | on: 7 | # Triggers the workflow on push or pull request events but only for the "main" branch 8 | push: 9 | branches: [ "main" ] 10 | pull_request: 11 | branches: [ "main" ] 12 | 13 | # Allows you to run this workflow manually from the Actions tab 14 | workflow_dispatch: 15 | 16 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 17 | jobs: 18 | # This workflow contains a single job called "build" 19 | build: 20 | # The type of runner that the job will run on 21 | runs-on: ubuntu-latest 22 | 23 | # Steps represent a sequence of tasks that will be executed as part of the job 24 | steps: 25 | # Checkout entire repo; it's tiny and we need the main branch for comparison to 26 | # check for removed lines. 27 | - uses: actions/checkout@v4 28 | with: 29 | fetch-depth: 0 30 | 31 | - name: Check allocated-pids-espressif-devboards 32 | working-directory: ${{ github.workspace }}/ 33 | run: bash ./check-file-format.sh allocated-pids-espressif-devboards.txt 0x7000 34 | 35 | - name: Check allocated-pids 36 | working-directory: ${{ github.workspace }}/ 37 | run: bash ./check-file-format.sh allocated-pids.txt 0x8000 38 | 39 | - name: Check removed lines 40 | working-directory: ${{ github.workspace }}/ 41 | run: bash -c "! git diff -b origin/main | grep '^-0'" 42 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Espressif USB customer-allocated PID repository 2 | 3 | ## What is this? 4 | 5 | This is a repository for customer-allocated PIDs under the Espressif VID (0x303A). Getting your 6 | own USB Vendor ID (VID) can be expensive for an individual or a company only making small runs 7 | of products. As such we offer the option of using a PID allocated under the Espressif VID. 8 | You can use this service if your device contains an Espressif chip with a USB interface and 9 | the requested PID is used for that interface. 10 | 11 | ## When do I need this? 12 | 13 | You would need a custom PID if you use a custom USB class on your ESP32 which needs a non-standard 14 | driver on the host. If you use e.g. TinyUSB with the standard drivers it comes with, you would not 15 | need a custom PID as TinyUSB by default already uses a pre-allocated PID specific to the classes 16 | selected. 17 | 18 | ## How do I get a PID in this range? 19 | 20 | To get a PID, you can fork this repository, edit the allocated-pids.txt file and commit the changes. 21 | Please make sure to use the next available PID in the range allocated, for easy managing purposes we'd 22 | like to keep the customer allocated PIDs sequential. Finally, file a pull request here so we can merge 23 | the result. Make sure to mention the following in the pull request: 24 | 25 | - A short description of what the device is going to do (e.g. cat tracker with USB trace download) 26 | 27 | - What chip are you using for the device the PID is allocated for (e.g. ESP32-S2) 28 | 29 | - Why you need a custom PID (and can't, for instance, use the default TinyUSB PIDs) 30 | 31 | - If you're requesting a PID on behalf of a company, please mention the name of the company 32 | 33 | - If applicable/available, a website or other URL with information about your product or company 34 | 35 | (Note that if your application specifically is designed to run on Espressif-built devboards, you will 36 | need to edit allocated-pids-espressif-devboards.txt instead.) 37 | 38 | After you have done that, we will get back to you soon to either merge the request (after which you're 39 | free to use the PID) or to ask for clarification if needed. Note that we may need to ask you to rebase 40 | your request to start at a new PID if someone elses request got merged before yours. 41 | 42 | ## Disclaimer 43 | 44 | Espressif reserves the right to deny a pull request to this repository for any reason. A pull 45 | request granted here does not mean endorsment of your product by Espressif, and should not be 46 | used as such in marketing material etc. As a PID is just a number, having your pull request 47 | merged here does not entitle you to anything; it simply serves as a cooperative way for people 48 | not to choose the same number for different products. 49 | -------------------------------------------------------------------------------- /allocated-pids-espressif-devboards.txt: -------------------------------------------------------------------------------- 1 | This file contains PIDs that are allocated to specific uses of Espressif-built hardware. If 2 | you have a SDK or software that is intended to run on a bare Espressif devkit and you need 3 | a PID, please request it by adding the PID to the end of this file. When adding a PID, make 4 | sure to add it at the bottom of the list and use the next (hexadecimal) PID number so the list 5 | stays sequential. 6 | 7 | PID | Product name 8 | 0x7000 | ESP32-S2-HMI-DevKit-1 - UF2 Bootloader 9 | 0x7001 | ESP32-S2-HMI-DevKit-1 - CircuitPython 10 | 0x7002 | ESP32-S3-DevKitC-1 - UF2 Bootloader 11 | 0x7003 | ESP32-S3-DevKitC-1 - CircuitPython 12 | 0x7004 | ESP32-S3 Box - UF2 Bootloader 13 | 0x7005 | ESP32-S3 Box - CircuitPython 14 | 0x7006 | ESP32-S3-DevKitM-1 - UF2 Bootloader 15 | 0x7007 | ESP32-S3-DevKitM-1 - CircuitPython 16 | 0x7008 | ESP32-S2-DevKitC-1 - UF2 Bootloader 17 | 0x7009 | ESP32-S2-DevKitC-1 - CircuitPython 18 | 0x700A | ESP32-S3-USB-OTG - UF2 Bootloader 19 | 0x700B | ESP32-S3-USB-OTG - CircuitPython 20 | 0x700C | ESP32-S3 Box Lite - UF2 Bootloader 21 | 0x700D | ESP32-S3 Box Lite - CircuitPython 22 | 0x700E | ESP32-S3-EYE - UF2 Bootloader 23 | 0x700F | ESP32-S3-EYE - CircuitPython 24 | 0x7010 | ESP32-S3-LCD-EV-Board v1.5 - UF2 Bootloader 25 | 0x7011 | ESP32-S3-LCD-EV-Board v1.5 - CircuitPython 26 | 0x7012 | ESP32-P4-Function-EV - UF2 Bootloader 27 | 0x7013 | ESP32-P4-Function-EV - CircuitPython 28 | -------------------------------------------------------------------------------- /allocated-pids.txt: -------------------------------------------------------------------------------- 1 | Allocated PIDs under Espressifs VID (0x303a). When adding a PID, please take 2 | the next available one and add it at the bottom of the list, in order to keep 3 | the list sequential. For a product name, please include both the name of your 4 | company (or your own name or nickname) and the name of the device you're 5 | registering the PID for (e.g. My Widget Company touch-free WiFi USB keyboard) 6 | 7 | PID | Product name 8 | 0x8000 | Espressif test PID 9 | 0x8001 | Unexpected Maker TinyS2 - Arduino 10 | 0x8002 | Unexpected Maker TinyS2 - CircuitPython 11 | 0x8003 | Wualabs - Wuard Zero - Vera crypto dev board 12 | 0x8004 | Wualabs - Wuard crypto 13 | 0x8005 | Unexpected Maker TinyS2 - UF2 Bootloader 14 | 0x8006 | LILYGO TTGO T8 ESP32-S2 - Arduino 15 | 0x8007 | LILYGO TTGO T8 ESP32-S2 - CircuitPython 16 | 0x8008 | LILYGO TTGO T8 ESP32-S2 - UF2 Bootloader 17 | 0x8009 | ATMegaZero ESP32-S2 - CircuitPython 18 | 0x800A | ATMegaZero ESP32-S2 - Arduino 19 | 0x800B | ATMegaZero ESP32-S2 - UF2 Bootloader 20 | 0x800C | GRAVITECH CUCUMBER RIS ESP32S2 - Arduino 21 | 0x800D | GRAVITECH CUCUMBER RIS ESP32S2 - CircuitPython 22 | 0x800E | GRAVITECH CUCUMBER RIS ESP32S2 - UF2 Bootloader 23 | 0x800F | Troo - FarmTRX Yield Monitor 24 | 0x8010 | ESP32DE Stickley-MIDI-PRO 25 | 0x8011 | ESP32DE Stickley-Arduino 26 | 0x8012 | ESP32DE Stickley-UF2-Bootloader 27 | 0x8013 | ESP32DE Stickley-CircuitPython 28 | 0x8014 | ESP32DE WiFi-CAN-Bridge-PRO 29 | 0x8015 | ESP32DE WiFi-OTG-Bridge-PRO 30 | 0x8016 | ESP32DE WiFi-MCU-Bridge-PRO 31 | 0x8017 | ESP32DE LIVE-STYLER-PRO 32 | 0x8018 | ESP32DE STICKLEY-PRO 33 | 0x8019 | ESP32DE MCU-Commander 34 | 0x801A | ESP32DE -A-TESTDRIVE 35 | 0x801B | ESP32DE -B-TESTHOST 36 | 0x801C | ESP32DE -C-TESTDEVICE 37 | 0x801D | ESP32DE -D-NEURONAL 38 | 0x801E | ESP32DE -E-REMOTE 39 | 0x801F | ESP32DE -F-OSZ 40 | 0x8020 | ESP32DE PSRAMBANK-PRO 41 | 0x8021 | ESP32DE WiFi-DONGLE 42 | 0x8022 | ESP32DE PeripheralBridge 43 | 0x8023 | ESP32DE SIMEPI™ DONGLE 44 | 0x8024 | ESP32DE AIoT-DONGLE 45 | 0x8025 | ESP32DE IoT-DONGLE 46 | 0x8026 | ESP32DE WEBUSB-PRO 47 | 0x8027 | ESP32DE TINY-SHinY 48 | 0x8028 | ESP32DE devflowcharter PRO 49 | 0x8029 | ESP32DE WEBSPI-PRO 50 | 0x802A | ESPattoZero™ CircuitS 51 | 0x802B | ESPattoZero™ Engineering 52 | 0x802C | ESPattoZero™ Test fixture 53 | 0x802D | ESPattozero™ Logic Analyzer 54 | 0x802E | ESPattoZero™ Board Tester 55 | 0x802F | ESPattoZero™ Air quality tester 56 | 0x8030 | ESPattoZero™ X-ThermalPro 57 | 0x8031 | ESPattoZero™ SECureCAM 58 | 0x8032 | ESPattoZero™ StampIT 59 | 0x8033 | ESPattoZero™ Signalgenerator 60 | 0x8034 | ESPattoZero™ SnapSONzero 61 | 0x8035 | ESPattoZero™ SnapSONmini 62 | 0x8036 | ESPattoZero™ espKIT Home 63 | 0x8037 | ESPattoZero™ espKIT Mobil 64 | 0x8038 | ESPattoZero™ LoRa-X-Home 65 | 0x8039 | ESPattoZero™ LoRa-X-Mobil 66 | 0x803A | ESPattoZero™ ZERO-UF2-Bootloader 67 | 0x803B | ESPattoZero™ ZERO-CircuitPython 68 | 0x803C | ESPattoZero™ ZERO-Arduino 69 | 0x803D | ESPattoZero™ SIMEPI™-Arduino 70 | 0x803E | ESPattoZero™ RODI™-Arduino 71 | 0x803F | ESPattoZero™ GRBL-DONGLE 72 | 0x8040 | ESPattoZero™ USB-MIDI32 73 | 0x8041 | ESPattoZero™ USB-MIDI64 74 | 0x8042 | ESPattoZero™ USB-MIDI128 75 | 0x8043 | ESPattoZero™ DMX-BASE-HOME 76 | 0x8044 | ESPattpZero™ DMX-BASE-PRO 77 | 0x8045 | ESPattoZero™ B4A-Connect 78 | 0x8046 | ESPattoZero™ Android-Bridge 79 | 0x8047 | ESPattoZero™ CINEMA-SCOPE-IT 80 | 0x8048 | ESPattoZero™ MINI-SCOPE-IT 81 | 0x8049 | ESPattoZero™ X-LINK 82 | 0x804A | ESPattoZero™ BION-ELV 83 | 0x804B | ESPattoZero™ EMU-x- 84 | 0x804C | ESPattoZero™ Switch-TH-ing 85 | 0x804D | ESPattoZero™ VFM vehicle fleet manager 86 | 0x804E | ESPattoZero™ Health&Fitnees minder 87 | 0x804F | ESPattoZero™ DAW-PRO 88 | 0x8050 | ESPattoZero™ V-bridge 89 | 0x8051 | ESPattoZero™ CPY-KIT 90 | 0x8052 | ESPattoZero™ NUTTX-KIT 91 | 0x8053 | ESPattoZero™ DIY-KIT 92 | 0x8054 | ESPattoZero™ USB-CTM16 93 | 0x8055 | ESPattoZero™ USB-CTM32 94 | 0x8056 | ESPattoZero™ USB-CTM64 95 | 0x8057 | ESPattoZero™ USB-CTM128 96 | 0x8058 | ESPattoZero™ USB-MTC16 97 | 0x8059 | ESPattoZero™ USB-MTC32 98 | 0x805A | ESPattoZero™ USB-MTC64 99 | 0x805B | ESPattoZero™ USB-MTC128 100 | 0x805C | ESPattoZero™ CTM PRO 101 | 0x805D | ESPattoZero™ MTC PRO 102 | 0x805E | ESPattoZero™ VCP2WiFi 103 | 0x805F | ESPattoZero™ EIA-485 104 | 0x8060 | ESPattoZero™ ESPattoZero-cero 105 | 0x8061 | ESPattoZero™ ESPattoZero-uno 106 | 0x8062 | ESPattoZero™ ESPattoZero-dos 107 | 0x8063 | ESPattoZero™ ESPattoZero-tres 108 | 0x8064 | ESPattoZero™ ESPattoZero-cuatro 109 | 0x8065 | ESPattoZero™ ESPattoZero-cinco 110 | 0x8066 | ESPattoZero™ ESPattoZero-seis 111 | 0x8067 | ESPattoZero™ ESPattoZero-siete 112 | 0x8068 | ESPattoZero™ ESPattoZero-ocho 113 | 0x8069 | ESPattoZero™ ESPattoZero-nueve 114 | 0x806A | ESPattoZero™ PICOio-UF2 115 | 0x806B | ESPattoZero™ PICOio-CircuitPython 116 | 0x806C | ESPattoZero™ PICOio-Arduino 117 | 0x806D | ESPattoZero™ PICOio-PRO-UF2 118 | 0x806E | ESPattoZero™ PICOio-PRO-CircuitPython 119 | 0x806F | ESPattoZero™ PICOio-PRO-Arduino 120 | 0x8070 | ESPattoZero™ ATTO-UF2 121 | 0x8071 | ESPattoZero™ ATTO-CircuitPython 122 | 0x8072 | ESPattoZero™ ATTO-Arduino 123 | 0x8073 | ESPattoZero™ ATTO-PRO-UF2 124 | 0x8074 | ESPattoZero™ ATTO-PRO-CircuitPython 125 | 0x8075 | ESPattoZero™ ATTO-PRO-Arduino 126 | 0x8076 | ESPattoZero™ MAMAMIA-UF2 127 | 0x8077 | ESPattoZero™ MAMAMIA-CircuitPython 128 | 0x8078 | ESPattoZero™ MAMAMIA-Arduino 129 | 0x8079 | ESPattoZero™ LEONPI-MSI-PRO 130 | 0x807A | ESPattoZero™ LEONPI-MSI-UF2 131 | 0x807B | ESPattoZero™ LEONPI-MSI-CircuitPython 132 | 0x807C | ESPattoZero™ LEONPI-MSI-Arduino 133 | 0x807D | ESPattoZero™ GeoTracking Station 134 | 0x807E | ESPattoZero™ GeoTracking Base 135 | 0x807F | ESPattoZero™ GeoTracking Mobil 136 | 0x8080 | ESPattoZero™ PROXY-NET 137 | 0x8081 | ESPattoZero™ PORT-NET 138 | 0x8082 | ESPattoZero™ Studentenwerk Station 139 | 0x8083 | ESPattoZero™ Studentenwerk Client 140 | 0x8084 | ESPattoZero™ Studentenwerk Mobil 141 | 0x8085 | ESPattoZero™ Studentenwerk YESAR 142 | 0x8086 | ESPattoZero™ UNI VM-iAPX 86 143 | 0x8087 | ESPattoZero™ UNI VM-x87 floating-point 144 | 0x8088 | ESPattoZero™ UNI VM-8088 145 | 0x8089 | ESPattoZero™ UNI VM-DMA 146 | 0x808A | ESPattoZero™ Freifunk S2 Bridge 147 | 0x808B | ESPattoZero™ Voltamere PI Station 148 | 0x808C | ESPattoZero™ Voltamere PI Client 149 | 0x808D | ESPattoZero™ Voltamere PI Mobil 150 | 0x808E | ESPattoZero™ Voltamere PI YESAR 151 | 0x808F | ESPattoZero™ GPS NMEA Locater 152 | 0x8090 | ESPattoZero™ GPS NMEA FOX 153 | 0x8091 | ESPattoZero™ GPS NMEA HUNTER 154 | 0x8092 | ESPattoZero™ GPS NMEA Base 155 | 0x8093 | ESPattoZero™ GPS NMEA Station 156 | 0x8094 | ESPattoZero™ GPS NMEA Mobil 157 | 0x8095 | ESPattoZero™ GPS NMEA YESAR 158 | 0x8096 | ESPattoZero™ NMEA Monitor 159 | 0x8097 | ESPattoZero™ USB Reminder 160 | 0x8098 | ESPattoZero™ USB TrackingStar 161 | 0x8099 | ESPattoZero™ USB Router 162 | 0x809A | ESPattoZero™ USB-INK 163 | 0x809B | ESPattoZero™ HOMESCHOOLING 164 | 0x809C | ESPattoZero™ UNI-VM-A7150-ROB-VEB 165 | 0x809D | ESPattoZero™ UNI-VM-DCP1700-ROB-VEB 166 | 0x809E | ESPattoZero™ UNI-VM-DCP-GX-ROB-VEB 167 | 0x809F | ESPattoZero™ USB WIFI-HOTSPOT 168 | 0x80A0 | GRAVITECH CUCUMBER R ESP32S2 - Arduino 169 | 0x80A1 | GRAVITECH CUCUMBER R ESP32S2 - CircuitPython 170 | 0x80A2 | GRAVITECH CUCUMBER R ESP32S2 - UF2 Bootloader 171 | 0x80A3 | GRAVITECH CUCUMBER M ESP32S2 - Arduino 172 | 0x80A4 | GRAVITECH CUCUMBER M ESP32S2 - CircuitPython 173 | 0x80A5 | GRAVITECH CUCUMBER M ESP32S2 - UF2 Bootloader 174 | 0x80A6 | GRAVITECH CUCUMBER MS ESP32S2 - Arduino 175 | 0x80A7 | GRAVITECH CUCUMBER MS ESP32S2 - CircuitPython 176 | 0x80A8 | GRAVITECH CUCUMBER MS ESP32S2 - UF2 Bootloader 177 | 0x80A9 | Franzininho WIFI - Arduino 178 | 0x80AA | Franzininho WIFI - CircuitPython 179 | 0x80AB | Franzininho WIFI - UF2 Bootloader 180 | 0x80AC | Franzininho WIFI Wrover - Arduino 181 | 0x80AD | Franzininho WIFI Wrover - CircuitPython 182 | 0x80AE | Franzininho WIFI Wrover - UF2 Bootloader 183 | 0x80AF | Artisense RD00 - CircuitPython 184 | 0x80B0 | Artisense RD00 - UF2 Bootloader 185 | 0x80B1 | Project Stida RoboCloud - CircuitPython 186 | 0x80B2 | Muse Lab nanoESP32-S2 WROVER - CircuitPython 187 | 0x80B3 | Muse Lab nanoESP32-S2 WROVER - UF2 Bootloader 188 | 0x80B4 | Unexpected Maker FeatherS2 Neo - Arduino 189 | 0x80B5 | Unexpected Maker FeatherS2 Neo - CircuitPython 190 | 0x80B6 | Morpheans MorphESP-240 - UF2 Bootloader 191 | 0x80B7 | Morpheans MorphESP-240 - UF2 Arduino 192 | 0x80B8 | Morpheans MorphESP-240 - UF2 CircuitPython 193 | 0x80B9 | Hypnocube - HypnoBall 194 | 0x80BA | Hypnocube - HypnoLSD 195 | 0x80BB | Hypnocube - HypnoCube8 196 | 0x80BC | Hypnocube - HypnoCube4 197 | 0x80BD | Hypnocube - HypnoLights 198 | 0x80BE | Hypnocube - HypnoSquare8 199 | 0x80BF | WarmBit ESPixel32 - UF2 Bootloader 200 | 0x80C0 | WarmBit ESPixel32 - UF2 Arduino 201 | 0x80C1 | WarmBit ESPixel32 - UF2 CircuitPython 202 | 0x80C2 | Lolin S2 Mini - Arduino 203 | 0x80C3 | Lolin S2 Mini - CircuitPython 204 | 0x80C4 | Lolin S2 Mini - UF2 Bootloader 205 | 0x80C5 | Lolin S2 Pico - Arduino 206 | 0x80C6 | Lolin S2 Pico - CircuitPython 207 | 0x80C7 | Lolin S2 Pico - UF2 Bootloader 208 | 0x80C8 | BrainBoardz Neuron - CircuitPython 209 | 0x80C9 | BrainBoardz NeuronZ - CircuitPython 210 | 0x80CA | BrainBoardz Neuron - Arduino 211 | 0x80CB | BrainBoardz NeuronZ - Arduino 212 | 0x80CC | BrainBoardz Neuron - UF2 Bootloader 213 | 0x80CD | BrainBoardz NeuronZ - UF2 Bootloader 214 | 0x80CE | Soul Injector Firmware Programmer - Configurator 215 | 0x80CF | CM-Manu Alc-Test - USB MSD 216 | 0x80D0 | Unexpected Maker TinyS3 - Arduino 217 | 0x80D1 | Unexpected Maker TinyS3 - CircuitPython 218 | 0x80D2 | Unexpected Maker TinyS3 - UF2 Bootloader 219 | 0x80D3 | Unexpected Maker ProS3 - Arduino 220 | 0x80D4 | Unexpected Maker ProS3 - CircuitPython 221 | 0x80D5 | Unexpected Maker ProS3 - UF2 Bootloader 222 | 0x80D6 | Unexpected Maker FeatherS3 - Arduino 223 | 0x80D7 | Unexpected Maker FeatherS3 - CircuitPython 224 | 0x80D8 | Unexpected Maker FeatherS3 - UF2 Bootloader 225 | 0x80D9 | FutureKeys HexKy S2 - CircuitPython 226 | 0x80DA | FutureKeys HexKy S2 - UF2 Bootloader 227 | 0x80DB | CircuitArt ESP32S3 zero - Arduino 228 | 0x80DC | CircuitArt ESP32S3 zero - UF2 Bootloader 229 | 0x80DD | CircuitArt ESP32S3 zero - CircuitPython 230 | 0x80DE | Banana Pi BPI-Leaf-S3 - UF2 Bootloader 231 | 0x80DF | Banana Pi BPI-Leaf-S3 - Arduino 232 | 0x80E0 | Banana Pi BPI-Leaf-S3 - CircuitPython 233 | 0x80E1 | Banana Pi BPI-Leaf-S2 - UF2 Bootloader 234 | 0x80E2 | Banana Pi BPI-Leaf-S2 - Arduino 235 | 0x80E3 | Banana Pi BPI-Leaf-S2 - CircuitPython 236 | 0x80E4 | Banana Pi BPI:Bit v2 - UF2 Bootloader 237 | 0x80E5 | Banana Pi BPI:Bit v2 - Arduino 238 | 0x80E6 | Banana Pi BPI:Bit v2 - CircuitPython 239 | 0x80E7 | Hiibot IoTS2 - UF2 Bootloader 240 | 0x80E8 | Hiibot IoTS2 - CircuitPython 241 | 0x80E9 | LILYGO TTGO T8 ESP32-S2-WROOM - Arduino 242 | 0x80EA | LILYGO TTGO T8 ESP32-S2-WROOM - CircuitPython 243 | 0x80EB | LILYGO TTGO T8 ESP32-S2-WROOM - UF2 Bootloader 244 | 0x80EC | LILYGO TTGO T8 ESP32-S2 noDisplay - Arduino 245 | 0x80ED | LILYGO TTGO T8 ESP32-S2 noDisplay - CircuitPython 246 | 0x80EE | LILYGO TTGO T8 ESP32-S2 noDisplay - UF2 Bootloader 247 | 0x80EF | GoGo Board - UF2 Bootloader 248 | 0x80F0 | GoGo Board - Arduino 249 | 0x80F1 | Tevofy Technology LTD - Muro Box MIDI N20 250 | 0x80F2 | Tevofy Technology LTD - Muro Box MIDI N40 251 | 0x80F3 | WERMA Signaltechnik GmbH + Co. KG - eSIGN 252 | 0x80F4 | WERMA Signaltechnik GmbH + Co. KG - eSIGN Bootloader 253 | 0x80F5 | Lolin C3 Mini - CircuitPython 254 | 0x80F6 | Unexpected Maker - Reflow Master Pro 255 | 0x80F7 | Siemens - ECS 256 | 0x80F8 | Cytron Maker Feather AIoT S3 - Arduino 257 | 0x80F9 | Cytron Maker Feather AIoT S3 - CircuitPython 258 | 0x80FA | Cytron Maker Feather AIoT S3 - UF2 Bootloader 259 | 0x80FB | MixGo CE - Arduino 260 | 0x80FC | MixGo CE - CircuitPython 261 | 0x80FD | MixGo CE - UF2 Bootloader 262 | 0x80FE | PerpetCal Smart Calendar - Configurator 263 | 0x80FF | MiniMain ESP32-S2 - Arduino 264 | 0x8100 | MiniMain ESP32-S2 - CircuitPython 265 | 0x8101 | MiniMain ESP32-S2 - UF2 Bootloader 266 | 0x8102 | IoT-PostBox v1 - Arduino 267 | 0x8103 | IoT-PostBox v1 - CircuitPython 268 | 0x8104 | IoT-PostBox v1 - UF2 Bootloader 269 | 0x8105 | MuseLab ESP32-S2 ESPLink - esp-usb-bridge 270 | 0x8106 | MuseLab ESP32-S2 ESPLink - Arduino 271 | 0x8107 | MuseLab ESP32-S2 ESPLink - CircuitPython 272 | 0x8108 | MuseLab ESP32-S2 ESPLink - UF2 Bootloader 273 | 0x8109 | Waveshare ESP32-S2-Pico - UF2 Bootloader 274 | 0x810A | Waveshare ESP32-S2-Pico - CircuitPython 275 | 0x810B | Waveshare ESP32-S2-Pico-LCD - UF2 Bootloader 276 | 0x810C | Waveshare ESP32-S2-Pico-LCD - CircuitPython 277 | 0x810D | Smart Bee Designs Bee Motion - Arduino 278 | 0x810E | Smart Bee Designs Bee Motion - CircuitPython 279 | 0x810F | Smart Bee Designs Bee Motion - UF2 Bootloader 280 | 0x8110 | Smart Bee Designs Bee S3 - Arduino 281 | 0x8111 | Smart Bee Designs Bee S3 - CircuitPython 282 | 0x8112 | Smart Bee Designs Bee S3 - UF2 Bootloader 283 | 0x8113 | Smart Bee Designs Bee Motion S3 - Arduino 284 | 0x8114 | Smart Bee Designs Bee Motion S3 - CircuitPython 285 | 0x8115 | Smart Bee Designs Bee Motion S3 - UF2 Bootloader 286 | 0x8116 | Lolin S3 - Arduino 287 | 0x8117 | Lolin S3 - CircuitPython 288 | 0x8118 | Lolin S3 - UF2 Bootloader 289 | 0x8119 | M5STACK CoreS3 - Arduino 290 | 0x811A | M5STACK CoreS3 - CircuitPython/Micropython 291 | 0x811B | M5STACK CoreS3 - UF2 Bootloader 292 | 0x811C | M5STACK StickS3 - Arduino 293 | 0x811D | M5STACK StickS3 - CircuitPython/Micropython 294 | 0x811E | M5STACK StickS3 - UF2 Bootloader 295 | 0x811F | M5STACK AtomS3 - Arduino 296 | 0x8120 | M5STACK AtomS3 - CircuitPython/Micropython 297 | 0x8121 | M5STACK AtomS3 - UF2 Bootloader 298 | 0x8122 | Intech Studio Grid - UF2 Bootloader 299 | 0x8123 | Intech Studio Grid - Production Firmware 300 | 0x8124 | Intech Studio Knot - UF2 Bootloader 301 | 0x8125 | Intech Studio Knot - Production Firmware 302 | 0x8126 | RobotClass Graphite S2 - Arduino 303 | 0x8127 | RobotClass Graphite S2 - CircuitPython 304 | 0x8128 | RobotClass Graphite S2 - UF2 Bootloader 305 | 0x8129 | RIKA FireNet 2.0 USB-WiFi Stick - Bootloader 306 | 0x812A | RIKA FireNet 2.0 USB-WiFi Stick - Production Firmware 307 | 0x812B | Banana Pi BPI-PicoW-S3 - Arduino 308 | 0x812C | Banana Pi BPI-PicoW-S3 - CircuitPython 309 | 0x812D | Banana Pi BPI-PicoW-S3 - UF2 Bootloader 310 | 0x812E | CharaChorder Lite-S2 311 | 0x812F | CharaChorder Lite-S2 UF2 Bootloader 312 | 0x8130 | Refract AXIS 313 | 0x8131 | SoftRF WebTop USB S2 314 | 0x8132 | SoftRF Standalone Edition S3 315 | 0x8133 | SoftRF Prime Edition Mk3 316 | 0x8134 | SoftRF Prime Edition Mk3 - UF2 Bootloader 317 | 0x8135 | Sensory Bridge - Arduino 318 | 0x8136 | Matatalab Universal Robot S3 319 | 0x8137 | Matatalab VinciBot S3 320 | 0x8138 | Matatalab TaleBot S3 321 | 0x8139 | Matatalab MatataBot S3 322 | 0x813A | Flash64 Ultra 323 | 0x813B | Flash64 UF2 Bootloader 324 | 0x813C | Flash64 Lite 325 | 0x813D | Flash64 Deluxe 326 | 0x813E | LILYGO T-Display-S3 - Arduino 327 | 0x813F | LILYGO T-Display-S3 - CircuitPython 328 | 0x8140 | LILYGO T-Display-S3 - UF2 Bootloader 329 | 0x8141 | Deneyap Mini - Arduino 330 | 0x8142 | Deneyap Mini - CircuitPython 331 | 0x8143 | Deneyap Mini - UF2 Bootloader 332 | 0x8144 | Deneyap Mini v2 - Arduino 333 | 0x8145 | Deneyap Mini v2 - CircuitPython 334 | 0x8146 | Deneyap Mini v2 - UF2 Bootloader 335 | 0x8147 | Deneyap Kart 1A v2 - Arduino 336 | 0x8148 | Deneyap Kart 1A v2 - CircuitPython 337 | 0x8149 | Deneyap Kart 1A v2 - UF2 Bootloader 338 | 0x814A | Deneyap Kart G - Arduino 339 | 0x814B | Deneyap Kart G - CircuitPython 340 | 0x814C | Deneyap Kart G - UF2 Bootloader 341 | 0x814D | Crabik Slot ESP32-S3 - Arduino or CircuitPython 342 | 0x814E | Chroma.tech Canopy 343 | 0x814F | Chroma.tech Canopy - MicroPython 344 | 0x8150 | LILYGO T-Embed-S3 - Arduino 345 | 0x8151 | LILYGO T-Embed-S3 - CircuitPython 346 | 0x8152 | LILYGO T-Embed-S3 - UF2 Bootloader 347 | 0x8153 | LILYGO T-QT - Arduino 348 | 0x8154 | LILYGO T-QT - CircuitPython 349 | 0x8155 | LILYGO T-QT - UF2 Bootloader 350 | 0x8156 | CableMate 351 | 0x8157 | MD-PLUG Type C 352 | 0x8158 | MD-PLUG Type A 353 | 0x8159 | Shrooly SH01 - UF2 Bootloader 354 | 0x815A | Shrooly SH01 - Production Firmware 355 | 0x815B | MicroStorm CORE_S3 - ProjectSource 356 | 0x815C | Smart Bee Designs Bee Data Logger - Arduino 357 | 0x815D | Smart Bee Designs Bee Data Logger - CircuitPython 358 | 0x815E | Smart Bee Designs Bee Data Logger - UF2 Bootloader 359 | 0x815F | M5STACK AtomS3 Lite - CircuitPython/Micropython 360 | 0x8160 | M5STACK AtomS3 Lite - UF2 Bootloader 361 | 0x8161 | LOLIN S3 Pro - Arduino 362 | 0x8162 | LOLIN S3 Pro - CircuitPython 363 | 0x8163 | LOLIN S3 Pro - UF2 Bootloader 364 | 0x8164 | YD-ESP32-S3 - Arduino 365 | 0x8165 | YD-ESP32-S3 - UF2 Bootloader 366 | 0x8166 | YD-ESP32-S3 - CircuitPython 367 | 0x8167 | LOLIN S3 Mini - Arduino 368 | 0x8168 | LOLIN S3 Mini - CircuitPython 369 | 0x8169 | LOLIN S3 Mini - UF2 Bootloader 370 | 0x816A | M5STACK StampS3 - Arduino 371 | 0x816B | M5STACK StampS3 - CircuitPython/Micropython 372 | 0x816C | M5STACK StampS3 - UF2 Bootloader 373 | 0x816D | M5STACK TimerCamS3 - Arduino 374 | 0x816E | M5STACK TimerCamS3 - CircuitPython/Micropython 375 | 0x816F | M5STACK TimerCamS3 - UF2 Bootloader 376 | 0x8170 | CaniotBox - Production Firmware 377 | 0x8171 | 01Space ESP32-S3-0.42OLED - Arduino 378 | 0x8172 | 01Space ESP32-S3-0.42OLED - CircuitPython 379 | 0x8173 | 01Space ESP32-S3-0.42OLED - MicroPython 380 | 0x8174 | 01Space ESP32-S3-0.42OLED - UF2 Bootloader 381 | 0x8175 | Talk All Sport - Base Station 382 | 0x8176 | Talk All Sport - Hand Controller 383 | 0x8177 | Talk All Sport - Speech Unit 384 | 0x8178 | Talk All Sport - Arm Remote 385 | 0x8179 | Unexpected Maker NanoS3 - Arduino 386 | 0x817A | Unexpected Maker NanoS3 - CircuitPython 387 | 0x817B | Unexpected Maker NanoS3 - UF2 Bootloader 388 | 0x817C | Unexpected Maker BlizzardS3 - Arduino 389 | 0x817D | Unexpected Maker BlizzardS3 - CircuitPython 390 | 0x817E | Unexpected Maker BlizzardS3 - UF2 Bootloader 391 | 0x817F | Unexpected Maker Bling - Arduino 392 | 0x8180 | Unexpected Maker Bling - CircuitPython 393 | 0x8181 | Unexpected Maker Bling - UF2 Bootloader 394 | 0x8182 | Banana Pi BPI-Centi-S3 - Arduino 395 | 0x8183 | Banana Pi BPI-Centi-S3 - CircuitPython 396 | 0x8184 | Banana Pi BPI-Centi-S3 - UF2 Bootloader 397 | 0x8185 | M5STACK AtomS3 Lite - Arduino 398 | 0x8186 | M5STACK ATOMS3U - Arduino 399 | 0x8187 | M5STACK ATOMS3U - CircuitPython/Micropython 400 | 0x8188 | M5STACK ATOMS3U - UF2 Bootloader 401 | 0x8189 | CharaChorder Engine S2 402 | 0x818A | CharaChorder Engine S2 - UF2 Bootloader 403 | 0x818B | CharaChorder X S2 404 | 0x818C | CharaChorder X S2 - UF2 Bootloader 405 | 0x818D | CharaChorder X S2 Host 406 | 0x818E | CharaChorder X S2 Host - UF2 Bootloader 407 | 0x818F | LilyGO T-TWR Plus S3 - Arduino 408 | 0x8190 | LilyGO T-TWR Plus S3 - CircuitPython/Micropython 409 | 0x8191 | LilyGO T-TWR Plus S3 - UF2 Bootloader 410 | 0x8192 | uPesy ESP32S3 Devkit - Arduino 411 | 0x8193 | uPesy ESP32S3 Devkit - CircuitPython 412 | 0x8194 | uPesy ESP32S3 Devkit - UF2 Bootloader 413 | 0x8195 | uPesy ESP32C3 Basic - Arduino 414 | 0x8196 | uPesy ESP32C3 Basic - CircuitPython 415 | 0x8197 | uPesy ESP32C3 Basic - UF2 Bootloader 416 | 0x8198 | uPesy ESP32C3 Pro - Arduino 417 | 0x8199 | uPesy ESP32C3 Pro - CircuitPython 418 | 0x819A | uPesy ESP32C3 Pro - UF2 Bootloader 419 | 0x819B | uPesy ESP32C3 Mini - Arduino 420 | 0x819C | uPesy ESP32C3 Mini - CircuitPython 421 | 0x819D | uPesy ESP32C3 Mini - UF2 Bootloader 422 | 0x819E | Lunii FLAM 423 | 0x819F | LAEPI safe.EAR - Arduino 424 | 0x81A0 | SoftRF Midi Edition S3 425 | 0x81A1 | SoftRF Midi Edition S3 - UF2 Bootloader 426 | 0x81A2 | Waveshare ESP32-S3-Pico - UF2 Bootloader 427 | 0x81A3 | Waveshare ESP32-S3-Pico - CircuitPython 428 | 0x81A4 | Kailani Reverb - VTR Effects 429 | 0x81A5 | Narciso Delay - VTR Effects 430 | 0x81A6 | Helios Overdrive - VTR Effects 431 | 0x81A7 | Venator Distortion - VTR Effects 432 | 0x81A8 | Loki Modulation - VTR Effects 433 | 0x81A9 | MagiClick S3 - Arduino 434 | 0x81AA | MagiClick S3 - CircuitPython 435 | 0x81AB | MagiClick S3 - MicroPython 436 | 0x81AC | MagiClick S3 - UF2 Bootloader 437 | 0x81AD | Creekside S3 - Buzzer Receiver 438 | 0x81AE | Creekside S3 - Buzzer 439 | 0x81AF | Creekside S3 - Buzzer Tool 440 | 0x81B0 | Unexpected Maker TinyWATCH-S3 - Arduino 441 | 0x81B1 | Unexpected Maker TinyWATCH-S3 - CircuitPython 442 | 0x81B2 | Unexpected Maker TinyWATCH-S3 - UF2 Bootloader 443 | 0x81B3 | Waveshare ESP32-S3-Zero - UF2 Bootloader 444 | 0x81B4 | Waveshare ESP32-S3-Zero - UF2 CircuitPython 445 | 0x81B5 | LILYGO T-Deck - Arduino 446 | 0x81B6 | LILYGO T-Deck - CircuitPython/Micropython 447 | 0x81B7 | LILYGO T-Deck - UF2 Bootloader 448 | 0x81B8 | senseBox MCU-S2 ESP32-S2 - Arduino 449 | 0x81B9 | senseBox MCU-S2 ESP32-S2 - CircuitPython 450 | 0x81BA | senseBox MCU-S2 ESP32-S2 - UF2 Bootloader 451 | 0x81BB | ESP32-S3 PowerFeather ESP32-S3 - Arduino 452 | 0x81BC | ESP32-S3 PowerFeather ESP32-S3 - CircuitPython 453 | 0x81BD | ESP32-S3 PowerFeather ESP32-S3 - UF2 Bootloader 454 | 0x81BE | Makerfabs MaTouch ESP32-S3 - Arduino 455 | 0x81BF | Makerfabs MaTouch ESP32-S3 - CircuitPython 456 | 0x81C0 | Makerfabs MaTouch ESP32-S3 - UF2 Bootloader 457 | 0x81C1 | ADRIA-electronic - UF2 Bootloader 458 | 0x81C2 | ADRIA-electronic - AECE5 - Card encoder 459 | 0x81C3 | ADRIA-electronic - AEOFF - Offline flasher 460 | 0x81C4 | ADRIA-electronic - AEMPG - Multi-protocol gateway 461 | 0x81C5 | Ultradrom - USB HID Plus 462 | 0x81C6 | Ultradrom - USB MIDI Controller Plus 463 | 0x81C7 | Ultradrom - USB Mass Storage Plus 464 | 0x81C8 | Ultradrom - USB Joystick Plus 465 | 0x81C9 | Ultradrom - USB Gamepad Plus 466 | 0x81CA | Ultradrom - USB HID 467 | 0x81CB | Ultradrom - USB MIDI Controller 468 | 0x81CC | Ultradrom - USB Mass Storage 469 | 0x81CD | Ultradrom - USB Joystick 470 | 0x81CE | Ultradrom - USB Gamepad 471 | 0x81CF | Columbia DSL Sensor Board - Arduino 472 | 0x81D0 | Columbia DSL Sensor Board - CircuitPython 473 | 0x81D1 | Columbia DSL Sensor Board - UF2 Bootloader 474 | 0x81D2 | Sterling Hawk - SterlingKey 475 | 0x81D3 | Meocap Receiver 476 | 0x81D4 | Meocap Receiver - UF2 Bootloader 477 | 0x81D5 | HSBL-ko-gyo HSBL-S100 Chameleon Key 478 | 0x81D6 | HSBL-ko-gyo HSBL-S100 Chameleon Key - UF2 Bootloader 479 | 0x81D7 | Kailani Reverb Black Edition - VTR Effects 480 | 0x81D8 | CCLLC Sensor Mesh Node 481 | 0x81D9 | M5STACK Cardputer - Arduino 482 | 0x81DA | M5STACK Cardputer - CircuitPython 483 | 0x81DB | M5STACK Cardputer - UF2 Bootloader 484 | 0x81DC | M5STACK Dial - Arduino 485 | 0x81DD | M5STACK Dial - CircuitPython 486 | 0x81DE | M5STACK Dial - UF2 Bootloader 487 | 0x81DF | GREYNUT - BUSY TAG 488 | 0x81E0 | QRP Labs - LightTracker Plus 489 | 0x81E1 | SimKTech - SF1000 490 | 0x81E2 | SimKTech - Evo Plus 491 | 0x81E3 | SimKTech - Evo 492 | 0x81E4 | SimKTech - 488 493 | 0x81E5 | Narciso Delay Black Edition - VTR Effects 494 | 0x81E6 | MRC Nexxt Gateway 495 | 0x81E7 | MRC Nexxt Command Station 496 | 0x81E8 | MRC Nexxt Throttle 497 | 0x81E9 | MRC Nexxt Booster 498 | 0x81EA | Waveshare ESP32-S3-GEEK - CircuitPython 499 | 0x81EB | BlueRetro - X BT adapter 500 | 0x81EC | LILYGO T-Keyboard-S3 - Arduino 501 | 0x81ED | LILYGO T-Keyboard-S3 - CircuitPython 502 | 0x81EE | LILYGO T-Keyboard-S3 - MicroPython 503 | 0x81EF | LILYGO T-Keyboard-S3 - UF2 Bootloader 504 | 0x81F0 | KairoTech - Arcade Card Reader 505 | 0x81F1 | KairoTech - CHUNITHM Controller 506 | 0x81F2 | KairoTech - ONGEKI Controller 507 | 0x81F3 | KairoTech - maimaiDX Controller 508 | 0x81F4 | KairoTech - beatmania IIDX Controller 509 | 0x81F5 | KairoTech - Sound Voltex Controller 510 | 0x81F6 | KairoTech - PSoC Flasher 511 | 0x81F7 | KairoTech - Universal IO 512 | 0x81F8 | Waveshare ESP32-S3-Tiny - CircuitPython 513 | 0x81F9 | Wirmo SkysyLight ESP32-S2 - Busylight 514 | 0x81FA | Wirmo SkysyLight ESP32-S2 - UF2 Bootloader 515 | 0x81FB | Unexpected Maker FeatherS3 Neo - Arduino 516 | 0x81FC | Unexpected Maker FeatherS3 Neo - CircuitPython 517 | 0x81FD | Unexpected Maker FeatherS3 Neo - UF2 Bootloader 518 | 0x81FE | Unexpected Maker RGBTouch Mini - Arduino 519 | 0x81FF | Unexpected Maker RGBTouch Mini - CircuitPython 520 | 0x8200 | Unexpected Maker RGBTouch Mini - UF2 Bootloader 521 | 0x8201 | UMD - Logger 522 | 0x8202 | ThingPulse Pendrive S3 128MB - Arduino 523 | 0x8203 | EMC - EMCFFB 524 | 0x8204 | ThingPulse Pendrive S3 128MB - Circuit Python 525 | 0x8205 | ThingPulse Pendrive S3 128MB - UF2 Bootloader 526 | 0x8206 | modue® One Touch - main 527 | 0x8207 | modue® One Touch - bootloader 528 | 0x8208 | modue® One XLR - main 529 | 0x8209 | modue® One XLR - bootloader 530 | 0x820A | LilyGO T3-S3 - Arduino 531 | 0x820B | LilyGO T3-S3 - CircuitPython/Micropython 532 | 0x820C | LilyGO T3-S3 - UF2 Bootloader 533 | 0x820D | Bits and Droids - Flight Companion Unit 534 | 0x820E | Domino4 - CWA - Core WiFi Alpha (ESP32-S3 8MB) 535 | 0x820F | Domino4 - CWV - Core WiFi Vertebra (ESP32-S3 8MB) 536 | 0x8210 | LILYGO T-Display-S3-Pro - Arduino 537 | 0x8211 | LILYGO T-Display-S3-Pro - CircuitPython 538 | 0x8212 | LILYGO T-Display-S3-Pro - UF2 Bootloader 539 | 0x8213 | LILYGO T4-S3 - Arduino 540 | 0x8214 | LILYGO T4-S3 - CircuitPython 541 | 0x8215 | LILYGO T4-S3 - UF2 Bootloader 542 | 0x8216 | LOLIN S3 Mini Pro - Arduino 543 | 0x8217 | LOLIN S3 Mini Pro - CircuitPython 544 | 0x8218 | LOLIN S3 Mini Pro - UF2 Bootloader 545 | 0x8219 | WERMA Signaltechnik GmbH + Co. KG - MC55 Touch Smart 546 | 0x821A | CBMSTUFF.COM - SuperCard Pro Deluxe (ESP32-S3-N4R2) 547 | 0x821B | LILYGO T-Watch-S3 - Arduino 548 | 0x821C | LILYGO T-Watch-S3 - CircuitPython/MicroPython 549 | 0x821D | LILYGO T-Watch-S3 - UF2 Bootloader 550 | 0x821E | Waveshare ESP32-S3-Touch-LCD-1.69 - Arduino 551 | 0x821F | Waveshare ESP32-S3-Touch-LCD-1.69 - CircuitPython/MicroPython 552 | 0x8220 | Waveshare ESP32-S3-Touch-LCD-1.69 - UF2 Bootloader 553 | 0x8221 | Waveshare ESP32-S3-LCD-1.69 - Arduino 554 | 0x8222 | Waveshare ESP32-S3-LCD-1.69 - CircuitPython/MicroPython 555 | 0x8223 | Waveshare ESP32-S3-LCD-1.69 - UF2 Bootloader 556 | 0x8224 | Unexpected Maker OMGS3 - Arduino 557 | 0x8225 | Unexpected Maker OMGS3 - CircuitPython/MicroPython 558 | 0x8226 | Unexpected Maker OMGS3 - UF2 Bootloader 559 | 0x8227 | LILYGO T-Watch-Ultra - Arduino 560 | 0x8228 | LILYGO T-Watch-Ultra - CircuitPython/MicroPython 561 | 0x8229 | LILYGO T-Watch-Ultra - UF2 Bootloader 562 | 0x822A | ATLNS Flasher 563 | 0x822B | Waveshare ESP32-S3-Zero - Arduino 564 | 0x822C | Waveshare ESP32-S3-Zero - CircuitPython/MicroPython 565 | 0x822D | Waveshare ESP32-S3-Zero - UF2 Bootloader 566 | 0x822E | Waveshare ESP32-S3-Touch-LCD-4.3 - Arduino 567 | 0x822F | Waveshare ESP32-S3-Touch-LCD-4.3 - CircuitPython/MicroPython 568 | 0x8230 | Waveshare ESP32-S3-Touch-LCD-4.3 - UF2 Bootloader 569 | 0x8231 | Waveshare ESP32-S3-Touch-LCD-4.3B - Arduino 570 | 0x8232 | Waveshare ESP32-S3-Touch-LCD-4.3B - CircuitPython/MicroPython 571 | 0x8233 | Waveshare ESP32-S3-Touch-LCD-4.3B - UF2 Bootloader 572 | 0x8234 | Waveshare ESP32-S3-Touch-LCD-7 - Arduino 573 | 0x8235 | Waveshare ESP32-S3-Touch-LCD-7 - CircuitPython/MicroPython 574 | 0x8236 | Waveshare ESP32-S3-Touch-LCD-7 - UF2 Bootloader 575 | 0x8237 | Waveshare ESP32-S3-Touch-LCD-5 - Arduino 576 | 0x8238 | Waveshare ESP32-S3-Touch-LCD-5 - CircuitPython/MicroPython 577 | 0x8239 | Waveshare ESP32-S3-Touch-LCD-5 - UF2 Bootloader 578 | 0x823A | Waveshare ESP32-S3-Touch-LCD-5B - Arduino 579 | 0x823B | Waveshare ESP32-S3-Touch-LCD-5B - CircuitPython/MicroPython 580 | 0x823C | Waveshare ESP32-S3-Touch-LCD-5B - UF2 Bootloader 581 | 0x823D | Waveshare ESP32-S3-Touch-LCD-4 - Arduino 582 | 0x823E | Waveshare ESP32-S3-Touch-LCD-4 - CircuitPython/MicroPython 583 | 0x823F | Waveshare ESP32-S3-Touch-LCD-4 - UF2 Bootloader 584 | 0x8240 | kohacraft.com Padauk Programmer - Arduino 585 | 0x8241 | EASYBCI Bio Amp 1 586 | 0x8242 | Waveshare ESP32-S3-Touch-AMOLED-2.41 - Arduino 587 | 0x8243 | Barduino 4 - Arduino 588 | 0x8244 | Barduino 4 - CircuitPython/MicroPython 589 | 0x8245 | Barduino 4 - UF2 Bootloader 590 | 0x8246 | Generic ESP32-S3-Super-Mini - Arduino 591 | 0x8247 | Generic ESP32-S3-Super-Mini - CircuitPython/MicroPython 592 | 0x8248 | Generic ESP32-S3-Super-Mini - UF2 Bootloader 593 | 0x8249 | Waveshare ESP32-S3-Touch-AMOLED-1.64 - Arduino 594 | 0x824A | Waveshare ESP32-S3-Touch-AMOLED-1.43 - Arduino 595 | 0x824B | Waveshare ESP32-S3-Touch-AMOLED-1.91 - Arduino 596 | 0x824C | LILYGO T7-S3 - Arduino 597 | 0x824D | LILYGO T7-S3 - CircuitPython 598 | 0x824E | LILYGO T7-S3 - UF2 Bootloader 599 | 0x824F | CircuitArt ESP32S3 CamTFT - Arduino 600 | 0x8250 | CircuitArt ESP32S3 CamTFT - UF2 Bootloader 601 | 0x8251 | CircuitArt ESP32S3 CamTFT - CircuitPython 602 | 0x8252 | HE-FMX digital thickness gauge - Marconilab 603 | 0x8253 | CharaChorder Two S3 604 | 0x8254 | CharaChorder Two S3 - UF2 Bootloader 605 | 0x8255 | Waveshare ESP32-S3-Touch-AMOLED-1.8 - Arduino 606 | 0x8256 | Waveshare ESP32-S3-Touch-AMOLED-1.8 - CircuitPython/MicroPython 607 | 0x8257 | Waveshare ESP32-S3-TOUCH-AMOLED-1.8 - UF2 Bootloader 608 | 0x8258 | Waveshare ESP32-S3-Touch-LCD-1.46 - Arduino 609 | 0x8259 | Waveshare ESP32-S3-Touch-LCD-1.46 - CircuitPython/MicroPython 610 | 0x825A | Waveshare ESP32-S3-Touch-LCD-1.46 - UF2 Bootloader 611 | 0x825B | Waveshare ESP32-S3-Touch-LCD-2.1 - Arduino 612 | 0x825C | Waveshare ESP32-S3-Touch-LCD-2.1 - CircuitPython/MicroPython 613 | 0x825D | Waveshare ESP32-S3-Touch-LCD-2.1 - UF2 Bootloader 614 | 0x825E | Waveshare ESP32-S3-Touch-LCD-2.8 - Arduino 615 | 0x825F | Waveshare ESP32-S3-Touch-LCD-2.8 - CircuitPython/MicroPython 616 | 0x8260 | Waveshare ESP32-S3-Touch-LCD-2.8 - UF2 Bootloader 617 | 0x8261 | Waveshare ESP32-S3-Touch-LCD-2.8B - Arduino 618 | 0x8262 | Waveshare ESP32-S3-Touch-LCD-2.8B - CircuitPython/MicroPython 619 | 0x8263 | Waveshare ESP32-S3-Touch-LCD-2.8B - UF2 Bootloader 620 | 0x8264 | Waveshare ESP32-S3-Touch-LCD-2.8C - Arduino 621 | 0x8265 | Waveshare ESP32-S3-Touch-LCD-2.8C - CircuitPython/MicroPython 622 | 0x8266 | Waveshare ESP32-S3-Touch-LCD-2.8C - UF2 Bootloader 623 | 0x8267 | Waveshare ESP32-S3-Tiny - Arduino 624 | 0x8268 | Waveshare ESP32-S3-Tiny - CircuitPython/MicroPython 625 | 0x8269 | Waveshare ESP32-S3-Tiny - UF2 Bootloader 626 | 0x826A | Waveshare ESP32-S3-Touch-LCD-1.3 - Arduino 627 | 0x826B | Waveshare ESP32-S3-Touch-LCD-1.3 - CircuitPython/MicroPython 628 | 0x826C | Waveshare ESP32-S3-Touch-LCD-1.3 - UF2 Bootloader 629 | 0x826D | Waveshare ESP32-S3-Matrix - Arduino 630 | 0x826E | Waveshare ESP32-S3-Matrix - CircuitPython/MicroPython 631 | 0x826F | Waveshare ESP32-S3-Matrix - UF2 Bootloader 632 | 0x8270 | Waveshare ESP32-S3-Touch-LCD-3.5 - Arduino 633 | 0x8271 | Waveshare ESP32-S3-Touch-LCD-3.5 - CircuitPython/MicroPython 634 | 0x8272 | Waveshare ESP32-S3-Touch-LCD-3.5 - UF2 Bootloader 635 | 0x8273 | Waveshare ESP32-S3-Relay-6CH - Arduino 636 | 0x8274 | Waveshare ESP32-S3-Relay-6CH - CircuitPython/MicroPython 637 | 0x8275 | Waveshare ESP32-S3-Relay-6CH - UF2 Bootloader 638 | 0x8276 | Waveshare ESP32-S3-Touch-AMOLED-1.43 - CircuitPython/MicroPython 639 | 0x8277 | Waveshare ESP32-S3-Touch-AMOLED-1.43 - UF2 Bootloader 640 | 0x8278 | Waveshare ESP32-S3-Touch-AMOLED-2.41 - CircuitPython/MicroPython 641 | 0x8279 | Waveshare ESP32-S3-Touch-AMOLED-2.41 - UF2 Bootloader 642 | 0x827A | kenny's Labs - WaKu Controller 643 | 0x827B | Unallocated 644 | 0x827C | Waveshare ESP32-S3-GEEK - Arduino 645 | 0x827D | Waveshare ESP32-S3-GEEK - UF2 Bootloader 646 | 0x827E | Waveshare ESP32-S3-LCD-1.28 - Arduino 647 | 0x827F | Waveshare ESP32-S3-LCD-1.28 - CircuitPython/MicroPython 648 | 0x8280 | Waveshare ESP32-S3-LCD-1.28 - UF2 Bootloader 649 | 0x8281 | Waveshare ESP32-S3-Touch-LCD-1.28 - Arduino 650 | 0x8282 | Waveshare ESP32-S3-Touch-LCD-1.28 - CircuitPython/MicroPython 651 | 0x8283 | Waveshare ESP32-S3-Touch-LCD-1.28 - UF2 Bootloader 652 | 0x8284 | Waveshare ESP32-S3-LCD-Driver-Board - Arduino 653 | 0x8285 | Waveshare ESP32-S3-LCD-Driver-Board - CircuitPython/MicroPython 654 | 0x8286 | Waveshare ESP32-S3-LCD-Driver-Board - UF2 Bootloader 655 | 0x8287 | Waveshare ESP32-S3-Touch-LCD-1.85-Box - Arduino 656 | 0x8288 | Waveshare ESP32-S3-Touch-LCD-1.85-Box - CircuitPython/MicroPython 657 | 0x8289 | Waveshare ESP32-S3-Touch-LCD-1.85-Box - UF2 Bootloader 658 | 0x828A | Waveshare ESP32-S3-LCD-1.47 - Arduino 659 | 0x828B | Waveshare ESP32-S3-LCD-1.47 - CircuitPython/MicroPython 660 | 0x828C | Waveshare ESP32-S3-LCD-1.47 - UF2 Bootloader 661 | 0x828D | Unallocated 662 | 0x828E | Unallocated 663 | 0x828F | Unallocated 664 | 0x8290 | Waveshare ESP32-S3-Touch-LCD-1.85 - Arduino 665 | 0x8291 | Waveshare ESP32-S3-Touch-LCD-1.85 - CircuitPython/MicroPython 666 | 0x8292 | Waveshare ESP32-S3-Touch-LCD-1.85 - UF2 Bootloader 667 | 0x8293 | Piston Medical - BLE Heart Rate Monitor Adapter 668 | 0x8294 | Work Louder - Nomad [E] v1 - ANSI 669 | 0x8295 | Work Louder - Nomad [E] v1 - ISO 670 | 0x8296 | Work Louder - Knob v1 - ANSI 671 | 0x8297 | Work Louder - Creator Micro v2 672 | 0x8298 | Work Louder - Creator Micro v2 - BLE 673 | 0x8299 | Work Louder - USB Dongle v1 674 | 0x829A | CharaChorder Master Forge S3 675 | 0x829B | CharaChorder Master Forge S3 - UF2 Bootloader 676 | 0x829C | Bantam Tools Serama Rooster ArtFrame 1824 677 | 0x829D | Bantam Tools Serama Rooster ArtFrame 2436 678 | 0x829E | Bantam Tools Serama Rooster ArtFrame XXL 679 | 0x829F | Bantam Tools Serama Handwriter 680 | 0x82A0 | Bantam Tools Serama 681 | 0x82A1 | RobotClass Graphite S3 - Arduino 682 | 0x82A2 | RobotClass Graphite S3 - CircuitPython 683 | 0x82A3 | RobotClass Graphite S3 - UF2 Bootloader 684 | 0x82A4 | ENERTY Module M - UF2 Bootloader 685 | 0x82A5 | OpenRemise - S3Main 686 | 0x82A6 | Undalogic miniSMU MS01 687 | 0x82A7 | Waveshare ESP32-S3-ETH - Circuitpython 688 | 0x82A8 | MIDI Dobrynya Aurora 689 | 0x82A9 | MIDI Dobrynya Aurora UF2 Bootloader 690 | 0x82AA | MIDI Dobrynya Aurora Pro 691 | 0x82AB | MIDI Dobrynya Aurora Pro UF2 Bootloader 692 | 0x82AC | MIDI Dobrynya Pocket 693 | 0x82AD | MIDI Dobrynya Pocket UF2 Bootloader 694 | 0x82AE | MIDI Dobrynya Pocket Pro 695 | 0x82AF | MIDI Dobrynya Pocket Pro UF2 Bootloader 696 | 0x82B0 | MIDI Dobrynya Micro V3 697 | 0x82B1 | MIDI Dobrynya Micro V3 UF2 Bootloader 698 | 0x82B2 | MIDI Dobrynya Mini V3 699 | 0x82B3 | MIDI Dobrynya Mini V3 UF2 Bootloader 700 | 0x82B4 | MIDI Dobrynya Pro V2 701 | 0x82B5 | MIDI Dobrynya Pro V2 UF2 Bootloader 702 | 0x82B6 | MIDI Dobrynya 32 703 | 0x82B7 | MIDI Dobrynya 32 UF2 Bootloader 704 | 0x82B8 | HOJA Gamepad Device 705 | 0x82B9 | neway navpad controller v1 (boot) 706 | 0x82BA | neway navpad controller v1 707 | 0x82BB | neway navpad controller mini v1 (boot) 708 | 0x82BC | neway navpad controller mini v1 709 | 0x82BD | Enilinx™ Flexbar 710 | 0x82BE | SONULAB™ StompStation 711 | 0x82BF | Enilinx™ Flexbar-CDC 712 | 0x82C0 | Dinnosys Llc. - SpeakNGo 713 | 0x82C1 | LILYGO T-Dongle-S3 - Arduino 714 | 0x82C2 | LILYGO T-Dongle-S3 - CircuitPython 715 | 0x82C3 | LILYGO T-Dongle-S3 - UF2 Bootloader 716 | 0x82C4 | Generic Red ESP32-S2-WROOM with Type-C - CircuitPython 717 | 0x82C5 | Geekble Geekble Nano ESP32-S3 - Arduino 718 | 0x82C6 | Geekble Geekble Nano ESP32-S3 - CircuitPython 719 | 0x82C7 | Geekble Geekble Nano ESP32-S3 - UF2 Bootloader 720 | 0x82C8 | Heltec Vision Master E290 - UF2 Bootloader 721 | 0x82C9 | Heltec Vision Master E290 - CircuitPython 722 | 0x82CA | Heltec Vision Master E290 - Arduino 723 | 0x82CB | METADOX Soundproof Mask Headset USB - ESP32-S3 724 | 0x82CC | EVO X1E 725 | 0x82CD | WERMA Signaltechnik GmbH + Co. KG - LineLIGHT Fusion Smart 726 | 0x82CE | Waveshare ESP32-S3-Touch-LCD-2 - CircuitPython 727 | 0x82CF | Waveshare ESP32-S3-Touch-LCD-2 - UF2 Bootloader 728 | 0x82D0 | SHED Makerspace Access Control Core (ESP32 S2) 729 | 0x82D1 | senseBox-eye ESP32-S3 - Arduino 730 | 0x82D2 | senseBox-eye ESP32-S3 - CircuitPython 731 | 0x82D3 | senseBox-eye ESP32-S3 - Uf2 Bootloader 732 | 0x82D4 | LILYGO T-LoRa-Pager - Arduino 733 | 0x82D5 | LILYGO T-LoRa-Pager - CircuitPython/MicroPython 734 | 0x82D6 | LILYGO T-LoRa-Pager - UF2 Bootloader 735 | 0x82D7 | Glydr Galactic Holdings Inc - Glydr™ 736 | 0x82D8 | DanioVision Observation Chamber - Noldus Information Technology BV 737 | 0x82D9 | Elecrow ThinkNode M2 - Arduino 738 | 0x82DA | Elecrow ThinkNode M2 - CircuitPython/Micropython 739 | 0x82DB | Elecrow ThinkNode M2 - UF2 Bootloader 740 | 0x82DC | Unexpected Maker EDGES3 - Arduino 741 | 0x82DD | Unexpected Maker EDGES3 - CircuitPython/MicroPython 742 | 0x82DE | Unexpected Maker EDGES3 - UF2 Bootloader 743 | 0x82DF | Unexpected Maker SQUiXL - Arduino 744 | 0x82E0 | Unexpected Maker SQUiXL - CircuitPython/MicroPython 745 | 0x82E1 | Unexpected Maker SQUiXL - UF2 Bootloader 746 | 0x82E2 | Dilon Tech Probe (ESP32 S3) 747 | 0x82E3 | Work Louder - Knob v1 - ISO 748 | 0x82E4 | Domino4 - CWS - Springbot (ESP32-S2) - UF2 Bootloader 749 | -------------------------------------------------------------------------------- /check-file-format.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check a file in this repo for sanity. Used for CI to quickly highlight 4 | # errors that aren't easy to spot in a diff (e.g. 0xB101 instead of 0x8101) 5 | # Written in Bash because of reasons. 6 | 7 | #Check command line args. We need two. 8 | if [ -z "$2" ]; then 9 | echo "Simple pid file sanity checker thing" 10 | echo "Usage: $0 file_to_check starting_pid" 11 | exit 1 12 | fi 13 | 14 | #Read into file descriptor 6. 15 | exec 6< $1 16 | 17 | #skip header 18 | while read l <&6 && ! [ "$l" = 'PID | Product name' ]; do 19 | : 20 | done 21 | 22 | #See if the lines a. have a '| desc' bit that is not zero, and if they 23 | #start with the next PID in order. 24 | pid=$(($2)) 25 | # https://stackoverflow.com/questions/4165135/how-to-use-while-read-bash-to-read-the-last-line-in-a-file-if-there-s-no-new 26 | DONE=false 27 | until $DONE; do 28 | read l <&6 || DONE=true 29 | if [ -n "$l" ]; then 30 | #Split the line into pid and desc 31 | rpid="${l% |*}" 32 | desc="${l#*| }" 33 | 34 | #Check if there is a description. This also errors out when there is no | char. 35 | if [ -z "$desc" ]; then 36 | echo "Malformed line: '$l'" 37 | exit 1 38 | fi 39 | 40 | # Check PID validity 41 | expect=`printf "0x%04X" $pid` 42 | if [ "$rpid" != "$expect" ]; then 43 | echo "Malformed line: '$l'" 44 | echo "Expected pid $expect, got pid $rpid" 45 | exit 1 46 | fi 47 | #OK, next PID. 48 | pid=$((pid+1)); 49 | fi 50 | done 51 | 52 | #See if we parsed any lines at all. 53 | if [ "$pid" = $(($2)) ]; then 54 | echo "Error: No entries in file?" 55 | exit 1; 56 | fi 57 | 58 | #All OK. 59 | exit 0 60 | 61 | --------------------------------------------------------------------------------