[Nut-upsuser] Belkin F6H375 not seen by nut 2.2.1

Alexander I. Gordeev lasaine at lvk.cs.msu.su
Wed Jan 16 15:36:13 UTC 2008


On Tue, 15 Jan 2008 02:05:31 +0300, Joseph Borg <juu.borg at gmail.com> wrote:

> Pls ignore the previous email; I had subdriver=agiler configured in ups.conf.
> It still fails however as follows:
> -------------
> Checking device (0F03/0001) (001/002)
> - VendorID: 0f03
> - ProductID: 0001
> - Manufacturer: Ver 1.0
> - Product: USB To RS232 Interface (V1.0) BaudRate 2400bps
> - Serial Number: unknown
> - Bus: 001
> Trying to match device
> Device matches
> Starting UPS detection process...
> Asking for UPS status [Q1]...
> Q1 => FAILED [short read]
> Q1 detail: (0 bytes) =>
> Asking for UPS status [Q1]...
> Q1 => FAILED [short read]
> Q1 detail: (0 bytes) =>
> Asking for UPS status [Q1]...
> Q1 => FAILED [short read]
> Q1 detail: (0 bytes) =>
> Asking for UPS status [Q1]...
> Q1 => FAILED [short read]
> Q1 detail: (0 bytes) =>
> Asking for UPS status [Q1]...
> Q1 => FAILED [short read]
> Q1 detail: (0 bytes) =>
> 5 out of 5 detection attempts failed (minimum failures: 2).
> Megatec protocol UPS not detected.
> -----------------------
>

[off-topic]
I've reviewed both an old agiler subdriver from 2.2.0 and the new phoenix
subdriver from the trunk. IMO the old subdriver looks cleaner. Also I don't
like the way some commands are cut out. There is only one model known that
doesn't support them and it has unique VID:PID combination (06da:0003).
This should be fixed. I'm going to add some flag for that.
[/off-topic]

I think this problem is caused by reduced timeout in new phoenix driver.
Joseph, please try this patch:

Index: drivers/megatec_usb.c
===================================================================
--- drivers/megatec_usb.c       (revision 1225)
+++ drivers/megatec_usb.c       (working copy)
@@ -449,7 +449,7 @@
         for (count = 8; count <= buffer_size; count += 8) {

                 /* Read data in 8-byte chunks, break on a timeout */
-               if (usb->get_interrupt(udev, (unsigned char *)&buffer[count-8], 8, 1000) < 0) {
+               if (usb->get_interrupt(udev, (unsigned char *)&buffer[count-8], 8, 5000) < 0) {
                         return count-8;
                 }


-- 
   Alexander



More information about the Nut-upsuser mailing list