RF Analyzer: a spectrum analyzer on your phone, with your own SDR dongle
Analyze RF signals on Android with HackRF, RTL-SDR, Airspy (HF+) and HydraSDR
At a glance
- What is it?
- RF Analyzer is a Kotlin Android app that turns a HackRF, RTL-SDR, Airspy or HydraSDR into a live FFT and waterfall display, with demodulation, raw IQ recording, station bookmarks and synced shortwave and portable operation spot data. It ships on Google Play under a seven day trial with a 60 minute operating limit, and the code is GPL-2.0 with the branding carved out.
- Who is it for?
- RF Analyzer fits a radio hobbyist or ham operator who already owns SDR hardware and wants a spectrum view in the hand rather than on a laptop, and who is willing to deal with USB OTG. It does not fit someone who wants a free unlimited tool, since the trial caps usage at seven days and 60 minutes of operation, and it does not fit a team that needs to rebrand the app, because the name, logo and branding are explicitly excluded from the GPL grant.
- Can I use it commercially?
- Yes, with conditions. GPL-2.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 178 days ago.
- What is it written in?
- Mainly Kotlin, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The phone is the display, the dongle is the antenna
RF Analyzer is an Android app for real-time spectrum analysis using SDR hardware such as HackRF and RTL-SDR. It shows live FFT and waterfall plots of the radio frequency spectrum, and it supports demodulation, recording and more.
The framing matters, because the app is not a radio. It is the display and the analysis layer, and the hardware stays outside the phone. The repository makes that visible in its structure, because the SDR vendor libraries are vendored directly into the tree: libairspy/, libairspyhf/, libhackrf/ and libhydrasdr/ sit alongside libusb/ and a nativedsp/ directory, with the Kotlin application in app/ and the documentation and build tooling in docs/, fastlane/, tools/ and resources/.
The audience is stated in the README without pretending to be broader. It is for a radio hobbyist, a ham operator, or someone curious about what is moving through the airwaves. The features are aimed at that person: the plots, the audio demodulation, the station and band bookmarks, the shortwave database, and the spot data for portable and summits on the air activity.
The project is written in Kotlin, built with Gradle, and the version in the repository is GPL-2.0 with an important carve-out that the licence section returns to. The repository is not archived and the last push was on 2026-04-28, and there are no GitHub releases, so the app ships through Google Play and the changelog is a text file in the repository.
Five radio families, five native libraries, one USB cable
The supported device list is the honest measure of what this app can do, and each entry is backed by a specific host library.
HackRF is supported through libhackrf, RTL-SDR dongles through the rtl-sdr driver, Airspy through libairspy, the Airspy HF+ through libairspyhf, and HydraSDR through libhydrasdr. There is a sixth input source that is easy to overlook and often the most useful one, file input from previously recorded IQ files or external sources.
That file input closes a loop. Since the app can record raw IQ data, and it can read IQ files back, you can capture a band on a good afternoon with a proper antenna and then study it later on a bus.
The practical warning in the README is short and worth repeating: proper USB OTG support and a reliable cable or hub may be necessary for some setups. That is the failure mode of the whole approach. The SDR has to negotiate a USB connection through the phone, and phones differ in how they handle power, bandwidth and hubs. If the hardware works on a laptop and not on the phone, the cable and the hub are the first things to change, not the app.
The native library directories in the repository also explain a practical fact about building this yourself. Each radio family needs its own host library built for the phone's architecture, and the vendored directories are where that work happens.
FFT, waterfall, and the settings that make them readable
The display is the core of the app, and the two views complement each other. The FFT plot shows the spectrum as it is right now, and the waterfall scrolls that spectrum over time so a transient signal becomes a line you can see rather than a blip you missed.
The README describes a real-time FFT and waterfall display with scroll and pinch-to-zoom, which covers the two movements that matter on a phone. Scroll moves across the band, and pinch changes the span or the zoom level.
The settings list is what separates a usable analyser from a toy. There is averaging, which smooths the noise floor so a weak signal is visible above it, and peak hold, which keeps the maximum value in place so a short burst is not lost between refreshes. There is FFT size, which trades resolution against update rate, colour maps for the waterfall, a colour theme for the interface, and screen orientation, which on a phone in a field is not a trivial preference but a way to avoid rotating the device every time the spectrum changes.
The app also carries its own documentation. A full user manual is in the docs/ folder and published through MkDocs, with topics covering quick start and setup, the user interface and controls, SDR and FFT configuration, demodulation modes, the bookmark manager, signal identification tips, recording and playback, and advanced SDR topics such as decibels, FFT theory and ham radio practice. There is also a context-aware help system inside the app, and a video quick start tutorial linked from the README, which is the fastest way to see how a dongle is connected and the first plot is produced.
Demodulation in six modes, and raw IQ for everything else
Audio demodulation covers the modes an operator would actually want to listen to: CW, AM, nFM, wFM, LSB and USB. Narrow band FM and wide band FM for broadcast, the two sidebands for single sideband, amplitude modulation for the aircraft and shortwave bands, and CW for the narrowest signals.
That set is the difference between looking at a spectrum and listening to it, and it is the part of the app that turns a plot into a receiver.
Recording is the other half. The app records raw IQ data, and the file input source reads it back. The two features together are what make the app useful for signals that no demodulator handles, because you can capture the raw samples and analyse them elsewhere, and you can bring a recording made elsewhere into the app to look at.
Signal identification is the practical skill the whole thing is built around, and the documentation has a section on it. The combination of a waterfall trace, a plausible modulation mode and a frequency in the right band is how you work out what a transmission is, and the app is designed to give you all three quickly.
The one limitation here is the same one the hardware imposes. The demodulation quality is a function of the receiver in the dongle, and the app cannot add sensitivity or bandwidth that the radio does not have.
Bookmarks, bands, and the databases that come with them
A spectrum analyser is only half useful without a way to remember what you found and where it should be. The Bookmark Manager in RF Analyzer covers two kinds of entry, stations by frequency and bands, and the interface is described as comprehensive.
On top of that, the app can download and synchronise three external data sets. The EiBi Shortwave Radio Database gives you the schedule of shortwave stations, which is what turns a frequency into a program and a time slot. POTA and SOTA spots give you the current locations of stations operating portable, in parks and on summits, which is a different kind of information again since the frequency is known and the position moves.
The synchronisation is the important part of the design. These are reference databases that change, and the app pulls them in rather than shipping a snapshot, so a frequency you looked up yesterday and one you look up today are not the same data.
For a ham operator, that combination is close to a complete operating picture: the spot tells you where a station is, the band and mode tell you what to expect, the waterfall tells you whether anyone is actually on the frequency, and the bookmark remembers it for next time. A user who does not know the shortwave or portable activity gets less out of it, since the data is most valuable when combined with knowledge of the bands.
The trial counts operating time, and the licence keeps the branding
The commercial terms are unusual enough to be worth reading carefully.
RF Analyzer is on Google Play as a free trial, giving seven days of usage after installation and up to 60 minutes of operation time. The full version is unlocked with a one-time in-app purchase, and the author is explicit that the purchase not only removes the trial limitations but funds the continued development of the project, which he describes as a passion project developed in his spare time.
The 60 minutes is the detail that matters. It is not a feature limit but an operating time limit, so it is spent on actual scanning rather than on sitting in the menu. For a decision, that is enough time to answer the question that counts, which is whether your radio works with your phone, because that is a hardware problem the app cannot fix.
The licence is GPL-2.0 or later for the software, and then there is an exclusion. The application name, the logo and app icon, and any other branding elements including promotional images and screenshots are not covered by the GPL and remain the exclusive property of the author. You may not use the original name, logo or other branding elements in modified versions of the app without prior written permission from the copyright holder.
That is a trademark carve-out on top of a copyleft licence, and it is a deliberate structure: you can fork, modify and redistribute the code under the GPL, but you have to publish your fork under a different name. For a hobby project that is a fair trade, and it is worth knowing before you start a fork rather than after.
A one person project, documented carefully, distributed through one channel
RF Analyzer is written and maintained by Dennis Mantz, who describes it as a passion project developed in his spare time, and the acknowledgements section gives a picture of what it depends on.
The acknowledgements name his partner Anja, who helped with the new user interface, the Reddit testers who joined the beta and reported issues, Michael Ossmann and the team around the HackRF, who the author says initially inspired him to start the app, and Martin Marinov, the developer of the RTL-SDR Android driver. That last one is worth noting: the RTL-SDR support depends on an external driver project, which is exactly the kind of dependency that determines how long a feature keeps working.
Distribution is through Google Play, with a Play Store badge in the README, and the fastlane/ directory in the repository is the store metadata. The source of truth for changes is changelog.txt, a plain text file, and the documentation is built with MkDocs from mkdocs.yml and the docs/ folder.
The project also lists several ways to support it beyond the purchase, which is unusual to see spelled out: a Ko-fi button, a Liberapay link, a PayPal address and a Bitcoin address. The README lists a mail address and a Mastodon account for contact, alongside the bundled manual and in-app help system.
On the state of the repository, the facts are modest and worth stating plainly. There are no GitHub releases, the last push was on 2026-04-28, and the project is not archived. It is a maintained hobby project with a good manual, not a product with a support commitment behind it.
Editorial conclusion
RF Analyzer fits a radio hobbyist or ham operator who already owns SDR hardware and wants a spectrum view in the hand rather than on a laptop, and who is willing to deal with USB OTG. It does not fit someone who wants a free unlimited tool, since the trial caps usage at seven days and 60 minutes of operation, and it does not fit a team that needs to rebrand the app, because the name, logo and branding are explicitly excluded from the GPL grant. Verify three things before you buy it: that your radio is on the supported list, since each one needs a different native library, that your phone and cable support USB OTG reliably, which the author flags as a common failure point, and what you intend to do with the demodulation modes, because the trial limit applies to operation time rather than to features, so a short evaluation is enough to see the waterfall and the audio.
Frequently asked questions
Which SDR devices does RF Analyzer support?
HackRF through libhackrf, RTL-SDR dongles through the rtl-sdr driver, Airspy through libairspy, the Airspy HF+ through libairspyhf, and HydraSDR through libhydrasdr. A sixth input source is a file, so you can open previously recorded IQ data or IQ from an external source.
How long is the RF Analyzer free trial and what does it limit?
The trial gives seven days of usage after installation and up to 60 minutes of operation time, and the full version is unlocked with a one-time in-app purchase. The limit is on operating time rather than on features, so the evaluation period is spent scanning rather than in the menus.
What can RF Analyzer demodulate and record?
Audio demodulation covers CW, AM, nFM, wFM, LSB and USB. The app can also record raw IQ data, and the file input source lets it read those recordings back, which means a capture made on a good antenna can be studied later or analysed with other tools.
Can I fork RF Analyzer and ship it under my own name?
The software is GPL-2.0 or later, so you can redistribute and modify it under those terms. The application name, logo, app icon and other branding elements are excluded from the GPL and remain the property of the author, and you may not use the original name, logo or branding in a modified version without prior written permission.
Where does RF Analyzer get its station and band information?
The app can download and synchronise the EiBi Shortwave Radio Database along with POTA and SOTA spots, so the reference data is fetched rather than frozen in the app. Stations and bands you find yourself are stored separately in the Bookmark Manager.
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/demantz-rfanalyzer)Was this useful?