Skip to content

beginnerzjz/SoftNB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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

🔧 Downlink Processing

  • Frame synchronization with robust time and frequency algorithms
  • CFO estimation and compensation
  • Channel equalization techniques
  • Complete demodulation chain

📶 Uplink Processing

  • 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

For Downlink Processing (Python)

  • 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.

For Uplink Processing (MATLAB)

  • 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

Downlink Processing

  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.

Uplink Processing

  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}}

About

SDR-based NB-IoT PHY Signal Processing

Resources

License

Stars

9 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors