From 955e1a56f2a6752f69a74ddbc9c25886de3ef25c Mon Sep 17 00:00:00 2001 From: Mark Jessop Date: Mon, 28 Nov 2016 23:16:15 +1030 Subject: [PATCH] Updated readme to reflect new Ubuntu guide. --- README.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5d72cb1..ee136b7 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,14 @@ The transmit side is designed to run on a Raspberry Pi, and the UART (/dev/ttyAM * v0.1 - First test flight on Horus 37, no FEC. Read more about that here: http://rfhead.net/?p=637 * v0.2 - Second test flight, with LDPC FEC enabled. - TBD. +## Ubuntu 16.04 RX +* There is now a guide on how to set up a RX station using Ubuntu within the INSTALL_ubuntu file + ## Dependencies * Python (2.7, though 3 might work with some small mods) * SSDV (https://github.com/fsphil/ssdv). The `ssdv` binary needs to be available on the PATH. * crcmod (`pip install crcmod`) +* python requests (install using pip) * numpy (for debug output tests): `apt-get install python-numpy` * PyQtGraph & PyQt4 (for FSK Modem Stats and SSDV GUI: `pip install pyqtgraph`) @@ -42,6 +46,8 @@ The transmit side is designed to run on a Raspberry Pi, and the UART (/dev/ttyAM * Apparently the newer Raspberry Pi's (or possibly just a newer version of Raspbian) use the alternate UART hardware by default, which has a smaller transmit buffer. This may result in gaps between bytes, which will likely throw the rx timing estimation off. ### RX Side +* NOTE: On Ubuntu 16.04 or newer, follow the guide within INSTALL_ubuntu + To be able to run a full receive chain, from SDR through to images, you'll need: * GnuRadio + libraries for whatever SDR you plan on using. * `fsk_demod`, `drs232_ldpc`, 'tsrc' from codec2-dev. You can get these using @@ -62,12 +68,12 @@ To be able to run a full receive chain, from SDR through to images, you'll need: * `nc localhost 9898 | ./fsk_demod 2XS 8 923096 115387 - - S 2> >(python fskdemodgui.py) | ./drs232_ldpc - - -vv| python rx_ssdv.py --partialupdate 16` ### RX Without GNURadio -It's possible to use csdr (Get it from https://github.com/simonyiszk/csdr ) to perform the sideband demodulation. Unfortunately the csdr fractional resampler actually degrades the signal somewhat, so we are currently using a resample from the codec2_dev repository (tsrc). +It's possible to use csdr (Get it from https://github.com/simonyiszk/csdr ) to perform the sideband demodulation. Example (RTLSDR): -`rtl_sdr -s 1000000 -f 440980000 -g 35 - | csdr convert_u8_f | csdr bandpass_fir_fft_cc 0.05 0.45 0.05 | csdr realpart_cf | csdr gain_ff 0.5 | csdr convert_f_s16 | ./tsrc - - 0.9230968 | ./fsk_demod 2XS 8 923096 115387 - - S 2> >(python fskdemodgui.py) | ./drs232_ldpc - - -vv| python rx_ssdv.py --partialupdate 16` +`rtl_sdr -s 923096 -f 440980000 -g 35 - | csdr convert_u8_f | csdr bandpass_fir_fft_cc 0.05 0.45 0.05 | csdr realpart_cf | csdr gain_ff 0.5 | csdr convert_f_s16 | ./fsk_demod 2XS 8 923096 115387 - - S 2> >(python fskdemodgui.py) | ./drs232_ldpc - - -vv| python rx_ssdv.py --partialupdate 16` -This mess of a command line (bash piping, yay!) receives samples from the rtlsdr, filters out the upper 'sideband' of the received bandwidth, then throws away the imaginary part and convert to 16-bit shorts. The signal is then resampled using a utility from the codec2-dev repository, before being fed into fsk_demod (the FSK modem). Debug output (on stderr) from the modem is piped into a python GUI), while the received soft-decision 'bits' are piped into drs232_ldpc, which does de-framing and LDPC error correction. Packets which pass checksum are then passed onto the rx_ssdv.py python utility for assembly into images. +This mess of a command line (bash piping, yay!) receives samples from the rtlsdr, filters out the upper 'sideband' of the received bandwidth, then throws away the imaginary part and convert to 16-bit shorts. The signal is then fed into fsk_demod (the FSK modem). Debug output (on stderr) from the modem is piped into a python GUI), while the received soft-decision 'bits' are piped into drs232_ldpc, which does de-framing and LDPC error correction. Packets which pass checksum are then passed onto the rx_ssdv.py python utility for assembly into images. On my flights the centre frequency of the transmitter is around 441.2 MHz, so I tune the RTLSDR to just below 441 MHz to sit the signal roughly in the middle of the passband. @@ -75,5 +81,5 @@ It should be quite possible to use other SDRs (i.e. the AirSpy) with appropriate ## RX Tips. * It is highly recommended to use a preamplifier in front of your RTLSDR to lower the overall noise figure of the system. With a NooElec RTLSDR (R820T2 Tuner) and a [HabAmp](https://store.uputronics.com/index.php?route=product/product&product_id=53), we were able to acheive a Minimum-Detectable-Signal (MDS - which we defined as the point where we get no packet errors) of around -112 dBm. -* If needed, the bitrate can be slowed down by editing the defaults in tx_picam.py. You will then have to determine the appropriate parameters for fsk_demod and the preceding filtering/resampling chain. +* If needed, the transmit bitrate can be slowed down by editing the defaults in tx_picam.py. You will then have to determine the appropriate parameters for fsk_demod and the preceding filtering/resampling chain.