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 iddrivers/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)
Quoted 24 lines · David Ford
(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 status0x301hub 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 iddrivers/usb/core/file.c: asking for 1 minors, starting at 96drivers/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
Quoted 4 lines
~# ls -l
/dev/usb/hid
total 0crw-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
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
Quoted 44 lines · Greg KH
Quoted 20 lines · David Ford
(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 status0x301
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 iddrivers/usb/core/file.c: asking for 1 minors, starting at 96drivers/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-1Quoted 6 lines
~# ls -l
/dev/usb/hid
total 0crw-r--r-- 1 root root 180, 192 Dec 31 1969 hiddev96 crw-r--r-- 1 root root 180, 193 Dec 31 1969 hiddev97Huh?
/dev/usb/hiddev0is 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.txtIt's a bit different from
Documentation/devices.txt, I need to send the updates to lanana.org someday...thanks,
greg k-h
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
Quoted 14 lines · David Ford
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.
Quoted 11 lines
Quoted 6 lines
~# ls -l
/dev/usb/hid
total 0crw-r--r-- 1 root root 180, 192 Dec 31 1969 hiddev96 crw-r--r-- 1 root root 180, 193 Dec 31 1969 hiddev97Huh?
/dev/usb/hiddev0is 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?
Quoted 2 lines · David Ford
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
drivers/usb/input/hiddev.c +2 -2
@@ -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;