Limited items in stock
View Purchasing OptionsProject update 15 of 15
Over the last month, we have been improving uSDR software and are happy to release 0.9.8 version, mostly it consists of minor bug fixes and performance improvements. We also added support for our multichannel SDR xMASS. Despite it being new hardware, we ported some functions to uSDR. One of these is support for 12-bit I/Q format for uSDR. This allows you to achieve up to 14.75MSPS on the USB2 bus and even run srsRAN with a 5 Mhz channel!
We recommended you update to this latest software (and firmware).
We’ve also tweaked SoapySDR and, as a result, it’s straightforward to run the srsRAN LTE network with uSDR now! srsRAN_4G is a popular open-source implementation of the LTE network with both implementations of UE (mobile phone), and eNB (base station) and EPC (core network). We’ll be focusing on running simple eNB+EPC configuration. You can use pre-built uSDR packages or build it from sources.
srsRAN provides ready-to-use Ubuntu packages, however, these only work with usrp hardware. So we’ll need to build from sources. Detailed instruction is provided on the srsRAN official site.
NOTE: This will fail on Ubuntu 24.04, so you need to use gcc-11 instead of the default compiler. More details are available in this GitHub issue.
To operate even a test network, you need dedicated SIM cards. The easiest way is to buy preprogrammed SIM cards for test/private networks. We recommend using sysmoISIM-S17 cards.
You’ll get the secret key via email.
Alternatively, you can use programmable SIM cards and create a profile by yourself. Here’s are detailed instructions.
Both ways work fine, so you can use whichever is more convenient.
We’ll need to configure EPC to run with SIM card network codes. Edit epc.conf
and change mcc
and mnc
accordingly. Then, you need to append SIM secrets to user_db.csv
file. E.g., in our case it’s
ue0,mil,901704356421622,aae018af78cb0fc5276138ef1254d7f0,opc,b0414d943ea6f14889ae04dae16c67e0,8000,00000000239b,7,dynamic
For eNB, besides EARFCN/MCC/MNC codes, we also need to specify f.device_name
and rf.device_args
parameters. The latest depends on actual LTE bandwidth (n_prb). Without this parameter, eNB will work but less efficiently which may lead to more CPU usage and buffer overruns.
Bandwidth | Command to run eNB |
---|---|
1.4 Mhz | ./srsenb --rf.device_name soapy --rf.device_args driver=usdr,desired_rx_pkt=1920 --enb.n_prb 6 --enb.mcc 901 --enb.mnc 70 --rf.rx_gain 35 --rf.tx_gain 20 |
3 Mhz | ./srsenb --rf.device_name soapy --rf.device_args driver=usdr,desired_rx_pkt=3840 --enb.n_prb 15 --enb.mcc 901 --enb.mnc 70 --rf.rx_gain 35 --rf.tx_gain 20 |
5 Mhz | ./srsenb --rf.device_name soapy --rf.device_args driver=usdr,desired_rx_pkt=5760 --enb.n_prb 25 --enb.mcc 901 --enb.mnc 70 --rf.rx_gain 35 --rf.tx_gain 20 |
5 Mhz (USB2) | ./srsenb --rf.device_name soapy --rf.device_args driver=usdr,desired_rx_pkt=5760,rx12bit=1 --enb.n_prb 25 --enb.mcc 901 --enb.mnc 70 --rf.rx_gain 35 --rf.tx_gain 20 |
10 Mhz | ./srsenb --rf.device_name soapy --rf.device_args driver=usdr,desired_rx_pkt=11520 --enb.n_prb 50 --enb.mcc 901 --enb.mnc 70 --rf.rx_gain 35 --rf.tx_gain 20 |
20 Mhz | ./srsenb --rf.device_name soapy --rf.device_args driver=usdr,desired_rx_pkt=23040 --enb.n_prb 100 --enb.mcc 901 --enb.mnc 70 --rf.rx_gain 35 --rf.tx_gain 20 |
You can add these parameters to enb.conf
instead.
Due to limited USB2 bus bandwidth, only 1.4/3 Mhz/5 Mhz options are suitable. The 5 Mhz band has been supported since version 0.9.8 using 12-bit I/Q format. To enable it, you need to add rx12bit=1
parameter to rf.device_args
as in example above. PCIe connectivity works well in any configuration.
NOTE: 1.4/3Mhz may not work with all LTE phones
Before running the network, you need to enable NAT for your internet network device. This can be done by running a simple script:
srsepc_if_masq.sh {name_of_your_internet_device}
Run EPC sudo srsepc epc.conf
Run eNB srsenb
either with config file or all parameters in CLI.
If the SIM card was set up correctly you’ll see UE Authentication Accepted in EPC log.
ID Response -- IMSI: 901704356421622
Downlink NAS: Sent Authentication Request
UL NAS: Received Authentication Response
Authentication Response -- IMSI 901704356421622
UE Authentication Accepted.
If you have properly configured APN on your mobile, you’ll see an allocation of IP address to your equipment right after authentication.
ESM Info: APN srsapn
Getting subscription information -- QCI 7
Sending Create Session Request.
Creating Session Response -- IMSI: 901704356421622
Creating Session Response -- MME control TEID: 1
Received GTP-C PDU. Message type: GTPC_MSG_TYPE_CREATE_SESSION_REQUEST
SPGW: Allocated Ctrl TEID 1
SPGW: Allocated User TEID 1
SPGW: Allocate UE IP 172.16.0.2
If you don’t see it, please check the internet APN setting on your phone.
To test network performance, it’s easier to use the perf3 utility. For Android phones, there’s a couple of applications. We’ve been using Aruba Utilities
On the host, you need to run the iperf3 server by iperf3 -s
and on your phone you need to run iperf3 with IP address 176.16.0.1 and with the -R
option to test Downlink or without to test Uplink.
In normal conditions where your phone lies near uSDR antennas, you should get maximum performance. Unfortunately, my phone doesn’t support QAM256 modulation and it’s limited to 75 Mbit/s on 20 Mhz BW.
Downlink test / eNB log
-----------------DL----------------|-------------------------UL-------------------------
rat pci rnti cqi ri mcs brate ok nok (%) | pusch pucch phr mcs brate ok nok (%) bsr
lte 1 48 15 0 28 75M 1000 0 0% | 19.8 18.1 32 21 1.0M 225 0 0% 0.0
lte 1 48 15 0 28 75M 1000 0 0% | 19.7 18.1 31 21 877k 228 0 0% 0.0
lte 1 48 15 0 28 75M 1000 0 0% | 19.7 18.1 31 21 821k 215 0 0% 0.0
lte 1 48 15 0 28 75M 1000 0 0% | 19.8 18.2 32 21 941k 230 0 0% 0.0
lte 1 48 15 0 28 75M 1000 0 0% | 19.8 18.2 30 21 868k 212 0 0% 0.0
lte 1 48 15 0 28 75M 1000 0 0% | 19.7 18.1 32 21 865k 207 0 0% 0.0
lte 1 48 15 0 28 75M 1000 0 0% | 19.8 18.1 31 21 835k 213 0 0% 0.0
lte 1 48 15 0 28 75M 1000 0 0% | 19.8 18.1 32 22 910k 219 0 0% 0.0
lte 1 48 15 0 27 75M 993 0 0% | 19.8 18.1 30 21 1.0M 217 0 0% 608
lte 1 48 15 0 28 75M 1000 0 0% | 19.8 18.2 30 21 875k 217 0 0% 0.0
lte 1 48 15 0 28 75M 1000 0 0% | 19.8 18.1 30 22 874k 212 0 0% 0.0
Uplink test eNB log
-----------------DL----------------|-------------------------UL-------------------------
rat pci rnti cqi ri mcs brate ok nok (%) | pusch pucch phr mcs brate ok nok (%) bsr
lte 1 48 15 0 14 1.0M 930 0 0% | 19.4 n/a 21 23 50M 999 1 0% 101k
lte 1 48 15 0 10 701k 938 0 0% | 19.4 n/a 21 23 50M 1000 0 0% 102k
lte 1 48 15 0 10 685k 928 0 0% | 19.9 n/a 21 23 50M 999 1 0% 104k
lte 1 48 15 0 11 797k 938 0 0% | 19.7 n/a 21 23 50M 1000 0 0% 104k
lte 1 48 15 0 11 828k 930 0 0% | 19.6 n/a 21 23 50M 999 1 0% 104k
lte 1 48 15 0 10 692k 938 0 0% | 19.5 n/a 21 23 50M 999 1 0% 104k
lte 1 48 15 0 10 744k 929 0 0% | 20.0 n/a 20 23 50M 1000 0 0% 103k
lte 1 48 15 0 9 638k 930 0 0% | 19.9 n/a 21 23 50M 999 1 0% 103k
lte 1 48 15 0 10 705k 938 0 0% | 19.9 n/a 21 23 50M 1000 0 0% 103k
lte 1 48 15 0 12 862k 938 0 0% | 19.4 n/a 20 23 50M 1000 0 0% 103k
lte 1 48 15 0 10 683k 929 0 0% | 19.8 n/a 20 23 50M 999 1 0% 103k
Running a private LTE network or even a test LTE network is subject to local regulation. In some counties, it’s not hard to get a low-power license. The other part is RF compliant emissions.
Most inexpensive SDRs don’t have any selectivity filtering or transmission harmonic reduction. This is crucial to run not just commercial but also test networks. uSDR is a tiny form factor board and fitting proper filtering is physically impossible. That’s why we developed the uSDR development board. It has a power amplifier, low-noise amplifier, a bank of filters, and a bank of LTE duplexers. LNA and PA increase coverage for uplink and downlink. Duplexers significantly reduce out of band emissions on the TX path, on the RX path they improve selectivity (any strong signal may saturate receiving path, thus reducing coverage).
We strongly advise using the development board for doing experiments with LTE networks wherever possible. To use duplexers, you need to connect u.FL cables from uSDR to the development board (RX->J20, TX->J19). (More information.) A single antenna should be connected to J17.
The uSDR dev board has a duplexer bank in bands 2,3,5,7,8.
Band | F | Uplink (Mhz) | Downlink (Mhz) | Channels |
---|---|---|---|---|
2 | 1900 | 1850 - 1910 | 1930 - 1990 | 1.4, 3, 5, 10, 15, 20 |
3 | 1800 | 1710 - 1785 | 1805 - 1880 | 1.4, 3, 5, 10, 15, 20 |
5 | 850 | 824 - 849 | 869 - 894 | 1.4, 3, 5, 10 |
7 | 2600 | 2500 - 2570 | 2620 - 2690 | 5, 10, 15, 20 |
8 | 900 | 880 - 915 | 869 - 894 | 1.4, 3, 5, 10 |
To enable using the duplexer path, you’ll need to add fe=pciefev1:path_band7:pa_on:lna_on
to the --rf.device_args
parameter using a comma, and where path_band7
reflects using the duplexer for Band Seven. E.g., here’s the full configuration string for 20 MHz bandwidth:
./srsenb --rf.device_name soapy --rf.device_args driver=usdr,desired_rx_pkt=23040,fe=pciefev1:path_band7:pa_on:lna_on --rf.rx_gain 35 --rf.tx_gain 20 --enb.mcc 901 --enb.mnc 70 --enb.n_prb 100
uSDR is part of Lime SDR Accelerator
LMS6002D · RF transceiver
uSDR is part of Qorvo RF Accelerator
QPL9547TR7
· RF amlplifier
enables RF range
RFSW6042TR7
· RF switch ICs
used in harmonic reduction filter bank
RFSW6062TR7
· RF switch ICs
used in cellular bands diplexer circuits
QPC3223SR
· 2-bit digital attenuators
enables automatic gain control (AGC) loop
uSDR is part of AMD FPGA Playground
Artix™ 7 XC7A35T-2CPG236C
· FPGA
the glue between the radio frequency IC and host interface