https://github.com/windytan/darc2json
Decoder for DARC subcarriers on FM radio (PoC)
https://github.com/windytan/darc2json
darc json linux macos radio rtl-sdr
Last synced: 5 months ago
JSON representation
Decoder for DARC subcarriers on FM radio (PoC)
- Host: GitHub
- URL: https://github.com/windytan/darc2json
- Owner: windytan
- License: mit
- Created: 2013-11-02T14:04:37.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2025-04-08T17:36:32.000Z (about 1 year ago)
- Last Synced: 2025-04-08T18:33:39.695Z (about 1 year ago)
- Topics: darc, json, linux, macos, radio, rtl-sdr
- Language: C++
- Homepage:
- Size: 438 KB
- Stars: 35
- Watchers: 8
- Forks: 11
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# darc2json
darc2json is a proof-of-concept DARC demodulator for Linux/macOS. It takes an
FM multiplex signal as input, in raw PCM format, and outputs line-delimited
JSON messages. It was designed to be used with the RTL-SDR tool `rtl_fm`, but
it can read any FM multiplex signals.
The default input sample rate is 228 kHz.
## Supported features
darc2json can decode:
* L5 Group Data (type 12)
* Raw Layer 4 LMCh data if type is something else
* Block application channel: Layer 3 data
* TDT: Country code, network name, date and time
## Not implemented
A list of things to fix for your own implementation:
* No PLL and symbol synchronization (amazingly, it kind of works)
* No error correction beyond single bit flips
* No Fragmented L5
* No Short message channel
* No Synchronous Frame Messages
* No COT, SCOT, AFT, SAFT
* No Conditional Access at L4
* Drops block sync at first error
* Needs more allocation-efficient handling of bitstrings
* Repeats unchanged service messages
## Installation
You will need git, a C++17 compiler, the [liquid-dsp][liquid-dsp] library, libsndfile, and meson.
On macOS (OSX) you will also need XCode command-line tools (`xcode-select --install`).
1. Clone the repository (unless you downloaded a release zip file):
$ git clone https://github.com/windytan/darc2json.git
$ cd darc2json
2. Compile darc2json:
$ meson setup build
$ cd build
$ meson compile
3. Install:
$ meson install
It is also simple to later pull the latest updates and recompile:
$ git pull
$ cd build
$ meson compile
$ meson install
[liquid-dsp]: https://github.com/jgaeddert/liquid-dsp
## Usage
The simplest way to view DARC messages using `rtl_fm` is:
rtl_fm -M fm -l 0 -A std -p 0 -s 228k -g 20 -F 9 -f 87.9M | darc2json
### Full usage
```
radio_command | darc2json [OPTIONS]
By default, a 228 kHz single-channel 16-bit MPX signal is expected via
stdin.
-f, --file FILENAME Use an audio file as MPX input. All formats
readable by libsndfile should work.
-r, --samplerate RATE Set stdin sample frequency in Hz. Will resample
(slow) if this differs from 228000 Hz.
-t, --timestamp FORMAT Add time of decoding to JSON groups; see
man strftime for formatting options (or
try "%c").
-v, --version Print version string.
```
## Troubleshooting
### Can't find liquid-dsp on macOS
If you've installed [liquid-dsp][liquid-dsp] yet `configure` can't find it, it's
possible that XCode command line tools aren't installed. Run this command to fix
it:
xcode-select --install
### Can't find liquid-dsp on Linux
Try running this in the terminal:
sudo ldconfig
## Licensing
See [LICENSE](LICENSE).