All Projects → dernasherbrezon → jradio

dernasherbrezon / jradio

Licence: Apache-2.0 License
Software radio decoding

Programming Languages

java
68154 projects - #9 most used programming language
assembly
5116 projects

Projects that are alternatives of or similar to jradio

Gr Satellites
GNU Radio decoders for several Amateur satellites
Stars: ✭ 472 (+1080%)
Mutual labels:  satellite, decoder, telemetry, gnuradio
newsched
The GNU Radio 4.0 Runtime Proof Of Concept
Stars: ✭ 19 (-52.5%)
Mutual labels:  radio, dsp, gnuradio
Gnuradio
GNU Radio – the Free and Open Software Radio Ecosystem
Stars: ✭ 3,297 (+8142.5%)
Mutual labels:  radio, dsp, gnuradio
KS-1Q
Opensat first generation cubesat bus, launch into orbit at 2016/11/11
Stars: ✭ 22 (-45%)
Mutual labels:  satellite, telemetry, gnuradio
Red Pitaya Notes
Notes on the Red Pitaya Open Source Instrument
Stars: ✭ 205 (+412.5%)
Mutual labels:  radio, dsp
Si4735
SI4735 Library for Arduino
Stars: ✭ 182 (+355%)
Mutual labels:  radio, dsp
Rf Jam Replay
Jam and replay attack on vehicle keyless entry systems.
Stars: ✭ 224 (+460%)
Mutual labels:  radio, gnuradio
RFFHEM
Counterpart of SIGNALDuino, it's the code for FHEM to work with the data received from the uC
Stars: ✭ 44 (+10%)
Mutual labels:  radio, decoder
RFMap
RFMap - Radio Frequency Mapper
Stars: ✭ 23 (-42.5%)
Mutual labels:  radio, gnuradio
rtlsdr-wsprd
WSPR daemon for RTL receivers
Stars: ✭ 93 (+132.5%)
Mutual labels:  radio, decoder
Mercury-GS
An Open Source Program that allows users to interact with a Spacecraft in a lab environment, pre-launch.
Stars: ✭ 18 (-55%)
Mutual labels:  satellite, telemetry
Look4sat
Amateur radio and weather satellite tracker and passes predictor for Android inspired by Gpredict
Stars: ✭ 160 (+300%)
Mutual labels:  radio, satellite
R2cloud
Decode satellite signals on Raspberry PI or any other 64-bit intel.
Stars: ✭ 125 (+212.5%)
Mutual labels:  radio, satellite
Boswatch
Python Script to process input data from rtl_fm and multimon-NG - multiple Plugin support
Stars: ✭ 101 (+152.5%)
Mutual labels:  radio, decoder
RF-List
RFSec tools
Stars: ✭ 98 (+145%)
Mutual labels:  radio, gnuradio
PythonAudioEffects
A Python library that can apply: darth vader, echo, radio, robotic, and ghost effects to audio samples.
Stars: ✭ 26 (-35%)
Mutual labels:  radio, dsp
Gr Recipes
Main GNU Radio recipe repository for use with PyBOMBS
Stars: ✭ 90 (+125%)
Mutual labels:  radio, gnuradio
aptdec
NOAA APT satellite imagery decoder (not-so-WIP)
Stars: ✭ 43 (+7.5%)
Mutual labels:  satellite, decoder
Rfsec Toolkit
RFSec-ToolKit is a collection of Radio Frequency Communication Protocol Hacktools.无线通信协议相关的工具集,可借助SDR硬件+相关工具对无线通信进行研究。Collect with ♥ by HackSmith
Stars: ✭ 1,085 (+2612.5%)
Mutual labels:  radio, gnuradio
Gr Nrsc5
A GNU Radio implementation of HD Radio (NRSC-5)
Stars: ✭ 73 (+82.5%)
Mutual labels:  radio, gnuradio

Build Status Quality Gate Status

About

Software radio decoding written in Java. The idea of this project is to get blocks from the gnuradio and implement them in Java. This gives the following:

  • No need for tooling. You could use gnuradio-companion to build a working pipeline, then use the same blocks to build the pipeline in Java.
  • All Java benefits: run same binaries on multiple platforms without compilation. Single programming language instead of Python and C++. Better tooling like IDE, profilers and memory analyzers.

Demodulators

jradio supports high-level generic demodulators. They convert I/Q signal into the stream of soft bits (0-255).

Modulators

Some generic modulators. They take hard bits and produce I/Q signal.

De-framers

De-framer is a component that converts soft stream of bits into the frames of specific protocol.

Auxiliary tools

Quite often decoding require some additional tooling. jradio has some.

Forward error correction:

Randomization

CRC

Most likely the algorithm name can't say you much, so it is better to check corresponding test case. Here is list of supported implementations:

Satellite protocols

Low-level blocks

All blocks meant to be binary compatible with gnuradio versions. This will ensure you got the same results when moving from gnuradio-companion to Java.

  • Add
  • AdditiveScrambler
  • AGC
  • AX100Decoder. Out-of-tree block. Support ASM + Golay mode.
  • BinarySlicer
  • Cc11xxReceiver. Out-of-tree block. Decodes frames produced by cc11xx. Based on gr-cc11xx
  • ChannelModel
  • ChunksToSymbols and ChunksToSymbolsComplex
  • ClockRecoveryMM and ClockRecoveryMMComplex
  • ComplexConjugate
  • ComplexToReal
  • ConstellationSoftDecoder
  • ConvolutionalDeinterleaver
  • CorrelateSynchronizationMarker. Extract data from continuous stream of synchronization markers. Work with soft stream.
  • CorrelateSyncword
  • CostasLoop
  • DcBlocker
  • DelayOne. jradio doesn't support split and merge of streams. This block incapsulates delay 1 for imag complex stream
  • Descrambler
  • DifferentialEncoder/DifferentialDecoder
  • DifferentialSoftDecoder. Support qpsk only
  • Divide
  • FastNoiseSource
  • FIRFilterBlock
  • File Source (InputStreamSource)
  • File Sink (OutputStreamSink)
  • FLL Band Edge
  • FloatToChar
  • FloatToComplex
  • FractionalResampler
  • FrequencyModulator
  • FrequencyXlatingFIRFilter
  • GUI Histogram Sink (Spectogram)
  • HardToSoft. Convert hard decision stream to soft stream.
  • HdlcReceiver. Out-of-tree block. Extracts HDLC frame from the unpacked stream of bytes
  • HdlcTransmitter. Take the byte array and create hdlc frame
  • InterpFIRFilter
  • LowPassFilter and LowPassFilterComplex
  • LMSDDEqualizer
  • MapBlock
  • Multiply
  • MultiplyConst
  • NrziDecode/NrziEncode. Performs nrzi decoding/encoding over unpacked stream of bytes
  • osmocom source (RtlTcp)
  • PackedToUnpacked
  • PolyphaseArbResamplerComplex
  • PolyphaseClockSyncComplex
  • PeakDetection. Detect peaks in the FFT. Not a gnuradio block.
  • QuadratureDemodulation
  • Rail
  • Rms
  • RmsAgc and RmsAgcComplex. Out-of-tree block. For more details see this blog post
  • RootRaisedCosineFilter
  • Scrambler
  • SigSource
  • SequentialSource. Produce time-multiplexed outputs from several sources. Useful in simulations.
  • TimeConstraintedSource. Can be used in simulations to time-limit noise source.
  • UnpackedToPacked
  • WavFileSource
  • WavFileSink

Coding:

  • NRZI
  • Bit stuffing

Supported satellites

jradio has lots of built-in satellite decoders. Some of them have non standard de-framers, some beacon decoders, some both:

Name NORAD Sample code
DELFI-C3 (DO-64) 32789 DelfiC3Test
1Kuns-Pf 43466 KunsPfTest
AAUSAT-4 41460 Aausat4Test
Aistechsat3 44103 Aistechsat3Test
Aistechsat2 43768 Same as Aistechsat3. See Aistechsat3Test
AO-73 39444 Ao73Test
Astrocast 0.1 43798 AstrocastTest
AT03 42784 At03Test
ATL-1 44830 Atl1Test
AU02/AU03 42723/42731 Au02Test
CA03 42734 Ca03Test
D-Star ONE 43881 Dstar1Test
DELPHINI 44030 Delphini1Test
Entrysat 44429 EntrysatTest
ESEO 99912 EseoTest
Fmn1 43192 Fmn1Test
FOX-1A, FOX-1B, FOX-1C, FOX-1D 40967, 43017, 43770, 43137 FoxTest
GOMX-1 39430 Gomx1Test
Itasat1 43786 Itasat1Test
Jy1sat 43803 Nayif1Test
Lucky-7 44406 Lucky7Test
Lume-1 / AISTechSat 2 43908 / 43768 Lume1Test
Meteor-M N2 40069 MeteorImageTest
Mysat-1 44045 Mysat1Test
Nayif1 42017 Nayif1Test
OPS-SAT 44878 OpsSatTest
PwSat2 43776 PwSat2Test
Reactor Hello World 43743 ReaktorHelloWorldTest
S-NET A,B,C,D 43186, 43187, 43188, 43189 SnetTest
Sat3Cat1 99901 Sat3Cat1Test
SMOG-P 44832 SmogPTest
Suomi100 43804 Suomi100Test
SWAMPSAT-2 45115 Swampsat2Test
Technosat 42829 TechnosatTest
QARMAN 45263 QarmanTest
Quetzal1 45598 FskDemodulator 4800 baud, Ax25G3ruhBeaconSource and Quetzal1Beacon
Huskysat-1 45119 Huskysat1Test
Painani-1 44365 FskDemodulator 9600 baud, Ax25G3ruhBeaconSource and Painani1Beacon
CHOMPTT 43855 ChompttTest
ALSAT 1N 41789 Alsat1nTest
STRAND-1 39090 Strand1
PolyItan1 40042 FskDemodulator 9600 baud, Ax25G3ruhBeaconSource and PolyItan1Beacon
Unisat6 40012 FskDemodulator 9600 baud, Ax25G3ruhBeaconSource and Unisat6Beacon
Lightsail2 44420 FskDemodulator 9600 baud, Ax25G3ruhBeaconSource and Lightsail2Beacon
CubeBel-1 43666 FskDemodulator 9600 baud, Ax25G3ruhBeaconSource and Bsusat1Beacon
Salsat 46495 AfskDemodulator 1200 baud, -600 deviation, 1500 offset with Salsat decoder
Armadillo 44352 FskDemodulator 19200 baud, Ax25G3ruhBeaconSource and ArmadilloBeacon
Spooqy1 44332 Spooqy1Test
NORBI 46494 FskDemodulator 9600 baud, Ax25G3ruhBeaconSource and NorbiBeacon
MEZNSAT 46489 FskDemodulator 2400 baud, Ax25G3ruhBeaconSource and MeznsatBeacon
FALCONSAT-3 30776 FskDemodulator 9600 baud, Ax25G3ruhBeaconSource and Falconsat3Beacon
AMICALSAT 46287 AfskDemodulator 1200 baud, Ax25BeaconSource and Amical1Beacon
BOBCAT-1 46922 FskDemodulator 1200 baud, Ax100BeaconSource and Bobcat1Beacon
GRIFEX 40379 FskDemodulator 9600 baud, Ax25G3ruhBeaconSource and GrifexBeacon
BUGSAT-1 (TITA) 40014 FskDemodulator 9600 baud, Ax25G3ruhBeaconSource and BugsatBeacon
TAUSAT-1 47926 BpskDemodulator 9600 baud, Ax25G3ruhDecoder and Tausat1Beacon
UVSQ-SAT 47438 BpskDemodulator 9600 baud, Ax25G3ruhDecoder and UvsqsatBeacon
GRBAlpha 47959 FskDemodulator 9600 baud, Ax25G3ruhBeaconSource and GRBAlphaBeacon
SMOG-1 47964 ru.r2cloud.jradio.smog1.Smog1Beacon
DELFI-PQ 47964 ru.r2cloud.jradio.delfipq.DelfiPqBeacon
GASPACS 51439 ru.r2cloud.jradio.gaspacs.Gaspacs

Doppler correction

Doppler correction could be made using SigSource and Multiply blocks. Here is the sample code:

PassPredictor predictor = new PassPredictor(tle, currentLocation);
SigSource source2 = new SigSource(Waveform.COMPLEX, sampleRate, new DopplerValueSource(sampleRate, satelliteFrequency, correctPeriodMillis, startTimeMillis) {

	@Override
	public long getDopplerFrequency(long satelliteFrequency, long currentTimeMillis) {
		return predictor.getDownlinkFreq(satelliteFrequency, new Date(currentTimeMillis));
	}
}, 1.0f);
Multiply mul = new Multiply(source, source2, true);

Where "getDopplerFrequency" can be calculated using orekit or predict4java.

Usage

Configure maven:

<dependency>
        <groupId>ru.r2cloud</groupId>
        <artifactId>jradio</artifactId>
        <version>1.57</version>
</dependency>

Contributing

Contributing to the project is super easy:

  • Raise an issue with description and use case. Skip this step for small bug fixes or minor features
  • Raise pull request
  • Make sure pull request contains unit tests for new functionality or bug fix
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].