You should always test raw UHD functionality first with the uhd_find_devices
tool first:
uhd_find_devices
If it doesn't find your device, though it is booted, my experience is that you have a high chance of simply not being able to communicate with the device:
- If you're not using a UHD version from Ettus' own repositories, especially on not-brand-new Ubuntus, your UHD might simply be older than the device and can't talk to it. The first line of output of
uhd_find_devices
will contain info on the version. At the time of writing (Oct 2014), 3.9 is the latest release. If possible, always use the latest release.
- B200/B210 needs at least 3.6.0, but functionality improved significantly with 3.8.4
- X300/X310 needs at least 3.7.0
- B200mini needs 3.9
- USRP1/2/B100/N200/N210 should be directly supported for but the oldest releases you'll find in the wild. Not so much for all daughterboards that you can use with them – as mentioned, try to use a recent version.
- If you're using an USB connected device (USRP B200, B210, B200mini, B100, USRP1), chances are that you either
- on Linux: don't have the udev rules installed necessary to allow "normal" users to communicate with the USRPs; check whether
/etc/udev/rules.d/
contains something like uhd-usrp.rules
.
- on Windows: you might not have the Windows USB drivers installed.
- if you've built UHD yourself (also, if you installed GNU Radio through
build-gnuradio.sh
or pybombs
), there might have been USB libraries missing. Make sure your UHD cmake logs contain "Enabling USB".
- USB3: Some USB3 host controllers don't behave standards-conforming, and connectivity cannot be achieved. If your USRP is detected when plugged into a USB2 port (anyone that isn't blue, usually), you should be fine.
- If you're on a networked device (USRP X300/X310 with 1Gbit/10Gbit Ethernet, USRP N200/N210, USRP2)
- make sure your network interface is
- 1Gbit-capable (or 10GE, if applying); "Fast Ethernet" (10/100Mbit) NICs do not work with the USRPs.
- Not the Intel 82579LM network controller (the only PCIe network controller IC known to occasionally drop packets without telling the operating system
- not a USB3-to-Gigabit adapter (these tend to do interesting reordering on the packets, making them unsuitable for high-rate real time samples)
- make sure your computer is on the same IP network. By default, USRPs have addresses from the
192.168.10.XXX
range (XXX=2
in factory settings). Make sure your computer has an IP address from the same range, but not the same address.
- make sure basic communication works (by
ping <ip address of USRP>
). If not, re-check your own IP address, and try to make sure the USRP is configured to the right address.
- To find out the current IP address of your USRP, it's often easiest to properly install
wireshark
(that's a network packet sniffer software), have a dedicated network interface connect to the (powered off USRP), start the capture on that interface, and power on the USRP.
- If the address is wrong, you can reprogram the IP address of the USRP X300/X310:
cd <install-path>/lib/uhd/utils ; ./usrp_burn_mb_eeprom --args=addr=<current IP address> --values="ip-addr0=<new ip address>"
- If the address is wrong, you can reprogram the IP address of the USRP N200/N210/USRP2:
cd <install-path>/lib/uhd/utils ; ./usrp_burn_mb_eeprom --args=<optional device args> --values="ip-addr=192.168.10.3"
- make sure you have your firewall configured to permit traffic coming from the USRP's port 49152. On linux, the following
iptables
command typically does the trick1: sudo iptables -A INPUT -p udp --sport 49152 -j ACCEPT
. Notice that this does punch a hole in your firewall. Your institution's security policies might apply.
- If you're trying to use a USRP E100, E110, E310 or E312 connected to your PC:
- The E-series devices are standalone embedded Linux SDR devices; they don't attach to a PC as a peripheral. You will have to compile your software (if applicable) with a cross-compiler and run the software on the E-series device itself, not on your host PC.
As a quick test whether your PC, USRP and cabling and device IP configuration are correct, download the current GNU Radio Live DVD2 (which, by the way, also contains copious amounts of cool examples), boot it, and try uhd_find_devices
there.
1 your mileage might vary, as each distribution has its own idea of how to manage the firewall
2 Please use the torrent files, if possible -- Amazon AWS traffic isn't free for the maintainers of the GNU Radio project. The torrent file also uses the AWS servers as source, but tries to get a part of the image from other users.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…