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.
- 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
SoftNB/
├── DL_processing/
│ ├── DL_frames_processing_chain.py
│ └── utils.py
├── UL_processing/
│ └── single_tone/
│ └── test_with_NRep4.m
└── README.md
- 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.
- Navigate to the
DL_processingdirectory. - The main entry point is
DL_frames_processing_chain.py. This script orchestrates the entire processing chain. - Core algorithms (synchronization, CFO estimation, equalization, demodulation) are implemented in
utils.py. - Run the main script to process the included sample DL data or your own IQ recordings.
- Navigate to the
UL_processing/single_tonedirectory. - Open MATLAB and run
test_with_NRep4.mto analyze the provided uplink sample dataset (TX: HackRF, RX: USRP N210, NRep = 4). - The necessary functions are organized in their respective
.mfiles within the directory.
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.
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.
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}}