One SDR. Four radio systems. On the air together.
Nexus-BS 2.0 runs a TETRA base station, a DMR repeater, a P25 repeater and an analog FM repeater at the same time, from a single SDR on a Raspberry Pi.
The live dashboard. Demo data: every callsign, name and ID in this picture is invented.
Four modes, each on its own
Every mode is its own carrier on a 25 kHz grid. Turning one on or off, or a mode failing and restarting, never interrupts the others.
Base station
- Brew / TetraPack core interconnect
- Group calls, private simplex and duplex calls
- SDS, status and Home Mode Display
- Talking-party identity and DGNA
- IP over TETRA packet data (experimental)
Repeater
- Both timeslots
- MMDVM homebrew network, e.g. BrandMeister
- Separate RF and network access filters
- Callsign and name lookup
Repeater
- P25 reflector link
- Talkgroup auto-select and reflector list
- NAC and access policy
Analog repeater
- 25 kHz channel, CTCSS access
- MMDVM FM repeater logic and timers
- svxlink bridge (RoLink) or USRP link
- MDC1200 caller identity
Built for a small, always-on station
A Raspberry Pi, one SDR HAT and, for real range, an external linear PA.
One SDR for everything
All carriers share one TX and one RX local oscillator. Live DC and I/Q correction keeps the LO spike and images down where the SDR does not do it itself.
Browser and touch screen
A full browser dashboard, plus Nexus-BS Touch on a DSI panel at the station. Most changes apply live; RF kill is one button.
Comes back by itself
A failed mode is isolated and reactivated automatically. After a power cut the carriers are back on the air within seconds.
No service runs as root
Every service runs under an unprivileged account. Station administration listens only on the Pi itself.
Pi 4 / Pi 5
An SDR HAT or a USB SDR (see the list below). SDRs give a few mW: add a linear PA for real range.
Engineering, not certification
TETRA behaviour follows EN 300 392-2 clause by clause. Nexus-BS is not a certified TETRA product.
Nexus-BS Touch
A station console on a DSI touch screen, right on the Pi. Validated on the 4.3" 800×480 DSI panel; the layout reflows to 800×600, 1024×600 and 1024×768.




Built for fingers
56 px targets, momentum scrolling, RF KILL always one tap away. A drag never presses a button.
No desktop needed
No X, Wayland or browser: it draws straight to the framebuffer and costs about 3 % of one core, niced away from the RF threads.
Backlight and screensaver
Brightness, idle timeout, dim or blank screensaver and wake on traffic or touch, set in [touch]. Boot splash included.
Demo data: every callsign, name and ID in these pictures is invented.
Supported SDRs
Any SoapySDR device that transmits and receives at the same time can be tried. These have their own device profile.
SX1255 HATs · µCell
SXceiver, Z32IT SX1255 RPi HAT (with or without the TQP3M9036 driver) and µCell. On the air daily.
PlutoSDR · Pluto+
ADALM-Pluto and Pluto+. Device profile ready; hardware is on the bench.
LimeSDR · USRP · others
LimeSDR USB, Mini v2, LimeNET Micro; Ettus USRP B200 / B210; any SoapySDR device. Device profiles exist, no hardware to test on: reports welcome.
On the phone too
The same dashboard in the light theme and on a phone.


Documentation
Start with the configuration manual, then calibrate the transmitter.
Configuration manual
Every key of nexus2.toml: the channel plan, TETRA, DMR, P25, FM, dashboard and recipes.
TX calibration guide
Where to put the local oscillator and how to cancel its spike and the I/Q images, from the dashboard, in 30 minutes.
Nexus-BS 2.0 is in active development and intended for amateur radio and lab use under your own licence. Downloads (SD card image) will be published on GitHub. Nexus-BS 1.x stays available, archived, at invictus737/nexus-bs.
