Testing my new LibreSDR B220 (Ettus USRP B210 clone)

  • Hello,

    I had ordered two month (!) ago - the package took forever to ship and was retained at customs for 3 weeks - a LibreSDR B220 from AliExpress, benefiting from their Black Friday/Christmas sales. This device is a (much cheaper) clone of the Ettus USRP B210 SDR, somehow similar to a Adalm Pluto, but featuring a USB-3.0 connection and a AD9361 (instead of a AD9363, configured out of specs as a AD9361). It has two independent RX/TX ports, which makes it suitable for Es'hail amateur radio, but I am not into that.

    What really interests me is the RF spectrum and demodulation of the signals.

    The following picture shows VMA Stream Reader tuning to BOM Cine (10913MHz - H SR2499) at Hispasat 30.0W. This however was done for two purposes only: to rotate the dish and provide power to the LNB (including polarity and band selection).

    What is not visible is my setup:

    TBS6903X ---> Input 1 of simple "T" connector

    B220 ---> DC Blocker --> Input 2 of simple "T" connector

    Input 3 of simple "T" connector ---> LNB

    On the PC, SDRangel is running, configured center frequency 1163MHz (10913MHz-9750MHz).

    It is running the "DATV Demodulator" "channel":

    So what is happening here is that we are using a Software Defined Radio (SDR) to demodulate in software a commercial DVB-S2 transponder!

    Of course I selected this transponder because it has a BW of 3MHz and only one channel, making it an excellent test transponder.

    All of this should be possible with a cheaper HackRF One or Adalm Pluto (or one of the many clones).

    What is amazing, though, is using 16MHz of bandwidth thanks to USB-3.0:

    Suddenly you can see all the pilots!

    And to finish, SDRangel showing a whopping 50MS/s:

    I found it interesting to look at this from an SDR, which has a much higher resolution that what we are normally used to:

  • This is getting better by the minute!

    Here I am tuning to 12519Mhz - V on Hispasat 30W:

    SDRangel is unable to demodulate this transponder, I guess because it has more than one service embedded.

    But it allows to stream the demodulated TS to UDP://127.0.0.1:8882.

    Guess what? This can then be analysed with VMA Transport Stream Analyser:

    Of course this is not ground breaking (and you should be able to do the same with HackRF One or Adalm Pluto devices). And you need to know the demodulation settings for DATV Demodulator - no blind scann available at all!

    In this case I used VMA Stream Reader to determine them:


    Here is a detailed view at maximum sample rate the LibreSDR B220 supports (61MS/s):

    Note that at this sample rate, no demodulation is possible (that only works up to 16MS/s). I am not sure why that is, but I believe this is the limitation of LibUSB driver under Windows and why it is widely recommended to use Linux instead.

  • Here a few more views from Hispasat:

    Not sure what I am looking at...

  • Thank you, that;s very interesting. I've been using a B210 clone for a while but haven't tried any DVB with it. I chose this one as it is 100% compatible with Ettus firmware. It was about 300GBP delivered.

    B210 AD9361 RF 70MHz-6GHz Software Defined Radio USB3.0 Compatible with Original Official B210
    Features:1. Fully compatible with the official ecosystem, no need to replace any files.2. Introduced GPIO port for easy installation of expansion board.3.…
    opensourcesdrlab.com

    My observations:

    It's very nicely made and in a milled clam-shell style case. However, that's a disaster due to the size of the case and it's waveguide properties. Noise from the USB (at the opposite end of the board to the RF section) propagates to the RF input. In addition, the case is anodised so the 2 halves do not make contact with each other, the PCB or the connectors. The noise levels from about 1-3GHz peak at around -80dB relative to full scale.

    I ground the edges of the case, soldered the USB socket shell to the the PCB ground, filled the lid of the case with abosorber and made spring connections to make sure that the SMAs were connected to the case. This improved things by about 20-30dB. Sometime I will put a shield over the AD9361 and the input circuitry.

    Since I use it mainly for DSN, I needed it to be locked to an external reference. It would not lock. It appears that either a defective VCTCXO was fitted or it was a TCXO (i.e. no voltage control). Changing this to a proper VCTCXO, it locked to an external reference.

    I first tried it on Linux with GnuRadio command line utilities but they are a pain to use. SDR Angel is not ideal for DSN work but a quick test on Linux had it running. I have been using it on Win 10 with HDSDR and Satdump since. Here's an example of using it for FM demodulation.

    On an 8th gen i7, the maximum rate it will run on HDSDR is 32Ms/s and on an 8the gen i5 laptop it will run at 16Ms/s without dropping samples. The HDSDR driver is limited to 32MHz/s. Satdump will run up to about 50Ms/s on the i7 but not with processing enabled. When I get time, I'll try it with DVB and write a better review.

    1.2m Prodelin 3122 az-el with one of:
    S: Helical feed, 0.8dB NF LNA, X: 1dB NF LNA, conical feed, Ku 12-18GHz: corrugated conical feed, 1.5dB NF LNA, Ku: (10-15GHz), modified SMW LNA on rotating mount, Prodelin feed. Ka: Gilat ex-ODU PLLs Gilat feeds, Ka 18-26.5GHz: Patriot feed, home made 4dB NF LNA, Ka DSN: Corrugated conical feed, 3dB NF Down-Converter

    1.8m PF, Polar mount with Bullseye C120 LNB, Precision/Elite feed
    40km East of London, UK

  • Wie erwartet funktioniert es auch mit einem HackRF One:


    Somit kann man prima die üblichen Problemen bei sehr eng beianander liegenden Transpondern umgehen, in dem man diese mittels SDR demoduliert.

  • Guys rob did a video the other day about dvbs2 demod using hackrf

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.


  • Decoding MPE/IP radio on Hispasat using SDRangel to demodulate the DVB-S2 transponder.

  • Pros: You can tune the transponder on SDRangel without any problem, while TBS often tunes to the neighboring transponder

    Cons: You need to know the SR, BW and modulation parameters

  • After struggling the whole afternoon, I managed to get the LibreSDR B220 to work with SDRAngel under Linux.

    I read that the LibUHD drivers were better under Linux, allowing to use the whole bandwidth.

    First I tried DragonOS, a distribution made specifically for SDR. Guess what: it does not support UHD and eventually I gave up.

    Then I installed Ubuntu 22.04. Installing the Ettus driver and replacing the FW file for the FPGA of the B220 was easy. The problem was installing SDRAngel and then to get it to actually see the UHD devices.

    Eventually I managed to get it running:

    Conclusion: I don't see any different performance! Decoding BOM Cine (Hispasat) is only viable with 6MS/s. If you configure higher values, demodulation breaks. This is the same I got under Windows.

    The Linux PC is a Core i5-6300U with 16GB RAM. It is an industrial mini PC, so it is less performant than my main PC (Core i9-13900KF). I don't know how much this matters in terms of MS/s.

    With FM Broadcast it is the same: you can listen to radio up to 20MS/s on both (Linux/Windows). You can visualize up to 61.444MS/s, but here things start to break down. This is probably the limit of USB3.0.

  • Have you tried working with the deeptho driver?

    Maybe you should try a different kernel?

    Maybe I'll try the RTL-SDR stick with SDRankel under Ubuntu 24.04 and Kernel 6.14, which works well with other dvb apps. :3:

    7 antennas,including 2 of 150cm,one T90 with 16 lnbs
    lnb:Inverto Black Ultra with scalar rings and many Ku lnbs,
    C-band LNB:ESX241,Galaxy Inovations,EuroStar,MTI 20K,NS741U C/Ku,Inverto Single C-band Flange,lnb Chaparral Servo Motor & Skew Control
    LNB Ka:R9216DF XWM,Hughes FSS 19.7-20.2 GHz,
    6 satellite receivers,2 Meters,
    7 PC cards(tbs6983,6903,6590,6522,6209,2603,6909X,6903X,6504),3 tuners usb-tbs5927,tbs5925 & SkyStar USB 2 HD,
    Satellite reception between 100.5E-50.0W,
    Loc:Romania :3:

  • Deeptho driver is for TBS cards!

    This is a SDR!

    My Linux PC has no PCIe slots so I might try neumoDVB with my TB5580. But that is not scheduled...

  • The DATV transmissions on Es'hail 25.8E can be easily received using a setup like this:

    SAT Receiver (used to power the LNB) --> Splitter --> LNB

    From Splitter, take the extra output, use a DC BLOCKER and connect to your SDR (I have tried LibreSDR B220 and HackRF One, but it should work with cheap RTL dongles, too).

    Use SDRangel to demodulate DATV using the DATV Channel.

    Tune on SAT Receiver to H-L band (Horizontal/Low).

    Tune on SDRangel to 739MHz. You should see the pilot, which is transmitted in DVB-S2 QPSK 4/5 with 1.500.000KS/s.

    Next you will see smaller BW transponders. These are usually DVB-S2 QPSK with 333.000KS/s, sometimes 500.000KS/s.

    After tuning, wait a few seconds (that was my biggest mistake), until DATA starts showing some traffic. Note that FEC is automatically determined by DATV Channel.

    You can then switch to the Video tab and/or stream the TS via UDP.

  • Hey folks,


    VMA, thanks for sharing some info on this radio. There's not much about it online! I wanted to share my experience with this radio as well. This is my first post here so I hope I'm not breaking any rules with links to stuff, etc :)


    To be specific, this is the b220 clone that I purchased: https://opensourcesdrlab.com/products/libresdr-b220-mini-ad9361

    It comes with the `7A200T` variant of the FPGA. I opted for this version for more room in the FPGA for experiments :).


    You noted above:

    Conclusion: I don't see any different performance! Decoding BOM Cine (Hispasat) is only viable with 6MS/s. If you configure higher values, demodulation breaks. This is the same I got under Windows.

    The Linux PC is a Core i5-6300U with 16GB RAM. It is an industrial mini PC, so it is less performant than my main PC (Core i9-13900KF). I don't know how much this matters in terms of MS/s.

    With FM Broadcast it is the same: you can listen to radio up to 20MS/s on both (Linux/Windows). You can visualize up to 61.444MS/s, but here things start to break down. This is probably the limit of USB3.0.

    OTOH I've found that my radio can demodulate Broadcast FM in SDRAngel while sampling at the full 61.44MSPS. I can just slide the BFM pass filter around the whole range and it works. Note that this was with only one receive channel enabled. My PC specs are Ryzen 9 9900X / 32GB ram. So far I have only tested Linux, but I can test windows too if someone is curious.


    I will also note that I built the FPGA image from the source, it's in this repository here. https://github.com/bkerler/LibreSDR_UHD_B220_Mini_FPGA


    Personally I'm quite happy with the performance of this radio.

    I'm the General and I want it to spin!

  • Thanks for your feedback!

    I did expect it to be better, honestly:

    1) Full 61.44MSPS will produce under-runs in SDRAngel

    2) Depending on the tuned frequency, you will see many "birdies" - these go away if you just tune +/-1MHz - I find that annoying

    3) I expected better software support (which of course is my fault for not informing myself before hand)

    4) Spectrum sweeps are slow

    Don't get me wrong, I am happy as well and it is a great device, never the less. And there is still much to explore.

  • I switched the FW that was supplied by OpenSourceLab with the one from your link and that did improve it:

    However, with my Core i9-13900KF I am not able to properly demodulate anything with 61.4MS/s. Which BFM pass filter did you toggle?

    I tried on Linux with this same FW and despite seeing a clear FM radio band, too, I can only demodulate at about 11MS/s. But in this case I think the culprit is the CPU: it's an older Core i5.

    So, when I have some time, I need to install Ubunto on a spare SSD connected to my main computer. I need to take care on how to do that, in order to avoid any UEFI/GRUB stress - my main computer is to be a pure Windows (work) machine. I think I will use the USB-3 SATA adapter and install/boot from this one, leaving the other disks intact. This should allow me to experiment with neumoDVB and the Linux TBS drivers.

    Can you try SDRangel under Windows? I would be interested if you can demodulate FM radio with 61.444MS/s.

    Regards,
    Vitor

  • Can you try SDRangel under Windows? I would be interested if you can demodulate FM radio with 61.444MS/s.

    Regards,
    Vitor


    I gave this a try today. I dual boot, so this is the exact same PC that was working at the full sampling rate in Linux. However, on Windows I cannot sample higher than 20MS/s before I get overruns:


    audio gets choppy if I go any higher than this. I would wager the USB (FX3 specifically, perhaps?) drivers are the culprit.

    Which BFM pass filter did you toggle?

    I meant this selector that is built into the BFM plugin, inside the red box in the image here:

    BPF may be the wrong term... I have no real signal processing experience so I wasn't sure what else to call it :)


    On Linux, I can drag this "filter" back and forth across the entire spectrum (red arrows) and it would successfully demodulate any station I placed it over top of.


    Best regards

    I'm the General and I want it to spin!

  • Thanks.

    I now understand what you mean.

    I really need to try it with Linux on my main PC, but this is a problem because I use the PC for work and need it to be on Windows. While I am working I can do all sorts of parallel hobby related stuff, as long as I am on Windows...

    That is the same reason why I don't use the TBS cards with Linux.

  • but this is a problem because I use the PC for work and need it to be on Windows.

    I dual boot for the same reason, and I find it quite reliable these days. Back in the day there were many problems. Nowadays, so long as you have a second physical disk for the two images, it's quite stable. If you don't have two disks, Windows periodically erases your Linux EFI entry when it updates. Not that it is hard to fix that when it happens, but it is certainly... annoying :)

    I'm the General and I want it to spin!

  • 2) Depending on the tuned frequency, you will see many "birdies" - these go away if you just tune +/-1MHz - I find that annoying

    4) Spectrum sweeps are slow

    I have been doing some more research into these two points. The video here briefly touches upon both points.

    External Content youtu.be
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.


    Regarding number 2

    (Skip to timestamp 7:19)

    They discuss a filtering mechanism built into the AD9361. This may mitigate said "birdies" but it may not - I don't know.


    At first glance it looks like USRP supports this mechanism. They have a function to configure it... but I don't see them using it anywhere.

    uhd/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp at ab8ec9973324299828d48d7a27258939dd6ca837 · EttusResearch/uhd
    The USRP™ Hardware Driver Repository. Contribute to EttusResearch/uhd development by creating an account on GitHub.
    github.com


    I guess it is possible they aren't calling it simply because it is meant to be used by the end user (e.g. sdrangel). That would make sense, as there is probably not a sane default.


    Regarding number 4

    (Skip to timestamp 13:27)

    They discuss something called `FASTLOCK MODE`. I do not see support for this in the USRP code. If you are willing to do something more involved then you may find it suitable for your application. See the page here for more details/limitations.

    AD9361 high performance, highly integrated RF Agile Transceiver™ Linux device driver [Analog Devices Wiki]


    Note: Above that section they also discuss the use of the external clock input. Without a peek through the datasheet it's not clear to me if this would entirely replace the BBPLL (thus eliminating it's calibration/lock delay). But, assuming for a moment that it does replace the BBPLL and that you have an external clock source which can hop/lock faster than the internal BBPLL, this may also be suitable for your application.


    Regarding performance issues

    While digging to see if they support `FASTLOCK MODE` I stumbled upon this code here.

    sdrangel/plugins/samplesource/usrpinput/usrpinput.cpp at c45b8f59fa8c3f8c85c6a350d1563c2bd7b1b83a · f4exb/sdrangel
    SDR Rx/Tx software for Airspy, Airspy HF+, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay and FunCube - f4exb/sdrangel
    github.com

    I wonder if this is at all related to the performance issues discussed above? The comment suggests the current FIFO size was based on a max 50Msps, though these devices can actually go higher than that. Perhaps increasing the FIFO size would improve the performance for folks who are running into issues at the full sample rate.

    I'm the General and I want it to spin!

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!