USB ehci problems with USRP, -71 EPROTO

Hey all,

I am having troubles connecting and interfacing to a device called a
USRP via USB which is used with GNU Radio. At one time, the setup
worked perfectly fine with no errors. Then i tried to give a regular
user permission to the USB device and everything went downhill.

Now, whenever I plugin the device sometimes I sometimes get the error:
usb 1-7: device descriptor read/all, error -71

Whenever I don’t get the error, I try to proceed normally to uploading a
new image to the USRP and I get the following error from gnuradio:
write_internal_ram failed: error sending control message: Protocol error

This generates the following dmesg errors:
usb 1-7: usbfs: USBDEVFS_CONTROL failed cmd python rqt 64 rq 160 len 3
ret -71
usb 1-7: usbfs: USBDEVFS_CONTROL failed cmd python rqt 64 rq 160 len 5
ret -71
usb 1-7: usbfs: USBDEVFS_CONTROL failed cmd python rqt 64 rq 160 len 8
ret -71
usb 1-7: usbfs: USBDEVFS_CONTROL failed cmd python rqt 64 rq 160 len 3
ret -71

Another set of errors produced by gnuradio are these:
usrp_open_interface:usb_set_alt_interface: failed
could not set alt intf 0/0: Protocol error
open_nth_cmd_interface: open_cmd_interface failed


I was able to plug the USRP into another machine with GNU Radio and
successfully flash new firmware to it 100% successfully several times.
I cannot get a single firmware on using my machine and the USRP.

Heres what else I’ve tried:

  • un-installing and re-installing GNU Radio
  • switching USB ports on the machine
  • switching USB cables
  • rebuilding the kernel
  • installing a newer version of udev
  • using a different USRP on my machine (doesn’t work)

I’m not sure what else to try… heres what I did between when it worked
and broke, trying to set the USB permissions properly:


I tried udev first, and created /etc/udev/rules.d/60-usrp.rules:

USRP without loaded firmware (FX2)

BUS==“usb”, SYSFS{idVendor}==“fffe”, SYSFS{idProduct}==“0002”,
SYSFS{bcdDevice}==“0002”, GROUP=“usrp”, RUN+="/usr/local/bin/usrper
load_standard_bits"
BUS==“usb”, SYSFS{idVendor}==“fffe”, SYSFS{idProduct}==“0002”,
SYSFS{bcdDevice}==“0004”, GROUP=“usrp”, RUN+="/usr/local/bin/usrper
load_standard_bits"

USRP with loaded firmware

BUS==“usb”, SYSFS{idVendor}==“fffe”, SYSFS{idProduct}==“0002”,
SYSFS{bcdDevice}==“0102”, GROUP=“usrp”
BUS==“usb”, SYSFS{idVendor}==“fffe”, SYSFS{idProduct}==“0002”,
SYSFS{bcdDevice}==“0104”, GROUP=“usrp”


So the other method was with hotplug, and i made /etc/hotplug/usb/usrp:
#!/bin/sh
chown root:usb “$DEVICE”
chmod ug+rw “$DEVICE”

and usrp.usermap:
usrp 0x0003 0xfffe 0x0002 0 0 0 0 0 0 0
0


I would greatly appreciate any help and suggestions.

Thanks!
George