Giter Club home page Giter Club logo

tapparelj / gr-lora_sdr Goto Github PK

View Code? Open in Web Editor NEW
584.0 23.0 62.0 971 KB

This is the fully-functional GNU Radio software-defined radio (SDR) implementation of a LoRa transceiver with all the necessary receiver components to operate correctly even at very low SNRs. This work has been conducted at the Telecommunication Circuits Laboratory, EPFL.

Home Page: https://www.epfl.ch/labs/tcl/

License: GNU General Public License v3.0

CMake 6.25% Python 8.60% C++ 70.00% C 9.45% Shell 4.52% Batchfile 1.17%
lora sdr

gr-lora_sdr's Introduction

GitHub last commit gnuradio version arXiv Hits Build conda package License: GPL v3

Summary

This is the fully-functional GNU Radio software-defined radio (SDR) implementation of a LoRa transceiver with all the necessary receiver components to operate correctly even at very low SNRs. The transceiver is available as a module for GNU Radio 3.10. This work has been conducted at the Telecommunication Circuits Laboratory, EPFL.

In the GNU Radio implementation of the LoRa Tx and Rx chains the user can choose all the parameters of the transmission, such as the spreading factor, the coding rate, the bandwidth, the sync word, the presence of an explicit header and CRC.

  • The module contains convenient hierarchical blocks for both Tx and Rx.

  • In the Tx chain, the implementation contains all the main blocks of the LoRa transceiver: the header- and the CRC-insertion blocks, the whitening block, the Hamming encoder block, the interleaver block, the Gray demapping block, and the modulation block.

tx_flow

  • On the receiver side there is the packet synchronization block, which performs all the necessary tasks needed for the synchronization, such as the necessary STO and CFO estimation and correction. The demodulation block follows, along with the Gray mapping block, the deinterleaving block, the Hamming decoder block and the dewhitening block, as well as a CRC verification block.

rx_flow

  • The implementation can be used for fully end-to-end experimental performance results of a LoRa SDR receiver at low SNRs.
  • A simple simulation framework is available in the apps/simulation folder.

Functionalities

  • Sending and receiving LoRa packets between USRP-USRP and USRP-commercial LoRa transceiver (tested with RFM95, SX1276, SX1262).

  • Parameters available:

    • Spreading factors: 5-12*
    • Coding rates: 0-4
    • Implicit and explicit header mode
    • Payload length: 1-255 bytes
    • Sync word selection (network ID)
    • Verification of payload CRC
    • Verification of explicit header checksum
    • Low datarate optimisation mode
    • Utilisation of soft-decision decoding for improved performances

* Spreading factors 5 and 6 are not compatible with SX126x.

Reference

J. Tapparel, O. Afisiadis, P. Mayoraz, A. Balatsoukas-Stimming and A. Burg, "An Open-Source LoRa Physical Layer Prototype on GNU Radio," 2020 IEEE 21st International Workshop on Signal Processing Advances in Wireless Communications (SPAWC), Atlanta, GA, USA, 2020, pp. 1-5.

IEEE Xplore link, arXiv link

If you find this implementation useful for your project, please consider citing the aforementioned paper.

Prerequisites

  • Gnuradio 3.10
  • python 3
  • cmake
  • libvolk
  • boost
  • UHD
  • gcc > 9.3.0
  • gxx
  • pybind11

The conda environment used to develop this module is described by the environment.yml file.

Installation

The out of tree module gr-lora_sdr can be installed from source or directly as a conda package.

From source

  • Clone this repository
     git clone https://github.com/tapparelj/gr-lora_sdr.git
  • Go to the cloned repository
     cd gr-lora_sdr/
  • A functioning environment with all dependencies can be installed with conda or you can install them individually and skip to the next step. You can follow this tutorial or simply following:
    • First download the latest release of conda, for example:
       wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.12.0-Linux-x86_64.sh
    • Now run the downloaded file which is the Anaconda Installer script
       bash Miniconda3-py39_4.12.0-Linux-x86_64.sh
    • And reload the Shell
       source ~/.bashrc
    • Now copy our environment to install all the dependencies of the module automatically. Note that it will take quite some time (~20 min).
       conda env create -f environment.yml 
    • Start the conda environment GNU Radio 3.10 you just created
       conda activate gr310
  • To build the code, create an appropriate folder and go in it:
     mkdir build
     cd build
  • Run the main CMakeLists.txt
     cmake .. -DCMAKE_INSTALL_PREFIX=<your prefix> # default to usr/local, CONDA_PREFIX or PYBOMB_PREFIX if no install prefix selected here
  • Finally compile the custom GNU Radio blocks composing the LoRa transceiver. Replacing <X> with the number of core you want to use to speed up the compilation.
     (sudo) make install -j<X>
  • if you installed as sudo run
     sudo ldconfig 
  • You can test that the installation is successful by running
    make test
  • Now you should be able to run some codes. For example, open the GNU Radio Companion user interface and check if the blocks of gr-lora_sdr are available on the blocks list (e.g. under LoRa_TX).
     gnuradio-companion &
  • A final verification of the transceiver functioning can be made by executing the following script, transmitting a frame every two seconds:
     python3 examples/tx_rx_functionality_check.py 

Usage

  • An example of a LoRa transmitter and receiver can be found in gr-lora_sdr/examples/ (both python and grc).
  • The .grc files can be opened with gnuradio-companion to set the different transmission parameters.
  • The python file generated by grc can be executed with python3 ./{file_name}.py

From conda

Thanks to Ryan Volz this OOT module can also directly be installed as a Conda package. Note that gnuradio will also be installed in the conda environment.

  • Create or activate the conda environment you want to install this module in. Refer to the conda getting start guide if you are not familiar with it already.
  • Install the module from the anaconda channel tapparelj with:
     conda install -c tapparelj -c conda-forge gnuradio-lora_sdr
  • Depending on your needs you might want to install complementary packages for gnuradio with:
     conda install -c conda-forge gnuradio
  • The gnuradio metapackage installs all of the following subpackages:
    • gnuradio-grc
    • gnuradio-iio
    • gnuradio-qtgui
    • gnuradio-soapy
    • gnuradio-uhd
    • gnuradio-video-sdl
    • gnuradio-zeromq
  • If you don't want all of those and their dependencies, you can install the ones you'd like individually with:
     conda install -c conda-forge gnuradio-uhd

Usage

  • Example gnuradio-companinon flowgraphs are installed with the package and can be found in:
    • (Linux/macOS) $CONDA_PREFIX/share/gr-lora_sdr/examples
    • (Windows) %CONDA_PREFIX%\Library\share\gr-lora_sdr\examples

Frequent issues:

  • Fail to make after pulling a new version from git
    • If the parameters of a block have changed in the new version, you need to first clean the old installation before building the module again.
    • from within the build folder, run
       (sudo) make uninstall
       make clean
       make -j4
       (sudo) make install
      
  • "ImportError: No module named lora_sdr":
    • This issue comes probably from missing PYTHONPATH and LD_LIBRARY_PATH
    • Refer to https://wiki.gnuradio.org/index.php/ModuleNotFoundError to modify those variables. If you set a prefix during the "cmake" call, skip directly to point C.(Verifying that the paths exist in your folders might help.)
  • The OOT blocks doesn't appear in gnuradio-companion:
    • The new blocks can be loaded in gnuradio-companion by adding the following lines in home/{username}/.gnuradio/config.conf (If this file doesn't exist you need to create it):
       [grc]
       local_blocks_path=path_to_the_downloaded_folder/gr-lora_sdr/grc
      

Changelog

  • Add optional print of received payload as hex values

  • Added tagged stream input support (for frame definition of frame length)

  • Fixed LLR stream format between fft_demod and deinterleaver

  • added tags to crc verification output stream indication frame start, length and CRC result.

  • added separator option for file input

  • added preamble length option

  • added parameter for frame zero-padding

  • add low datarate optimisation support

  • add support of spreading factors smaller than 7

    ...

Credit

This work was inspired from https://github.com/rpp0/gr-lora by Pieter Robyns, Peter Quax, Wim Lamotte and William Thenaers. Which architecture and functionalities have been improved to better emulate the physical layer of LoRa.

Licence

Distributed under the GPL-3.0 License License. See LICENSE for more information.

gr-lora_sdr's People

Contributors

bkerler avatar buckaroobanzay avatar eltociear avatar marktimmerman-dev avatar martynvdijke avatar ryanvolz avatar tapparelj avatar timvrakas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gr-lora_sdr's Issues

Docker

I've been having a lot of problems getting an environment set up for this. I've solved some of the issues, but still get errors. Is there anyway that you could make a docker that is representative of your environment?

ImportError: libgnuradio-lora_sdr.so.1.0.0git: cannot open shared object file: No such file or directory

Hi,
Issue traceback below happens after successfully generating tx_rx_simulation.grc to tx_rx_simultaion.py and execution on gnu-radio companion.

Already solved "ImportError: No module named lora_sdr" - issue.
Using Ubuntu 20.04.3 LTS.
Python 3
Gnu-radio 3.8.1.0


Traceback (most recent call last):
  File "./tx_rx_simulation.py", line 22, in <module>
    import lora_sdr
  File "/root/gr-lora_sdr/lib/python3/dist-packages/lora_sdr/__init__.py", line 34, in <module>
    from .mu_demod import mu_demod
  File "/root/gr-lora_sdr/lib/python3/dist-packages/lora_sdr/mu_demod.py", line 6, in <module>
    from .lora_sdr_swig import *
  File "/root/gr-lora_sdr/lib/python3/dist-packages/lora_sdr/lora_sdr_swig.py", line 13, in <module>
    from . import _lora_sdr_swig
ImportError: libgnuradio-lora_sdr.so.1.0.0git: cannot open shared object file: No such file or directory

Can I get the symbol sequence?

Before the USRP transmits, I want to understand what is the symbol corresponding to each packet? For example, the "Hello World", After the 11 characters are whitening, interleaving, etc., how can the converted symbols be obtained?
In the lora_TX grc, I try to use File Sink to intercept and save the data after 'Gray demapping' and 'Modulate', but I only get some complex signals.
In fact, I am trying to understand the possibility of reverse LoRa at the level of hexadecimal symbols. gr-lora_sdr helped me understand lora and provided a great platform. Many thanks to the author~

Data in the Frame_sync Log Output

In the synchronization block (Frame_sync) there is the option Show_Log_Port=True, and its Documentation indicates:

"log: (Optional) Output the estimated value of SNR, CFO, STO, SFO, Off-by-one as a stream of float. Those values can be logged by a file_sink and read in an external application (MATLAB, Python, ...)"

However, the resulting txt file (the file_sink output) is unreadable and I have not found how to interpret the data type to extract the information neither with Matlab nor with Python.

Please guide me on how to treat the log output.

No example code is executed with USRP

After following the installation steps for the latest version of the gr-lora-sdr code (Gnuradio 3.10), I have not been able to run any of the codes in the "Examples" folder, except tx_rx_functionnality_check.grc.
From the command line I execute uhd_find_devices and the result is:

[INFO] [UHD] linux; GNU C++ version 10.3.0; Boost_107400; UHD_4.2.0.HEAD-release

-- UHD Device 0

Device Address:
serial: 3166C2F
name: MyB200
product: B200
type: b200

When I run uhd_usrp_probe the output is:
INFO] [UHD] linux; GNU C++ version 10.3.0; Boost_107400; UHD_4.2.0.HEAD-release
[INFO] [B200] Detected Device: B200
Error: EnvironmentError: IOError: empty input file /home/lora/miniconda3/envs/gr310

It only works if I run it as sudo uhd_usrp_probe, where the output is:
[INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; UHD_4.3.0.0-144-gdfc7b31c
[INFO] [B200] Detected Device: B200
[INFO] [B200] Operating over USB 3.
[INFO] [B200] Initialize CODEC control...
[INFO] [B200] Initialize Radio control...
[INFO] [B200] Performing register loopback test...
[INFO] [B200] Register loopback test passed
[INFO] [B200] Setting master clock rate selection to 'automatic'.
[INFO] [B200] Asking for clock rate 16.000000 MHz...
[INFO] [B200] Actually got clock rate 16.000000 MHz.


/
| Device: B-Series Device
| _____________________________________________________
| /
| | Mboard: B200
| | serial: 3166C2F
| | name: MyB200
| | product: 1
| | revision: 5
| | FW Version: 8.0
| | FPGA Version: 16.0
| |
| | Time sources: none, internal, external, gpsdo
| | Clock sources: internal, external, gpsdo
| | Sensors: ref_locked
| | _____________________________________________________
| | /
| | | RX DSP: 0
| | |
| | | Freq range: -8.000 to 8.000 MHz
| | _____________________________________________________
| | /
| | | RX Dboard: A
| | | _____________________________________________________
| | | /
| | | | RX Frontend: A
| | | | Name: FE-RX1
| | | | Antennas: TX/RX, RX2
| | | | Sensors: temp, rssi, lo_locked
| | | | Freq range: 50.000 to 6000.000 MHz
| | | | Gain range PGA: 0.0 to 76.0 step 1.0 dB
| | | | Bandwidth range: 200000.0 to 56000000.0 step 0.0 Hz
| | | | Connection Type: IQ
| | | | Uses LO offset: No
| | | _____________________________________________________
| | | /
| | | | RX Codec: A
| | | | Name: B200 RX dual ADC
| | | | Gain Elements: None
| | _____________________________________________________
| | /
| | | TX DSP: 0
| | |
| | | Freq range: -8.000 to 8.000 MHz
| | _____________________________________________________
| | /
| | | TX Dboard: A
| | | _____________________________________________________
| | | /
| | | | TX Frontend: A
| | | | Name: FE-TX1
| | | | Antennas: TX/RX
| | | | Sensors: temp, lo_locked
| | | | Freq range: 50.000 to 6000.000 MHz
| | | | Gain range PGA: 0.0 to 89.8 step 0.2 dB
| | | | Bandwidth range: 200000.0 to 56000000.0 step 0.0 Hz
| | | | Connection Type: IQ
| | | | Uses LO offset: No
| | | _____________________________________________________
| | | /
| | | | TX Codec: A
| | | | Name: B200 TX dual DAC
| | | | Gain Elements: None

From gnuradio-companion, when I run tx_rx_simulation the output is:
Generating: '/home/lora/.grc_gnuradio/tx_rx_simulation.py'
Executing: /home/lora/miniconda3/envs/gr310/bin/python -u /home/lora/.grc_gnuradio/tx_rx_simulation.py

And if I run lora_RX the error comes out:
Generating: '/home/lora/gr-lora_sdr/examples/lora_RX.py'
Executing: /home/lora/miniconda3/envs/gr310/bin/python -u /home/lora/gr-lora_sdr/examples/lora_RX.py
[INFO] [UHD] linux; GNU C++ version 10.3.0; Boost_107400; UHD_4.2.0.HEAD-release
[INFO] [B200] Detected Device: B200
Traceback (most recent call last):
File "/home/lora/gr-lora_sdr/examples/lora_RX.py", line 250, in
main()
File "/home/lora/gr-lora_sdr/examples/lora_RX.py", line 228, in main
tb = top_block_cls()
File "/home/lora/gr-lora_sdr/examples/lora_RX.py", line 93, in init
self.uhd_usrp_source_0 = uhd.usrp_source(
RuntimeError: EnvironmentError: IOError: empty input file /home/lora/miniconda3/envs/gr310

I have done all the previous USB and UHD configuration steps, as recommended at: https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux
Still the error persists.
Please if you can guide me to determine the cause of the error.

tx_rx_functionnality_check with SF6 Header checksum invalid!

I use the master branch with gnuradio 3.10.4.0 (Python 3.8.10).

I copied the tx_rx_functionnality_check.grc example.
It works great with SF7.
Only thing I change is SF6.
Then it does not work anymore.

--------Header--------
Payload length: 14
CRC presence: 1
Coding rate: 0
Header checksum invalid!

When I change back to SF7, it works again.

Payload length: 14
CRC presence: 1
Coding rate: 0
Header checksum valid!

rx msg: Hello world: 0

CRC valid!

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcc in position 8: invalid continuation byte

Exception in thread Thread-3:
Traceback (most recent call last):
File "/opt/homebrew/Cellar/[email protected]/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
self.run()
File "/opt/homebrew/Cellar/gnuradio/3.10.4.0/lib/python3.10/site-packages/gnuradio/grc/gui/Executor.py", line 115, in run
r = self.process.stdout.read(1)
File "/opt/homebrew/Cellar/[email protected]/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10/codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcc in position 8: invalid continuation byte

This exception is thrown if I receive a packet containing certain characters, but I am allowed to receive from 0x00 to 0xFF

MacOS

with SF=11 frame sync requires more input data than provided

Hi, thanks for make available this great project! I've the following GNURadio message when using spreading factor SF=11:

sched: <block frame_sync (10)> is requesting more input data
  than we can provide.
  ninput_items_required = 8200
  max_possible_items_available = 8191
  If this is a filter, consider reducing the number of taps.

It seems that Frame_sync block need more samples but it is not possible to provide. Do you have any idea how could I fix this issue?

Help to understand the "cfo_frac" calculation process

Hello~ @tapparelj
Thanks to your contribution.I have some question about your code during the process of calculating "cfo_frac".

question in codes:

four_cum += fft_val[idx_max + m_number_of_bins * i] * std::conj(fft_val[idx_max + m_number_of_bins * (i + 1)]);

cfo_frac = -std::arg(four_cum) / 2 / M_PI;

In the paper "Low Complexity LoRa Frame Synchronization for Ultra-Low Power Software-Defined Radios" Section 2.E, The author's calculation of "cfo_frac" is two consecutive preamble symbol, but you use several consecutive preamble symbols here to estimate the "cfo_frac",Why can you calculate the "cfo_frac" by adding several phase differences and then using

-std::arg(four_cum) / 2 / M_PI;

in addition, In the paper, the "cfo_frac" is obtained by BW(\phi_2-\phi_1)/N,It seems that you haven't multiplied by BW and divided by N in your code.

Sending join accept packet

Hello again, thank you again for the help last time!
I hope this message finds you well. I am reaching out regarding the issue I am facing with the project.
As I continued working on the project from the following issue: #37, I stumbled upon a new issue. I was able to receive the packages from the node and convert the packet to a Chirpstack packet successfully. I have confirmed the node on the Chirpstack server and received the join request packet, which I believe is correct.

Images from the chirpstack server:
Screenshot from 2023-03-06 14-53-16
Screenshot from 2023-03-06 14-53-11

However, I am encountering an issue while trying to send the join accept to the node, but can not figure out what the issue is...

This is my GNURadio:
Screenshot from 2023-03-06 14-56-28

Waterfall of the received packet and sent packet:
image

Packet sent (The last one):
image

The packet sent is by using this code:
image

Despite my efforts, I am unable to determine the cause of the problem. I am uncertain about what to test next. I am wondering if delaying the packages from the node could help as the packages seem to "overwrite" each other.

I would greatly appreciate it if you could provide me with any insight or guidance on this matter. Your help and support are highly appreciated.

Help me to understand how to input bitstream

I'm trying to input a bitstream (GR type Char/uChar) to LoRa graph, but cannot figure out, why it doesn't work.
I tried to convert Tagged Stream to PDU and send it to whitening. But get error:

Uflowgraph :warning: Could not find port msg in:
flowgraph :warning:   system
flowgraph :warning:   msg
Traceback (most recent call last):
  File "/home/armin/Gnuradio/OOT/gr-lora_sdr/examples/tx_rx_functionnality_check.py", line 241, in <module>
    main()
  File "/home/armin/Gnuradio/OOT/gr-lora_sdr/examples/tx_rx_functionnality_check.py", line 219, in main
    tb = top_block_cls()
  File "/home/armin/Gnuradio/OOT/gr-lora_sdr/examples/tx_rx_functionnality_check.py", line 108, in __init__
    self.msg_connect((self.pdu_tagged_stream_to_pdu_0, 'pdus'), (self.lora_sdr_whitening_0, 'msg'))
  File "/usr/lib/python3/dist-packages/gnuradio/gr/hier_block2.py", line 51, in wrapped
    func(self, src.to_basic_block(), srcport, dst.to_basic_block(), dstport)
  File "/usr/lib/python3/dist-packages/gnuradio/gr/hier_block2.py", line 127, in msg_connect
    self.primitive_msg_connect(*args)
ValueError: invalid msg port in connect() or disconnect()

The whitening block has 2 types of input: Message Strobe and File Source.
I tried both with no success.
How is it possible to forward to LoRa graph, particularly to whitening block, a bitstream, or bitstream modified to some packet data or whatever appropriate for whitening block? Can you point, what data type conversions I have to do to make this possible?

This is a part of my graph, where I'm trying to send bitstream to LoRa.
image

Compilation error

Hi, thank you for making available this really useful software to the community.

I am using Arch Linux with all the dependencies installed. However I do receive the following error message when I start "make"

make
Consolidate compiler generated dependencies of target gnuradio-lora_sdr
[  3%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/add_crc_impl.cc.o
/home/user/gr-lora_sdr/lib/add_crc_impl.cc: In static member function ‘static gr::lora_sdr::add_crc::sptr gr::lora_sdr::add_crc::make(bool)’:
/home/user/gr-lora_sdr/lib/add_crc_impl.cc:16:46: error: could not convert ‘gnuradio::get_initial_sptr(T*) [with T = gr::lora_sdr::add_crc_impl]()’ from ‘std::shared_ptr<gr::lora_sdr::add_crc_impl>’ to ‘gr::lora_sdr::add_crc::sptr’ {aka ‘boost::shared_ptr<gr::lora_sdr::add_crc>’}
   16 |             return gnuradio::get_initial_sptr(new add_crc_impl(has_crc));
      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                              |
      |                                              std::shared_ptr<gr::lora_sdr::add_crc_impl>
make[2]: *** [lib/CMakeFiles/gnuradio-lora_sdr.dir/build.make:76: lib/CMakeFiles/gnuradio-lora_sdr.dir/add_crc_impl.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:233: lib/CMakeFiles/gnuradio-lora_sdr.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

Would this still be a dependency issue? Thanks for providing some hints to solve this problem.

CRC locations

Hi! Congratulations for this work!
I have a question on the CRC implementations. Per the diagram, in TX, the CRC is calculated on whiten payload, while in RX the the CRC is verified after the de-whitening. Since the payload before/after whitening are different, will these have same CRC results?

Thanks

There seems to be a problem with the number of baseband data points in SF9?

Hi, I try to use gr-lora_sdr to generate a baseband data carry one character 'A' , and when I set the SF = 9, I find that the baseband points always are 10368, no matter how I modify the CodeRate.
When the SF = 7, CR = 2, the baseband points are 3360 (√)
When the SF = 8, CR = 2, the baseband points are 6720 (√)
However, when the SF = 9, CR = 0-4, the baseband points always are 10368, and I think this number is not corresponds to any CR.

The reason why I am confused is that when I am using USRP for sending and receiving tests, when SF=9, my Rx only can receive one SF=9 packet at a time. So I looked at the baseband data for each SF.

Finally, I want to thank you for your work. gr-lora_sdr is the best open source LORa baseband project I could find~

gr_lora-sdr Building OOT modules to use with conda-installed GNU Radio

The following error occurs when constructing GR-LORA_SDR using Windows VS2019 including MSVC V141
[1/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\crc_verif_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/crc_verif_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\crc_verif_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\crc_verif_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
[2/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\gray_enc_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/gray_enc_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\gray_enc_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\gray_enc_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib\gray_enc_impl.cc(15): error C2440: “return”: 无法从“std::shared_ptrgr::lora_sdr::gray_enc_impl”转换为“boost::shared_ptrgr::lora_sdr::gray_enc”
D:\360\lora\gr-lora_sdr-master\lib\gray_enc_impl.cc(15): note: 无构造函数可以接受源类型,或构造函数重载决策不明确
[3/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\header_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/header_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\header_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
d:\360\lora\gr-lora_sdr-master\lib\header_impl.h(16): error C3646: “m_cnt_nibbles”: 未知重写说明符
d:\360\lora\gr-lora_sdr-master\lib\header_impl.h(16): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
d:\360\lora\gr-lora_sdr-master\lib\header_impl.h(17): error C3646: “m_cnt_header_nibbles”: 未知重写说明符
d:\360\lora\gr-lora_sdr-master\lib\header_impl.h(17): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc(16): error C2440: “return”: 无法从“std::shared_ptrgr::lora_sdr::header_impl”转换为“boost::shared_ptrgr::lora_sdr::header”
D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc(16): note: 无构造函数可以接受源类型,或构造函数重载决策不明确
D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc(35): error C2065: “m_cnt_header_nibbles”: 未声明的标识符
D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc(82): error C2065: “m_cnt_nibbles”: 未声明的标识符
D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc(89): error C2065: “m_cnt_nibbles”: 未声明的标识符
D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc(92): error C2065: “m_cnt_header_nibbles”: 未声明的标识符
D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc(100): warning C4805: “|”: 在操作中将类型“int”与类型“bool”混合不 安全
D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc(110): warning C4805: “|”: 在操作中将类型“int”与类型“bool”混合不 安全
D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc(119): error C2065: “m_cnt_header_nibbles”: 未声明的标识符
D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc(121): error C2065: “m_cnt_header_nibbles”: 未声明的标识符
D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc(122): error C2065: “m_cnt_header_nibbles”: 未声明的标识符
D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc(132): error C2065: “m_cnt_nibbles”: 未声明的标识符
D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc(140): error C2065: “m_cnt_nibbles”: 未声明的标识符
D:\360\lora\gr-lora_sdr-master\lib\header_impl.cc(141): error C2065: “m_cnt_header_nibbles”: 未声明的标识符
[4/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\frame_sync_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/frame_sync_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\frame_sync_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\frame_sync_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
[5/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\header_decoder_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/header_decoder_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\header_decoder_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\header_decoder_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
[6/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\gray_decode_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/gray_decode_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\gray_decode_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\gray_decode_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
[7/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\hamming_enc_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/hamming_enc_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\hamming_enc_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\hamming_enc_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
[8/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\mu_detection_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/mu_detection_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\mu_detection_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\mu_detection_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
[9/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\modulate_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/modulate_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\modulate_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\modulate_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
[10/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\whitening_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/whitening_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\whitening_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\whitening_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
[11/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\hamming_dec_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/hamming_dec_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\hamming_dec_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\hamming_dec_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
[12/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\RH_RF95_header_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/RH_RF95_header_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\RH_RF95_header_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\RH_RF95_header_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib\RH_RF95_header_impl.cc(15): error C2440: “return”: 无法从“std::shared_ptrgr::lora_sdr::RH_RF95_header_impl”转换为“boost::shared_ptrgr::lora_sdr::RH_RF95_header”
D:\360\lora\gr-lora_sdr-master\lib\RH_RF95_header_impl.cc(15): note: 无构造函数可以接受源类型,或构造函数重载决策不明确
[13/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\frame_src_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/frame_src_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\frame_src_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\frame_src_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
[14/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\interleaver_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/interleaver_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\interleaver_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\interleaver_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
[15/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\dewhitening_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/dewhitening_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\dewhitening_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\dewhitening_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
[16/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\fft_demod_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/fft_demod_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\fft_demod_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\fft_demod_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
[17/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\data_source_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/data_source_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\data_source_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\data_source_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
[18/24] Building CXX object lib\CMakeFiles\gnuradio-lora_sdr.dir\add_crc_impl.cc.obj
FAILED: lib/CMakeFiles/gnuradio-lora_sdr.dir/add_crc_impl.cc.obj
C:\PROGRA2\MICROS4\2019\COMMUN1\VC\Tools\MSVC\14161.270\bin\HostX64\x64\cl.exe /nologo /TP -DBOOST_ALL_NO_LIB -DBOOST_CHRONO_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_SHARED -DGR_MPLIB_MPIR -DGR_PERFORMANCE_COUNTERS -DMS_WIN64 -DNOMINMAX -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0502 -Dgnuradio_lora_sdr_EXPORTS -ID:\360\lora\gr-lora_sdr-master\lib..\include -ID:\360Downloads\anaconda\envs\gnuradio\Library\include -ID:\360Downloads\anaconda\envs\gnuradio\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc -std=c++11 /MD /O2 /Ob2 /DNDEBUG /wd4251 /wd4275 -std:c++17 /showIncludes /Folib\CMakeFiles\gnuradio-lora_sdr.dir\add_crc_impl.cc.obj /Fdlib\CMakeFiles\gnuradio-lora_sdr.dir\ /FS -c D:\360\lora\gr-lora_sdr-master\lib\add_crc_impl.cc
cl: 命令行 warning D9002 :忽略未知选项“-std=c++11”
D:\360\lora\gr-lora_sdr-master\lib..\include\lora_sdr/utilities.h(9): fatal error C1083: 无法打开包括文件: “sys/resource.h”: No such file or directory
ninja: build stopped: subcommand failed.

about manual binding

I made modifications to the utilities.h file to implement SF-related changes. However, I encountered an "out of sync" issue due to manual binding. Interestingly, I noticed that even a single whitespace in utilities.h triggers this error. Is there a way to resolve this problem?

CMake Error at /home/a/miniconda3/envs/gr310/lib/cmake/gnuradio/GrPybind.cmake:230 (message): Python bindings for utilities.h are out of sync
Call Stack (most recent call first): python/lora_sdr/bindings/CMakeLists.txt:53 (GR_PYBIND_MAKE_OOT)

An issue with not receiving or printing out the complete packet content in its entirety

First of all, thank you very much for contributing this great work~~
I have a question when I send packets using commercial LoRa nodes(based RH_RF95), I can only receive the first two bytes of the packet forever, and the next bytes cannot be received or printed
image
I had modified the USRP Source Block's parameters,such as Minoutbuf,Maxoutbuf,but that won't help.
My version:
GNU Radio 3.10
Ubuntu 22.04
the newest version gr-lora_sdr

Print_rx_msg doesn't work

image

Thanks to your code, I can conduct various experiments related to LoRa. However, when I execute the tx_rx_functionnality_check, the content of rx_msg does not appear like attahced figure. There have been no code modifications. How can I resolve this issue? Thank you.

SX1278 cann't receive packets from USRP correctly with SF12

Hi, This is JaysonJie. I discuss the issue when I used the SX1278 to send a packet to usrp with SF 12, but I only received a set of wrong characters。As shown in the figure below:
2022-11-03 16-49-30 的屏幕截图
But, when I try to use other SFs (like 7,8,9,10,11) to send messages through SX1278, usrp can receive the correct message。As shown in the figure below:
2022-11-04 16-16-18 的屏幕截图
So, how can i deal with this problem?

(By the way, i also try to use usrp to send the message to SX1278 with SF 12, It didn't work. But in other SF cases, it worked! )

RX Block Emit payload as binary as alternative to String?

What is the preferred way to process the payload output from the RX block (from the crc verification block)?
The payload block appears to produce a PDM "Symbol" type, which if I understand right is a C++ string under the hood. However, my payload is not a string, and so any attempts to use pmt.symbol_to_string(msg) on the messages causes a UTF-8 parsing error.
What is the right way to handle the emitted data in a packet form? Is there a way to have the RX block emit the payloads as a "blob" or vector of bytes, instead of a String?

SDR With sigfox STM32L0 Discovery kit LoRa as node.

Hello,
I hope this post finds you well. I am currently working with an SDR and a STM node for testing purposes. I have been receiving packages through the RX chain, but have noticed that they are being flagged as "Header checksum invalid!". I have been trying to troubleshoot this issue by receiving the packages before the header check, and they are encrypted following the LoRaWAN documentation. I have successfully decrypted the package, but it does not seem to match the expected output. I was wondering if the RX chain in this repository follows the LoRaWAN documentation? Any insight or guidance would be greatly appreciated.

swig error

I have this message from gnu radio and from python command line when import lora_sdr :

from .lora_sdr_swig import *
ModuleNotFoundError: No module named 'lora_sdr.lora_sdr_swig'

Problem with SF 12 and 11

Hello everyone,

I have a problem when sitting SF to 12 or 11 in my RX flowgraph. It says that I don't have enough input data for the bloc frame_sync but I have no idea on how to resolve this.

Here is the error I get:
sched: <block frame_sync (5)> is requesting more input data
than we can provide.
ninput_items_required = 16392
max_possible_items_available = 8191
If this is a filter, consider reducing the number of taps.

Can anyone help me please?
Thank you

Dobout about RFM95 Library

Hi! Firstly i will congratulations for this work! I try to test lora RX with gnu Radio for receive data on my Sx1278 module, but i dont got sucess, im using one RTL_SDR for receive the datas. What library you use for test with RFM95? You have one exemple you used for this test? Thanks you so much!

Compatibility of SF 5,6 with sx1261/2

Hi,
Can you please tell why the SF 5, 6 are not compatible with SX1261/2 chips? Is there a different whitening sequence that they use or am I missing something?

Compilation error

Hello, I want to build module in WSL (Ubuntu 20.04). I installed gnu radio successfully, gnu-companion works ok.
Here is my version:
gnuradio-config-info --print-all

/usr/
/etc
/etc/gnuradio/conf.d
/home/ivan/.gnuradio
Wed, 02 Feb 2022 16:45:58Z
testing-support;python-support;post-install;doxygen;man-pages;gnuradio-runtime;common-precompiled-headers;gr-ctrlport;* thrift;gnuradio-companion;gr-blocks;gr-fec;gr-fft;gr-filter;gr-analog;gr-digital;gr-dtv;gr-audio;* alsa;* oss;* jack;* portaudio;gr-channels;gr-pdu;gr-iio;* libad9361;gr-qtgui;gr-trellis;gr-uhd;gr-utils;gr_modtool;gr_blocktool;gr-video-sdl;gr-vocoder;* codec2;* freedv;* gsm;gr-wavelet;gr-zeromq;gr-network;gr-soapy
3.10.1.1
cc (Ubuntu 9.3.0-17ubuntu120.04) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software see the source for copying conditions. There is NO
warranty not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
c++ (Ubuntu 9.3.0-17ubuntu1
20.04) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software see the source for copying conditions. There is NO
warranty not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
/usr/bin/cc:::-O3 -DNDEBUG -g -O2 -fdebug-prefix-map=/build/gnuradio-8zZFH3/gnuradio-3.10.1.1-0gnuradiofocal=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -Wsign-compare -Wall -Wno-uninitialized
/usr/bin/c++:::-O3 -DNDEBUG -g -O2 -fdebug-prefix-map=/build/gnuradio-8zZFH3/gnuradio-3.10.1.1-0gnuradiofocal=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -Wsign-compare -Wall -Wno-uninitialized
2.4.3

Now i want to built gr-lora_sdr module, it Cmake shows me such info:

Call Stack (most recent call first):
cmake/Modules/UseSWIG.cmake:256 (SWIG_ADD_SOURCE_TO_MODULE)
cmake/Modules/GrSwig.cmake:173 (SWIG_ADD_MODULE)
swig/CMakeLists.txt:49 (GR_SWIG_MAKE)

CMake Error at cmake/Modules/GrSwig.cmake:211 (GR_LIBTOOL):
Unknown CMake command "GR_LIBTOOL".
Call Stack (most recent call first):
swig/CMakeLists.txt:54 (GR_SWIG_INSTALL)

-- Configuring incomplete, errors occurred!

How can I install this GR_LIBTOOL?

Question about timing shift

Hello, I have been following this project. I found that after adding the Channal Model module, setting some time offset can cause a wide range of bit errors. Excuse me, is there any solution?
20221213160517

Question about scaling Bandwidth/Spreading Factor

Hello,
I just wanted to ask whether parameters such as bandwidth/spreading factor are scalable beyond the standard protocol. e.g. Bandwidth >1MHz BW and larger spreading factors. Are these particularly constrained by physical properties or would they not give much extra performance with very low data rate requirements?

sync word length

can't find setting to set preamble and sync word length
Is it possible to do this?

replace USRP block with RTL SDR

Hi
I am a new in gnuradio.
I replaced USRP block with RTL SDR block in lora_RX.grc.
Screenshot from 2023-08-20 06-57-55

when i run lora_RX.grc flowgraph in GNURadio i see this outpot:

Screenshot from 2023-08-20 06-21-07

I don't understand anything from this output. Can you guide me?

thanx

Target sampling rate is not working

I am trying to work with a sampling rate of 240 KHz and a bandwidth of 200 KHz, but the UHD is changing the sampling rate automatically to 480 KHz while compiling. Any suggestions how to fix this problem? and can we apply interpolation to the signal?

I am using USRP N321, a 10Gig ethernet, latest code branch.

About collision scenario

I am using the provided LoRa implementation effectively. However, I have one question that may be related to the fundamental operation principles of GNURadio or LoRa. If a collision occurs between packets, can only the first incoming packet be decoded from the receiver's perspective? I am curious if the process of detecting the preamble of the subsequent packet only begins after the decoding of the previous packet is complete.
Thank you so much for tour great work!

setpaths

In gr-lora_sdr/apps/README.txt you refer to setpaths.sh which is no longer there.

In my Ubuntu 18.04 system my library binaries end up in
~/miniconda3/lib/x86_64-linux-gnu/libgnuradio-lora_sdr.so

But command line python fails to include that path by default.
What should be done?

CRC Error when using USRP N210

Hi, @tapparelj

Recently I was using the GNUradio implementation of gr-lora_sdr on 2 USRP N210 devices (a pair of transceiver), which is nearly unmodified compared to your released version. However, I got several wrong rx msg (a string of gibberish) with the notification CRC invalid. But I noticed that my two devices are placed near to each other which should not cause any problems during the air-channel transmission.

Can you please tell me how I can fix it? Thank you very much.
error_CRC

unexpected EOF while parsing

Heyhey,
I'm very new to this. But I managed to install gr-lora_sdr on a Linux Virtual Machine using Ubuntu 20.04.
But some of those Blocks in GnuRadio don't show the options one can choose from.
"add header" is one of them. As soon as I open it up to specifiy the options the poped up window stays blank.
I tried installing it again and even unpacked it again. But somehow it still doesn't work.
I'm don't want to delete the one version that I got running on GnuRadio, since it took me some days and a lot of breakdowns for the blocks to be shown in GnuRadio, and I am a bit at my witts ends.
I hope someone can help me please. I will be forever grateful for it.

Lora_RX does not receive frame from Lora_TX

Hello!

I have gr-lora_sdr running on two laptops. On each one I installed Ubuntu 20.04 and all the necessary libraries to run UHD and GNU RADIO.

Following your instructions (#13 (comment)) I am using the gr38 environment taken from the environmental.yml file you posted.

I am using the USRP B200 which is recognized by laptops. The tx_rx_simulation.grc and lora_TX.grc codes are running successfully.

I run a SDR with the code lora_TX.grc and the uninterrupted sending of frames appears, while I execute in the other SDR the code lora_RX.grc. However when running lora_RX.grc it does not show packet reception, even though it does not generate errors. The last messages shown are:

Actually got clock rate 32.000000 MHz
Press Enter to quit:

Is there anything else that needs to be configured, and are there any extra steps required to enable frame reception?

Thank you very much in advance for your kind help.

Running example with USRP B210

I'm trying to run examples with Ettus USRP B210 board. There is no RX prints appearing on terminal when UHD used. Functional test and simulation are working perfectly. I'm newbie with these tools, and not sure if this is due the my tool chain and if there is something on example to adjust. I see warnings about bandwidth on start. Just reporting this if someone has similar issues and knows the solution already.

[INFO] [UHD] linux; GNU C++ version 10.3.0; Boost_107400; UHD_4.2.0.HEAD-release
[INFO] [B200] Loading firmware image: /home/kari/miniconda3/envs/gr310/share/uhd/images/usrp_b200_fw.hex...
[INFO] [B200] Detected Device: B200
[INFO] [B200] Loading FPGA image: /home/kari/miniconda3/envs/gr310/share/uhd/images/usrp_b200_fpga.bin...
[INFO] [B200] Operating over USB 3.
[INFO] [B200] Detecting internal GPSDO.... 
[INFO] [GPS] No GPSDO found
[INFO] [B200] Initialize CODEC control...
[INFO] [B200] Initialize Radio control...
[INFO] [B200] Performing register loopback test... 
[INFO] [B200] Register loopback test passed
[INFO] [B200] Setting master clock rate selection to 'automatic'.
[INFO] [B200] Asking for clock rate 16.000000 MHz... 
[INFO] [B200] Actually got clock rate 16.000000 MHz.
[INFO] [B200] Asking for clock rate 32.000000 MHz... 
[INFO] [B200] Actually got clock rate 32.000000 MHz.
[WARNING] [AD936X] The requested bandwidth 0.125 MHz is out of range (0.2 - 56 MHz).
The bandwidth has been forced to 0.2 MHz.
usrp_source :info: set_min_output_buffer on block 1 to 512
[WARNING] [AD936X] The requested bandwidth 0.125 MHz is out of range (0.2 - 56 MHz).
The bandwidth has been forced to 0.2 MHz.
modulate :info: set_min_output_buffer on block 5 to 10000000
multiply_const_cc :info: set_min_output_buffer on block 19 to 10000000
Press Enter to quit: 

Error: sched: <block frame_sync (8)> is requesting more input data than we can provide

I am getting the following error when using a spreading factor of 12. Can you give me advice for further debugging?

image

block_executor :error: sched: <block frame_sync (8)> is requesting more input data  than we can provide.  ninput_items_required = 32784  max_possible_items_available = 8191  If this is a filter, consider reducing the number of taps.

How to find the location of 8 preambles and save them in frame_sync_impl.cc ?

I want to completely extract and save the 8 original preamble symbols on the receiving side to the .dat file, but I have been looking for it in the frame_sync_impl.cc file for a long time, and I am not sure the location to process it.

I initially found that the relevant variables are as follows:

preamble_upchirps.resize(m_preamb_len * m_number_of_bins);
preamble_raw_up.resize((m_preamb_len + 3) * m_samples_per_symbol);

CRC Issues about LDRO enabled packet transmits to SX1276

Hi, This is Fengxu. I discuss the issue when LDRO enabled packet transmission to SX1276.
I list some parameters used in communication between the TX node (USRP N210) running the lora_TX example and RX node (NUCLEO-476RG + sx1276mb1mas) running the Ping-pong example of STM32CubeExpansion_LRWAN_V1.3.1(ref:https://www.st.com/en/embedded-software/i-cube-lrwan.html)

LoRa configurations:
Central frequency: 470MHz,
Bandwidth: 125KHz,
SF: 11, 12
LDRO: enabled,
CR: 1,
CRC: enabled
Explicit header

And here is the screenshot of the gr-lora.
image

After executing, the RX node prints the "OnRXError" via UART. This means the payload does not pass the CRC checking procedure according to the ST code comments.
image

However, this issue disappears in the tx_rx_usrp example.
image

gnuradio version conda env

after installing conda env: conda env create -f environment.yml , and cmake .. -DCMAKE_INSTALL_PREFIX=/home/ubuntu16-sdr2/anaconda3/envs/gr310/ in gr310 env
gnuradio 3.8.2.0 is still running:

(gr310) ubuntu16-sdr2@ubuntu16sdr2-OptiPlex-7070:~/gr-lora_sdr/build$ gnuradio-companion -h
usage: gnuradio-companion [-h] [--log {debug,info,warning,error,critical}] [flow_graphs ...]

GNU Radio Companion 3.8.2.0 This program is part of GNU Radio GRC comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it.

positional arguments:
  flow_graphs

options:
  -h, --help            show this help message and exit
  --log {debug,info,warning,error,critical}
(gr310) ubuntu16-sdr2@ubuntu16sdr2-OptiPlex-7070:~/gr-lora_sdr/examples$ gnuradio-companion lora_TX.grc 
<<< Welcome to GNU Radio Companion 3.8.2.0 >>>

Block paths:
	/home/ubuntu16-sdr2/.grc_gnuradio
	/usr/local/share/gnuradio/grc/blocks

Loading: "/home/ubuntu16-sdr2/gr-lora_sdr/examples/lora_TX.grc"
Segmentation fault (core dumped)

any suggestions how to solve this issue ?

Set preamble length

The LoRa has such parameter as preamble length. How to set preamble length in symbols? Does the code support preamble setting?

Dynamically changing the SF during runtime TX (modulate block bug)

Hello,
I hope this message finds you well. We are currently working on the TX experimenting with dynamically changing the SF during runtime.

We have tested each of the blocks individually, and they seem to function as expected. However, when we attempt to modify the SF of the modulating block while it is running, the transmission stops.

Do you have any experience or insights regarding this issue? Is it possible to achieve dynamic SF adjustment during runtime? Any advice or suggestions would be greatly appreciated.

Thank you for your time and assistance.

Error: "No module named 'gnuradio.blocks.blocks_python"

Hi, a pretty nice implementation on GNUradio and Python.

I have tested it on GNUradio successfully. But when I turned to Python on Ubuntu 20.04, I got the first error titled "no module named 'gnuradio' ". And then I follow the tips you gave us in the part of "Frequent Issues" and then it changes to another error named "No module named 'gnuradio.blocks.blocks_python' ". But I have already finished running all the commands you gave us in the "Frequent Issues" part. So I do not know how to fix it for now and hope to hear from your advice.

Thank you!
error

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.