README.md

September 23, 2025 ยท View on GitHub

SoftNB is an advanced software-defined radio (SDR) implementation of NB-IoT physical layer signal processing, providing a flexible framework for experimenting with NB-IoT PHY layer characteristics.

โœจ Key Features

  • Frame synchronization with robust time and frequency algorithms
  • CFO estimation and compensation
  • Channel equalization techniques
  • Complete demodulation chain
  • Multi-repetition support (NRep=4 sample data)
  • Cross-platform validation (HackRF TX, USRP N210 RX)
  • MATLAB-based processing implementation

๐Ÿ› ๏ธ Project Structure

SoftNB/

โ”œโ”€โ”€ DL_processing/

โ”‚ โ”œโ”€โ”€ DL_frames_processing_chain.py

โ”‚ โ””โ”€โ”€ utils.py

โ”œโ”€โ”€ UL_processing/

โ”‚ โ””โ”€โ”€ single_tone/

โ”‚ โ””โ”€โ”€ test_with_NRep4.m

โ””โ”€โ”€ README.md

Dependencies and Requirements

  • Python (>= 3.7)
  • NumPy & SciPy: For numerical computing and signal processing.
  • Matplotlib: For visualization and plotting results.
  • Scikit-learn: Potentially used for advanced signal processing utilities.
  • MATLAB (R2019b or higher)
  • Communications Toolbox: Essential for signal processing, modulation, and visualization functions.
  • DSP System Toolbox: Used for filter design and signal analysis operations.
  • Signal Processing Toolbox: Required for spectral analysis and filtering.

Getting Started

  1. Navigate to the DL_processing directory.
  2. The main entry point is DL_frames_processing_chain.py. This script orchestrates the entire processing chain.
  3. Core algorithms (synchronization, CFO estimation, equalization, demodulation) are implemented in utils.py.
  4. Run the main script to process the included sample DL data or your own IQ recordings.
  1. Navigate to the UL_processing/single_tone directory.
  2. Open MATLAB and run test_with_NRep4.m to analyze the provided uplink sample dataset (TX: HackRF, RX: USRP N210, NRep = 4).
  3. The necessary functions are organized in their respective .m files within the directory.

Sample Data

This repository includes sample datasets captured using:

  • Transmitters: HackRF One, other NB-IoT compliant eNodeBs.
  • Receivers: USRP N210, RTL-SDR dongles.

These datasets are crucial for validating the processing chains and serve as a reference for expected data formats.

Contributing

Contributions to enhance the signal processing algorithms, support for more SDR platforms, or additional analysis features are welcome. Please feel free to fork the repository and submit pull requests.

๐Ÿ“„ Citation

If you use this repo, please cite our paper:

@INPROCEEDINGS{10858545,
  author={Zheng, Jingze and Gu, Chaojie and Shu, Yuanchao and Guo, Xiuzhen and He, Shibo and Shi, Zhiguo and Chen, Jiming},
  booktitle={2024 IEEE 32nd International Conference on Network Protocols (ICNP)}, 
  title={SoftNB: A Fully Functional NB-IoT PHY for Various SDR Platforms}, 
  year={2024},
  volume={},
  number={},
  pages={1-11},
  keywords={Meters;Time-frequency analysis;Protocols;Computer peripherals;Pipelines;LoRa;Signal processing;Physical layer;Low-power wide area networks;Software radio;NB-IoT;SDR;Physical Layer},
  doi={10.1109/ICNP61940.2024.10858545}}