[Nut-upsdev] Powerware PW5115 USB driver
Kjell Claesson
kjell.claesson at epost.tidanet.se
Wed Nov 7 16:35:46 UTC 2007
Den Wednesday 07 November 2007 10.18.53 skrev Max E. Kuznecov:
> Hi
Hi Max
> I have PW 5115 500 UPS which has both RS232 and USB connectors.
> bcmxcp driver works fine with serial connection but bcmxcp_usb does
> not with USB one.
>
> After some USB sniffing on windows box I've found that PW5115
> communicates in other way than supposed in driver. Applying attached
> patch makes driver to work properly.
>
> System: FreeBSD 6.2 but ugen driver needs patching in order to respect
> given timeout, patch already included in 7.0
> (http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/usb/ugen.c.diff?r1=1.109
>;r2=1.110) maybe it will be backported in future.
>
> However I'm unsure whether PW3105 and PW5110 (those two used with
> bcmxcp_usb driver) will work after this change.
Can not see that ther is any difference in handling.
Part of the patch:
---------------
void send_write_command(unsigned char *command, int command_length)
@@ -29,7 +29,7 @@
/* Add checksum */
sbuf[command_length] = calc_checksum(sbuf);
command_length += 1;
- usb_set_descriptor(upsdev, USB_DT_STRING, 4, sbuf, command_length); /*
Ignore error */
+ usb_control_msg(upsdev, 0x42, 0x0d, (0x00 << 8) + 0x0, 0, sbuf,
command_length, 1000);
}
----------------
As you see it calls 'usb_set_descriptor' this is a function in nut_usb.c and
look like this.
-------------------------
int usb_set_descriptor(usb_dev_handle *udev, unsigned char type,
unsigned char index, void *buf, int size)
{
return usb_control_msg(udev, USB_ENDPOINT_OUT, USB_REQ_SET_DESCRIPTOR,
(type << 8) + index, 0, buf, size, 1000);
}
---------------------------
So the only thing you do is send the command twise.
Maybe Arjen can bring some light into this. As it is a usb (libusb) function.
And the this is that in your control message you hardcode the
USB_ENDPOINT_OUT, USB_REQ_SET_DESCRIPTOR, and type.
And it is if this differs from that reported under enumerating of the device.
Regards
Kjell
More information about the Nut-upsdev
mailing list