Wireless Communication Systems
Est. read time: 4 minutes | Last updated: September 23, 2024 by John Gentile
Contents
Overview
I & Q Data
Given the trigonometric identity: $$ \cos(\alpha)\cos(\beta) = \cos(\alpha)\cos(\beta) - \sin(\alpha)\sin(\beta) $$
We can describe a sinusoidal signal in component parts as: $$ A\cos(2\pi f t + \phi) = A\cos(2\pi f t)\cos(\phi) - A\sin(2\pi f t)\sin(\phi) $$
Setting I (the amplitude of the In-Phase carrier) and Q (the amplitude of the Quadrature-phase carrier) allows us to describe the magnitude and phase (polar coordinate) of a sinusoid by the simple amplitudes: $$ I = A\cos(\phi) $$ $$ Q = A\sin(\phi) $$ $$ A\cos(2\pi f t + \phi) = I\cos(2\pi ft) - Q\sin(2\pi ft)$$
From the Euler identity of a sinusoidal signal , we can see the relationship between the polar coordinate phasor notation of a signal vector (e.g. a signal described by its amplitude and phase) and its cartesian coordinate equivalent when described in the complex 2D plane, which shows the I/Q data format is the real and imaginary parts, respectively, of a given sinusiod:
The benefit of I/Q data, and why its a popular data representation when working with RF systems (e.x. communications devices), is that it makes phase modulated signals easier to work with; because a sine wave with a -90 degree phase offset is equal to a cosine wave, the above I/Q relationships mean that the same carrier can be used for both I & Q (just simply phase shifted for Q) and that phase modulation can be achieved by simply modulating the amplitude of I & Q. This is much simpler (e.g. cost effective & performant) in real, digital implementations than direct phase modulation of a signal. For instance, a simple and common way to transform I/Q to RF can be shown in the following block diagram:
I/Q data can also be represented by a Constellation Diagram which provides an intuitive mapping between a set of digital bits and I/Q symbols for a given modulation scheme, for example 16-ary Quadtrature Amplitude Modulation (QAM):
Waveforms
Wi-Fi (IEEE 802.11)
- How a Wifi chip works internally
- gr-ieee802-11 - IEEE 802.11 a/g/p Transceiver in GNU Radio
- open-sdr manages open-source WiFI baseband stacks that use FPGAs and plug into Linux like openwifi
- Nuand/bladeRF-wiphy: bladeRF-wiphy is an open-source IEEE 802.11 compatible software defined radio VHDL modem
- Marsrocky/Awesome-WiFi-CSI-Sensing: a list of awesome papers and cool resources on WiFi CSI sensing.
Cellular (LTE/3GPP, 4G/5G)
- srsRAN - Open Source 4G/5G software
- open5G_phy: A resource efficient, customizable, synthesizable 5G NR lower PHY written in Verilog
- free5GRAN: free5GRAN is an open-source 5G RAN stack. The current version includes a receiver which decodes MIB & SIB1 data. It also acts as a cell scanner. free5GRAN works in SA mode.
- LTE-Cell-Scanner: OpenCL, SDR, TDD/FDD LTE cell scanner, full stack from A/D samples to SIB ASN1 messages decoded in PDSCH, (optimized for RTL-SDR HACKRF and BladeRF board)
- Evrytania/Matlab-Library: Miscellaneous Matlab functions that are useful for wireless communications. Primarily focused on LTE / 3GPP.
Bluetooth
- DEF CON 30 RF Village - Mike Ryan - Building a Modern Bluetooth Sniffer for SDRs - YouTube
- JiaoXianjun/BTLE: Bluetooth Low Energy (BLE) packet sniffer and transmitter for both standard and non standard (raw bit) based on Software Defined Radio (SDR).
- OpenHaystack: track personal Bluetooth devices via Apple’s Find My network.
- GitHub - newhouseb/onebitbt: A Bluetooth Low Energy Radio using FPGA SERDES: No ADC, AGC, filters, mixers, or amplifiers required.
LoRaWAN
- Meshtastic: open source mesh network software running on low-power, affordable devices.
- LoRaWAN On Helium Network
ZigBee
Software Defined Radio (SDR)
SDR Software/Frameworks
GNU Radio
GNU Radio is an open-source SDR framework for prototyping communications systems.
- Comprehensive GNU Radio Archive Network (CGRAN): list of GNU Radio blocks and repos.
- gnuradio/volk: The Vector Optimized Library of Kernels Tutorials - GNU Radio SuggestedReading - GNU Radio
Other SDR Software
- SoapySDR: vendor and platform neutral SDR library.
SDR Hardware
RTL-SDR
RTL-SDRs are cheap and omnipresent, RX-only SDRs.
- RTL-SDR Quick Start Guide: general guides to RTL-SDR features and dipole antenna usage.
- RTL-SDR for Linux Quick Start Guide: installation instructions for necessary drivers and libraries to get up and running.
- osmocom rtl-sdr wiki
Ettus Research SDRs
Ettus has been a long time maker of high-quality SDR HW. They also open-source nearly all schematics, software, and FPGA firmware/HDL. They also maintain the USRP Hardware Driver (UHD), an open-source driver library across their devices, and well supported by other open-source frameworks, like GNU Radio.
Other SDR Hardware
- A comprehensive list of SDR hardware supported by GNU Radio.
- LimeSDR Mini 2.0: open-source, small form factor USB 3.0 SDR, utilizing the Lime LMS7002M RF ASIC.
- There’s also the original, slightly larger LimeSDR
- LimeRFE RF Front End
- AntSDR E200 small form factor with AD936x front end, similar to PlutoSDR and compatible with both UHD and ADI IIO driver stacks.
- ADI CN0417 2.4GHz small amplifier eval board
- greatscottgadgets/hackrf: low cost software radio platform
- YARD Stick One - Great Scott Gadgets: half-duplex sub-1GHz SDR.
- rpitx - RF transmitter for Raspberry Pi
- osmo-fl2k VGA adapter transmitter
- RFNM
References
- Learn SDR with Prof Jason - YouTube Playlist
- veeresht/CommPy
- Wireless Pi
- MathWorks Communications, SATCOM and Wireless HDL Toolboxes