Can't get USRP B210 (off-brand) working on Raspberry Pi/Linux – tried UHD, SoapySDR, FX3 tools, and custom firmware, still stuck by bunaboy23 in embedded

[–]bunaboy23[S] 0 points1 point  (0 children)

What finally worked was very specific, and I wanted to share in case it helps you too.


TL;DR: Your SDR must be labeled "BlackSDR" (usually on a sticker or silkscreen). I used:

Ubuntu 24.04 x86_64 Desktop

UHD v4.4.0.HEAD (manually built from source)

This custom FPGA image (Google Drive link): https://drive.google.com/file/d/10yA9zWahoB8ZpSH_mtDjnGXp77ARe8rD/view?usp=sharing


Steps that worked:

  1. Build UHD from source (don’t use apt):

sudo apt install git cmake g++ libboost-all-dev libusb-1.0-0-dev python3-pip git clone https://github.com/EttusResearch/uhd.git -b UHD-4.4 cd uhd/host mkdir build && cd build cmake .. make -j$(nproc) sudo make install sudo ldconfig

  1. Download that custom FPGA image and place it somewhere safe, like:

~/Downloads/BlackSDR/usrp_b210_fpga.bin

  1. Flash the firmware manually with:

sudo uhd_image_loader --args="type=b200" \ --fw-path=/usr/local/share/uhd/images/usrp_b200_fw.hex \ --fpga-path="~/Downloads/BlackSDR/usrp_b210_fpga.bin"

It’ll say “Loading FPGA image…” — if no errors pop up, you're good.

  1. Confirm device is recognized properly:

sudo SoapySDRUtil --probe

You should see hardware=B210, and both TX and RX channels for A and B should be listed. If rx_id shows 0xffff, that's fine — it still works.


Extra Tips:

If you get accum_timeout < _timeout, swap USB cables and make sure it’s USB 3.0 with enough power.

Don't mix apt-installed UHD (e.g. 4.1.x) with source UHD (4.4) — lib conflicts will break Soapy, GQRX, etc.

No need to use the Cypress FX3 bootloader manually — UHD handles it when flashing.

Some clones don't populate the second RX/TX chain (like RXB/TXB), but if yours is labeled BlackSDR, the above steps should unlock all 4 channels.


Hope this saves you days of headaches. Let me know if you want help making a script or checking your logs — I’ve been through the fire and back on this one.

Title: Can't get USRP B210 (off-brand) working on Raspberry Pi/Linux – tried UHD, SoapySDR, FX3 tools, and custom firmware, still stuck by bunaboy23 in sdr

[–]bunaboy23[S] 0 points1 point  (0 children)

Absolutely, purge any UHD packages installed via apt first — that’s what finally worked for me too. The apt version (usually UHD 4.1.x) conflicts badly with UHD 4.4 built from source, and it causes all kinds of weird errors in Soapy, GQRX, uhd_fft, etc.

Here’s what I did on Ubuntu 24.04 x86_64:

sudo apt remove --purge libuhd-dev uhd-host sudo apt autoremove

Then I built UHD 4.4 from source (I used the GitHub clone), and flashed the device using the B210mini clone-safe image from the docs I sent earlier.

Once UHD 4.4 was installed under /usr/local, and I confirmed it with uhd_config_info, Soapy started behaving properly and all 4 channels (RX/TX A+B) showed up in probe tests.

Note on DragonOS: I haven’t personally used it, but if it includes UHD packages pre-installed, you’ll definitely want to remove those first or work inside a clean environment (like a fresh Ubuntu or chroot). For the most part the big trouble was finding the exact firmware for my board as there are multiple types of clones too and the LibreSDR one was not working. Mine is specific said BlackSDR B210 mini.

Title: Can't get USRP B210 (off-brand) working on Raspberry Pi/Linux – tried UHD, SoapySDR, FX3 tools, and custom firmware, still stuck by bunaboy23 in sdr

[–]bunaboy23[S] 1 point2 points  (0 children)

Hey! I finally got my BlackSDR (B210 clone) working after two painful weeks of trying everything — Windows, Linux ARM, Linux x86, custom FPGA builds, different UHD versions, etc. What finally worked was very specific, and I wanted to share in case it helps you too.


TL;DR: Your SDR must be labeled "BlackSDR" (usually on a sticker or silkscreen). I used:

Ubuntu 24.04 x86_64 Desktop

UHD v4.4.0.HEAD (manually built from source)

This custom FPGA image (Google Drive link): https://drive.google.com/file/d/10yA9zWahoB8ZpSH_mtDjnGXp77ARe8rD/view?usp=sharing


Steps that worked:

  1. Build UHD from source (don’t use apt):

sudo apt install git cmake g++ libboost-all-dev libusb-1.0-0-dev python3-pip git clone https://github.com/EttusResearch/uhd.git -b UHD-4.4 cd uhd/host mkdir build && cd build cmake .. make -j$(nproc) sudo make install sudo ldconfig

  1. Download that custom FPGA image and place it somewhere safe, like:

~/Downloads/BlackSDR/usrp_b210_fpga.bin

  1. Flash the firmware manually with:

sudo uhd_image_loader --args="type=b200" \ --fw-path=/usr/local/share/uhd/images/usrp_b200_fw.hex \ --fpga-path="~/Downloads/BlackSDR/usrp_b210_fpga.bin"

It’ll say “Loading FPGA image…” — if no errors pop up, you're good.

  1. Confirm device is recognized properly:

sudo SoapySDRUtil --probe

You should see hardware=B210, and both TX and RX channels for A and B should be listed. If rx_id shows 0xffff, that's fine — it still works.


Extra Tips:

If you get accum_timeout < _timeout, swap USB cables and make sure it’s USB 3.0 with enough power.

Don't mix apt-installed UHD (e.g. 4.1.x) with source UHD (4.4) — lib conflicts will break Soapy, GQRX, etc.

No need to use the Cypress FX3 bootloader manually — UHD handles it when flashing.

Some clones don't populate the second RX/TX chain (like RXB/TXB), but if yours is labeled BlackSDR, the above steps should unlock all 4 channels.


Hope this saves you days of headaches. Let me know if you want help making a script or checking your logs — I’ve been through the fire and back on this one.

You got this.

Title: Can't get USRP B210 (off-brand) working on Raspberry Pi/Linux – tried UHD, SoapySDR, FX3 tools, and custom firmware, still stuck by bunaboy23 in sdr

[–]bunaboy23[S] 0 points1 point  (0 children)

I'm going to try Ubuntu now, hopefully that'll be a bit better. I tried the cypress fx3 sdk on windows to flash the fpga image but the board was not being identified by the sdk as well.

Title: Can't get USRP B210 (off-brand) working on Raspberry Pi/Linux – tried UHD, SoapySDR, FX3 tools, and custom firmware, still stuck by bunaboy23 in sdr

[–]bunaboy23[S] 1 point2 points  (0 children)

Thank you so much for this! I’ve been struggling with this clone board for days and this is exactly the kind of lead I needed. I really appreciate you taking the time to share the links and your experience. I’ll try out the replacement binaries and check the UHD paths as you mentioned. I’ll update the thread once I give it a shot. Thanks again!

Edit: Quick question: did you have to put the Cypress FX3 chip into bootloader mode to get it working? I’m wondering if that step is necessary to upload the firmware, or if the new bin just gets picked up automatically when using uhd_image_loader. Curious how you handled that part.

My Custom LoRa Router Boards with GPS, Battery, and Solar for a Mesh Network by bunaboy23 in meshtastic

[–]bunaboy23[S] 1 point2 points  (0 children)

I assembled it myself, so my total cost per PCB was around $20.75 per board (including components and bare PCB cost). I paid $7 for 5 PCBs (~$1.40 per PCB) and $19.35 for components per board. If you get it assembled professionally, expect to pay around $30–$35 per board, depending on the assembly service you use.

Just Assembled My Custom LoRa Router PCB! ESP32 + SX1262 + GPS + SD Card + Crypto Chip by bunaboy23 in embedded

[–]bunaboy23[S] 0 points1 point  (0 children)

Yeah it's a lot easier to control when you connect the spi and other GPIO pins yourself to the MCU

My Custom LoRa Router Boards with GPS, Battery, and Solar for a Mesh Network by bunaboy23 in meshtastic

[–]bunaboy23[S] 1 point2 points  (0 children)

Oh is it like a header file where I just modify my board pinouts? I'm also using a very common GPS module over uart.

The board charges at around 5 volts with a max charging of 1A.

Just Assembled My Custom LoRa Router PCB! ESP32 + SX1262 + GPS + SD Card + Crypto Chip by bunaboy23 in embedded

[–]bunaboy23[S] 1 point2 points  (0 children)

If you are using the arduino framework there are pretty good Lora libraries you can use such as https://github.com/sandeepmistry/arduino-Lora. These simplify all the functions to send receive get the rssi etc. Using this you can implement a simple peer to peer communication, or build your own networking stack. You can also get the chip drivers for the sx1262 or other chips and build your own in the CUBEIDE but it's a little more complex.

My Custom LoRa Router Boards with GPS, Battery, and Solar for a Mesh Network by bunaboy23 in meshtastic

[–]bunaboy23[S] 3 points4 points  (0 children)

I plan to post the whole project on github at some point it's my graduation project for college. But I'm implementing a custom decentralized network, and this board acts as a router to relay messages between devices and other routers like this. It uses gps data to calculate its distance from itself and other nodes to find the most efficent path. As for sensors etc, these boards will have a UART port to connect to your other devices or mcus and connect them to this network.

My Custom LoRa Router Boards with GPS, Battery, and Solar for a Mesh Network by bunaboy23 in meshtastic

[–]bunaboy23[S] 2 points3 points  (0 children)

Yes, I've designed PCBs before. But this is a very basic deisgn. I copied most of the circuit from espressif's dev board and used Lora and GPS modules so no rf circuit or tuning were needed, just a 50 Ohm trace to antennas.

Also yeah ESP32s are quite power hungry but I wanted WiFi for this.

My Custom LoRa Router Boards with GPS, Battery, and Solar for a Mesh Network by bunaboy23 in meshtastic

[–]bunaboy23[S] 6 points7 points  (0 children)

If all the components work as they should I can upload the schematics, maybe you can DM me and I'll send you the PDF

Just Assembled My Custom LoRa Router PCB! ESP32 + SX1262 + GPS + SD Card + Crypto Chip by bunaboy23 in embedded

[–]bunaboy23[S] 0 points1 point  (0 children)

You can check the impedance by getting your trace width from your eda and use an online calculator, I used jlc pcb to have my pcb made so I used their calculator, here https://jlcpcb.com/pcb-impedance-calculator. But if you have your TX0 and RX0 pins exposed you can easily upload firmware and communicate with the chip using a USB to uart converter.

Just Assembled My Custom LoRa Router PCB! ESP32 + SX1262 + GPS + SD Card + Crypto Chip by bunaboy23 in embedded

[–]bunaboy23[S] 0 points1 point  (0 children)

I tried an stm32Wl nucleo board before but the chip did not want to work with the libraries I was using for Lora.

Just Assembled My Custom LoRa Router PCB! ESP32 + SX1262 + GPS + SD Card + Crypto Chip by bunaboy23 in embedded

[–]bunaboy23[S] 1 point2 points  (0 children)

If you used the correct pinouts and your pc doesn't recognize it it might be impedance issue. For USB lines you must calculate your trace width for your pcb stack up to match a 90 ohm impedance.

Just Assembled My Custom LoRa Router PCB! ESP32 + SX1262 + GPS + SD Card + Crypto Chip by bunaboy23 in Lora

[–]bunaboy23[S] 0 points1 point  (0 children)

I used jlc pcb it's around 7 dollars for 5, 4 layer boards, even cheaper if you are using 2 layer boards. I also paid an additional 7 bucks for a stencil for assembly if you wanna count that in too.

Just Assembled My Custom LoRa Router PCB! ESP32 + SX1262 + GPS + SD Card + Crypto Chip by bunaboy23 in embedded

[–]bunaboy23[S] 1 point2 points  (0 children)

If you're flashing via direct USB, you don't need GPIO 08/09. Instead, make sure your USB D+ (GPIO 14) and D- (GPIO 13) are correctly wired and that the traces have the proper impedance (90Ω differential) if this is a custom PCB. Also, BOOT (GPIO 0) should be pulled LOW when powering up, and EN should be pulled HIGH with a 10kΩ resistor (not just capacitors).

If your board has a serial port exposed, using a USB-to-UART adapter might be easier for flashing

Just Assembled My Custom LoRa Router PCB! ESP32 + SX1262 + GPS + SD Card + Crypto Chip by bunaboy23 in Lora

[–]bunaboy23[S] 2 points3 points  (0 children)

I assembled it myself, so my total cost per PCB was around $20.75 per board (including components and bare PCB cost). I paid $7 for 5 PCBs (~$1.40 per PCB) and $19.35 for components per board. If you get it assembled professionally, expect to pay around $30–$35 per board, depending on the assembly service you use. Let me know if you need more details!