NarrowBeam is a Windows desktop application for amateur television work with HackRF. It currently includes a transmitter mode for generating NTSC video and a receiver mode in the application shell.
- DirectShow webcam enumeration through
ffmpeg - NTSC composite generation for HackRF transmit
- Test pattern transmit mode
- Callsign overlay in the lower-left corner of transmitted video
- Amateur TV preset channels for US 70cm, 33cm, and 23cm allocations
- Live transmitter monitor preview
- Persistent transmitter settings stored in
narrowbeam.ini - RTL-SDR Receiver mode with AM video demodulator
- Real-time video display of received signal
- Manual gain control and frequency tuning
- Windows
- .NET 8 SDK or .NET 8 Desktop Runtime
- HackRF with the required native DLLs (for Transmitter)
- RTL-SDR with
rtlsdr.dll(for Receiver) ffmpeg.exeavailable beside the built executable, or in the repository root during development
The repository already includes the native files expected by the project:
ffmpeg.exehackrf.dllrtlsdr.dlllibusb-1.0.dllpthreadVC2.dll
From the repository root:
dotnet build .\NarrowBeam\NarrowBeam.csproj -c ReleaseRelease output:
NarrowBeam\bin\Release\net8.0-windows\
After building, launch:
.\NarrowBeam\bin\Release\net8.0-windows\NarrowBeam.exeOn startup, choose either transmitter or receiver mode.
- Select a webcam, or enable the test pattern option.
- Pick an ATV preset or enter a custom frequency.
- Set transmit bandwidth, gain, amp state, and optional callsign.
- Press
Start. - Watch the
Live Monitorpane to confirm what is being transmitted.
Saved transmitter values are restored from narrowbeam.ini in the application directory.
- Select an RTL-SDR device from the dropdown.
- Choose an ATV preset or set a custom frequency.
- Note: The receiver tunes 500kHz below the target frequency to avoid the DC spike.
- Adjust
RX Gainmanually for best picture quality (start around 30-40dB). - Press
Start. - The received video will display in the
Live Videopane. - Sync: The receiver uses a simple "hard sync" detector. It is robust but may unlock if the signal is very weak.
- Webcam capture uses
ffmpegwith DirectShow. - The transmitted preview reflects the frame being encoded for NTSC output.
- If no camera appears, verify the device is visible to:
ffmpeg.exe -hide_banner -list_devices true -f dshow -i dummy