= Universal Software Radio Peripheral (USRP) = The USRP device interfaces the GNU Radio project's [http://www.ettus.com Universal Software Radio Peripheral] with waveforms running on OSSIE. This device is under development. Available versions: * [source:platform/USRP/tags/USRP-0.6.1 0.6.1 release tag] * [source:platform/USRP/trunk/USRP USRP development trunk] == Installation Guide == Install SDCC (small device C compiler); Download from http://sdcc.sourceforge.net/ and execute the following commands {{{ $ tar -xvf sdcc-src-2.6.0.tar.gz $ cd sdcc-src-2.6.0 $ ./configure $ make # make install }}} Now install the USRP source; download from ftp://ftp.gnu.org/gnu/gnuradio/usrp-0.12.tar.gz and execute the following commands {{{ $ tar -xvf usrp-0.12.tar.gz $ cd usrp-0.12 $ ./bootstrap $ ./configure $ make # make install }}} Install USRP platform device for OSSIE by checking out the source from the repository, viz. {{{ $ svn co https://ossie-dev.mprg.org/repos/ossie/platform/USRP/trunk/USRP $ cd USRP $ ./reconf $ ./configure $ make $ make install }}} Now link the libraries {{{ # /sbin/ldconfig }}} === Configure USB and change USRP permissions === To be able to run a waveform that uses the USRP you will either need to have root permissions or give access to your user to use the USRP. The process for each distribution is different but for Fedora 5 or 6: Define a group named usrp (as root): {{{ # /usr/sbin/groupadd usrp }}} Add a user to the group {{{ # /usr/sbin/usermod -a usrp [username] }}} or, if your copy of usermod does not support this syntax try {{{ # /usr/sbin/usermod -G usrp -a [username] }}} Create a file named {{{/etc/udev/rules.d/10-usrp.rules}}} with the following contents, and be sure to include the {{{:}}} in {{{MODE:="0660"}}} otherwise the default {{{usb_device}}} rule will override {{{MODE}}} to {{{"0640"}}}. This also applies to the {{{GROUP}}} setting. {{{ # rule to grant read/write access on USRP to group named usrp. # to use, install this file in /etc/udev/rules.d as 10-usrp.rules ACTION=="add", BUS=="usb", SYSFS{idVendor}=="fffe", SYSFS{idProduct}=="0002", GROUP:="usrp", MODE:="0660" }}} Restart the {{{udev}}} daemon to enable he changes. {{{ # killall -HUP udevd }}} You can check if this is working by examining {{{/dev/bus/usb}}} after plugging in a USRP: {{{ $ ls -lR /dev/bus/usb }}} You should see a device file with group {{{usrp}}} and mode {{{crw-rw----}}} Now restart your machine. == Troubleshooting == Here are a list of common problems users have encountered while compiling, or trying to run the USRP device in OSSIE waveforms. '''Problem:''' When installing {{{usrp-0.12}}} I get the following error when running {{{./configure}}} {{{ error: USRP requires libusb. usb.h not found, stop. See http://libusb.sf.net }}} '''Solution:''' You need the {{{libusb}}} development tools. They are easily installed via [http://linux.duke.edu/projects/yum/ yum], viz. {{{ # yum install libusb-devel }}} ---- '''Problem:''' When installing {{{usrp-0.12}}} I get the following error when running {{{./configure}}} {{{ configure: error: USRP requires sdcc. sdcc not found, stop. See http://sdcc.sf.net }}} '''Solution:''' You need to install SDCC (see instructions above). ---- '''Problem:''' When running nodeBooter, I get the following error: {{{ bin/USRP: error while loading shared libraries: libusrp.so.0: cannot open shared object file: No such file or directory }}} '''Solution:''' As root, run {{{ # /sbin/ldconfig }}} ---- '''Problem:''' When running nodeBooter: {{{ usrp: failed to find usrp[0] }}} '''Solution:''' {{{ Restart the machine }}} ---- '''Problem:''' While running nodeBooter I get the following or similar error: {{{ usrp_open_interface:usb_claim_interface: failed interface 2 could not claim interface 2: Device or resource busy usrp_basic_rx: can't open rx interface Failed to create usrp rx terminate called after throwing an instance of 'CF::LifeCycle::InitializeError' Aborted }}} '''Solution:''' Disconnect USRP's USB cable, reconnect, and re-start nodeBooter.