Fully Wireless · Volume 6

The Dongle's Identity, FCC Part 15, the Bench Plan and the Decisions

What USB identity a wireless gun's receiver carries and why decision D24 follows it; what the FCC's Part 15 means for a hand-held radio gun built at home and for one sold as a kit; eleven bench tests on the ADP3450; what the trial costs; and the rows proposed for the decision log

6.1 The Dongle’s USB Identity

A wireless gun has two USB faces: its own socket, used for flashing and configuration, and the dongle, which is what the PC sees during play. MiSTer, the OpenFIRE App and the hook programs find a gun by vendor ID 0xF143 and the “OpenFIRE” name (Open-Source Firmware Vol 6, 6.5). So whatever identity the dongle carries decides whether the wireless gun works with them, and whether a kit’s dongle is lawfully labelled.

The ESP32 port answers it neatly. Its dongle copies the gun’s vendor ID, product ID, manufacturer and product strings at pairing, and uses the gun’s radio MAC address as its USB serial number (Volume 3, 3.3). Three consequences:

  • A stock-firmware gun’s dongle enumerates as 0xF143 / “OpenFIRE”, so MiSTer and the App find it, and the player presets P1 to P4 survive (each gun’s product ID travels to whichever dongle it pairs with).
  • Decision D24 follows automatically. D24 keeps 0xF143 for now and requires an assigned vendor ID before any kit sale; FW-7 proposes asking TeamOpenFIRE first, then a product ID under Raspberry Pi’s 0x2E8A (Our Firmware Vol 6). In the clone design, changing the gun’s vendor ID changes the dongle’s with it. The dongle must not carry an identity of its own that contradicts the gun’s.
  • A COM port that stays put. The serial number is fixed per gun, so Windows assigns the same COM number each time, which MAMEHooker’s player-to-COM rule needs (Open-Source Firmware Vol 6, 6.9).

Route B should copy the design, not invent another: the Nordic dongle takes its identity from the gun over the air at pairing (WL-9). A note on the 0x2E8A option: a product ID under Raspberry Pi’s vendor ID is for products built on Raspberry Pi silicon. A Nordic dongle presenting a Raspberry Pi vendor ID is a question to put to Raspberry Pi with the FW-7 request, not an assumption.

6.2 FCC Part 15: What a Radio Gun Is

Not legal advice; the kit-level analysis belongs to Licensing, IP and Kits. What follows is what the rules and the grants say, read on 19 October 2026.

A cabled light gun is an unintentional radiator under Part 15: a digital device whose emissions are a by-product. A wireless gun is also an intentional radiator: it transmits on purpose, in the 2.4 GHz band, under the rules for digital transmission systems (the grants below are all “15C”, “Digital Transmission System”). An intentional radiator sold in the US needs certification, an FCC ID, before it is marketed.

The usual way a small product meets that is a pre-certified module. Section 15.212 lets a radio module carry its own grant if it meets a list of conditions (its own shielding, buffered data inputs, its own supply regulation, a permanently attached or unique antenna, testing on its own, a label or electronic display of its FCC ID) and if it “must comply with any applicable RF exposure requirements in its final configuration”. The host product then carries a label referring to the module’s FCC ID, follows the module maker’s integration instructions, and is still tested and authorised as a digital device for its own unintentional emissions.

The phrase that matters for a gun is “in its final configuration”: RF exposure is assessed for how the device is used. A module granted for use at least 20 cm from people is a mobile configuration; a device held in the hand is portable, and the module’s grant does not cover it without further evaluation.

6.3 The Grants Behind Each Board

Table 1 — 6.3 The Grants Behind Each Board

BoardRadioFCC IDWhat the grant saysIn a hand-held gun
ESP32-S3-DevKitC-1ESP32-S3-WROOM-1 module2AC7Z-ESPS3WROOM1 (original grant 21 January 2022)Single modular; Wi-Fi 2412 to 2462 MHz, 0.3597 W conducted; Bluetooth LE 2402 to 2480 MHz; “Separate approval is required for all other operating configurations, including portable configurations”Not covered without further approval
LILYGO T-Dongle S3; Waveshare ESP32-S3-Pico, -ZeroBare ESP32-S3 chip, board antennaNone read—No grant found; personal builds only
Raspberry Pi Pico 2 WCYW434392ABCB-PICO2W (25 November 2024)Single modular; Wi-Fi 2412 to 2462 MHz, 0.3112 W; Bluetooth 2402 to 2480 MHz, 0.0034 W; antenna “at least 20 cm from all persons”Not covered without further evaluation
Seeed XIAO nRF54L15nRF54L15Z4T-XIAONRF54L15 (31 July 2025)Single modular; 2402 to 2480 MHz, 0.0049 W; “Device meets SAR Exclusion for Portable use.”Covered as a portable device, subject to the co-location condition
Raytac MDBT50Q (nRF52840 module)nRF52840SH6MDBT50Q (2018; changes 2020)Single modular (limited on one change); 2402 to 2480 MHz, 0.0066 W; “This is a portable device”A certified basis for a kit dongle; whether the MDBT50Q-RX on Adafruit’s USB key is covered was not confirmed
Nordic nRF52840 DonglenRF52840None foundNordic staff on Nordic’s forum: a development tool, “compliant, but it is not certified”Bench only

Grant data from the Raspberry Pi grant document and fccid.io summaries, read 19 October 2026.

Two observations decide the kit route. First, the only gun-side radio read here whose grant covers hand-held use is the Nordic module. Second, the low-power Bluetooth-class radios (a few milliwatts) are the ones that clear the portable exclusion easily; the Wi-Fi radios, at about 0.3 W, are the ones whose grants exclude it. A light gun does not need 0.3 W to reach a dongle three metres away, and the ESP32 port’s 17 dBm (50 mW) is still an order of magnitude above a Nordic part at 0 to 8 dBm.

6.4 Channels 12 and 13

Both Wi-Fi grants above list centre frequencies 2412 to 2462 MHz, Wi-Fi channels 1 to 11. The ESP32 port’s gun sets its country to “IT” with channels 1 to 13, with the comment that this is needed “so channels 12 and 13 work”; the dongle’s scan covers all thirteen and picks the quietest. In a US house, where most access points stay on 1 to 11, channels 12 and 13 are often the quietest, so the scan will tend to choose them. Operating there is outside the frequency range on the module’s US grant.

For the D25 trial this is a thing to record (W2), not a reason to stop: it is a home bench, one or two units. For anything given to anyone else, the channel list must be limited to 1 to 11 in the US (WL-4). In the port that is a compile-time change (its country table and the scan’s channel range) to a firmware the project has agreed not to maintain (D30), which is one more reason the kit route is not the port.

6.5 Built at Home, Sold as a Kit

Built at home. Section 15.23 exempts from authorisation devices that are not marketed, are “not constructed from a kit”, and are built in quantities of five or fewer for personal use; the builder is still expected to meet the technical standards as closely as practicable, and section 15.5’s no-harmful-interference condition applies. Guns built by Jeff and Michael for their own use, on any of the boards above, fall here, provided they do not interfere with anyone, which is a further reason to keep to channels 1 to 11.

Sold as a kit. The exemption excludes kits explicitly, and a kit is marketed. A kit that contains a transmitter therefore needs that transmitter to be authorised. The practical route is: a pre-certified module whose grant covers the way the gun is used (portable), mounted as its integration instructions say; the kit’s own label referring to the module’s FCC ID; the kit tested as a digital device under Part 15 Subpart B; and the same for the dongle. On that reading:

  • A Pico-fork gun with a XIAO nRF54L15 radio and an MDBT50Q-class dongle is a credible kit (WL-7).
  • An ESP32-S3 gun on a WROOM-1 module would need further RF-exposure approval for portable use; one on a bare-chip board would need a grant of its own.
  • Shipping no radio, and letting the buyer add one, does not obviously escape the rules for a product designed around one; that is a question for Licensing, IP and Kits.

6.6 The Bench Plan

Figure 1 — The latency bench on the ADP3450. The gun under test has its trigger contact wired to a digital input and, in a test build, a debug pin that pulses when a report is handed to the radio; the dongle …
Figure 1 — The latency bench on the ADP3450. The gun under test has its trigger contact wired to a digital input and, in a test build, a debug pin that pulses when a report is handed to the radio; the dongle has a debug pin that pulses when the report is written to the USB endpoint; the PC runs a test page that flashes white on mouse-down, read by a photodiode taped to the screen. DIO 0 is the trigger (the start), DIO 1 and DIO 2 the two debug pins, and scope channel 1 the photodiode (the end of the chain). Five cases: the cabled gun as control, the ESP32 port and dongle at sofa distance, the same inside the shell with the body in the path, the same with Wi-Fi saturated on the channel, and a Nordic ESB or LLPM pair with no light-gun code. Own work.

All on the Analog Discovery Pro ADP3450 and the bench’s programmable supplies. Tests W1 to W4 and W8 to W11 need no firmware change to the ESP32 port, which keeps D30’s “as released”. W3 and W5 use test builds or Nordic’s samples.

Table 2 — 6.6 The Bench Plan

#TestMethodPass, or what it decides
W1Dongle identitylsusb -v on Linux (or USB Device Tree Viewer on Windows) with a paired stock gun; and with the dongle aloneVID 0xF143, “OpenFIRE”, serial = gun MAC; nothing enumerates before pairing
W2Channel chosenRead the T-Dongle’s LCD after each plug-in, ten plug-ins, morning and eveningRecord how often 12 or 13 is chosen (Section 6.4)
W3Link latency, gun to hostTest builds toggle a pin at hand-off to the radio and at the USB write; DIO 1 to DIO 2, 2,000 reportsMean and tail against Volume 4’s 0.8 ms / 1.3 ms
W4End-to-end, cabled against wirelessTrigger on DIO 0, photodiode on CH1, a test page that flashes on mouse-down; 500 shots cabled (the same ESP32 gun on its USB cable), 500 through the dongleThe difference of the two distributions is the link’s real cost to the player; expected about +0.3 ms mean
W5Nordic link aloneNordic’s LLPM sample on an nRF52840 Dongle and an nRF54L15 DK (it reports latency); ESB transmitter and receiver samples with a pin toggled at send and at receive, DIO 0 to DIO 1, 10,000 packetsLatency and loss of route B’s link before any light-gun code (WL-2)
W6PowerGun on the programmable supply at 22.2 V through the buck, current logged: idle, aiming, autofire; ESP32 gun and Pico + XIAO bridgeReplaces Volume 5’s 0.80 to 0.88 W and 0.51 W estimates
W7Brown-out under recoilRadio board 3.3 V and coil current on two channels during full-rate autofire, with a thin then a 24 AWG solenoid leadNo dip that resets the radio; no link drop
W8Loss and bursts in the roomLog the absolute-mouse events with timestamps on Linux (evdev) at 209 Hz; count gaps over 10 ms. Cases: 2.5 m clear; gun in the shell, held; Wi-Fi saturated on the same channel by a file transfer; microwave runningLoss rate and longest burst per case (Volume 4’s 5 % placeholder)
W9Force-feedback commandsA script sends 1,000 F0x2x1 single-pulse commands through the dongle’s serial port; count coil pulses on the ADP3450Command loss rate; must be zero in the clear case
W10Antenna positionLog RSSI at the dongle (or a TinySA at its position) for each place in Volume 5, 5.7Choose the position
W11D+ with no hostESP32 gun on its pack, USB lead to a PC that is switched off; measure D+ to groundWhether the ESP32-S3 shares the RP2040’s forced pull-up (Wireless Power Only Vol 3, 3.3)

6.7 What It Costs

Prices from the seller’s own page on 19 October 2026 unless marked; the pack, protection and charger are LiPo Batteries’ and are not repeated.

Table 3 — 6.7 What It Costs

ItemForPrice and source
ESP32-S3 dongle: LILYGO T-Dongle S3 (sold out), or Waveshare ESP32-S3-ZeroRoute A trial$11.99 LILYGO; $5.49 to $7.99 (Open-Source Firmware Vol 6)
ESP32-S3 gun board: DevKitC-1 N16R8 (P-RE23) or Waveshare ESP32-S3-PicoRoute A trialESP32-S3-Pico $8.99 to $9.99 (Open-Source Firmware Vol 6); DevKitC-1 per Reference Electronics Vol 2
Seeed XIAO nRF54L15Route B gun-side radio$9.99, Seeed
nRF52840 DongleRoute B bench dongle; W5At order time (distributor pages refused automated reading)
nRF54L15 DKW5, if not already on hand (D38)About $39 by a search summary; at order time
Pololu D36V6F5 buckLogic rail$5.95, Pololu (LiPo Batteries Vol 7)
USB 2.0 extension, shortDongle placementOn hand
BPW34-class photodiodeW4On hand or a few dollars

The D25 trial costs about $15 to $22 in boards. Route B’s bench costs one XIAO and one nRF52840 Dongle if the Nordic boards on hand do not already include them.

6.8 Proposed Decision Rows

All Proposed; none decided.

Table 4 — 6.8 Proposed Decision Rows

#QuestionOptionsProposedWhy / why notWhere
WL-1The wireless trialESP32 port + dongle; Nordic samples; Pico WESP32 port + dongle as released (D25, D30), tests W1 to W4, W7 to W11Only route that plays today; answers “good enough?”Vols 3, 6
WL-2The kit’s wireless routeESP32 port; Pico fork + Nordic bridge; Nordic-only port; Pico WPico fork + XIAO nRF54L15 bridge over UART + nRF52840-class dongle; bench the link first (W5)Keeps D10 and D2; ~0.01 W; portable grant. ESP32: not the fork, ~0.35 W, grant excludes portable. Nordic-only: a port of the firmware. Pico W: no serial, 20 cm grantVol 3
WL-3Link protocol for route BESB; LLPM; BLE + SCI; BLE HID to the PCESB with force feedback in ACK payloads; LLPM the alternativeESB: no interval, ready return channel. LLPM: 0 to 1 ms more but hopping and bonding built in. SCI: needs both ends anyway. BLE to PC: no serial, 7.5 ms or moreVol 2
WL-4Wi-Fi channels in the US1 to 13 as the port ships; 1 to 111 to 11 for anything beyond the personal benchBoth module grants read cover 2412 to 2462 MHz onlyVol 6
WL-5Logic supplyBuck before or after the LM5060; into VBUS or VSYSBuck after the LM5060, into VSYS through an ideal diode (WP-8 parts); the fork’s VBUS-sense fix if a USB socket is keptOff means off; UVLO protects the pack; no back-feedVol 5
WL-6On and offSlide switch; soft latch on LM5060 EN with auto-offSoft latch with a firmware auto-off (route B); slide switch on the ESP32 trialA cable-less gun left on is flat in 7 to 11 hoursVol 5
WL-7Radios in a kitBare-chip boards; WROOM-1 module; Pico 2 W; XIAO nRF54L15; MDBT50QOnly modules whose grant covers portable use (XIAO nRF54L15 gun side, MDBT50Q-class dongle); bare-chip ESP32 boards for personal builds only§15.23 excludes kits; portable exposureVol 6
WL-8Several gunsOne dongle per gun; one dongle for fourOne dongle per gunEach gun stays its own USB device, as MiSTer and the hook programs expectVol 4
WL-9Dongle USB identityDongle’s own; cloned from the gunCloned from the gun, as the ESP32 port does; D24 applies through the gun’s firmwareP1 stays P1; one place to change the VIDVol 6

6.9 Open Questions

  1. Which Nordic boards are on hand (D38)? Model and board numbers. If there is an nRF52840 Dongle or DK among them, W5 can run with no purchase.
  2. Adopt WL-2 as the direction for a wireless kit, with the ESP32 trial (WL-1) as the “is it good enough” test?
  3. Would a kit ever include the wireless option? If not, WL-4 and WL-7 bind only personal builds.
  4. Soft power latch (WL-6): a separate power button, or a second pole on the trigger to wake the gun?
  5. Is a spare UART pair free on the kit-camera carrier for the radio bridge (Reference Electronics Vol 2’s pin budget)?

6.10 What Could Not Be Verified

  • The Nordic boards’ models (D38).
  • Prices of the nRF52840 Dongle and nRF54L15 DK (seller pages refused automated reading; a search summary gave about $39 for the DK).
  • FCC status of the LILYGO T-Dongle S3, Waveshare ESP32-S3 boards and the MDBT50Q-RX variant; the nRF52840 Dongle’s status is from Nordic’s forum, not a grant search.
  • ESP-IDF’s internal send and receive times; the PC’s Bluetooth LE interval and stack latency; whether the ESP32 port acknowledges serial bytes at the application level.
  • All of Volume 5’s power figures beyond the datasheets’ radio currents.
  • Whether the ESP32-S3’s USB driver keeps D+ quiet with no host (W11).
  • The commercial XGunner’s link, battery and latency (no maker page found).
  • Whether the carrier has a free UART for route B.

Sources

  1. Alessandro Satanassi, OpenFIRE-Firmware-ESP32, dongle/src/main.cpp, shared_lib/OpenFIRE_Wireless/ESP32/OpenFIRE_Wireless.cpp (read 2026-10-19).
  2. FCC grant, FCC ID 2ABCB-PICO2W, Raspberry Pi Trading Ltd, TCB Eurofins, 25 November 2024 — https://pip-assets.raspberrypi.com/categories/1090-approvals/documents/ (read 2026-10-19).
  3. FCC ID summaries, fccid.io: 2AC7Z-ESPS3WROOM1, Z4T-XIAONRF54L15, SH6MDBT50Q (read 2026-10-19).
  4. 47 CFR 15.23 and 15.212, Legal Information Institute, Cornell — https://www.law.cornell.edu/cfr/text/47/15.23, https://www.law.cornell.edu/cfr/text/47/15.212 (read 2026-10-19).
  5. Adafruit, nRF52840 USB Key w TinyUF2 Bootloader, product 5199 (read 2026-10-19).
  6. Nordic Semiconductor DevZone threads 39464 and 41155 (forum; secondary).

Comments (0)

  1. Loading…

Comments are held for moderation — nothing appears until approved.