Updated readme to reflect new Ubuntu guide.

pull/1/head
Mark Jessop 2016-11-28 23:16:15 +10:30
rodzic ca89fb3236
commit 955e1a56f2
1 zmienionych plików z 10 dodań i 4 usunięć

Wyświetl plik

@ -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.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. * 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 ## Dependencies
* Python (2.7, though 3 might work with some small mods) * 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. * SSDV (https://github.com/fsphil/ssdv). The `ssdv` binary needs to be available on the PATH.
* crcmod (`pip install crcmod`) * crcmod (`pip install crcmod`)
* python requests (install using pip)
* numpy (for debug output tests): `apt-get install python-numpy` * numpy (for debug output tests): `apt-get install python-numpy`
* PyQtGraph & PyQt4 (for FSK Modem Stats and SSDV GUI: `pip install pyqtgraph`) * 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. * 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 ### 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: 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. * GnuRadio + libraries for whatever SDR you plan on using.
* `fsk_demod`, `drs232_ldpc`, 'tsrc' from codec2-dev. You can get these 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` * `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 ### 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): 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. 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. ## 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. * 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.