Skip to content

twsnmp/twSdrPower

Repository files navigation

twSdrPower

日本語版はこちら

twSdrPower is a lightweight sensor application that leverages RTL-SDR to monitor radio frequency (RF) power across a wide range (24MHz - 1.7GHz). It enables real-time visualization of spectrum usage by streaming data via MQTT and Syslog, making it an ideal tool for electromagnetic noise surveys and network-integrated RF monitoring.

Godoc Reference Go Report Card

twSdrPower Infographic

Overview

twSdrPower is a sensor program that uses RTL-SDR to monitor the strength (power) of surrounding radio waves and sends the information to management systems such as TWSNMP FC via Syslog or MQTT. It is useful for electromagnetic noise surveys and visualizing the usage status of specific frequency bands.

Key Features

  • Frequency-specific Power Monitoring: Scans a specified range (24MHz - 1.7GHz) and calculates the signal strength (dBm) for each frequency.
  • Multi-protocol Transmission: Collected data can be transmitted in real-time via Syslog (RFC5424 format) or MQTT (JSON format).
  • Resource Monitoring: Monitors the CPU, memory, and network usage of the device where the sensor is running and sends it as statistical information.
  • Visual Analysis: Features automatic output of scan results as HTML charts. Dark mode is also supported.

Data Details

The current version can obtain and transmit the following information:

  • Radio Strength Data (Power): Radio strength information for each frequency (default 1MHz unit) in the specified range (default 24MHz - 1.67GHz).
  • Resource Monitor (Monitor): Resources of the sensor itself (CPU usage, memory usage, network transmission/reception).
  • Statistics (Stats): Operational statistics such as the number of scans, total data count, and number of successful transmissions.

The acquired radio strength can also be output as a graph (HTML format).

Status

v2.0.0 Added MQTT transmission function, improved build environment

Build

Env

To build, you need the following:

  • Go 1.25 or higher
  • librtlsdr
  • Docker (required for building the Linux version)
  • make

The RTL-SDR library can be installed with Homebrew on Mac OS.

brew install librtlsdr

The Linux version is built within a Docker environment, so it can be built if the host environment has make and Docker.

Build

Building is done with make.

$ make

The following targets can be specified:

  all        Build all executables (Mac, Linux amd64/arm/arm64)
  mac        Build executable for Mac
  clean      Delete built executables and the dist directory
  zip        Create a ZIP file for release

The built executables are created in the dist directory.

Run

Env

To run, the RTL-SDR library is required. On Mac OS, it can be installed with brew as described in the development environment section. Please install the rtl-sdr package in the Linux environment.

$ sudo apt install rtl-sdr

Usage

Usage of twSdrPower:
  -chart string
    	chart title
  -dark
    	dark mode chart
  -debug
    	Debug mode
  -end string
    	end frequency (default "1667M")
  -folder string
    	chart folder (default "./")
  -gain int
    	RTL-SDR Tuner gain (0=auto)
  -interval int
    	syslog/MQTT send interval(sec) (default 600)
  -list
    	List RTL-STR
  -mqtt string
    	MQTT broker destination (e.g., 192.168.1.1:1883)
  -mqttClientID string
    	MQTT client ID (default "twSdrPower")
  -mqttPassword string
    	MQTT password
  -mqttTopic string
    	MQTT topic (default "twsnmp/twSdrPower")
  -mqttUser string
    	MQTT user
  -once
    	Only once
  -sdr int
    	RTL-SDR Device Number
  -start string
    	start frequency (default "24M")
  -step string
    	step frequency (default "1M")
  -syslog string
    	syslog destination list (comma separated)

Syslog Destination Configuration

Multiple syslog destinations can be specified by comma-separating them. It is also possible to specify a port number.

-syslog 192.168.1.1,192.168.1.2:5514

MQTT Transmission Configuration

Specify the MQTT broker information.

-mqtt 192.168.1.1:1883 -mqttTopic my/topic

Data sent via MQTT is in JSON format. It is sent to the following topics:

  • {topic}/Power: Radio strength data
  • {topic}/Stats: Statistical data
  • {topic}/Monitor: Resource monitor data

Example of Startup (for Mac OS)

./dist/twSdrPower.darwin -chart noise -gain 500 -dark -folder /tmp -interval 300 -sdr 0 -mqtt 192.168.1.250:1883

Find Device

You can check the connected RTL-SDR device by starting it with the -list option.

$ ./dist/twSdrPower.darwin -list
Device List count=1
0,Generic RTL2832U OEM,Realtek,RTL2838UHIDIR,00000001

The 0 at the beginning is the device number (value specified with the -sdr option).

Copyright

see ./LICENSE

Copyright 2022-2026 Masayuki Yamai

About

RTL-SDR based spectrum power monitor that transmits signal strength via MQTT and Syslog.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors