Data interface

usb3.0

FPGA

Spartan 6 XC6SLX75

Transceiver

AD9361 dual channel rf transceiver

IIP3 (at typical NF)

-20 dBm

Power Output

> 10 dBm

Receive Noise Figure

< 8 dB

ADC Sample Rate (Max.)

61.44 MS/s

ADC Resolution

12 bits

DAC Sample Rate (Max.)

61.44 MS/s

DAC Resolution

12 bits

Host Sample Rate (16b)

61.44 MS/s

Frequency Accuracy(without reference clock)

±2.0 ppm

Frequency Accuracy(with reference clock)

±1PPB(0.001PPM)

SIZE

150MM*100MM

frequency range

70-6000Mhz

tx port count

2

rx port count

2

 

You can run B200 advance as original USRP B200 or run B200 advance to support 2RX or 2TX using our fpga firmware(b200-advance-fpga.tar.gz (11 MB)) and modify uhd. But it can not support 2tx2rx at the same time.

To run 2tx or 2rx you need to modify uhd. You need to download uhd source. If you have already install uhd you had better to use the same version of your current uhd.

Run uhd_usrp_probe you will see your current uhd version and fpga firmware path.

Install the package needed to compile uhd:

This is for ubuntu. For other system please reference:

https://files.ettus.com/manual/page_build_guide.html#build_apps

sudo apt-get install autoconf automake build-essential ccache cmake cpufrequtils doxygen ethtool \
g++ git inetutils-tools libboost-all-dev libncurses5 libncurses5-dev libusb-1.0-0 libusb-1.0-0-dev \
libusb-dev python3-dev python3-mako python3-numpy python3-requests python3-scipy python3-setuptools \
python3-ruamel.yaml

Download uhd:

git clone https://github.com/EttusResearch/uhd.git
cd uhd

Run git tag to list all uhd release version:

git tag

Checkout the version of your current uhd:

git checkout v3.14.1.1

Applying our modification. The modification is like patch. You may not directly apply the patch so you need to manually modify the source which is quite simply. The patch content is below:

diff --git a/host/lib/usrp/b200/b200_iface.hpp b/host/lib/usrp/b200/b200_iface.hpp
index 0cddbf8..59b5428 100644
--- a/host/lib/usrp/b200/b200_iface.hpp
+++ b/host/lib/usrp/b200/b200_iface.hpp
@@ -80,7 +80,7 @@ static const uhd::dict<b200_product_t, std::string> B2XX_STR_NAMES = boost::assi
 
 static const uhd::dict<b200_product_t, std::string> B2XX_FPGA_FILE_NAME = boost::assign::map_list_of
         (B200, "usrp_b200_fpga.bin")
-        (B210, "usrp_b210_fpga.bin")
+        (B210, "usrp_b210_fpga75.bin") // to modify to our fpga firmware name
         (B200MINI, "usrp_b200mini_fpga.bin")
         (B205MINI, "usrp_b205mini_fpga.bin")
 ;
diff --git a/host/lib/usrp/b200/b200_impl.cpp b/host/lib/usrp/b200/b200_impl.cpp
index e2a0e0b..f6d7e04 100644
--- a/host/lib/usrp/b200/b200_impl.cpp
+++ b/host/lib/usrp/b200/b200_impl.cpp
@@ -139,6 +139,7 @@ b200_product_t get_b200_product(const usb_device_handle::sptr& handle, const mbo
         throw uhd::runtime_error("B200: Missing product ID on EEPROM.");
     }
     product_id = boost::lexical_cast<uint16_t>(mb_eeprom["product"]);
+    product_id = 2; //hard coded the product id as b210 to use dual channel interface
     if (not B2XX_PRODUCT_ID.has_key(product_id)) {
         throw uhd::runtime_error(str(
             boost::format("B200 unknown product code: 0x%04x")
@@ -623,12 +624,13 @@ b200_impl::b200_impl(const uhd::device_addr_t& device_addr, usb_device_handle::s
     //now test each radio module's connection to the codec interface
     BOOST_FOREACH(radio_perifs_t &perif, _radio_perifs)
     {
-        _codec_mgr->loopback_self_test(
+        //b200 advance do not support 2tx and 2rx at the same time so can not support loopback test
+        /*_codec_mgr->loopback_self_test(
             boost::bind(
                 &radio_ctrl_core_3000::poke32, perif.ctrl, TOREG(SR_CODEC_IDLE), _1
             ),
             boost::bind(&radio_ctrl_core_3000::peek64, perif.ctrl, RB64_CODEC_READBACK)
-        );
+        );*/
     }
 
     //register time now and pps onto available radio cores

In my case system libuhd path is /usr/lib/x86_64-linux-gnu/libuhd.so. You need to check your libuhd path for your system. You can use find command to find the system libuhd path:

cd /
sudo find -name libuhd.so*

Backup your libuhd

sudo cp /usr/lib/x86_64-linux-gnu/libuhd.so /usr/lib/x86_64-linux-gnu/libuhd.so-back

Compile and copy libuhd to system path:

cd uhd
mkdir build
cd build
cmake ..
make
sudo cp lib/libuhd.so /usr/lib/x86_64-linux-gnu/libuhd.so

To use our fpga firmware you need to copy the fpga firmware to uhd fpga path.

If you want to use 2rx:

sudo cp b200_fpga_2rx.bin /usr/share/uhd/images/usrp_b210_fpga75.bin

If you want to use 2tx:

sudo cp b200_fpga_2tx.bin /usr/share/uhd/images/usrp_b210_fpga75.bin

If you want to use as b200 just recover libuhd:

sudo cp /usr/lib/x86_64-linux-gnu/libuhd.so-back /usr/lib/x86_64-linux-gnu/libuhd.so