Python-Based Soft Modem Development
UHD and Numpy-Based MIMO-OFDM System Development

Using the USRP hardware driver (UHD), we implemented a Python-based software modem. The entire OFDM-MIMO system was developed from scratch with numpy. Features include QAM modulation, OFDM and OTFS baseband processing, MIMO channel estimation, ZF equalization, and linear self-interference cancellation (SIC) for full duplex systems.

We implemented timing and frequency synchronization based on Zadoff-Chu sequence autocorrelation and a three-step carrier frequency offset (CFO) detection scheme: integer CFO, fractional CFO, and residual CFO, using cyclic prefix and repetitive pilot structures. The design follows the LTE frame structure and incorporates the Schmidl-Cox algorithm. As a result, the BS and UE devices can successfully decode data without any wired synchronization.

We evaluated various antenna types, including Pixel MIMO-based fluid antenna systems from HKUST. An Arduino-based antenna state control module was integrated into our testbed.

We also implemented a semantic communications testbed based on this software modem, using deep joint source-channel coding as the modulation scheme instead of conventional approaches such as JPEG compression, LDPC, or QAM. The system was demonstrated at ICC 2022, CCNC 2023, CES 2023, GLOBECOM 2023, 6G Summit Dresden 2025, and IEEE IMS 2025.
