• Stars
    star
    101
  • Rank 338,166 (Top 7 %)
  • Language
    Python
  • License
    GNU General Publi...
  • Created over 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A GNU Radio implementation of HD Radio (NRSC-5)

gr-nrsc5

This project implements an HD Radio transmitter in GNU Radio. HD Radio is standardized in NRSC-5. The latest version of the standard is NRSC-5-D, which can be found at https://www.nrscstandards.org/standards-and-guidelines/documents/standards/nrsc-5-d/nrsc-5-d.asp.

If you're interested in receiving HD Radio, a stand-alone receiver for RTL-SDR is available here: https://github.com/theori-io/nrsc5/

Installation

If you installed GNU Radio using PyBOMBS, simply run pybombs install gr-nrsc5.

Otherwise, run the following commands:

mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig

If your GNU Radio is installed in /usr (rather than /usr/local), then replace the cmake line above with:

cmake -DCMAKE_INSTALL_PREFIX=/usr ..

Blocks:

HDC encoder

This block encodes audio into High-Definition Coding (HDC) frames. The input sample rate must be 44,100 samples per second. ADTS headers are added to the output frames to facilitate synchronization. The encoding is performed by a patched version of fdk-aac: https://github.com/argilo/fdk-aac/tree/hdc-encoder

PSD encoder

This block encodes Program Service Data PDUs, as described in https://www.nrscstandards.org/standards-and-guidelines/documents/standards/nrsc-5-d/reference-docs/1028s.pdf. PSD conveys information (e.g. track title & artist) about the audio that is currently playing.

SIS encoder

This block encodes Station Information Service PDUs, as described in https://www.nrscstandards.org/standards-and-guidelines/documents/standards/nrsc-5-d/reference-docs/1020s.pdf, and assembles them into the PIDS and SIDS logical channels. SIS provides information about the station. All message types are implemented, except for Emergency Alerts.

Layer 2 encoder

This block assembles HDC audio frames and PSD PDUs into the audio transport, producing layer 2 PDUs (as defined in https://www.nrscstandards.org/standards-and-guidelines/documents/standards/nrsc-5-d/reference-docs/1014s.pdf and https://www.nrscstandards.org/standards-and-guidelines/documents/standards/nrsc-5-d/reference-docs/1017s.pdf).

Layer 1 FM encoder

This block implements Layer 1 FM (as defined in https://www.nrscstandards.org/standards-and-guidelines/documents/standards/nrsc-5-d/reference-docs/1011s.pdf). It takes PIDS and Layer 2 PDUs as input, and produces OFDM symbols as output. Only the Hybrid and Extended Hybrid modes have been implemented and tested so far. The All Digital modes are currently under development.

Layer 1 AM encoder

This block implements Layer 1 AM (as defined in https://www.nrscstandards.org/standards-and-guidelines/documents/standards/nrsc-5-d/reference-docs/1012s.pdf). It takes PIDS and Layer 2 PDUs as input, and produces OFDM symbols as output. Both Hybrid (MA1) mode and All Digital (MA3) mode are implemented.

Flowgraphs:

Several sample flowgraphs are available in the apps folder:

FM

  • hd_tx_usrp.grc, hd_tx_usrp.py: tested on a USRP B200
  • hd_tx_hackrf.grc, hd_tx_hackrf.py: tested on a HackRF One
  • hd_tx_rtl_file.grc, hd_tx_rtl_file.py: produces an output file in the format used by https://github.com/theori-io/nrsc5/

AM

  • hd_tx_am_hackrf.grc, hd_tx_am_hackrf.py: Hybrid mode, tested on a HackRF One
  • hd_tx_am_ma3_hackrf.grc, hd_tx_am_ma3_hackrf.py: All Digital mode, tested on a HackRF One
  • hd_tx_am_soundcard.grc, hd_tx_am_soundcard.py: outputs I/Q samples as stereo audio, suitable for use with a soundcard-based direct conversion transmitter

These flowgraphs read a WAV file named sample.wav, which must be encoded at 44,100 samples per second. The license for the supplied sample.wav file is as follows:

Copyright 2013, Canonical Ltd. This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.

More Repositories

1

sdr-examples

A collection of GNU Radio flow graphs
Python
375
star
2

secplus

A software implementation of the Security+ system used by garage door openers
Python
147
star
3

gr-dsd

GNU Radio block for Digital Speech Decoder
C++
131
star
4

gr-elster

A GNU Radio block that decodes packets transmitted by Elster R2S smart meters
CMake
120
star
5

gr-qam

A QAM-64 transmitter for GNU Radio. This project was merged into GNU Radio in version 3.7.10.
Python
47
star
6

gr-ham

A collection of GNU Radio blocks useful for amateur radio
Python
37
star
7

contest-sdr

An SDR-based transeciver for amateur radio contests
Python
35
star
8

gr-flarm

FLARM receiver for GNU Radio
CMake
26
star
9

gr-tenna

goTenna Mesh receiver and transmitter for GNU Radio
Python
26
star
10

nrsc-5

Prototype implementation of HD Radio (NRSC-5). Superseded by https://github.com/argilo/gr-nrsc5
Python
21
star
11

pico-jiggler

Simulate periodic mouse movements using a Raspberry Pi Pico
C
18
star
12

BusFollower

Ottawa Bus Follower Android app
Java
16
star
13

gr-queue

GNU Radio queue block, useful for trunked radio systems
CMake
11
star
14

grcon22

Challenges for GRCon 2022
Python
7
star
15

ham-utils

Various amateur radio utilities
Python
6
star
16

gr-dsdcc

GNU Radio block for DSDcc
CMake
5
star
17

bbhn-utils

Utilities that may be useful for Broadband-Hamnet nodes
Python
5
star
18

BlackHatBadgeReader

Read the contents of your Black Hat USA 2012 badge on your NFC-enabled Android phone
Java
4
star
19

pico-projects

Projects for the Raspbery Pi Pico
Python
3
star
20

pi-frontend

A tool to configure a Raspbery Pi as a MythTV frontend
Shell
3
star
21

ringzer0

My solutions for RingZer0 CTF problems
Python
1
star
22

argilo-net

La persona retejo de Clayton Smith
HTML
1
star
23

advent

My solutions for Advent of Code puzzles
Python
1
star
24

anagramoj

Programo por trovi anagramojn en Esperanto
C
1
star
25

irrational-net

The personal website of Clayton Smith
HTML
1
star