I ordered some Powerware 3105 devices for Linux workstations. These devices only have an USB interface. I understood too late that support for Powerware devices is only available for the serial interface. Since the protocols over serial and USB seem to be identical, it was not too difficult to modify the bcmxcp driver to support USB. The new and changed files can be found here: ftp://ftp.weo1.de/pub/software/nut-pw3105/ Is there any interest in that driver? Should I combine the serial and the USB driver? Perhaps it makes sense to have separate binaries because of library dependencies. But besides the command IO functions the drivers are identical. Since I'm new to USB programming I'm not sure whether the error handling and reconnect processing is correct. I'd appreciate any comments and suggestions. Thanks, Wolfgang -- | Wolfgang Ocker | http://weo1.de/ | 49.8441.805512 | mailto:weo@weo1.de | Programmieren Sie noch oder patentieren Sie schon? | -> http://www.nosoftwarepatents.com/
On 8/18/05, Wolfgang Ocker <weo@weo1.de> wrote:> Is there any interest in that driver?It's always hard to judge the interest in the driver beforehand. But the code looks nice, and as far as I'm concerned, it sounds worthwhile to integrate it into NUT. What version of NUT is this based off of? (release version number, or CVS branch) Arnaud: if you're too busy, do you want me to look at merging this driver into the tree?> Should I combine the serial and > the USB driver? Perhaps it makes sense to have separate binaries because > of library dependencies. But besides the command IO functions the > drivers are identical.You have a good point about separate binaries. Maybe what you could do is divide bcmxp.c and bcmxp_usb.c into three files: generic Powerware command support, Powerware-specific serial code, and Powerware-specific USB code. (The nut_usb.c is already a step in the right direction, IMHO. As other drivers pop up, some of that code can be parameterized - timeouts, number of retries, etc.) This way, you can still have separate binaries, and if people don't want to install libusb, they don't have to (and they will only get serial interfaces, like with the existing USB drivers). But if there are any bugfixes to the core powerware code, you don't have to apply them to both bcmxp.c and bcmxp_usb.c. It's up to you to decide whether it is worth it, though, since you have the USB units to test with. It would also be good to get the bcmxp.c authors to buy into this idea. Maybe the driver code is small enough to maintain two separate drivers. I have to say, though... Powerware chose a really strange method of passing in commands (SET_DESCRIPTOR/DT_STRING).> Since I'm new to USB programming I'm not sure whether the error handling > and reconnect processing is correct. I'd appreciate any comments and > suggestions.Given the variablilty in USB devices and host controllers, I'd say go with whatever works. -- - Charles Lepple
Wolfgang Ocker <weo@weo1.de> wrote:>I ordered some Powerware 3105 devices for Linux workstations. These >devices only have an USB interface.Eaton Powerware have literally just emailed me to state that there will be an open source driver for Linux in the 5.0.8 version of Lansafe, which is expected in a few weeks. -- Benjamin benjamin@pythagoras.no-ip.org
Wolfgang Ocker <weo@weo1.de> wrote:>A new version of the Powerware USB driver is available here:... and it works perfectly with a PowerWare 5110 with no modifications: [root@gavin bin]# ./upsdrvctl -u root start Network UPS Tools - UPS driver controller 2.1.0 Network UPS Tools - BCMXCP UPS driver 0.09 (2.1.0) Modell = POWERWARE UPS 1000VA Firmware = 00.50 Shutdown delay = 120 seconds Shutdown delay longer than battery capacity when Low Battery warning is given. (max 60 seconds) Many thanks for writing the driver! :) -- Benjamin benjamin@pythagoras.no-ip.org
Some hints for compiling and running the Powerware USB driver: The driver is not compiled automatically, run make bcmxcp_usb in the "drivers" directory. The driver must be run as root since some USB functions require that. I have adjusted the README: ftp://ftp.weo1.de/pub/software/nut-drivers-pw-latest.tgz Wolfgang