I pushed an update of the libusb-1.0 support patch to a public github
repository.
Public clone
git clone git://github.com/ttsou/gnuradio-libusb-1.0.git
Viewable at
http://github.com/ttsou/gnuradio-libusb-1.0
Libusb-1.0 is enabled with,
./configure --fusb-tech=libusb1
Why libusb-1.0?
The prior version of libusb provided a portable user-level library that
worked well for USB initialization and configuration, but the
synchronous
calls proved incapable of supporting higher USRP data rates. To get
around
this, gnuradio requires some novel approaches to combine libusb with OS
specific transfer methods. libusb-1.0 introduces an asynchronous I/O
interface, which provides an alternative approach to the current
multi-OS
strategy.
Compatibility
The libusb-1.0 API is incompatible with prior libusb-0.12 interfaces.
There
are quite a few similarities, however, that do exist. Because libusb-1.0
is
fairly new, and current availability is limited to Linux and Darwin,
libusb-0.12 support is necessary for the indefinite future. Eric asked
me to
figure out how to cleanly support libusb-0.12 and libusb-1.0. This is
the
main addition of this update.
Changes
The installed interfaces are virtually unchanged. An extra argument
required
for libusb-1.0 defaults to null and is ignored in non-libusb1 builds, so
existing packages that build against previous low-level code are
unaffected.
This change only affects usrp_prims. Also, some version dependent
headers
are generated out of the configure scripts. The code generation isn’t
ideal
at this moment causing a number of Makefile warnings.
Testing
With this branch on Fedora 11, I get 32Mb/s on all of my machines using
test_usrp_standard_rx or tx. I still need to find some time and put
oprofile
on it to compare against the native Linux USB devio implementation. That
is
unlikely to happen within the next few weeks though.
Information on the original patch can be found in the gnuradio-patch
archives.
http://lists.gnu.org/archive/html/patch-gnuradio/2009-08/msg00003.html
Comments welcome. Thanks.