[Nut-upsdev] megatec over USB - new driver patch

Peter Selinger selinger at mathstat.dal.ca
Tue Dec 5 17:20:27 CET 2006


Thanks. Could you send the dumped report descriptor as well, for the
record? In hex format, if it is not parseable. It can sometimes be a
clue when the same hardware is sold under a different name.

The USB-to-serial hack you describe does not seem to be the same that
Alexander discovered for the Krauler device (see
http://lists.alioth.debian.org/pipermail/nut-upsdev/2006-November/001294.html).
In his case, the device sent its report strings in a string descriptor
(not a report), and we haven't yet discovered how to send commands to
the device. But it's possible that his device supports your driver as
well. 

Alexander, could you give Andrey's driver a try? 

-- Peter

Andrey Lelikov wrote:
> 
> Peter Selinger wrote:
> > Hi Andrey,
> >
> > thanks for your reverse-engineering efforts! Could you please post the
> > HID descriptor from this device? What is the OEM mechanism that you
> > discovered? It would be nice if you could document the serial-over-USB
> > protocol used.
> >
> > We have in the past seen several different USB devices that were not
> > proper HID devices, and at least one of them (the Krauler) seemed to
> > speak a USB-to-serial version of the megatec protocol. They all had
> > (almost) identical HID descriptors. So far none of them are supported
> > by NUT, but there is a good chance that your driver can support them,
> > if the OEM hack is indeed the same. The devices are:
> >
> > * Krauler UP-M500VA (see Alexander I. Gordeev's thread on nut-upsdev,
> >   November 2006)
> > * Ablerex 625L (see Lau Kim Ping's thread on nut-upsuser, October 2006)
> > * Atlantis-Land S1501 (made by Ablerex) (see ngpost1's threads on
> >   nut-upsuser and nut-upsdev, December 2005)
> > * Belkin F6H500ukUNV (made by MEC?) (see the thread by meherenow,
> >   spamwhole, and Robert Kent on nut-upsdev, September 2006)
> >
> > I suspect that all of these devices use the same hardware and
> > protocol. If your OEM mechanism is the same as the Krauler's, then we
> > should distribute your driver to the owners of the above devices and
> > see if they get it to work. It would be great if this family of
> > devices could be supported. 
> >
> > -- Peter
> >
> > P.S. accommodating your driver in Makefile.am is not a big problem.
> > Several drivers already have specialized LDADD variables, including
> > all of the USB drivers (which don't link against serial.o).
> >
> >   
> descriptor is below. it is possible to dump report descriptor, but it is 
> all junk.  short protocol description is at the bottom of  megatec_usb.c 
> - basically exchange is via 8-byte hid reports (i believe converter just 
> eats everything on control pipe and sends everything into interrupt 
> pipe). data always comes in as 6 8-byte packets (limiting received 
> string to 48 chars). windows driver sends only single-report packets 
> limiting string len to 8 chars. commands used by windows driver are: Q1 
> I F T TL C CT P . "P" command is actually usage of megatec protocol echo 
> feature - it is used to synchronize and flush any buffered input on startup.
> 
> 
> Bus 002 Device 002: ID 05b8:0000 Agiler, Inc.
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               1.00
>   bDeviceClass            0 (Defined at Interface level)
>   bDeviceSubClass         0
>   bDeviceProtocol         0
>   bMaxPacketSize0         8
>   idVendor           0x05b8 Agiler, Inc.
>   idProduct          0x0000
>   bcdDevice            1.00
>   iManufacturer           1 
>   iProduct                2 UPS
>   iSerial                 0
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength           34
>     bNumInterfaces          1
>     bConfigurationValue     1
>     iConfiguration          0
>     bmAttributes         0x80
>       (Bus Powered)
>     MaxPower              100mA
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           1
>       bInterfaceClass         3 Human Interface Devices
>       bInterfaceSubClass      1 Boot Interface Subclass
>       bInterfaceProtocol      0 None
>       iInterface              0
>         HID Device Descriptor:
>           bLength                 9
>           bDescriptorType        33
>           bcdHID               1.00
>           bCountryCode            0 Not supported
>           bNumDescriptors         1
>           bDescriptorType        34 Report
>           wDescriptorLength      52
>          Report Descriptors:
>            ** UNAVAILABLE **
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes            3
>           Transfer Type            Interrupt
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0008  1x 8 bytes
>         bInterval              10
> Device Status:     0x0000
>   (Bus Powered)
> 




More information about the Nut-upsdev mailing list