Software-Defined Radio Implementation of a LoRa Transceiver
Abstract
:1. Introduction
2. LPWAN and the LoRa Protocol Stack
2.1. Low-Power Wide-Area Networks
Most technologies in this space aim for a similar goal of supporting large numbers of very low-cost, low-throughput devices with very low power consumption, so that even battery-powered devices can be deployed for years. LPWAN devices also tend to be constrained in their use of bandwidth (BW), for example, with limited frequencies being allowed to be used within limited duty cycles (usually expressed as a percentage of time per hour that the device is allowed to transmit). As the name implies, coverage of large areas is also a common goal. So, by and large, the different technologies are aimed at deployment in very similar circumstances.
- End devices that communicate with Radio Gateways via a wireless link;
- Radio Gateway that connects to end devices using the LPWAN protocol and to a network gateway using Transmission Control Protocol (TCP) and Internet Protocol (IP);
- Network Gateway that connects the radio gateway to the internet (i.e., to an application server);
- Authentication Server that handles authentication, the joining of new devices to the network, and the assignment of encryption keys. This might be implemented in the same hardware as the Network Gateway.
2.2. LoRaWAN
2.3. LoRa Chirp Spread Spectrum Modulation
- is the symbol period;
- is a parameter which determines the speed of growth of the instantaneous frequency of that signal, which will be referred in the rest of the paper as the chirp rate;
- is the real number remainder function defined as
- is the total number of symbols in the CSS modulation.
- The mean bandwidth of the signal (), which relates with and asThis can be set to a set of predefined values, described in [16]; however, the LoRaWAN specification only uses 125 kHz and optionally 250 kHz for uplink messages and 500 kHz for downlink messages.
- The spreading factor is not only the number of bits that each symbol encodes, i.e, , but it is also related to the previously mentioned parameters, such that
3. Reverse Engineering the LoRa Physical Layer
3.1. Experimental Setup
3.2. Previous Works
3.2.1. General Transmitter Structure
- Linear EncoderThe encoder encodes the bits with a (CR + 4,4) code, except for the data bits, which are always encoded with a (8,4) code.As mentioned above, the header bits are interleaved in a different manner than the payload bits. Actually, as mentioned in [3], it is the header bits plus the number of payload bits to complete 8 symbols, the 5 header code words plus SF-7 payload code words with 4-CR zeros added to the most significant bit to extend them to also have 8 bits, therefore resulting in 8*(SF-2) bits. They are then interleaved with a SF-2 interleaver, and the resulting symbol numbers are multiplied by 4, resulting in eight symbols in the range. This enhances the robustness of the header bits against noise.The proposed linear encoder is the same as before, but in the following section on coding, a new, more intuitive description of the codes used is given.
- InterleaverThis is a standard diagonal interleaver that turns a sequence of (CR + 4)-bit code words into a sequence of length SF-bit words, with the exception of the header bits that are interleaved with an 8-bit to (SF-2)-bit interleaver. The interleaver is kept as described in the literature.
- Randomizer/Data WhiteningThe randomizer takes as input two sequences of the same length: a pseudo-random binary sequence (referred to in [2,3] as a whitening sequence) and the output of the interleaver; the ouput is the result of the exclusive or operation (XOR) between the two sequences.This is the block which was changed the most; not only is its position changed in the receiver chain, but its structure is also fully reverse engineered and described more intuitively than before. Please note that the position of the randomizer was changed because in the previous works the whitening sequence needed to be reverse engineered for every set of parameters; therefore, an arbitrary sequence extracted from a commercial transmitter was applied. In our proposed solution, the randomizer adds (modulo-2 addition, i.e., exclusive or) a pseudo-random sequence of bytes generated by a linear-feedback shift register (LFSR) which is independent from the modulation parameters. Note that this sequence is only added to the payload bytes and not to the header or the payload “cyclic redundancy check (CRC)”.
- Gray DecoderThe gray decoder turns the SF-bit (or (SF-2) if inside the header) words into symbol numbers. This structure is kept the same as described in the literature.
- ModulatorThe modulator generates the chirps corresponding to each symbol number. This structure is kept the same as described in the literature.
- Append PreambleThis block adds a fixed preamble to the beginning of the resulting signal. This structure is kept the same as described in the literature, with the exception of a slight change on the size of the section of downchirp.
3.2.2. Physical Layer Packet Structure
- A sequence of consecutive upchirps, which can be of length 6 to 65,535, as mentioned in [16];
- Two symbols, referred to as a sync word, used for network identification;
- Two and a quarter downchirps.
3.2.3. Logic Link Control Layer Structure
- CodingBoth [2,3] cite that the linear encoding used in LoRa PHY is some form of Hamming encoding and [3] explicitly describe it for CR = 4, as the usual form of Hamming(8, 4), mainly a code with generator matrix:With a permutation with the following permutation applied to the coded word:
- RandomizerAlso referred to as a whitening block, the randomizer is partially reverse engineered in both [2,3] in a direct approach by assuming randomization is performed as the result of the XOR operation between a fixed arbitrary sequence and the output of the interleaver. These sequences were then extracted by sending all-zeros payload messages and looking at the resulting de-interleaved symbols, which should be the same as the whitening sequence. Note that, in this way, they depend on the modulation parameters (SF, CR, and the possible use of lowDataRate). These sequences can be found in [19].The Berkelamp–Massey algorithm is an algorithm that finds the shortest LFSR that encodes a given sequence in GF(2), i.e., the Galois field of order 2. This approach is equivalent to solving the linear system that arises from the LFSR structure for a number of data points ( for ) using Gaussian elimination in GF(2). By taking the whitening sequences obtained in [3], used in [19], passing them through the decoder, grouping the obtained bits in a 8xN column bit matrix, and then running the Berkelamp–Massey algorithm on the first bytes, it can be seen that the sequence can be generated by a degree-8 LFSR with the following polynomial:The state of this LFSR is modulo-2 added to each of the data bytes to act as a randomizer. Furthermore, it is worth noting that the sequences provided by Robyns in [19] diverge from those generated by this LFSR after a certain position, but this is probably due to a symbol rate offset or an imprecision on the alignment that caused the last symbols of the message not to be aligned when using the receiver used in [19]. This conclusion was reached because the symbol numbers at the end of a 255-byte length frame slowly drift from the ones obtained in this work.It has to be pointed out that the whitening sequences proposed in [3] do work. Even with this problem, as the symbol number offsets caused by the time drift due to the inaccuracy in synchronization are deterministic and therefore can be compensated in the de-randomization process by changing the whitening sequence, like it was carried out unknowingly in [3].
- Frame StructureIn [3], the header structure seen in Table 3 is proposed as follows:
Starting Bit Function 0 Payload Length (1 byte) 8 CR (3 bits) 11 CRC Present (1 bit) 12 Header Checksum High Nibble (HN) (4 bits) 16 Header Checksum Low Nibble (LN) (4 bits) 20 Payload (0 to 255 bytes) 20 + 8 × (Payload Length) Payload “CRC” (2 bytes) (optional) Each part of the frame is described in detail in the following sections.By analyzing the structure of the header, and given the previous description given in [3], the structure of the frame was found to be the one shown in Table 4.Starting Bit Function 0 Payload Length HN (4 bits) 4 Payload Length LN (4 bits) 8 CR (3 bits) 11 CRC Present (1 bit) 12 Header Checksum HN (4 bits) 16 Header Checksum LN (4 bits) 20 Payload (0 to 255 bytes) 20 + 8 × (Payload Length) Payload “CRC” (2 bytes) (optional) 1 20 + 8 × (Payload Length + 2) Padding Nibbles 2 1 The payload “CRC” was found not to be in the usual ordering and not to be a usual CRC sum. Check its section for more details. 2 These padding nibbles are added so the encoding of the payload plus the payload nibbles plus the CRC (if present) plus these extra nibbles are a multiple of SF and therefore give rise, after the interleaver, to a whole number of symbols. How exactly these numbers are generated in real hardware is not clear, but they seem to make no difference as, while testing the implemented transmitter, they were set to zero, which is not what usually happens in the commercial transmitters; they still functioned normally.Note that the nibbles might seem to be inverted to that described in [3]. This is due to the change in the description of the coding.Each part of the frame is described in detail in the following sections:- (a)
- Payload LengthThe length of the payload in bytes. Note that the two nibbles are in a “little endian-like” ordering with the upper nibble coming first and then the lower nibble.
- (b)
- CRThe CR parameter of the LoRa PHY modulation as described in the Semtech documentation [20], which is not the code rate, but the difference between the code length and the code rank—this second always being equal to 4.
- (c)
- CRC PresentSingle bit that indicates whether or not the payload “CRC” is present. If it is ‘1’, then it is present, and if it is ‘0’, it is not.
- (d)
- Header ChecksumA checksum calculated from the first 12 bits of the header. Its presence is mentioned in [3], but its exact structure is not mentioned—only that its 5 least significant bits are non-zero.The same “little endian-like” ordering used in the payload length was assumed. As described in Robyn’s work [3], 3 of the bits of the checksum are always 0, which in the assumed ordering are the last 3 bits (5 to 7). After doing some analysis, it was found that the checksum can be calculated as
- Reverse Engineering MethodologyIn order to reverse engineer this checksum, initially, the reasonable assumption that the bits of the header checksum is a linear function (in modulo-2 arithmetic) of the data bits of the header was made. Then, by decoding the headers of frames from captured waveform files, putting them as rows of a matrix, and then applying the Gauss–Jordan elimination algorithm in modulo-2 arithmetic. In this way, if we start with a matrix with 12 linearly independent rows (in the canonical linear space in GF(2)12), we obtain a matrix , such that
- (e)
- Payload “CRC”The payload “CRC” was found to be calculated by taking the polynomial in GF(2) relative to the payload data in little endian ordering, taking the remainder of its division with the polynomial , and then taking the corresponding bit string and storing it in big endian ordering. Note that this division is equivalent to computing the CRC sum of the data starting from the second byte (in little endian order) with the above-mentioned polynomial and using the first byte as the initial value of the algorithm.
- Reverse Engineering MethodologyInitially, given what was already known, it was assumed that the CRC sum was really a CRC sum and had a degree-16 polynomial. In order to reverse engineer the payload CRC, using the above-mentioned test setup, frames whose payload was the powers of two, i.e., only one ‘1’ byte and all the others ‘0’, with length 1 up to 7 were transmitted, captured, and decoded. For the sake of simplicity, all byte orderings referred to in the rest of this description are big endian. When observing the data, it can be seen that when only the last 2 bytes are non-zero, the CRC is the same as those last 2 bytes, but in opposite ordering. Given this, three things were inferred as follows:
- The byte ordering of the CRC was the opposite of that of the data.
- The checksum was not a direct CRC sum, but the direct remainder of the polynomial division of the data without multiplying its polynomial by xn, where n is the order of the CRC.
- The data used in this calculation is in little endian order because the CRC sum was the same as the data but inverted when only two non-zero bytes are transmitted.
Given those three, if the last bytes of the payload are zero, the checksum is equivalent to a usual CRC sum of the data in little endian mode, ignoring those last two bits. Therefore, it was possible to use the open-source tool CRC RevEng [21] to find the polynomial if this checksum was indeed a CRC. This program tests a collection of known used CRC polynomials and checks if any are consistent with the given data plus CRCs. By running it with payload data, the program yielded the polynomial 0x1021 and indicated that the data was indeed taken in little endian ordering. For further testing, with all power-of-two length payloads, it was verified that this CRC coincided with the one calculated by the commercial transceiver for payload lengths 1 up to 7 bytes.
4. Receiver Structure
- Frequency Estimator
- Correlation Synchronizer
- Symbol Decision
- Frame Decoder
4.1. Frequency Estimator
- Stochastic Gradient DescentIf it is assumed there is no interfering signal other than Gaussian noise, this problem can be approximated with a simpler optimization problem using only one sample, i.e., to minimize the cost function:Also, to avoid division by zero errors, the alternative equationAn example of the output signal of this block, in which the input signal is composed of a sequence of LoRa frames with SF = 7 whose spectrogram is shown in Figure 6, can be seen in Figure 7.Figure 6. Spectrogram of the input signal composed of a sequence of LoRa frames with SF = 7, CRC on, and payloads of a single byte containing powers of 2 (1, 2, …, 128).Figure 7. Output signal of the stochastic gradient descent frequency tracker given the described test signal at its input (zoomed into frequencies from 0 to 0.2).
- Discrete Fourier Transform (DFT) PeakThe previous method presents some problems as if multiple local maxima are present in the short-time spectrum, e.g., if there is an interfering signal, the frequency estimate will converge to an intermediate solution that minimizes the square error of the simplified cost function and not the global maximum that optimizes the original function.If the squared magnitude of the DTFT of the signal windowed by a -sample rectangular window around each sample is seen as the probability density of the instantaneous frequency process, the original problem can be interpreted as finding its mode, whereas the simplified process converges to its mean; therefore, it is only working if the interfering signal’s mean is equal to its mode, as is the case for a signal with Gaussian interference.To cope with this problem, we can use the following estimator for the frequency:Additionally, to compute the cost function at more frequency points, the order of the DFT can be increased while applying a small rectangular window to the signal, i.e.,This method presents some issues in terms of computational cost; however, it has much better performance in terms of resistance to interference from signals with different symbol factors [10], as multiplying the signal by spreads the spectrum of the interfering signals and collapses the desired signal to a single (or two, in the case of the CSS modulation at the transition of two symbols) peak.To address the performance issues, the estimator can be computed at a lower rate than the input signal, i.e.,Just as in the previous method, an example of output of this block when receiving the beginning of the same test signal is shown in Figure 8.
4.2. Correlation Synchronizer
4.2.1. Correlator
4.2.2. Synchronizer
4.2.3. Time-Frequency Shift Compensation
4.3. Symbol Decision
4.3.1. Minimum Squares Approach
4.3.2. Multiple Detection Approach
4.4. Frame Decoder/Receiver Controller
- Gray Encoding
- Deinterleaving
- Decoding
- Randomization
- CRC Calculation
5. Transceiver and Hardware Implementation
5.1. GNU Radio Implementation
5.1.1. Receiver
- A receiver controller that, in order to control the flow of data and pass some necessary information between the blocks, controls some aspects of all other blocks using message ports, which are an asynchronous way of passing information between blocks that GNU Radio provides.
- A chirp detector that, using an approach similar to that described in the DFT-based symbol decision, takes the DFT of the signal multiplied by the linear chirp relative to the selected set of modulation parameters (BWCSS, SF, and consequently the chirp rate), computes the chirp-windowed DFT and the ratio between the energy in the maximum bin and the mean energy on the remaining bins, and checks whether this value is higher than some set threshold. Then, it uses this information to only allow the flow of data downstream in the flowgraph when this detection happens in order to avoid unnecessary calculations and consequently unnecessary power consumption.
5.1.2. Transmitter
- A transmitter controller that controls all other blocks by setting the required parameters, according to the parameters given to the transmitter, and depending on which part of the packet is being transmitted. This block, differently to the controller in the receiver, mainly uses tags to control the blocks to keep the implementation cleaner (tags are another mechanism of asynchronous message passing on GNU Radio that embeds itself into existing data streams instead of requiring an extra output in the block). Also, this block (together with the other blocks) supports dynamically setting all modulation parameters (SF, CR, BW, payload size) by sending a special tag to it.
- The append silence block. This is needed because of how GNU Radio works and how most stock sink blocks are implemented, a continuous stream of data is required at the output of the receiver; this block is controlled by the transmitter controller and generates silence samples (i.e., of value zero) whenever the rest of the blocks are not outputting any packets and outputs that data when it is available.
5.2. SDR Platforms and Hardware Setup
6. Example Applications
6.1. LoRa Detector: Another Application of the Chirp Detector
6.2. Multi-Parameter, Multi-Channel Receiver
6.3. Variable Parameter Transmitter
- fullflexible
- struct loraPDUHeader {
- int8_t hasHeader;
- int8_t SF;
- uint8_t CR;
- bool payloadCRCPresent;
- bool lowDataRate;
- float BW;
- uint8_t syncWordNum;
- float fOffset;
- };
6.4. Multi-Parameter, Multi-Channel Transceiver
7. Conclusions
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Data Availability Statement
Conflicts of Interest
References
- The LoRa Alliance Technical Committee LoRaWAN™ 1.1 Specification. Standard. Lora Alliance, Inc.: Beaverton, OR, USA, 2017. Available online: https://resources.lora-alliance.org/technical-specifications/lorawan-specification-v1-1 (accessed on 26 June 2024).
- Knight, M.; Seeber, B. Decoding LoRa: Realizing a Modern LPWAN with SDR. In Proceedings of the GNU Radio Conference 2016, Boulder, CO, USA, 12–16 September 2016; Volume 1. [Google Scholar]
- Robyns, P.; Quax, P.; Lamotte, W.; Thenaers, W. A Multi-Channel Software Decoder for the LoRa Modulation Scheme. In Proceedings of the 3rd International Conference on Internet of Things, Big Data and Security, Funchal, Portugal, 19–21 March 2018. [Google Scholar] [CrossRef]
- Ghanaatian, R.; Afisiadis, O.; Cotting, M.; Burg, A. Lora Digital Receiver Analysis and Implementation. In Proceedings of the ICASSP 2019—2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Brighton, UK, 12–17 May 2019; pp. 1498–1502. [Google Scholar] [CrossRef]
- Busacca, F.; Mangione, S.; Tinnirello, I.; Palazzo, S.; Restuccia, F. SDR-LoRa: Dissecting and Implementing LoRa on Software-Defined Radios to Advance Experimental IoT Research. In Proceedings of the 16th ACM Workshop on Wireless Network Testbeds, Experimental Evaluation & CHaracterization, Sydney, NSW, Australia, 17 October 2022; pp. 24–31. [Google Scholar] [CrossRef]
- Marquet, A.; Montavont, N.; Papadopoulos, G.Z. Towards an SDR implementation of LoRa: Reverse-engineering, demodulation strategies and assessment over Rayleigh channel. Comput. Commun. 2020, 153, 595–605. [Google Scholar] [CrossRef]
- Tapparel, J.; Afisiadis, O.; Mayoraz, P.; Balatsoukas-Stimming, A.; Burg, A. An Open-Source LoRa Physical Layer Prototype on GNU Radio. In Proceedings of the 2020 IEEE 21st International Workshop on Signal Processing Advances in Wireless Communications (SPAWC), Atlanta, GA, USA, 26–29 May 2020; pp. 1–5. [Google Scholar] [CrossRef]
- Farrell, S. Low-Power Wide Area Network (LPWAN) Overview; RFC, Ed.; Technical Report; Internet Engineering Task Force (IETF): Fremont, CA, USA, 2018. [Google Scholar] [CrossRef]
- The LoRa Alliance Technical Committee LoRaWAN™ 1.1 Regional Parameters. Standard. Lora Alliance, Inc.: Beaverton, OR, USA, 2017. Available online: https://resources.lora-alliance.org/technical-specifications/lorawan-regional-parameters-v1-1ra (accessed on 26 June 2024).
- Dunlop, B.; Nguyen, H.H.; Barton, R.; Henry, J. Interference Analysis for LoRa Chirp Spread Spectrum Signals. In Proceedings of the 2019 IEEE Canadian Conference of Electrical and Computer Engineering (CCECE), Edmonton, AB, Canada, 5–8 May 2019; pp. 1–5. [Google Scholar] [CrossRef]
- Schlienz, J.; Raddino, D. Narrowband Internet of Things Whitepaper. White Paper, Rohde&Schwarz. 2016, pp. 1–42. Available online: https://www.rohde-schwarz.com/tw/applications/narrowband-internet-of-things-white-paper_230854-314242.html (accessed on 26 June 2024).
- Martiradonna, S.; Piro, G.; Boggia, G. On the Evaluation of the Nb-Iot Random Access Procedure in Monitoring Infrastructures. Sensors 2019, 19, 3237. [Google Scholar] [CrossRef] [PubMed]
- SIGFOX. Sigfox Connected Objects: RADIO Specifications, Labège—France. 2020. Available online: https://build.sigfox.com/sigfox-device-radio-specifications (accessed on 26 June 2024).
- SIGFOX. Sigfox Device Cookbook—Communication Configuration, Labège—France. 2018. Available online: https://build.sigfox.com/sigfox-device-cookbook (accessed on 26 June 2024).
- Afisiadis, O.; Cotting, M.; Burg, A.; Balatsoukas-Stimming, A. On the Error Rate of the LoRa Modulation With Interference. IEEE Trans. Wirel. Commun. 2020, 19, 1292–1304. [Google Scholar] [CrossRef]
- Liando, J.C.; Gamage, A.; Tengourtius, A.W.; Li, M. Known and Unknown Facts of LoRa: Experiences from a Large-Scale Measurement Study. ACM Trans. Sen. Netw. 2019, 15, 16. [Google Scholar] [CrossRef]
- Robyns, P. gr-lora-samples: A Collection of Raw LoRa Test Signal Samples for the gr-lora Project. Available online: https://github.com/rpp0/gr-lora-samples (accessed on 26 June 2024).
- de Omena Simas, J.P. lorasim-matlab: A MATLAB/Octave-Based LoRa PHY Simulator. 2020. Available online: https://gitlab.com/jpsimas/lorasim-matlab.git (accessed on 26 June 2024).
- Robyns, P.; Peter Quax, W.L.; Thenaers, W. gr-lora: An Efficient LoRa Decoder for GNU Radio. 2017. Available online: https://zenodo.org/records/892174 (accessed on 26 June 2024).
- Semtech. AN1200.22 LoRa Modulation Basics. 2015. Available online: https://semtech.my.salesforce.com/sfc/p/#E0000000JelG/a/2R0000001OJk/yDEcfAkD9qEz6oG3PJryoHKas3UMsMDa3TFqz1UQOkM (accessed on 26 June 2024).
- Cook, G. CRC RevEng: Arbitrary-Precision CRC Calculator and Algorithm Finder. 2019. Available online: https://reveng.sourceforge.io/ (accessed on 26 June 2024).
- de Omena Simas, J.P. gr-LibreLoRa: A GNURadio Based LoRa PHY Receiver and Transmitter Implementation. 2020. Available online: https://gitlab.com/jpsimas/librelora.git (accessed on 26 June 2024).
- de Omena Simas, J.P. Software-Defined Radio Implementation of a LoRa Detector and Transceiver. Master’s Thesis, Politecnico di Torino, Turin, Italy, 2020. Available online: https://webthesis.biblio.polito.it/21315/ (accessed on 26 June 2024).
- Mitola, J. The Software Radio Architecture. IEEE Commun. Mag. 1995, 33, 26–38. [Google Scholar] [CrossRef]
- Popescu, D.C.; Vida, R. A Primer on Software Defined Radios. Infocommun. J. 2022, 14, 16–27. [Google Scholar] [CrossRef]
- Rumsch, N.; Seidlitz, L.; Andre, J. Current State of Hardware and Tooling for SDR. In Proceedings of the Seminar Innovative Internet Technologies and Mobile Communications (IITM), Munich, Germany, 6 March–17 August 2023; pp. 109–114. [Google Scholar] [CrossRef]
LoRaWAN + LoRa PHY | |
---|---|
Band | Industrial, Scientific, and Medical (ISM) |
Modulation | Chirp Spread Spectrum (CSS) (Section 2.3) |
Bandwidth | 125, 250, or 500 kHz [9] |
Physical Bit Rate | 0.37–27.4 kbit/s (See Section 2.3) |
Multiplexing | Different-SF Chirp Interference Resistance (See [10]) |
Channel Access | Deterministic Time Slots [1] |
NB-IoT | |
Band | Same as LTE |
Modulation | BPSK/QPSK [11] |
Bandwidth | 3.75 or 15 kHz [11] |
Physical Bit Rate | 3.75, 7.5, 15 or 30 kbit/s [11] |
Multiplexing | Single Carrier Frequency Division |
Multiple Access with Frequency Hopping [12] | |
Channel Access | Contention-based random access procedure [12] |
Sigfox | |
Band | ISM |
Modulation | Differential BPSK [13] |
Bandwidth | 0.1 kHz or 0.6 kHz [13] |
Physical Bit Rate | 0.1 kbit/s or 0.6 kbit/s [13] |
Multiplexing | Random Frequency Time-Division Multiple Access [13] |
Channel Access | Deterministic Time Slots [14] |
SF | 7 | 8 | 9 | 10 | 11 | 12 | |
---|---|---|---|---|---|---|---|
BW (kHz) | |||||||
125 | 6.84 | 3.91 | 2.2 | 1.22 | 0.67 | 0.37 | |
250 | 13.67 | 7.81 | 4.39 | 2.44 | 1.34 | 0.73 | |
500 | 27.34 | 15.63 | 8.79 | 4.88 | 2.69 | 1.46 |
Platform | Frequency Range | Maximum Sampling Rate | TX/RX? | Interface | Price |
---|---|---|---|---|---|
RTL-SDR RTL2832U | 24 MHz–1.7 GHz | 2.56 Msps | Only RX | USB | USD 10 |
DVB-T TV Tuner | |||||
HackRF One | 1 MHz–6 GHz | 20 Msps | Yes | USB 2.0 | USD 300 |
LimeSDR | 10 MHz–3.5 GHz | 30.72 Msps | Yes | USB 3.0 | USD 400 |
Mini 2 | PCIe | ||||
USRP B210 | 70 MHz–6 GHz | 56 Msps | Yes | USB 3.0 | USD 1100 |
USRP X310 | DC-6 GHz | 200 Msps | Yes | GbE | USD 4800 |
PCIe |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2024 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
de Omena Simas, J.P.; Riviello, D.G.; Garello, R. Software-Defined Radio Implementation of a LoRa Transceiver. Sensors 2024, 24, 4825. https://doi.org/10.3390/s24154825
de Omena Simas JP, Riviello DG, Garello R. Software-Defined Radio Implementation of a LoRa Transceiver. Sensors. 2024; 24(15):4825. https://doi.org/10.3390/s24154825
Chicago/Turabian Stylede Omena Simas, João Pedro, Daniel Gaetano Riviello, and Roberto Garello. 2024. "Software-Defined Radio Implementation of a LoRa Transceiver" Sensors 24, no. 15: 4825. https://doi.org/10.3390/s24154825