Open-Source Light-Gun Firmware · Volume 1
The Landscape — Every Open and Closed Light-Gun Firmware, and What Its Licence Actually Says
SAMCO, Prow Enhanced, IR-GUN4ALL, OpenFIRE and its ESP32 port on one side; GUN4IR, Blamcon, Sinden, AimTrak and the RS3 Reaper on the other — with each licence quoted from the repository, not from a forum
A modern home light gun is a small camera in the barrel, a microcontroller, and a USB cable that tells the computer “the mouse is here, and the left button is down”. The camera looks at infrared emitters placed around the screen, or at a white border drawn on the screen itself; the microcontroller turns four bright dots into a point on the display; the computer never knows a gun is involved. Everything interesting about these guns lives in the firmware between the camera and the USB port, and in who is allowed to read, change and sell that firmware.
This volume surveys every firmware a builder is likely to meet in 2026 and puts them in one table. It is written for a specific build: a light gun that Jeff and his son Michael are putting together now, starting from the route Michael chose — OpenFIRE on a Raspberry Pi Pico with an IR camera in the barrel and four IR emitters at the screen. The other volumes take that route apart in detail: Volume 2 reads the source, Volume 3 the hardware the project defines, Volume 4 flashing, Volume 5 configuration and force feedback, Volume 6 the host side, and Volume 7 building it from source.
1.1 Why the licence comes first
A licence would normally be a footnote in a hardware survey. Here it decides the shortlist. The plan for this build is to prototype first, and kits may be sold later, so licences, trademarks and USB rules are treated as binding from the start. A kit can only carry firmware whose licence allows it to be redistributed, modified and sold, with obligations the seller can actually meet. A closed firmware that is free to download for personal use is a dead end for that plan however good it is to play with.
So every licence in this volume is quoted from the place that governs it: the LICENSE file in the repository, the GitHub licence metadata, the copyright header at the top of the source files, or the maker’s own terms page. Where those disagree with each other — and in this family of projects they do, more than once — both are given. What the disagreements mean in law is the subject of Licensing, IP and Kits; what they mean for a fork is the subject of Our Firmware. This volume records what the documents say.
1.2 The family tree

The open projects are one line of descent, and each says so. OpenFIRE’s README opens with its ancestry in a single sentence: it is the “Successor to IR-GUN4ALL, which is based on the Prow Enhanced fork, which in itself is based on the 4IR Beta ‘Big Code Update’ SAMCO project.” The source headers carry the same story: files in the OpenFIRE tree are copyrighted to Sam Ballantyne (2020, 2024), Mike Lynch (2021) and That One Seong (2024, 2025), and the camera library still carries DFRobot’s 2016 copyright line.
Two pieces of the tree were borrowed rather than inherited. The camera driver began as DFRobot’s own Arduino library for its IR positioning camera, and the maths that turns four camera points into a screen position is, by its own header, “Derived from Wiimote Whiteboard library … Ported from Johnny Lee’s C# WiiWhiteboard project (Warper.cs file)”. Johnny Lee’s 2008 Wii Remote whiteboard demonstration is the common ancestor of most four-point IR tracking on hobby hardware; IR Point Tracking covers the sensor and Aiming Maths and Calibration the theory. Volume 2 reads the code as OpenFIRE implements it.
The closed systems on the right of the tree share no code with the open line that this research could find. They do share a language: every one of them presents itself to the computer as a USB mouse, keyboard or gamepad, and most of them answer the same family of serial commands that MAMEHooker sends to fire a solenoid or light a lamp. That shared language is why a game set up for one gun usually works with another, and it is described in Volume 6.
1.3 SAMCO
SAMCO is Sam Ballantyne’s Arduino light gun, published on GitHub as samuelballantyne/IR-Light-Gun (repository created 3 June 2019). It ran on ATmega32U4 boards (the Pro Micro and Leonardo class, which can enumerate as a USB mouse natively) and on SAMD21/SAMD51 boards, with the DFRobot camera in the barrel. The repository holds three generations of the sketch — a two-emitter version (Samco_2IR), a four-emitter version (Samco_4IR) and the four-emitter beta known as the “Big Code Update” (Samco_4IR_Beta) that every later project forks — plus PDF wiring guides for the SAMCO 1.0, 1.1 and 2.0 carrier boards, the small PCBs that let a builder drop an Adafruit ItsyBitsy into a GunCon shell.
The README now says only that “Samco has been ported over to the Amazing OperFIRE project” (sic) and points to the TeamOpenFIRE organisation. SAMCO is finished as a separate project; its author is a credited OpenFIRE contributor, and his square-layout tracking and perspective code live on in OpenFIRE under his name.
Licence. This is the first place the documents disagree. The repository’s LICENSE file is the full text of the GNU General Public License, Version 3, 29 June 2007, and GitHub reports the repository as GPL-3.0. The source files themselves say otherwise: Samco.cpp and Samco_2.0_4IR.ino both carry “@copyright Samco … @copyright GNU Lesser General Public License”, with no version number. Sam Ballantyne is the copyright holder of both, so he is free to license his own code either way, and his later code in OpenFIRE is plainly LGPL; but a reader of the SAMCO repository alone sees a GPL-3.0 file and LGPL headers side by side.
1.4 SAMCO Prow Enhanced
Mike Lynch’s fork, Prow7/ir-light-gun (created 6 August 2021, last pushed 3 June 2024), is where the code grew up. Its README lists the improvements, and nearly every one survives in OpenFIRE: increased precision for the maths and the mouse position; “glitch-free” camera reads through a rewritten driver, DFRobotIRPositionEx; adjustable camera sensitivity; a faster I²C clock; optional averaging modes to reduce jitter; rewritten button handling (LightgunButtons); a five-button absolute mouse (AbsMouse5); multiple calibration profiles; and settings saved to flash on SAMD boards or EEPROM on the ATmega32U4. It supported the ItsyBitsy M0, M4 and RP2040 “or any SAMD21, SAMD51, or RP2040 dev board”, and states that “the ATmega32U4 is no longer officially supported.”
The camera driver’s README is the best single piece of engineering writing in the whole family and is worth reading in full. Lynch found that the DFRobot camera does not report positions atomically: the bytes of a position can change between the start and end of an I²C read, which explained Y values above 767 on a 768-line sensor and an apparent frame rate that rose as the I²C clock was slowed. His fix — read until two consecutive reads agree, three reads at most — revealed the camera’s true update rate of about 209 per second. That number is still the heartbeat of OpenFIRE (Volume 2).
Licence. The repository has no LICENSE file, and GitHub reports no licence. The source headers say “@copyright Samco … June 2020”, “@copyright Mike Lynch, July 2021”, “@copyright GNU Lesser General Public License”, again without a version.
1.5 IR-GUN4ALL
SeongGino/ir-light-gun-plus (created 28 October 2023, last pushed 22 June 2024) is a GitHub fork of Prow Enhanced by the developer who signs as That One Seong. Its own description is candid: “Arduino powered IR light gun - with force-feedback additions, MAMEHOOKER support, quality of life changes, and (possibly) dubious code quality!” It added solenoid and rumble feedback, the serial handoff that lets MAMEHooker drive the gun’s recoil from game events, and many of the pause-menu and button-mapping features, and it carried the sketch onto the RP2040 as the main target. It is the immediate parent of OpenFIRE and is superseded by it.
Licence. The repository’s LICENSE file is the GNU Lesser General Public License, Version 2.1, February 1999 — the first place in the line where the file and the headers agree.
1.6 OpenFIRE

OpenFIRE — “The Open Four Infa-Red Emitter Light Gun System” in the README’s own spelling — is the current form of the open line and the firmware this dive is about. It lives in the TeamOpenFIRE GitHub organisation as three repositories that work together:
Table 1 — OpenFIRE — "The Open Four Infa-Red Emitter Light Gun System" in the README's own spelling — is the current form of the open line and the firmware this dive is about. It lives in the TeamOpenFIRE GitHub organisation as three repositories that work together
| Repository | What it is | Licence (repository LICENSE file) | State on 2026-10-18 |
|---|---|---|---|
OpenFIRE-Firmware | The gun firmware, for RP2040 and RP2350 | GNU LGPL v2.1 | v6.2 “Long Bridge”, 19 April 2026; 166 stars; the default branch is identical to the v6.2 tag |
OpenFIRE-App | The desktop configuration and test app, Qt/C++, Windows and Linux | GNU GPL v3 | v3.0.3, 19 April 2026; last push 24 August 2026 |
OpenFIRE-Boards | One shared header of board names, pin presets and the serial command codes, compiled into both the firmware and the app | GNU GPL v3 (“either version 3 of the License, or (at your option) any later version”) | last push 12 July 2026 |
The firmware repository was created on 26 April 2024 and its contributor list is dominated by one person: of the commits GitHub counts, That One Seong has 721, Alessandro Satanassi (the ESP32 port’s author) 17, Prow7 7 and Sam Ballantyne 4. It is a one-maintainer project with a small, active community around it — which matters for anyone planning to depend on it, and is taken up in Our Firmware.
What it does, in the README’s words: solenoid and rumble force feedback with TMP36 temperature monitoring; “multiple IR layouts support, with realtime perspective-adjusted tracking for both double lightbar (recommended!) and Xwiigun-like diamond layouts”; output as keyboard, a “5-button ABS(olute Positioning) Mouse, and dual-stick gamepad w/ d-pad support”; drag-and-drop UF2 installation; settings stored on the board; the desktop app; the second RP2040 core used for input polling and serial handling while the first runs the camera; MAMEHooker, The Hook Of The Reaper and QMamehook for game-driven force feedback; an SSD1306 OLED for menus and life and ammo counters; and native MiSTer support, merged into the MiSTer main binary for the v6.0 release.
Its hardware requirements are short: an RP2040 or RP2350 board (the README recommends the Raspberry Pi Pico as “cheapest, most pins available”, the Adafruit KB2040, or the ItsyBitsy RP2040 for SAMCO carrier boards), the DFRobot IR Positioning Camera, SEN0158, and four IR emitters — “regular Wii sensor bars might work for small distances, but it’s HIGHLY recommended to use SFH 4547 LEDs w/ 5.6Ω (ohm) resistors.” Solenoid, rumble motor, switches, NeoPixels and the OLED are optional.
The README is also unusually direct about how it wants to be reused. Forks “made for the purposes of rebranding are heavily DISCOURAGED. All forks should maintain the OpenFIRE name as well as credits to its original authors (specifically That One Seong, Samuel Ballantyne (Samco), and Mike Lynch (Prow7)).” Products that ship OpenFIRE inside “should make its usage of OpenFIRE clear, as well as give appropriate credit”; the team asks commercial users to consider donating, and invites anyone planning “third-party commercial sales of OpenFIRE-enabled products (such as prebuilt light guns using its Firmware)” to raise it in the repository’s Discussions or by email. It closes the point with: “if you have been charged any amount to use OpenFIRE, you have been scammed and should demand your money back!” Those are requests and statements of intent from the authors, not licence terms; the licence terms are in the LGPL and GPL texts. Both matter to a kit seller, and 1.12 sets them side by side.
1.7 OpenFIRE for ESP32

alessandro-satanassi/OpenFIRE-Firmware-ESP32 (created 15 March 2025, pushed on the day this was written) is a port of OpenFIRE to the Espressif ESP32-S3, and it is the most active branch of the family in late 2026. Its README describes “a high-performance firmware port of the OpenFIRE lightgun project for the ESP32-S3, adding native wireless connectivity with ultra-low latency via ESP-NOW”: a USB dongle receives the gun’s data and presents “standard mouse, keyboard and gamepad devices, updated 209 times per second exactly as with the USB cable”, with up to four guns each on its own dongle. It installs from the browser through a Web Flasher, configures through a WebApp (which can also be served from the gun itself), and supports “Wii Cam / DFRobot SEN0158, PixArt PAJ7025R2 and the wide-angle PixArt PAJ7025R3” — the only member of the family to support a camera other than the DFRobot module and its Wii-sensor equivalents. It claims compatibility “with the original OpenFIRE firmware in everyday use: same features, same outputs to games and same serial commands”, and builds with PlatformIO rather than the Arduino IDE. Its LICENSE is LGPL-2.1.
For this build it matters twice: as the obvious starting point for the Fully Wireless architecture, and as a second, independent reading of the same codebase. The ESP32-S3 pin presets already sit in the shared OpenFIRE-Boards header, and the official App gained the ability to map a Wii camera clock pin on ESP boards in v3.0.2 “purely for the ESP fork users”. The TeamOpenFIRE firmware releases themselves ship RP2040 and RP2350 images only.
1.8 GUN4IR

GUN4IR is Jean-Baptiste Bongrand’s system, sold through his own shop (JB Game Lab, which the shop’s metadata places in Kiyose, Tokyo, pricing in euros). It is the system most often recommended to newcomers on forums and the one Michael’s brief set aside as “reported as not fully open source”. The maker’s own page is plainer than that: “It is NOT an open source project. … Any unauthorised and/or commercial use of the system or any of its parts is strictly prohibited”, over ”© Copyright 2019-2024 Jean-Baptiste Bongrand, All Rights Reserved”, and the name is a registered trademark.
The firmware and guides come with the GUN4IR DIY User License, €20.00 (shop listing, 18 October 2026): “a DIY only, one time license … only for personal DIY use (no commercial use allowed). It gives you complete access to all the written and video guides, the full VIP discord server channels, as well as the essential firmware and software updates.” The disclaimer forbids “Any unauthorised use of the license, GUN4IR system or any part or it (commercial, promotional, copying, sharing…)”. The shop also sells the hardware: DIY SMD PCBs at €45 each in Light, Universal, GC2 and GC1 versions, complete mod kits at €145 to €155, and pre-modded GunCon sets at €199 to €279 depending on region.
Technically GUN4IR sits close to SAMCO’s world. An older user guide (v1.2, undated, seen only as a third-party mirror and therefore treated as background) specifies an “Arduino Pro Micro ATMega32U4 5V/16MHz (3.3V or 8MHz won’t work)”, the DFRobot camera “or a homemade camera built around a Wiimote sensor”, and emitters placed “at the exact center of each side (up, down, left, right)” — the diamond layout. It describes Mouse/Keyboard, Gamepad and Hybrid modes, MAMEHooker serial commands, and an IRL540 solenoid driver. The same old guide said the firmware “cannot be sold alone nor in a package/hardware, it is completely free”; the €20 licence has since replaced “completely free”. The current hardware may differ: the guide predates the shop’s SMD boards.
1.8.1 The JB GUN4IR User Guide, summarised
The owner decided on 18 October 2026 that the GUN4IR user guide belongs in this dive as a cited summary (decision D26), and nowhere else: its cover says “Don’t share without consent of the author”, so it is not copied, quoted at length, or stored in the Library. The guide’s source is the author: the written guides come with the GUN4IR DIY User License on the maker’s shop. The copy read for this summary is version 1.2, undated, on a third-party document site, which is not linked here; the current licensed guides may be newer and differ.
What v1.2 covers, in its own order, and where this dive treats the same ground for OpenFIRE:
Table 2 — What v1.2 covers, in its own order, and where this dive treats the same ground for OpenFIRE
| Guide section | What it covers | The same ground in this dive |
|---|---|---|
| Introduction; features list | Goals, a safety and responsibility disclaimer, the feature set (tracking, latency, offscreen, feedback, GUI) | This volume |
| Building the hardware | Required and optional parts; a pin-by-pin table to the Arduino; IR LED options and placement (the diamond); the two camera options; solenoid, rumble and RGB-LED driver circuits; an optional Bluetooth module for gamepad mode; a temperature sensor and a Wii Nunchuck as extras | Volume 3 for OpenFIRE’s pin presets, camera, emitters and driver circuits |
| Installation | Windows-only GUI, drivers and flashing the Arduino | Volume 4 (OpenFIRE flashes by UF2 on any OS) |
| Serial commands | Mode and feedback commands for MAMEHooker and launchers | Volume 6, sections 6.7–6.9 |
| Gun usage | Aiming; a five-step calibration of camera offset and LED placement saved to EEPROM; two offscreen behaviours (aim at the lower-left corner, or the A button); button-combination mode changes; full-auto feedback modes Off, Auto and Always On | Volume 5 |
| Troubleshooting | Aiming, feedback, GUI detection, flashing and multi-screen problems | Volumes 4 and 5 |
What it adds that this dive needs is mostly comparison. GUN4IR’s offscreen-by-corner and its three full-auto feedback modes are design choices worth setting beside OpenFIRE’s (Volume 5), and its Bluetooth gamepad option is the older, simpler wireless route against which the ESP32 port’s dongle (Volume 6, section 6.12) is a step up: Bluetooth in the guide carries gamepad mode only, while the dongle carries the mouse, keyboard, gamepad and serial port. Nothing in the guide’s circuits is used in this build, and none of its text or figures is reproduced, because GUN4IR forbids commercial use and this project may sell kits.
A GitHub repository named gobozgz/GUN4IR turns up in searches. It is not the author’s, contains packaged releases rather than source, has no licence and was last touched in 2021. It is not a source release of GUN4IR and should not be treated as one.
1.9 Blamcon
Blamcon is the light-gun line from Props 3D Pro, sold as printable gun designs around a proprietary RP2040 “Blamcon core” board that comes “with all the components you need pre-soldered”; everything else in a build is sourced by the builder. Its firmware page is unambiguous about the terms: “Blamcon Firmware by Craig Gulliver, Props 3D Pro is licensed under CC BY-NC-ND 4.0” — attribution, non-commercial, no derivatives. The downloads are UF2 binaries (blamcon-core-rp2040-firmware), at versions from 1.0.16 (1 June 2025) to 2.1.0 (16 September 2026), updated by holding the trigger at power-on, through the Blamcon ARC desktop app, or by holding B for 15 seconds. Blamcon’s terms add that its “designs, software, and materials are property of Props 3D Pro” and are “free for personal use”.
No firmware source was found, and the firmware page credits neither OpenFIRE nor SAMCO; whether any code is shared could not be established. The Props 3D GitHub account publishes the ARC app and a shooting-gallery game as releases, an Unreal plugin with no declared licence, and a Unity plugin under MIT. For a kit seller the firmware licence is decisive on its own: CC BY-NC-ND forbids both commercial use and modification. Michael’s brief listed a Blamcon printed shell (the Phazer) as a candidate; the shell’s licence is a separate question for Licensing, IP and Kits and MP7 Printed Build.
1.10 Sinden, AimTrak and the RS3 Reaper

These three are commercial guns with closed firmware. None is a candidate for this build’s electronics; all three are the yardstick it will be measured against, and each answers a different question.
Sinden Lightgun (Sinden Ltd, UK) is the one that needs nothing mounted at the screen. Its camera tracks a border the PC software draws around the game image; the company’s page puts it as accurate “without requiring additional hardware such as infra red sensor bars.” The software is closed and no SDK or source was found. Prices on Sinden’s own shop on 18 October 2026: £89.99 for one gun, £139.99 with recoil, £169.99 and £269.99 for the corresponding pairs, a £50 per-gun recoil kit for existing owners, and a £199 arcade pedal. How border tracking works, and whether an open version is feasible on an RP2040, is the subject of Border Tracking.

AimTrak (Ultimarc) is the simplest at the screen: one IR LED bar that “must be within 1-2 inches (10cm) from the top of screen”, and which “will not work if the bar is located on the top of a cabinet which has a marquee.” The gun “Emulates a USB mouse and game controller”, maps the trigger and up to six buttons, is configured and updated through a Windows .NET utility, and supports up to four guns by ID. AimTrak With Recoil, US$120.00 (part C-ATE0BK in black; red and blue at the same price), on 18 October 2026; the recoil supply is not included and must be 24 to 36 V, “Maximum 24 V at 4 A, or 36 V at 3 A”, one per gun.

Retro Shooter RS3 Reaper is the polished commercial recoil gun. The RS3 Reaper 2 pair is US$229.97 (reduced from $254.97) on the maker’s page on 18 October 2026, with a “Powerful 24V Solenoid for Recoil” driving a sliding top, a “High-Speed Chipset – 1000+ Hz”, configuration by DIP switches and button combinations rather than an app, MAMEHooker compatibility, and player 1–4 selection. The 24 V adapter, the hub and the “4 IR sensors” it needs are not in the box. Michael’s brief cited about $230 for a pair; that holds.
The brief’s other observation — that AimTrak and the RS3 “both need extra power supplies for recoil” — is also confirmed by the makers. So does every solenoid gun in this volume, open or closed. The physics of why is in Solenoid Recoil and the supply design in Power Supplies.
1.11 The comparison table
Licences are quoted from the repository LICENSE file or the maker’s terms; “headers” means the copyright block in the source files. “Active” means a commit or release in the twelve months to 18 October 2026.
Table 3 — 1.11 The comparison table
| Licence, as written | MCU | Camera / sensing | Outputs | Recoil | Game-driven FFB (serial) | Active | |
|---|---|---|---|---|---|---|---|
| SAMCO | LICENSE: GPL v3. Headers: “GNU Lesser General Public License” | ATmega32U4, SAMD21/51 | DFRobot SEN0158, 2 or 4 emitters | Absolute mouse, keyboard | No | No | No (last push Jul 2024; points to OpenFIRE) |
| Prow Enhanced | No LICENSE file. Headers: “GNU Lesser General Public License” | SAMD21/51, RP2040 | SEN0158, 4 emitters | 5-button absolute mouse, keyboard | No | No | No (Jun 2024) |
| IR-GUN4ALL | LICENSE: LGPL v2.1 | RP2040 | SEN0158, 4 emitters | Mouse, keyboard, gamepad | Solenoid, rumble | MAMEHooker | No (Jun 2024; superseded) |
| OpenFIRE | Firmware LICENSE: LGPL v2.1; App and Boards: GPL v3 | RP2040, RP2350 | SEN0158 or a Wii Remote sensor (clock generated on a GPIO); square or diamond layout | 5-button absolute mouse, keyboard, dual-stick gamepad; MiSTer mode | Solenoid (TMP36 protection), rumble | MAMEHooker, Hook Of The Reaper, QMamehook | Yes (v6.2 Apr 2026; App Aug 2026) |
| OpenFIRE ESP32 | LICENSE: LGPL v2.1 | ESP32-S3 | SEN0158 / Wii, PixArt PAJ7025R2, PAJ7025R3 | As OpenFIRE, wired or via ESP-NOW dongle | Solenoid, rumble | As OpenFIRE | Yes (Oct 2026) |
| GUN4IR | ”NOT an open source project”; €20 personal DIY licence, no commercial use | ATmega32U4 (per guide v1.2) | SEN0158 or Wii sensor; diamond layout | Mouse/keyboard, gamepad, hybrid | Solenoid, rumble | MAMEHooker | Yes (shop current) |
| Blamcon | Firmware: CC BY-NC-ND 4.0; binaries only | RP2040 (“Blamcon core”) | Four-point IR (sensor not named) | Not stated on the pages read | Solenoid on some guns | Serial commands documented for developers | Yes (2.1.0 Sep 2026) |
| Sinden | Closed | Not published | Camera tracking an on-screen border | Mouse (via PC software) | Solenoid (recoil model) | Through Sinden software | Yes |
| AimTrak | Closed | Not published | IR sensor viewing one LED bar | USB mouse + game controller | Solenoid, 24–36 V external | Not stated | Yes (on sale) |
| RS3 Reaper | Closed | Not published (“1000+ Hz chipset”) | Four IR emitters | USB (mouse) | 24 V sliding solenoid | MAMEHooker | Yes (on sale) |
Two columns deserve a comment. Camera: every open project depends on one module, the DFRobot SEN0158, or on a Wii Remote sensor salvaged and wired in its place. On 18 October 2026 DFRobot listed the SEN0158 at US$23.55 with a “Notify Me” button instead of a basket, and the page says “A new version of Gravity: IR Positioning Camera is currently in development.” The camera is the supply-chain risk of the whole open line, and the reason the ESP32 port’s PixArt support matters (Volume 3). Outputs: the “absolute mouse” is the key idea. A relative mouse reports movement; an absolute one reports a position, like a graphics tablet, so the cursor lands where the gun points without any accumulation of error.
1.12 What the licences mean for a gun that might be sold
This is a reading of the documents, not legal advice, and the full treatment belongs to Licensing, IP and Kits. Four facts from the repositories shape everything there:
- OpenFIRE’s firmware is LGPL v2.1 — but it compiles in a GPL v3 file.
OpenFIREshared.h, from the OpenFIRE-Boards repository, is pulled into the firmware tree as a git submodule and built into every UF2. Its header grants GPL v3 “or (at your option) any later version”. So does the bundledlibraries/LightgunButtons(Mike Lynch, 2021), whose COPYING file is GPL v3: two GPL-3.0 parts, not one (corrected 2026-10-19). A binary that combines LGPL and GPL-licensed code is, for distribution, governed by the stricter terms of the two. A kit that ships OpenFIRE firmware should plan on GPL v3 obligations: the complete corresponding source of the firmware as shipped, including any changes, offered to every recipient. - The App is GPL v3. A kit can point buyers at the official App without any obligation beyond what any user has. A modified App carries the same source obligation.
- The ancestors are untidy. SAMCO’s
LICENSEfile is GPL v3 while its headers say LGPL; Prow Enhanced has no licence file at all. OpenFIRE has carried the code forward with the original authors credited and participating, which is the practical answer, but a fork that reaches back into SAMCO or Prow Enhanced directly should not assume more than the headers say. - The authors’ requests are not licence terms, but they are clear. Keep the OpenFIRE name and the three credits, do not rebrand, talk to the team before selling OpenFIRE-enabled products, and never charge for the firmware itself. A kit that follows them is on good terms with the people whose work it ships.
Against that, the closed options are simply closed to a seller: GUN4IR prohibits commercial use outright, Blamcon’s CC BY-NC-ND licence forbids commercial use and derivatives, and Sinden, AimTrak and the RS3 publish nothing to build on.
1.13 The chosen route, checked against the project’s own documents
Michael’s brief chose OpenFIRE on a Pico with an IR camera and IR emitters at the screen, set aside Gun4IR, Sinden-style tracking, AimTrak and the RS3, and kept “a used GunCon with OpenFIRE internals” as a fallback. Checked against the projects’ own pages, the choice holds up: OpenFIRE is the only actively maintained firmware in this survey that is open source end to end, runs on a $4 board, supports both solenoid and rumble, and speaks the serial language the PC force-feedback tools use. The fallback is sound too; the SAMCO and GUN4IR worlds both grew up inside GunCon shells, and Modding Classic Light Guns covers it.
Where the brief and the project disagree, the project’s documents win, and the corrections are recorded in this dive’s working notes. The ones that affect what gets bought or built:
- The emitter layout. The brief describes “one IR point at the middle of each screen edge” as the common layout for Samco-style builds. That is the diamond layout — GUN4IR’s, and what OpenFIRE’s instruction book calls the layout of “Xwiigun and other legacy lightgun systems”. OpenFIRE calls the square layout, two emitters above the screen and two below, “Samco, preferred”, the README calls the double light bar “recommended!”, and the calibration code assumes the bars sit exactly at the top and bottom edges (Volume 3).
- The emitters. The brief sizes generic 940 nm LEDs at 50 mA through 75 Ω. OpenFIRE recommends Osram SFH 4547 emitters with 5.6 Ω resistors, a value that only makes sense for several LEDs in series; the emitter bar is designed in Reference Electronics.
- The camera. The brief’s “$35–40, the main cost” was a 2024 forum figure in an unknown currency. The maker’s price on 18 October 2026 is US$23.55 — but its page offers only a “Notify Me” button. The camera is therefore being chosen against alternatives; the Reference Electronics dive proposes a harvested Wii Remote sensor for the first prototype.
- The solenoid driver. The brief’s 100 Ω gate resistor and 10 kΩ pull-down will work, but they are not the project’s values. OpenFIRE’s Hardware Guide v1.3 draws 1 kΩ in series and 100 kΩ to ground, or a ready-made MOSFET module (Volume 3).
1.14 Why OpenFIRE, and why not the others
The project’s rule is that every pick states its criteria and why each alternative lost. For the firmware, the criteria in order are:
- Licence. Kits may be sold later, so licences are binding requirements, not advice. The firmware must permit commercial distribution and modification.
- Maintenance. A commit or release in the twelve months to 18 October 2026, and a team that answers.
- Hardware support. It must run on the board this build has decided on, a Raspberry Pi Pico (RP2040), and on the camera the Reference Electronics dive proposes, a harvested Wii Remote sensor.
- Recoil features. Solenoid and rumble drive, temperature protection, and game-driven force feedback over serial.
- Kit-sale compatibility. Whether a kit can ship the firmware, modified, under terms a small seller can meet.
Table 4 — 1.14 Why OpenFIRE, and why not the others
| Firmware | Licence | Maintained | Pico + Wii sensor | Recoil | Kit-sale | Verdict |
|---|---|---|---|---|---|---|
| OpenFIRE | LGPL-2.1 firmware with a GPL-3.0-or-later header compiled in; App GPL-3.0 | Yes: v6.2 April 2026, App August 2026 | Yes: rpipico UF2; Wii sensor clocked from a GPIO | Solenoid with TMP36 protection, rumble, MAMEHooker / QMamehook / Hook Of The Reaper | Yes, with GPL-3.0 source obligations and the authors’ requests (1.12) | Pick |
| OpenFIRE for ESP32 | LGPL-2.1 | Yes (October 2026) | No: ESP32-S3 only | As OpenFIRE | As OpenFIRE | Not for the first gun; its PAJ7025R2/R3 code is the source for a later camera |
| IR-GUN4ALL | LGPL-2.1 | No (June 2024; superseded by OpenFIRE) | RP2040 and SEN0158 | Solenoid, rumble, MAMEHooker | Licence permits it | Rejected: OpenFIRE is its maintained successor |
| SAMCO | LICENSE GPL-3.0, headers LGPL | No (July 2024; points to OpenFIRE) | No RP2040 support listed | None | Ambiguous licence | Rejected: no recoil, no RP2040, unmaintained |
SAMCO Prow Enhanced (ir-light-gun) | No LICENSE file | No (June 2024) | RP2040, SEN0158 | None | No licence grant to rely on | Rejected: no recoil, no licence |
| GUN4IR | ”NOT an open source project”; €20 personal licence, no commercial use | Yes (shop current) | ATmega32U4 per the only guide found | Solenoid, rumble, MAMEHooker | Prohibited | Rejected: closed and non-commercial |
| Blamcon | CC BY-NC-ND 4.0, binaries only | Yes (2.1.0 September 2026) | RP2040 “Blamcon core”; sensor not named | Solenoid on some guns | Prohibited (non-commercial, no derivatives) | Rejected |
| Sinden | Closed | Yes | Own camera and on-screen border; no Pico | Through Sinden software | Nothing to build on | Rejected: different sensing, closed |
| AimTrak, RS3 Reaper | Closed | On sale | Not published | Yes | Nothing to build on | Rejected: products, not firmware |
OpenFIRE is the only row with a yes in every column. Its kit-sale yes comes with conditions. A kit that ships OpenFIRE, modified or not, must offer the complete corresponding source of the firmware as built, under GPL-3.0 terms because of the compiled-in board header. The authors also ask kit sellers to keep the name and credits, not to rebrand, to talk to them first, and never to charge for the firmware.
How this fits the project’s other decisions. The project keeps its firmware private until a working model exists, and fixes OpenFIRE’s bugs in its own fork rather than reporting them upstream for now (Volume 7). Neither conflicts with the licences. The obligations begin when a binary or a gun is distributed, and a private bench fork distributes nothing. The first kit ends that privacy for the firmware: from then on, the fork’s source as shipped must be available to every buyer. Planning for that from the first commit is cheaper than cleaning it up later, which is a matter for Our Firmware and Licensing, IP and Kits.
1.15 What could not be verified
- Whether Blamcon’s firmware shares code with OpenFIRE or SAMCO. No source is published and the firmware page credits neither.
- GUN4IR’s current microcontroller and camera: the only technical document found is an old guide on a third-party mirror.
- The microcontrollers inside the Sinden, AimTrak and RS3 Reaper; none is published.
- Distributor stock of the DFRobot SEN0158: the Mouser page timed out twice and DigiKey refused the request, so only the maker’s own page is quoted.
Sources
- TeamOpenFIRE,
OpenFIRE-FirmwareREADME, LICENSE and source tree, tag v6.2 (= branch OpenFIRE-dev), https://github.com/TeamOpenFIRE/OpenFIRE-Firmware — read 2026-10-18. - TeamOpenFIRE,
OpenFIRE-AppREADME and LICENSE, v3.0.3, https://github.com/TeamOpenFIRE/OpenFIRE-App — read 2026-10-18. - TeamOpenFIRE,
OpenFIRE-Boards,OpenFIREshared.hand LICENSE, https://github.com/TeamOpenFIRE/OpenFIRE-Boards — read 2026-10-18. - GitHub REST API: repository metadata (created, pushed, licence, contributors) and release notes for the repositories above, 2026-10-18.
- Sam Ballantyne,
IR-Light-Gun(SAMCO), README, LICENSE,Samco_4IR/Samco.cpp,Samco_2.0_4IR.ino, https://github.com/samuelballantyne/IR-Light-Gun — read 2026-10-18. - Mike Lynch,
ir-light-gun(SAMCO Prow Enhanced), README,SamcoEnhanced.ino,libraries/DFRobotIRPositionEx/README.md, https://github.com/Prow7/ir-light-gun — read 2026-10-18. - That One Seong,
ir-light-gun-plus(IR-GUN4ALL), README and LICENSE, https://github.com/SeongGino/ir-light-gun-plus — read 2026-10-18. - Alessandro Satanassi,
OpenFIRE-Firmware-ESP32, README and LICENSE, https://github.com/alessandro-satanassi/OpenFIRE-Firmware-ESP32 — read 2026-10-18. - Jean-Baptiste Bongrand, “About the GUN4IR®”, https://www.gun4ir.com/pages/about-the-gun4ir%C2%AE, and “GUN4IR® DIY User License” and shop catalogue, https://www.gun4ir.com — read 2026-10-18 (prices in EUR).
- J.-B. Bongrand, JB GUN4IR User Guide v1.2 (undated), read 2026-10-18 on a third-party mirror (pdfcoffee.com; not linked: the guide says “Don’t share without consent of the author”). Licensed source: the GUN4IR DIY User License, https://www.gun4ir.com. Summarised in section 1.8 by decision D26; not stored.
- Props 3D Pro, Blamcon firmware page, https://blamcon.com/support/firmware/, and “Build a Blamcon”, https://blamcon.com/get-started-with-blamcon/build-a-blamcon/ — read 2026-10-18.
- Sinden Ltd, https://sindenlightgun.com/ and shop catalogue https://www.sindenshop.com — read 2026-10-18 (prices in GBP).
- Ultimarc, “AimTrak Light Gun With Recoil”, https://www.ultimarc.com/light-guns/aimtrak-light-gun/aimtrak-light-gun-with-recoil/ — read 2026-10-18.
- Retro Shooter, “RS3 Reaper 2 Pink & Blue”, https://retroshooter.com/?p=22789 — read 2026-10-18.
- DFRobot, “Gravity: IR Positioning Camera For Arduino” (SEN0158), https://www.dfrobot.com/product-1088.html — read 2026-10-18.
- OpenFIRE Hardware Guide v1.3, openfirelightgun.org (PDF dated 2026-10-17).
Comments (0)