Support for BladeRF 2.0 micro for 5G
I am trying to bring up Openairinterface 5G (OAI5G) using BladeRF 2.0 micro xA4. (Make Nuand, US: https://www.nuand.com/)
Till a couple of years ago, OAI5G RAN used to support BLADRF, LimeSDR Ettus USRP SDR's. Refer to :
https://gitlab.eurecom.fr/oai/openairinterface5g/-/tree/develop/doc#radios
https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/develop/radio/BLADERF/README
But since then, OAI5G is not tested with BLADERF 2.0 range of SDR's.
Due to this, no config files are available. Also when running for 40 MHz (Say N78 TDD config) bandwidth in 3/4 sampling mode, nr-softmodem binary built with BLADERF driver would not run due to OAI5G application code not having entry for 46.08 Msps or 61.44 Msps.
I started to look into whether I can still use BLADERF 2.0 instead of equivalent Ettus USRP SDR B210.
First good news: Recently, I was able to make it work for two modes:
- Band 1 which has smaller BW profile(15 kHz freq spacing, 52 RB's, 15.36 Msps sampling rate)
- N78 20 MHz (51 RB's, 30 kHz subcarrier offset using 30.72 Msps Sampling rate.
I procured Bladerf 2.0 micro xa4 last year to use a replacement for Ettus B210 for popular 5G open source software solution openairinterface5G.
My reasons to procure BRF 2.0 micro xa4.
- I checked from oai docs that OAI5G does support bladerf 2.0 [later on, it turned out that OAI5G stopped supporting same. :( }
- Moreover both BRF 2.0 micro and Ettus USRP B210 use exactly same ADI chipset of AD9361/9363.
- Price point. This was a major deciding factor for me since I am in andividual and don't have access to huge funds. Moreover supply and lead time of B210 was too long.
Ettus USRP SDR boards are excellent piece of RF+ AFE+ digital hardware with their rugged design backed by proven good RF performance and a solid UHD interface. But at the same time, those are quite expensive too.
Just to give an idea, USRP B210 has a price tag of $ 2165 (https://www.ettus.com/product-categories/USRP-Bus-Series/).
BladeRF 2.0 micro xA4 from nuand carrying exactly equivalent to B210 in terms of specifications has a price tag of $540 (https://www.nuand.com/bladerf-2-0-micro/)
So it is 4x price tag for B210 compared to BladeRF. BladeRF 2.0 micro uses same ADI chipset as B210 and also supports an interesting oversampling feature of 122.88 Msps but with ADC bit width of 8 bits instead of 12 bits.
Assuming that majority of educational institute/R & D institute/wireless cellular enthusiast have computing platforms which can run OAI5G /srsRAN/other cellular RAN codebases still need to invest in SDR's to enable full 5G NR /cellular platform.
That is why SDR is a major cost for such a platform for so many establishment/Enthusiasts. It is important to enable BladeRF/LimeSDR type of SDR's on OAI5G as it can lead to almost 75% cost reduction.
Profileration of open source cellular network like OAI5G/srsRAN can be much more leading to a revolution in number of folks using these only if more affordable SDR's are supported.
With this vision, I have beem trying on my own to drive and I hope to achieve at least 40MHz, N78 TDD enabling on BladeRF 2.0 micro considering that 20 MHz N78 is already up.
With support and colloboration from learned folks like you, it is very much possible very soon.
Now I am trying to bring up N78 40 MHz bandwidth profile. It uses 46.08 Msps sampling rate.
I have been trying to bring it up but ran into issues: Following is the command
sudo ./nr-softmodem -O ../../../targets/PROJECTS//GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --sa --continuous-tx -E
I see following messages/warning:
[BRF] sampling_rate 46080000, num_buffers 128, buffer_size 2048, num transfer 16, timeout_ms (rx 0, tx 0)
[BRF] init dev 0x7247d4003c80
[BRF] Device operates at max speed
[BRF] set RX frequency to 3619200000
[BRF] set RX sample rate to 46080000, 46080000
[BRF] set RX bandwidth to 80000000, 56000000
cal 0: freq 2300000000.000000, offset 53.500000, diff 1319200000.000000
cal 1: freq 1880000000.000000, offset 57.000000, diff 1739200000.000000
cal 2: freq 816000000.000000, offset 73.000000, diff 2803200000.000000
[BRF] set RX gain to 42 (53)
[BRF] set TX Frequency to 3619200000
[BRF] set TX sampling rate to 46080000
[BRF] set TX bandwidth to 80000000
[BRF] set the TX gain to 73
[BRF] configured TX sync interface
[BRF] configured Rx sync interface
[BRF] TX module enabled
[WARNING @ host/libraries/libbladeRF/src/board/bladerf2/common.c:356] The total sample throughput for the 2 active channels, 92.16 Msps, is greater than the recommended maximum sample throughput, 80 Msps. You may experience dropped samples unless the sample rate is reduced, or some channels are deactivated.
Afterwards I continuously see following messages:
RX bad samples count, wanted 23040, got 20224
RX overrun (316) is detected. t=8242471Got 23040 samples. nsymps 23040
RX overrun (317) is detected. t=8265511Got 23040 samples. nsymps 23040
RX overrun (318) is detected. t=8288551Got 23040 samples. nsymps 23040
RX overrun (319) is detected. t=8311591Got 23040 samples. nsymps 23040
RX overrun (320) is detected. t=8334631Got 23040 samples. nsymps 23040
RX overrun (321) is detected. t=8357671Got 23040 samples. nsymps 23040
RX overrun (322) is detected. t=8380711Got 23040 samples. nsymps 23040
RX overrun (323) is detected. t=8403751Got 23040 samples. nsymps 23040
RX overrun (324) is detected. t=8426791Got 23040 samples. nsymps 23040
RX overrun (325) is detected. t=8449831Got 20224 samples. nsymps 23040
RX bad samples count, wanted 23040, got 20224
RX overrun (326) is detected. t=8535079Got 23040 samples. nsymps 23040
RX overrun (327) is detected. t=8558119Got 23040 samples. nsymps 23040
RX overrun (328) is detected. t=8581159Got 23040 samples. nsymps 23040
RX overrun (329) is detected. t=8604199Got 23040 samples. nsymps 23040
RX overrun (330) is detected. t=8627239Got 23040 samples. nsymps 23040
RX overrun (331) is detected. t=8650279Got 23040 samples. nsymps 23040
RX overrun (332) is detected. t=8673319Got 23040 samples. nsymps 23040
RX overrun (333) is detected. t=8696359Got 23040 samples. nsymps 23040
RX overrun (334) is detected. t=8719399Got 23040 samples. nsymps 23040
RX overrun (335) is detected. t=8742439Got 20224 samples. nsymps 23040
RX bad samples count, wanted 23040, got 20224
Now my queries are as follows:
-
I understand that throughput on USB between host and USB handler FPGA is 92.16 Msps (1 channel , I and Q, 46.08 Msps each) and safe limit is 80 Msps even though USB 3.0 can go upto ~500-600 Msps.
Above timing issue is not due to slow computing capabilities of my host machine since it is intel i9 13th gen processor based and anyway, B210 is working fine for same profile on my machine.
It is clear that this limitation is due to BRF driver and probably FPGA logic handling USB packets in BRF 2.0 since B210 is able to handle same on my machine itself.
Can anything be done to alleviate this issue so that BRF 2.0 micro can run above 5G profile?
Simultaneously, I am getting in touch bladerf company Nuand folks to debug and resolve this issue.
The reason why I am so keen to solve this issue is that BRF 2.0 has major price advantage compared to Ettus B210.
So many Universities and R & D institiutes in India and other developing countries are trying to bring up 5G labs using oai5g and SDR plays an important part being a critical component. So if BRF 2.0 micro works with OAI5G for 40 MHz (Band 78), it will open the doors for thousands of researchers/Students/R& D folks to use BRF 2.0 instead of B210 due to cost factor.
I am looking forward to hear positively from your side on how we can resolve this together. Any ideas or direction in this regard will be really useful.
-
In the OAI5G application interface code side, do you think that using oversampling mode and 8 bit mode of Bladerf (Sampling rates reaching upto 122.88 Msps) may reduce quantum of traffic between FPGA and host and therefore reducing delay in traffic while maintaining same sampling rate of 46.08 Msps for 40 MHz profile.