2003-05-03 02:52:18

by David Ford

[permalink] [raw]
Subject: APC USB ups, Back-UPS ES series, 2.5.68

(Please cc: me on reply)

I'm wanting to get this new toy up and running. I've installed apcupsd,
but it doesn't want to work well with my kernel (2.5.68) or somewhat.

When apcupsd tries to open the hiddev, open() gets an ENODEV. Is
apcupsd doing something wrong or is 2.5.68 doing something wrong?

~# dmesg
hub 1-0:0: debounce: port 1: delay 100ms stable 4 status 0x301
hub 1-0:0: new USB device on port 1, assigned address 4
usb 1-1: new device strings: Mfr=3, Product=1, SerialNumber=2
usb 1-1: Product: Back-UPS ES 350 FW:800.e3.D USB FW:e3
usb 1-1: Manufacturer: APC
usb 1-1: SerialNumber: AB0238241677
usb 1-1: usb_new_device - registering interface 1-1:0
hid 1-1:0: usb_device_probe
hid 1-1:0: usb_device_probe - got id
drivers/usb/core/file.c: asking for 1 minors, starting at 96
drivers/usb/core/file.c: found a minor chunk free, starting at 96
hiddev96: USB HID v1.10 Device [APC Back-UPS ES 350 FW:800.e3.D USB
FW:e3] on usb-00:07.2-1


~# ls -l /dev/usb/hid
total 0
crw-r--r-- 1 root root 180, 192 Dec 31 1969 hiddev96
crw-r--r-- 1 root root 180, 193 Dec 31 1969 hiddev97


~# strace -f apcupsd (trimmed)
[...]
open("/dev/usb/hid/hiddev95", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/dev/usb/hid/hiddev96", O_RDONLY) = -1 ENODEV (No such device)
open("/dev/usb/hid/hiddev97", O_RDONLY) = -1 ENODEV (No such device)
open("/dev/usb/hid/hiddev98", O_RDONLY) = -1 ENOENT (No such file or
directory)
write(2, "Couldn\'t find UPS device or no p"..., 43Couldn't find UPS
device or no permission.
) = 43
_exit(1) = ?

ref: http://www.sibbald.com/apcupsd/manual/usb.html
apcupsd version: 3.10.5
Linux kernel: 2.5.68

David
p.s. apcupsd needs patched to handle hiddev from 96 on (minor allocated by kernel)




2003-05-03 06:22:52

by Greg KH

[permalink] [raw]
Subject: Re: APC USB ups, Back-UPS ES series, 2.5.68

On Fri, May 02, 2003 at 11:04:21PM -0400, David Ford wrote:
> (Please cc: me on reply)
>
> I'm wanting to get this new toy up and running. I've installed apcupsd,
> but it doesn't want to work well with my kernel (2.5.68) or somewhat.
>
> When apcupsd tries to open the hiddev, open() gets an ENODEV. Is
> apcupsd doing something wrong or is 2.5.68 doing something wrong?
>
> ~# dmesg
> hub 1-0:0: debounce: port 1: delay 100ms stable 4 status 0x301
> hub 1-0:0: new USB device on port 1, assigned address 4
> usb 1-1: new device strings: Mfr=3, Product=1, SerialNumber=2
> usb 1-1: Product: Back-UPS ES 350 FW:800.e3.D USB FW:e3
> usb 1-1: Manufacturer: APC
> usb 1-1: SerialNumber: AB0238241677
> usb 1-1: usb_new_device - registering interface 1-1:0
> hid 1-1:0: usb_device_probe
> hid 1-1:0: usb_device_probe - got id
> drivers/usb/core/file.c: asking for 1 minors, starting at 96
> drivers/usb/core/file.c: found a minor chunk free, starting at 96
> hiddev96: USB HID v1.10 Device [APC Back-UPS ES 350 FW:800.e3.D USB
> FW:e3] on usb-00:07.2-1
>
>
> ~# ls -l /dev/usb/hid
> total 0
> crw-r--r-- 1 root root 180, 192 Dec 31 1969 hiddev96
> crw-r--r-- 1 root root 180, 193 Dec 31 1969 hiddev97

Huh? /dev/usb/hiddev0 is major 180, minor 96. So the kernel asked for
minor 96 and it got it. Why are you trying to connect to minor number
192?

For a list of the USB minor numbers see:
http://www.linux-usb.org/usb.devices.txt

It's a bit different from Documentation/devices.txt, I need to send the
updates to lanana.org someday...

thanks,

greg k-h

2003-05-03 09:53:10

by David Ford

[permalink] [raw]
Subject: Re: APC USB ups, Back-UPS ES series, 2.5.68

Yep...a simple fact that I overlooked. This is a devfs created file so
the kernel is at fault. Looks like it's off by 128.

David

Greg KH wrote:

>On Fri, May 02, 2003 at 11:04:21PM -0400, David Ford wrote:
>
>
>>(Please cc: me on reply)
>>
>>I'm wanting to get this new toy up and running. I've installed apcupsd,
>>but it doesn't want to work well with my kernel (2.5.68) or somewhat.
>>
>>When apcupsd tries to open the hiddev, open() gets an ENODEV. Is
>>apcupsd doing something wrong or is 2.5.68 doing something wrong?
>>
>>~# dmesg
>>hub 1-0:0: debounce: port 1: delay 100ms stable 4 status 0x301
>>hub 1-0:0: new USB device on port 1, assigned address 4
>>usb 1-1: new device strings: Mfr=3, Product=1, SerialNumber=2
>>usb 1-1: Product: Back-UPS ES 350 FW:800.e3.D USB FW:e3
>>usb 1-1: Manufacturer: APC
>>usb 1-1: SerialNumber: AB0238241677
>>usb 1-1: usb_new_device - registering interface 1-1:0
>>hid 1-1:0: usb_device_probe
>>hid 1-1:0: usb_device_probe - got id
>>drivers/usb/core/file.c: asking for 1 minors, starting at 96
>>drivers/usb/core/file.c: found a minor chunk free, starting at 96
>>hiddev96: USB HID v1.10 Device [APC Back-UPS ES 350 FW:800.e3.D USB
>>FW:e3] on usb-00:07.2-1
>>
>>
>>~# ls -l /dev/usb/hid
>>total 0
>>crw-r--r-- 1 root root 180, 192 Dec 31 1969 hiddev96
>>crw-r--r-- 1 root root 180, 193 Dec 31 1969 hiddev97
>>
>>
>
>Huh? /dev/usb/hiddev0 is major 180, minor 96. So the kernel asked for
>minor 96 and it got it. Why are you trying to connect to minor number
>192?
>
>For a list of the USB minor numbers see:
> http://www.linux-usb.org/usb.devices.txt
>
>It's a bit different from Documentation/devices.txt, I need to send the
>updates to lanana.org someday...
>
>thanks,
>
>greg k-h
>


2003-05-06 00:35:08

by David Ford

[permalink] [raw]
Subject: Re: APC USB ups, Back-UPS ES series, 2.5.68

I haven't had time to look at it and try to debug it. The 96 v.s. 192
minor look like it's exactly 128 too high. Perhaps it's a simple fix?

David

David Ford wrote:

> Yep...a simple fact that I overlooked. This is a devfs created file
> so the kernel is at fault. Looks like it's off by 128.
>
>>>
>>> ~# ls -l /dev/usb/hid
>>> total 0
>>> crw-r--r-- 1 root root 180, 192 Dec 31 1969 hiddev96
>>> crw-r--r-- 1 root root 180, 193 Dec 31 1969 hiddev97
>>>
>>
>>
>> Huh? /dev/usb/hiddev0 is major 180, minor 96. So the kernel asked for
>> minor 96 and it got it. Why are you trying to connect to minor number
>> 192?
>

2003-05-06 04:15:42

by Greg KH

[permalink] [raw]
Subject: Re: APC USB ups, Back-UPS ES series, 2.5.68

On Mon, May 05, 2003 at 09:42:37PM -0400, David Ford wrote:
> I haven't had time to look at it and try to debug it. The 96 v.s. 192
> minor look like it's exactly 128 too high. Perhaps it's a simple fix?

Can you try this patch and let me know if it works or not?

thanks,

greg k-h


--- a/drivers/usb/input/hiddev.c Sun May 4 23:49:54 2003
+++ b/drivers/usb/input/hiddev.c Mon May 5 21:23:42 2003
@@ -714,9 +714,9 @@
hiddev->hid = hid;
hiddev->exist = 1;

- sprintf(devfs_name, "usb/hid/hiddev%d", minor);
+ sprintf(devfs_name, "usb/hid/hiddev%d", minor - HIDDEV_MINOR_BASE);
devfs_register(NULL, devfs_name, 0,
- USB_MAJOR, minor + HIDDEV_MINOR_BASE,
+ USB_MAJOR, minor,
S_IFCHR | S_IRUGO | S_IWUSR, &hiddev_fops, NULL);
hid->minor = minor;
hid->hiddev = hiddev;