[Nut-upsuser] tracing a problem with newhidups
Rodrigo Ventura
yoda at isr.ist.utl.pt
Thu Jul 6 18:23:20 UTC 2006
Hi. I'm having trouble with nut-2.0.3 on a linux kernel 2.4.32 machine and a
MGE Evolution 3000. The problem is that I'm getting the following message,
repeatidly, on dmesg:
usbdevfs: usb_submit_urb returned -22
(-22 means -EINVAL)
I traced the problem with newhidups -DDDDDD auto and found out that the -22
error appears in a line "none (-22)" of the output as:
----------
upsdrv_updateinfo...
Waiting for notifications...
none (-22)
entering string_to_path()
parsing UPS
Looking up UPS
----------
The function calls in userspace are:
[newhidups.c] upsdrv_updateinfo()
[libhid.c] HIDGetEvents()
[libusb.c] libusb_get_interrupt()
[libusb] usb_interrupt_read()
[libusb] usb_urb_transfer()
In the usb_urb_transfer() function one can find that
----------
urb.number_of_packets = 0; /* don't do isochronous yet */
urb.usercontext = NULL;
ret = ioctl(dev->fd, IOCTL_USB_SUBMITURB, &urb);
----------
and in the kernel code of linux/drivers/usb/host/uhci.c:
----------
static int uhci_submit_urb(struct urb *urb)
[...]
case PIPE_ISOCHRONOUS:
if (urb->bandwidth == 0) { /* not yet checked/allocated
*/
if (urb->number_of_packets <= 0) {
ret = -EINVAL;
----------
So it seems that setting number_of_packets to zero is directly related with
the kernel error.
What is going on here? Is it a bug in nut?
Cheers,
Rodrigo
--
*** Rodrigo Martins de Matos Ventura <yoda at isr.ist.utl.pt>
*** Web page: http://www.isr.ist.utl.pt/~yoda
*** Teaching Assistant and PhD Student at ISR:
*** Instituto de Sistemas e Robotica, Polo de Lisboa
*** Instituto Superior Tecnico, Lisboa, PORTUGAL
*** PGP fingerprint = 0119 AD13 9EEE 264A 3F10 31D3 89B3 C6C4 60C6 4585
More information about the Nut-upsuser
mailing list