[Nut-upsdev] usbhid-ups fails with Belkin F6C120-UNV in nut-2.4.3
Jon Burgess
jburgess777 at googlemail.com
Fri Mar 19 21:21:20 UTC 2010
I recently upgraded from nut-2.4.1 to 2.4.3 and my UPS stopped working.
usbhid-ups now fails two communicate with the UPS:
With 2.4.1:
# /sbin/usbhid-ups -D -a auto
Network UPS Tools - Generic HID driver 0.34 (2.4.1)
USB communication driver 0.31
debug level is '1'
upsdrv_initups...
Using subdriver: Belkin HID 0.12
Path: UPS.BELKINConfig.BELKINConfigVoltage, Type: Feature, ReportID: 0x01, Offset: 0, Size: 8, Value: 230.000000
Path: UPS.BELKINConfig.BELKINConfigFrequency, Type: Feature, ReportID: 0x02, Offset: 0, Size: 8, Value: 50.000000
Path: UPS.BELKINConfig.BELKINConfigApparentPower, Type: Feature, ReportID: 0x03, Offset: 0, Size: 16, Value: 1200.000000
Path: UPS.BELKINConfig.BELKINConfigBatteryVoltage, Type: Feature, ReportID: 0x04, Offset: 0, Size: 16, Value: 24.000000
Path: UPS.BELKINConfig.BELKINConfigOverloadTransfer, Type: Feature, ReportID: 0x05, Offset: 0, Size: 8, Value: 100.000000
...
With 2.4.3:
# /sbin/usbhid-ups -D -a auto
Network UPS Tools - Generic HID driver 0.34 (2.4.3)
USB communication driver 0.31
0.000000 debug level is '1'
0.001172 upsdrv_initups...
0.279899 Using subdriver: Belkin HID 0.12
0.284577 libusb_get_report: No error
0.284609 Can't retrieve Report 01: Operation not permitted
0.284628 Path: UPS.BELKINConfig.BELKINConfigVoltage, Type: Feature, ReportID: 0x01, Offset: 0, Size: 8
0.289575 libusb_get_report: No error
0.289590 Can't retrieve Report 02: Operation not permitted
0.289602 Path: UPS.BELKINConfig.BELKINConfigFrequency, Type: Feature, ReportID: 0x02, Offset: 0, Size: 8
0.294574 libusb_get_report: No error
0.294589 Can't retrieve Report 03: Operation not permitted
0.294601 Path: UPS.BELKINConfig.BELKINConfigApparentPower, Type: Feature, ReportID: 0x03, Offset: 0, Size: 16
0.299576 libusb_get_report: No error
..
The change in SVN r2098 triggers the problem. By looking at the usbmon
output I see that this device fails to respond to the get_report
requests when the request size is 512 bytes. The requests worked
correctly when they were using the sizes reported by the device:
usbmon get_report() requests from nut-2.4.1
The length of each request matches the response from the device and
works:
ffff880102d5ec00 1618372802 S Ci:7:002:0 s a1 01 0301 0000 0002 2 <
ffff880102d5ec00 1618376440 C Ci:7:002:0 0 2 = 01e6
ffff880102d5ec00 1618376497 S Ci:7:002:0 s a1 01 0302 0000 0002 2 <
ffff880102d5ec00 1618381439 C Ci:7:002:0 0 2 = 0232
ffff880102d5ec00 1618381469 S Ci:7:002:0 s a1 01 0303 0000 0003 3 <
ffff880102d5ec00 1618385439 C Ci:7:002:0 0 3 = 03b004
ffff880102d5ec00 1618385469 S Ci:7:002:0 s a1 01 0304 0000 0003 3 <
ffff880102d5ec00 1618389440 C Ci:7:002:0 0 3 = 041800
usbmon get_report() requests from nut-2.4.3
Now the code always requests 512 bytes and never gets back any data:
ffff88002b799d80 593626443 S Ci:7:002:0 s a1 01 0301 0000 0200 512 <
ffff88002b799d80 593631086 C Ci:7:002:0 0 0
ffff88002b799d80 593631161 S Ci:7:002:0 s a1 01 0302 0000 0200 512 <
ffff88002b799d80 593636087 C Ci:7:002:0 0 0
ffff88002b799d80 593636142 S Ci:7:002:0 s a1 01 0303 0000 0200 512 <
ffff88002b799d80 593641085 C Ci:7:002:0 0 0
ffff88002b799d80 593641136 S Ci:7:002:0 s a1 01 0304 0000 0200 512 <
ffff88002b799d80 593646085 C Ci:7:002:0 0 0
I can workaround this by using the attached patch. Each of the failed
512 byte reads triggers a superfluous log message as below but at least
it works.
$ sudo ./drivers/usbhid-ups -D -a auto
Network UPS Tools - Generic HID driver 0.34 (2.4.3)
USB communication driver 0.31
0.000000 debug level is '1'
0.000652 upsdrv_initups...
0.277074 Using subdriver: Belkin HID 0.12
0.281742 libusb_get_report: No error
0.285758 Path: UPS.BELKINConfig.BELKINConfigVoltage, Type: Feature, ReportID: 0x01, Offset: 0, Size: 8, Value: 230.000000
0.290742 libusb_get_report: No error
0.294749 Path: UPS.BELKINConfig.BELKINConfigFrequency, Type: Feature, ReportID: 0x02, Offset: 0, Size: 8, Value: 50.000000
0.299745 libusb_get_report: No error
0.303753 Path: UPS.BELKINConfig.BELKINConfigApparentPower, Type: Feature, ReportID: 0x03, Offset: 0, Size: 16, Value: 1200.000000
0.308744 libusb_get_report: No error
0.312755 Path: UPS.BELKINConfig.BELKINConfigBatteryVoltage, Type: Feature, ReportID: 0x04, Offset: 0, Size: 16, Value: 24.000000
Jon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: belkin-fix.patch
Type: text/x-patch
Size: 398 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/nut-upsdev/attachments/20100319/69e18ffb/attachment.bin>
More information about the Nut-upsdev
mailing list