Fully Wireless · Volume 1

The Fully Wireless Gun — A Pack Inside, a Radio Out, Nothing on the Floor

What the fully wireless architecture is, what has to cross the air in each direction, what it changes inside the gun and at the PC, which guns already work this way, and where the first trial stands

A recoil light gun needs two things from outside itself: a link to whatever runs the game, and the energy to throw a solenoid’s plunger several times a second. The fully wired gun takes both down one cable. The wireless-power-only gun moves the energy into a pack in the magazine and keeps a thin USB lead for data. The fully wireless gun cuts that last lead: the pack runs everything, and a 2.4 GHz radio carries the data to a small receiver at the PC. Nothing crosses the floor.

That last step is the one most builders ask for and the one with the most new engineering in it. The pack and its protection are already designed in LiPo Batteries; what this dive adds is the radio, the receiver, the logic supply, the sleep path, and the numbers that say whether a radio is good enough to aim with.

1.1 What “Fully Wireless” Means

In this category, “fully wireless” means both the data and all the gun’s power are independent of any cable while it is being played:

  • All power from a pack in the gun. The 6S LiPo chosen in LiPo Batteries (LB-1, a GNB 6S 450 mAh pack, LB-2) feeds the 24 V-class recoil rail (D14) directly and the logic through a small buck regulator (LiPo Batteries Vol 3, section 3.7).
  • Data by radio, both ways. Aim and buttons go from the gun to a receiver; force-feedback commands from the game come back the other way. The PC must see the same devices it sees from a cabled gun, or the emulators, MiSTer and the hook programs stop working (Open-Source Firmware Vol 6).
  • A receiver at the PC. Either a dedicated USB dongle (one per gun), or the PC’s own Bluetooth radio. Volume 2 compares the two and Volume 3 the hardware for each.
  • USB kept for configuration and charging is still allowed. A fully wireless gun may still have a USB socket for flashing, for the configuration app, or (not proposed here, LB-5) for charging. The point is that it does not need it to play.

1.2 Three Architectures, Three Dives

Table 1 — 1.2 Three Architectures, Three Dives

Fully WiredWireless Power OnlyFully Wireless
DataUSB down the umbilicalUSB down a thin lead2.4 GHz radio to a dongle or the PC’s Bluetooth
Recoil power24 V brick down the umbilical6S pack in the magazine6S pack in the magazine
Logic powerUSB VBUSUSB VBUS (WP-1)The pack, through a buck
What the player feelsA cable at the magazineA thin leadNothing
What it adds to latency0 to 1 ms USB pollThe sameThe radio’s share (Volume 4)
New failure modesCable wearLead wear, a flat packA flat pack, a dropped link, interference, pairing
First build?Yes (D35’s printed MP7)NextA trial now (D25), a design later

The three dives share their parts deliberately. The pack, its protector and the LM5060 rail switch are the LiPo dive’s; the rule that a brick and a pack never share the 24 V rail is Wireless Power Only’s WP-3; the solenoid stages are Solenoid Recoil’s. This dive links to them and adds only what the radio changes.

1.3 The System, Block by Block

Figure 1 — The fully wireless light gun as one system. Inside the printed MP7 shell, the 6S pack passes through its fuse, protector and LM5060 rail switch to the 24 V-class rail that feeds the recoil, ejectio…
Figure 1 — The fully wireless light gun as one system. Inside the printed MP7 shell, the 6S pack passes through its fuse, protector and LM5060 rail switch to the 24 V-class rail that feeds the recoil, ejection-port and rumble stages one at a time, and through a buck regulator to the 5 V logic. The gun controller reads the IR camera and inputs and talks to a 2.4 GHz radio; route A is an ESP32-S3 running the community port, route B the Pico fork with a Nordic nRF54L15 radio bridge. Across the air, a USB dongle, one per gun, presents the gun to the PC as a mouse, keyboard, gamepad and serial port. The ESP32 port's optional wireless pedal talks to the gun, not the dongle. Own work.

Reading the figure from the pack outwards:

  1. The pack and its protection are unchanged from the wireless-power-only gun: a fuse, two stacked BQ77905 protectors (LB-3) and an LM5060 rail switch with a 60 V N-FET (LB-4). LiPo Batteries Vol 4 designs them.
  2. The 24 V-class rail feeds the regulated DRV8251A stages (D13), fired one at a time (D16). The radio does not touch it, except that its current pulses are the main threat to the radio’s supply (Volume 5).
  3. The logic rail is new to this architecture: a buck from the pack to 5 V, into the controller’s VSYS. LiPo Batteries sized the part (the Pololu D36V6F5); Volume 5 arranges it, adds the sleep path and puts numbers on what each radio costs.
  4. The gun controller and the radio. Two routes are worth building (Volume 3). Route A is the OpenFIRE ESP32-S3 port as released, the trial decided in D25. Route B keeps the Pico and the private OpenFIRE fork (D10) and adds a Nordic radio as a bridge; the Nordic boards already on hand from other work (D38) make it cheap to try.
  5. The dongle is the gun’s USB face. It enumerates as the same composite device a cabled gun is, carries the serial channel for force feedback, and in the ESP32 port even copies the gun’s USB identity (Volume 6).
  6. The PC sees nothing new. That is the requirement that rules out most of the shortcuts (Volume 2).

1.4 What Has to Cross the Air

A cabled OpenFIRE gun is one USB device carrying two conversations (Open-Source Firmware Vol 6, 6.1). A wireless link must carry both.

Table 2 — 1.4 What Has to Cross the Air

DirectionWhatRate and sizeTolerance to loss
Gun to PCAbsolute-mouse, keyboard and gamepad HID reportsOne camera update every 4.8 ms (209 Hz); a few to a few tens of bytes eachHigh for position: the next report replaces a lost one 4.8 ms later. Button state is repeated in every report, and buttons are debounced over 15 to 20 ms, so a press spans three or more reports
PC to gunSerial force-feedback commands (S, E, F0x1, M0x9 and so on)Bursts of a few bytes when the game fires or changes modeLow: a lost F0x0 leaves the solenoid on until the firmware’s 2 s cut-off; a lost M0x9 leaves MiSTer without its mode
Gun to PCConfiguration traffic (the App or WebApp)Occasional, largerMust be reliable; not time-critical
Pedal to gun (ESP32 port only)Pedal state and a keep-aliveA keep-alive every 69 ms; 200 ms timeoutThe gun drops the pedal after a missed keep-alive or two

Two consequences shape everything after this volume. Position data wants freshness, not reliability: the right behaviour on a lost packet is to send the newest report, not to queue the old one. Serial commands want reliability, not speed: they are rare, short and must arrive. A link design that treats both the same, either queuing everything or dropping anything, gets one of them wrong. The ESP32 port’s dongle handles the first correctly: its USB task sends the newest pending report of each type and drops any older one it never sent (Volume 3).

The 2 s figure is OpenFIRE’s SERIAL_SOLENOID_MAXSHUTOFF (Open-Source Firmware Vol 6, 6.8). On a cable it is a backstop for a misbehaving game; over a radio it is also the backstop for a lost “off”. The regulated stage and the coil’s thermal limit (Solenoid Recoil Vol 4) are what stop a lost packet becoming a cooked coil, and on battery the firmware’s temperature cut-off is a primary protection, not a backstop (LiPo Batteries Vol 3).

1.5 What Changes Inside the Gun

Against the wireless-power-only gun, which already carries the pack:

  • The logic moves onto the pack. That brings in a buck regulator, a way to switch the logic off (nothing unplugs it now), and the USB rule that a self-powered device must not drive D+ when no host is present. Wireless Power Only Vol 3, 3.3 found that TinyUSB’s RP2040 driver forces VBUS detection on and enables the D+ pull-up at boot regardless of any host; a Pico-based wireless gun that keeps a USB socket for configuration inherits that and needs the same fork fix (GPIO24 VBUS sense). The ESP32 port has a related rule of its own: a gun that finds a USB data cable at power-on “plays wired and switches the radio off”. Whether the ESP32-S3’s USB driver keeps D+ quiet with no host present was not checked; it is a bench item (Volume 6).
  • A radio and its antenna go inside a printed shell, next to a solenoid. Both the ESP32 port and the Raspberry Pi datasheets warn that wires and metal near the antenna cut range; the port’s own troubleshooting list adds that thin solenoid power wires “can cause disconnections” and asks for at least 24 AWG. Volume 5 explains why (a 2.5 A pulse on a long, thin lead browns out the receiver’s supply) and where the antenna goes.
  • Somewhere to switch it off. The PICON-AS reference build below uses a slide switch; Volume 5 proposes a soft power latch on the LM5060’s enable pin.
  • The base plate loses its connector. With no cable there is no GX plug at the magazine (D31 applies to the wired gun); the plate can carry the pack’s release and vent instead (LiPo Batteries Vol 6).

And at the PC, a dongle per gun, each in a USB port, ideally on a short extension so it sits in view of the player rather than behind a metal case (Volume 4).

1.6 Wireless Light Guns That Already Exist

Evidence only: what has been published, read on 19 October 2026.

The Wii Remote is the best-known wireless camera-in-gun controller, whether in a Wii Zapper shell or bare. It is built around a Broadcom BCM2042 Bluetooth chip and “uses (and, at times, abuses) the standard Bluetooth HID protocol to communicate with the host”, with a 128 × 96 camera whose processor reports tracked points at 1024 × 768 (WiiBrew). It proved, two decades ago, that the architecture works for casual play on a battery. It also shows the cost: a Classic Bluetooth link to a host that was designed for it, and no recoil.

On PC today, the Batocera project’s light-gun table lists the Wiimote (“Bluetooth”; “the Wiimote itself is wireless (most other light guns are wired)”), the Mayflash DolphinBar (marked “NOT RECOMMENDED, UNSUPPORTED AND OBSOLETE”), and one commercial dongle gun, the XGunner: infrared, “Wireless 2.4GHz with a USB dongle”, about $125, with a solenoid that has “burst fire and single/autofire” modes. No maker page for it was found, so its battery, link and latency are unknown. Every other gun in that table, Sinden, GUN4IR, AimTrak and Retro Shooter among them, is wired.

In the open-source world, the reference is the OpenFIRE ESP32-S3 port’s own build, PICON-AS, by Alessandro Satanassi, the port’s author.

Figure 2 — The OpenFIRE ESP32 port's cover image: the PICON-AS printed light gun beside an ESP32-S3 USB dongle in a clear case with an OpenFIRE label, in front of a monitor showing Duck Hunt. It is a promotio…
Figure 2 — The OpenFIRE ESP32 port's cover image: the PICON-AS printed light gun beside an ESP32-S3 USB dongle in a clear case with an OpenFIRE label, in front of a monitor showing Duck Hunt. It is a promotional image from the project, not a bench photograph. Photo: Alessandro Satanassi, OpenFIRE-Firmware-ESP32 repository.
Figure 3 — The PICON-AS parts map from the port's documentation. Essential: a trigger, a DFRobot SEN0158 or Wii-class camera and an ESP32-S3 board. Optional: buttons, display, joystick, rumble, NeoPixel, and …
Figure 3 — The PICON-AS parts map from the port's documentation. Essential: a trigger, a DFRobot SEN0158 or Wii-class camera and an ESP32-S3 board. Optional: buttons, display, joystick, rumble, NeoPixel, and a 12 V solenoid with its MOSFET module, jack, TMP36 and switch. The battery option, bottom right, is one 21700 or 18650 Li-ion cell of at least 10 A, an Adafruit bq25185 charger with a 5 V boost, a slide switch, and an MP3429 step-up to 12 V for the solenoid, with a path-control board choosing between battery and the 12 V jack. Image: Alessandro Satanassi, OpenFIRE-Firmware-ESP32 lightgun documentation.

PICON-AS is worth reading closely because it is the one complete, published, battery-and-dongle light gun. Its hardware page (read 19 October 2026) specifies:

Table 3 — PICON-AS is worth reading closely because it is the one complete, published, battery-and-dongle light gun. Its hardware page (read 19 October 2026) specifies

BlockPICON-ASThis project
ControllerESP32-S3-DevKitC-1 N16R8 recommended (“the most powerful antenna”); Waveshare ESP32-S3-Pico as a smaller alternative with “a smaller antenna and less range”Route A uses the same boards; route B keeps the Pico
CellOne 21700 Li-ion, 3.7 V, at least 10 A; Molicel M50A and Samsung 58E namedOne 6S LiPo (LB-1)
Charging and 5 VAdafruit bq25185 charger with 5 V boost; a 12 V to 5 V buck feeding it, because without it “the board got too hot while charging”Out of the gun (LB-5)
Solenoid supplyMP3429 boost module, 3.7 V to 12 V, enabled through a 2N7000The pack itself at 18 to 25 V (D14)
SolenoidJF-1039B 12 V; the page notes the label says 400 mA but it “actually draws 2 A”Regulated DRV8251A stages (D13)
SwitchesA main power slide switch and a recoil-enable slide switchA soft latch (Volume 5)

The contrast is instructive. A single cell plus a boost is the smallest battery gun anyone can build, and it confirms the warning in Power Supplies Vol 1 about solenoid labels. But a 3.7 V cell boosted to 12 V draws roughly 7 A from the cell for a 2 A, 12 V pulse, which is why PICON-AS insists on a 10 A cell and its own warning against small connectors. The 6S pack in this project delivers the solenoid voltage directly at a fraction of that current (LiPo Batteries Vol 2 chose 6S for exactly this). PICON-AS publishes no battery-life figure.

1.7 Where the Project Stands: D25, D30 and D38

Three owner decisions frame this dive:

  • D25 (18 October 2026): try the ESP32-S3 port’s wireless dongle. The port, its dongle and the parts to buy are introduced in Open-Source Firmware Vol 6, 6.12. This dive does not repeat that; it adds what reading the port’s source found (Volume 3) and the bench method (Volume 6).
  • D30 (19 October 2026): run it as a separate track. The trial uses the port as released; the private fork’s fixes are not carried across. Its only question is whether the radio link is good enough to play on.
  • D38 (19 October 2026): Nordic Bluetooth LE boards are already on hand from other work, models still to be confirmed, the nRF54L15 family the likely set. The open question is whether they are a better route than the ESP32. Volume 3’s answer: they buy the project something the ESP32 port cannot (the Pico fork stays, the radio costs a hundredth of the power, and one candidate module’s FCC grant covers a hand-held device), at the price of writing a radio bridge and a dongle firmware. Volume 6 proposes how to find out cheaply, with Nordic’s own samples and no light-gun code at all.

The status on 19 October 2026: the port is at 7.0.0 release candidate 5 (16 October), and the last full release is 6.2.1 (30 June 2026). Nothing has been bought or measured for the wireless gun.

1.8 What This Dive Covers, and What It Leaves to Others

Table 4 — 1.8 What This Dive Covers, and What It Leaves to Others

VolumeCovers
1This overview
2The radio links compared with numbers: ESP-NOW, Bluetooth LE HID, Nordic’s ESB and LLPM, Bluetooth’s new Shorter Connection Intervals, and the 2.4 GHz band they share
3The hardware routes: the ESP32 port as built, the Nordic boards, the Pico W and Pico 2 W; why this, and why not the others
4Latency against the wired gun, packet loss and interference in a house, several guns at once, and pairing
5Power: the logic rail, what each radio costs in hours of play, sleep and wake, and keeping the radio alive through a solenoid pulse
6The dongle’s USB identity, FCC Part 15 for a kit, the bench plan on the ADP3450, costs, and the proposed decision rows

Left to other dives, and linked rather than repeated: the pack, its protection and charging (LiPo Batteries); the brick-or-pack rule and the USB back-feed rules (Wireless Power Only); the firmware’s HID and serial behaviour (Open-Source Firmware); how the private fork is run (Our Firmware); the gun’s own share of latency (Aiming Maths and Calibration Vol 7); the IMU, which a wireless gun reads exactly as a wired one does (Positional and Inertial); and the kit’s licensing, trademarks and USB vendor ID (Licensing, IP and Kits).

Sources

  1. Alessandro Satanassi, OpenFIRE-Firmware-ESP32, README, dongle/README.md, lightgun/README.md, lightgun/src/README.md, pedal/README.md, shared_lib/OpenFIRE_Wireless/ESP32/OpenFIRE_Wireless.cpp, releases list — https://github.com/alessandro-satanassi/OpenFIRE-Firmware-ESP32 (read 2026-10-19).
  2. Alessandro Satanassi, OpenFIRE PICON-AS ESP32, home and “Hardware & Wiring” pages — https://alessandro-satanassi.github.io/OpenFIRE-PICON-AS-ESP32/ (read 2026-10-19).
  3. Batocera wiki, emulators:lightgun_games — https://wiki.batocera.org/emulators:lightgun_games (read 2026-10-19).
  4. WiiBrew, Wiimote — https://wiibrew.org/wiki/Wiimote (read 2026-10-19).

Comments (0)

  1. Loading…

Comments are held for moderation — nothing appears until approved.