nexmon has one release from 2017 and commits nine years later
The C-based Firmware Patching Framework for Broadcom/Cypress WiFi Chips that enables Monitor Mode, Frame Injection and much more
At a glance
- What is it?
- nexmon is a firmware patching framework in C for Broadcom and Cypress WiFi chips, used to build patches that turn a stock wireless adapter into something that can emit monitor mode frames and accept injected ones. The device matrix is the real documentation: about thirty rows pairing a chip and a firmware build with a specific phone or board. It sits under a warning that the software may damage your hardware and void its warranty, and its only release predates its newest commits by nine years.
- Who is it for?
- nexmon belongs on a spare adapter you own, on hardware you can afford to write to, and inside a lab that already has the legal position sorted out for the transmissions it will make. Three things to settle first.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 51 days ago.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.
Star history
- seemoo-lab/nexmon2,918 ★ · +32
| Repository | 2026-09-30 | 2026-11-14 |
|---|---|---|
| seemoo-lab/nexmon | 2.9k | 2.9k |
32 Stars in the last 45 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
The warning sits above the device table, where it belongs
The structure of the file is deliberate. What the project is comes first, then a warning, then the device matrix.
The warning says the software may damage your hardware and may void the hardware's warranty, that the tools are used at your own risk and responsibility, and that if those terms are unacceptable then do not use the project. No softening, no legal padding.
That placement matters for what this software does. The opening paragraph describes a framework for writing firmware patches, and gives two examples: enabling monitor mode with radiotap headers, and frame injection. Both operate below the operating system's driver layer, on the chip's own firmware, which is why the consequence of getting it wrong is a device that does not come back rather than an application that fails to start.
The rest of the file is careful in the same way. It says the repository focuses on monitor mode and frame injection, and that if you want other features there are sibling projects, which is an honest boundary rather than a feature list.
One release from 2017, commits nine years after it
The release list holds a single entry, version 2.2.2, dated 2017-09-29.
The last push to the default branch is dated 2026-09-24, and the repository is not archived.
So the published artifact and the current source are about nine years apart. For a project whose output is a firmware image tied to one chip and one firmware version, that gap has a specific meaning: the single release is a snapshot for whatever devices existed then, and everything since then has been commits rather than tagged builds.
Two files in the tree explain what the recent work has been about without needing a changelog. One is a revision information document and one is a statistics document, and both sit at the repository root next to a devices document and a security document.
A separate citation file and a citation metadata file sit alongside them, which is the clearest signal of how the project expects its output to be used: as the artefact of published research, cited rather than silently vendored.
The newest phones in the table get the least capability
The matrix runs about thirty rows, and reading it end to end shows capability shrinking as the hardware gets newer.
The oldest rows are the broadest. A Galaxy S2 on a 2014 custom Android build, a Galaxy S4, a Nexus 5, a Raspberry Pi 3 and Zero W: those have monitor mode, radiotap headers and injection marked. A Raspberry Pi B3+, B4 and B5 gets the same set, across four different Raspberry Pi OS kernel versions.
The newest rows are not. A Galaxy S22 Plus, a Pixel 7 and 7 Pro, a Pixel 8 and a Pixel 9 all appear with only two columns marked, and neither of them is monitor mode or injection. The Pixel rows are also qualified: rooted with a specific rooting tool, rather than merely rooted.
Two other requirements appear as you move down. The Galaxy S10 and S20 rows specify rooted with SELinux disabled, which is a different ask from rooting alone, because a security module that blocks the write will stop the patch.
And the one iPhone row, an iPhone 6 on a specific 2016 iOS build, carries two marked columns and no more.
A router, a chip enabled for nothing, and six unexplained letters
Two rows are worth reading closely because they do not fit the pattern.
One is a router rather than a phone or a board: an Asus unit on a named stock firmware build. It has one capability marked and, in another column, a slash rather than a letter. A firmware patch that works on a router is a different proposition from one that works on a handset, because the device is usually the thing providing connectivity to everything else in the building.
The other is a Qualcomm chip in a high-end adapter, on a custom router firmware image, with every capability column empty. The chip is listed, the firmware version is given, and nothing is enabled. That row tells you the project tracks the hardware without claiming to support it, which is more useful than leaving the row out.
The columns themselves are two-letter initials, six of them, and two are identifiable from the opening paragraph. The other four are not spelled out in the part of the file the table appears in. They are defined in footnotes, and the footnotes that are visible number at least nine, keyed to specific chips in the superscript markers beside the chip names.
One footnote is a correction rather than a requirement: one chip was wrongly labelled as a different one in the past.
The build compiles the tools and the firmware blobs and stops
The top-level build file has two real targets and one that exists only to force them to run:
all: buildtools firmwares
firmwares: buildtools FORCE
$(Q)make -C $@
buildtools: FORCE
$(Q)make -C $@
FORCE:Two details are visible in those lines. The forcing target has no prerequisites and an empty recipe, and it is not marked phony, so its purpose is to defeat make's timestamp check and rebuild both directories on every invocation rather than to do any work.
And the recursion is into a subdirectory per stage, with the quiet prefix in front of each sub-make and a coloured banner printed before it, so the top-level file does nothing except sequence two nested builds.
What the top-level file does not contain is the part that would matter most to a newcomer. There is no install target, no flashing step, and no device selection anywhere in it. The Makefile produces binaries and firmware files; anything that writes them to a chip is elsewhere, and per device.
The tree around it explains the scope: a tools directory, a firmware directory holding the blobs, a patches directory, an application directory, a graphics directory, an iOS utilities directory, a general utilities directory, and an environment setup script.
Five sibling projects, and one of them is explicitly incomplete
The file names five related projects and says this repository mainly focuses on monitor mode and frame injection, so the others are for people who need something else.
Two are extraction. One pulls channel state information out of transmissions, described as handling up to four by four MIMO at 80 MHz bandwidth. Another gives low-level access to microcontroller debugging registers without a JTAG connection, allowing breakpoints, watchpoints and single stepping.
Two are transmission-side, and they are the ones the file describes in the most detail. One overlays ongoing frame transmissions with an arbitrary jamming signal, using the chip as a software-defined radio, allowing non-standard channel widths and arbitrary transmission powers, and patching the chip's real-time MAC implementation. The other hides information inside Wi-Fi signals and is described as having more advanced software-defined radio capabilities than the jamming project.
The fifth is a general software-defined radio project, and it carries the most honest limitation in the file: only transmissions are working, in both the 2.4 and 5 GHz bands.
So the family is a lab's research output rather than a product line, and each project states its own completeness.
The repository asks to be cited
Two files at the root do something most firmware projects do not. One is a bibliography file, and the other is a citation metadata file in the format that indexes and registries read.
A framework whose output is a patched firmware image ends up embedded in other people's research, in course material and in hardware analysis write-ups, and citation files are how the authors keep track of that. It is also a reasonable signal about the intended audience: the matrix, the security document and the citation machinery all point at people doing authorised work with hardware they control, rather than at people looking for a download.
The tree reinforces that. Beyond the build directories there is a directory for device information, one for revision information, one for statistics, one for patches, and a security document at the root rather than buried in a contributor guide.
What is absent is as telling. There is no changelog file, no continuous integration configuration and no contribution guide in the visible listing, on a project whose only release is nine years old and whose device coverage is the thing that actually changes.
Editorial conclusion
nexmon belongs on a spare adapter you own, on hardware you can afford to write to, and inside a lab that already has the legal position sorted out for the transmissions it will make. Three things to settle first. Accept that this is firmware patching rather than a driver install, because the warning above the device table says the software may damage the hardware and void the warranty, and a wrong firmware version for a chip is a bricked adapter rather than a failed command. Match your exact firmware build rather than your device model, since the matrix is keyed on chip and firmware version and several rows exist for the same phone with different builds. And read the capability columns before planning anything, because the newest chips listed get the least functionality and one row is enabled for nothing at all.
Frequently asked questions
what is nexmon
A C-based firmware patching framework for Broadcom and Cypress WiFi chips that lets you write your own firmware patches, for example to enable monitor mode with radiotap headers and frame injection. The repository focuses on those two capabilities, and points to sibling projects for jamming, channel state information extraction, JTAG-free debugging, covert channels and general software-defined radio work.
how to install nexmon firmware
This repository does not carry a flashing procedure. The visible file gives a device matrix keyed on chip and exact firmware version, a warning that the software may damage the hardware and void its warranty, and a top-level build that compiles the build tools and the firmware directory without any install target. Anything that writes a patch to a chip is per device and per firmware build.
how to use nexmon
What the file supports is the scope: write your own firmware patch for a supported Broadcom or Cypress chip, using one of the firmware versions listed in the device matrix for the exact device and operating system build you have. The table is keyed on chip and firmware version rather than on device model, and the most recent phones listed support fewer capabilities than the older ones.
how to install nexmon
The visible file does not give an install command. It gives a hardware warning to read first, a device matrix to check your chip and firmware version against, and a Makefile whose two targets build the tools and the firmware directory by recursing into each, with an empty forcing target so both rebuild every time.
nexmon alternative
The file does not name alternatives, and it does not need to, because the scope is a chip-specific firmware patch rather than a general tool. What it names are five sibling projects from the same lab covering jamming, channel state information, debugging without JTAG, covert channels and software-defined radio, one of which states that only transmissions currently work in both bands.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/seemoo-lab-nexmon)Star history chart for your README
[](https://hysenlabs.com/projects/seemoo-lab-nexmon)Was this useful?