[Nut-upsuser] NUT SuSE Linux 11.0 USB ULTRA ULT33046 ups

Bill Blessing billy1180 at gmail.com
Wed Dec 31 16:42:10 UTC 2008

Well, I don't have any background as a developer, but I am an EE with
experience in embedded C and control systems design as well as experience
with C# and Visual Studios 2008. I'd be interested in at least giving it a
try, writing the software that is. Usbsnoop looks very similar to a program
we use at my company that logs RS-485 output. I'll see what I can do about
getting some output from usbsnoop. Thanks for the help. I'll keep everyone
posted as to any success.

-----Original Message-----
From: Arjen de Korte [mailto:nut+users at de-korte.org] 
Sent: Wednesday, December 31, 2008 4:50 AM
To: Bill Blessing
Cc: nut-upsuser at lists.alioth.debian.org
Subject: Re: [Nut-upsuser] NUT SuSE Linux 11.0 USB ULTRA ULT33046 ups

Citeren Bill Blessing <billy1180 at gmail.com>:

> Checking device (0D9F/0002) (001/002)
> - VendorID: 0d9f
> - ProductID: 0002
> - Manufacturer: POWERCOM CO., LTD.
> - Product: USB to Serial
> - Serial Number: unknown
> - Bus: 001
> Trying to match device
> Device matches
> failed to claim USB device, trying 2 more time(s)...
> detaching kernel driver from USB device...
> trying again to claim USB device...
> HID descriptor, method 1: (9 bytes) => 09 21 00 01 00 01 22 25 00
> HID descriptor, method 2: (9 bytes) => 09 21 00 01 00 01 22 25 00
> HID descriptor length 37
> Report Descriptor size = 37
> Report Descriptor: (37 bytes) => 06 a0 ff 09 01 a1 01 09 01 15 00 26 ff 00
>  75 08 95 08 81 02 09 02 75 08 95 08 91 02 09 03 75 08 95 05 b1 02 c0

OK, this is clear. This report descriptor is much too short for a HID  
Power Device Class UPS, so most likely it uses a USB to serial  

> Using subdriver: EXPLORE HID 0.1
> Report[get]: (2 bytes) => 00 00
> Path: ffa00001.ffa00001, Type: Input, ReportID: 0x00, Offset: 0, Size: 8,
> Value: 0.000000
> Report[buf]: (2 bytes) => 00 00
> Path: ffa00001.ffa00002, Type: Output, ReportID: 0x00, Offset: 0, Size: 8,
> Value: 0.000000
> Report[buf]: (2 bytes) => 00 00
> Path: ffa00001.ffa00003, Type: Feature, ReportID: 0x00, Offset: 0, Size:
> Value: 0.000000
> Report descriptor retrieved (Reportlen = 37)
> Found HID device
> Detected a UPS: POWERCOM CO., LTD./USB to Serial

Indeed, a USB to serial converter. Now the problem is finding out what  
protocol it uses on the serial interface. I suspect that this will be  
similar to the Powercom devices we already support through the serial  
interface, but it would be nice to verify this by having a look at the  
output of usbsnoop while monitoring it through the bundled (?) driver  
on a Windows box.

If it indeed uses the Powercom protocol, there are basically two ways  
to get this UPS supported:

1) Support for the USB to serial converter used is build into the  
kernel module that creates a virtual /dev/ttyUSBx port to which the  
existing 'powercom' driver can connect. This usually is a slow  
process, unless the hardware used by the manufacturer is similar to  
existing/generic USB to serial converters already supported. I  
honestly don't know if this is feasible.

2) The existing 'powercom' driver is modified to talk to the USB to  
serial converter directly. We do this for instance for the 'megatec'  
driver (called 'megatec_usb' in that case), with varying levels of  
success. A much cleaner way would be to separate the protocol handling  
from the communication layer (like in the 'bcmxcp_ser'/'bcmxcp_usb'  
and (new) 'blazer_ser'/'blazer_usb' drivers. This latter requires  
rewriting the 'powercom' driver from the ground up however.

Both of the above require a developer with sufficient interest in  
supporting this device and ample of time to do this. If you're not  
able to do this yourself and you really need to monitor your UPS, I  
suggest to switch to another UPS that is already supported.

Best regards, Arjen
Please keep list traffic on the list

More information about the Nut-upsuser mailing list