Recently I bought Cyber Power DX600E-FR UPS but I can't seem to make it talk to my PC. UPS without the ability to safely shutdown my computer when the power is almost drained is pretty useless After googling for two days I'm still in the woods with this issue.
The first problem I noticed is endless disconnect-reconnect cycle (every minute or so) is dmesg.
usb 4-3: new low speed USB device using ohci_hcd and address 72 generic-usb 0003:0764:0501.0047: hiddev0,hidraw0: USB HID v1.10 Device [CPS DX600E] on usb-0000:00:12.1-3/input0 usb 4-3: USB disconnect, address 72 usb 4-3: new low speed USB device using ohci_hcd and address 73 generic-usb 0003:0764:0501.0048: hiddev0,hidraw0: USB HID v1.10 Device [CPS DX600E] on usb-0000:00:12.1-3/input0 usb 4-3: USB disconnect, address 73 usb 4-3: new low speed USB device using ohci_hcd and address 74 generic-usb 0003:0764:0501.0049: hiddev0,hidraw0: USB HID v1.10 Device [CPS DX600E] on usb-0000:00:12.1-3/input0 usb 4-3: USB disconnect, address 74
This doesn't seem to be hardware issue - I booted Ubuntu LiveCD on this machine and UPS device connected only once and was properly detected.
Second issue appeared after configuring network-ups-utils. When running upsd I get
Can't connect to UPS [upsik] (usbhid-ups-upsik): No such file or directory
but when I run usbhid-ups driver manually with raised debug level I see this
1.288854 failed to claim USB device: could not claim interface 0: Device or resource busy 1.289094 detached kernel driver from USB device... 1.292706 Unable to get HID descriptor (error sending control message: Timer expired) 1.292737 HID descriptor, method 2: (9 bytes) => 09 21 10 01 21 01 22 78 01 1.292749 HID descriptor length 376 1.294609 Unable to get Report descriptor: Timer expired
Any help with resolving this issue will be greatly appreciated. Thanks in advance.
This is an ongoing issue. CyberPower UPS here is model CP425HG.
May 28 14:48:53 nexus kernel: [95200.240524] usb 3-1: USB disconnect, address 21 May 28 14:48:54 nexus kernel: [95200.717175] usb 3-1: new low speed USB device using uhci_hcd and address 22 May 28 14:48:54 nexus kernel: [95201.033654] generic-usb 0003:0764:0501.10D1: hiddev0,hidraw0: USB HID v1.10 Device [CPS CP425HG] on usb-0000:00:1d.1-1/input0 May 28 14:49:15 nexus kernel: [95221.740519] usb 3-1: USB disconnect, address 22 May 28 14:49:16 nexus kernel: [95222.717174] usb 3-1: new low speed USB device using uhci_hcd and address 23 May 28 14:49:16 nexus kernel: [95223.037032] generic-usb 0003:0764:0501.10D2: hiddev0,hidraw0: USB HID v1.10 Device [CPS CP425HG] on usb-0000:00:1d.1-1/input0 May 28 14:49:37 nexus kernel: [95243.990535] usb 3-1: USB disconnect, address 23 May 28 14:49:38 nexus kernel: [95244.967176] usb 3-1: new low speed USB device using uhci_hcd and address 24 May 28 14:49:38 nexus kernel: [95245.283470] generic-usb 0003:0764:0501.10D3: hiddev0,hidraw0: USB HID v1.10 Device [CPS CP425HG] on usb-0000:00:1d.1-1/input0
This shows the matching VENDORID:PRODUCTID of model DX600E-FR and model CP425HG: 0764:0501
I had simultaneous issues with network ups tool's interface to the UPS. That issue involved the buffer size max being 8 bytes for a low-speed usb device:
The patch from this link worked for the 2.4 version of nut. I had this UPS in service for months. Now rev 2.6 doesn't exactly take this patch, and it seems the underlying issue is in the usbhid drivers.
I don't know if it's related (seems unlikely) but I also had a lot of trouble initially getting this same UPS model working on a FreeBSD server. A system upgrade there, from 7.1 to 7.3, fixed the issue. Then in a recent upgrade to FreeBSD 8.1 the UPS interface is broken again. Almost an identical sequence and time line as the same occurrences in usbhid driver on arch.
[root@nexus /]# cat /sys/kernel/debug/usb/devices ... T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 32 Spd=1.5 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0764 ProdID=0501 Rev= 0.01 S: Manufacturer=CPS S: Product=CP425HG C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 50mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
OK, I just upgraded to kernel26 126.96.36.199-1, no change hid disconnects.
I captured usbmon3 with tshark:
[root@nexus /]# tshark -V -i usbmon3 > tshark-V-iusbmon3-2xdisconnect.txt Running as user "root" and group "root". This could be dangerous. Capturing on USB bus number 3 ^C362 packets captured
The end of Frame 2 shows this:
[Malformed Packet: USB] [Expert Info (Error/Malformed): Malformed Packet (Exception occurred)] [Message: Malformed Packet (Exception occurred)] [Severity level: Error] [Group: Malformed]
Here's the full dump in human readable text:
Here's a similar two cycle capture in libpcap format for opening with wireshark;
Last edited by android (2011-05-29 00:48:11)
Just to follow up,
This issue was eventually determined to be the UPS device itself, disconnecting from the bus if no driver connected to it within 20sec of enumeration.
Once the usbhid-ups driver connects to the hardware it stays connected, no more disconnect/reconnect.
This was purely a case of poorly implemented device firmware, it's not due to a linux regression or an arch packaging issue.
The workaround for me was to move 'upsd' to the beginning of the DAEMONS line in rc.conf (at least before 'network')
The reason the installation here worked in the past, was because the affected machine had a static network configuration at that time. Changing the network configuration, to the slower DHCP, caused the UPS to time out and start to disconnect/reconnect.
Solution: When using this UPS, make sure the usbhid-ups driver connects to the UPS within 20sec of enumeration.
Someone please mark this one SOLVED
Last edited by android (2011-06-23 23:30:04)