NAME
bladeRF-fsk - command line fsk applicationDESCRIPTION
The bladeRF-fsk project is a simple frequency shift keying (FSK) based software modem implemented entirely on the host PC side in C code. The project uses libbladeRF to transmit/receive samples with a bladeRF device. A USB 3.0 port is not required when using this modem. The project also contains a MATLAB/Octave simulation/implementation of the physical layer (PHY) portion of the modem. The top level bladeRF-fsk C program demonstrates the functionality of the modem in a simple bladeRF-to-bladeRF data transfer program. This program can transmit/receive both text (like a chat program) and binary files (like a file transfer program) with a raw link rate of 250 kbps. To properly demonstrate the program, two instances of the program must be run with two separate bladeRF devices (loopback is not supported). The modem modulates with continuous-phase frequency shift keying (CPFSK). Baseband I/Q CPFSK samples are sent to the bladeRF device, inside which they converted from digital to analog, mixed with quadrature RF carriers, and transmitted through the air. Received signals are mixed with quadrature RF carriers to downconvert to baseband I/Q, sampled with an ADC, and sent to the host PC program over the USB connection. The physical layer code features an FIR low-pass filter, power normalization, preamble correlation for signal detection, CPFSK modulation/demodulation, and scrambling. The link layer code features framing, error detection via CRC32 checksums, and guaranteed delivery of frames via acknowledgements and retransmissions. This project is meant to be an experimental example and should not be treated as a rigorous modem.EXAMPLES
To run the top-level bladeRF-fsk program with defaults, type into a terminal:- bladeRF-fsk
- bladeRF-fsk -h
- bladeRF-fsk -d *:serial=4e
TX and RX antennas attached. 2) Run bladeRF-fsk on one of the devices (receiver), with the output RX file specified:
- bladeRF-fsk -r 904M -t 924M -o rx.jpg
TX file specified:
- bladeRF-fsk -r 924M -t 904M -i puppy.jpg
sending device. 5) Once the transmission is complete, press [CTRL-D] on Linux/OSX or [CTRL-Z then ENTER]
on Windows to stop the program on the receiving end. If the sending device does not get any response from the receiving device, it will quit the program. Try increasing the gains and run it again.
KNOWN LIMITATIONS
1) The program does not currently support the use of an XB-200 transverter expansionboard to transmit/receive at frequencies below 300MHz. In order to add XB-200 support,
a new configuration option as well as functions from the "Expansion boards" section
of the libbladeRF API would need to be added to the source code. 2) The program is currently unable to perform two file transfers in both directions
simultaneously. Reason #1: The program runs until is gets an EOF in its TX input,
meaning whichever side finishes transmitting its file first will quit and stop
receiving. An EOF bit would need to be added to the link layer packet format in order
to stop this behavior. Reason #2: The program doesn't seem to perform well during
these simultaneous file transfers, and usually loses connection. Further investigation
is required to debug this.
See Also
bladeRF-cli(1)2017.07 | BLADERF |