[Nut-upsdev] Liebert PSI 1440 support

Peter Selinger selinger at mathstat.dal.ca
Wed Sep 28 02:16:47 UTC 2005


This looks really good. In fact, it looks like the driver should be
working - there is even a valid status indicator (OL CHRG). 

Now only some fine-tuning remains to be done. 

1) to figure out what those remaining usages are:

> Path: UPS.00860006.00860080, Type: Feature, Value: 2.000000
> Path: UPS.00860006.00860081, Type: Feature, Value: 0.000000
> Path: UPS.00860006.00860082, Type: Feature, Value: 2.000000
> Path: UPS.00860006.00860083, Type: Feature, Value: 120.000000
Could be a voltage?
> Path: UPS.00860006.00860084, Type: Feature, Value: 2.000000
> Path: UPS.00860006.00860085, Type: Feature, Value: 3.000000
> Path: UPS.00860006.00860086, Type: Feature, Value: 3.000000
> Path: UPS.00860006.00860087, Type: Feature, Value: 0.000000

You can also try to see if some of these variables are writable (using
upsrw), and figure out what the effects are (but careful - it might
cause a shutdown. Make sure your computer does not depend on the UPS
for power).

2) map any variables that are currently unmapped to variables or
instant commands (e.g. UPS.LIEBERTControls.LIEBERTLoadOn and
UPS.LIEBERTControls.LIEBERTLoadOff are currently unmapped, as are
UPS.LIEBERTPowerState.LIEBERTInput.LIEBERTTemperature and several
others (is this temperature in Celsius?)

3) Another thing to figure out is if some sort of shutdown procedure
will work.  This is the Achilles heel of the Belkin - hopefully the
Liebert will do better. In principle, this should be done by writing
various combinations of values to

UPS.LIEBERTControls.LIEBERTLoadOn,
UPS.LIEBERTControls.LIEBERTLoadOff,
UPS.LIEBERTControls.LIEBERTDelayBeforeShutdown,
UPS.LIEBERTControls.LIEBERTDelayBeforeStartup 

(USB variables shown here, not NUT variables).

This needs to be tested quite thoroughly - for example, each shutdown
could be:

- a final shutdown (power will not come on until requested explicitly),
- a timed shutdown (power comes on after specified time, whether there 
	is a power outage or not)
- a smart shutdown (power stays off during power outage, comes back on
 	after outage ends, and possibly after battery charges to a
 	minimum level - or if there is no power outage in progess, power
        just goes off for a few seconds). 

A smart shutdown is what is needed most. The problem with Belkin is
that it does not implement one. I hope the Liebert does. Your
experimentation will be needed.

-- Peter

Stewart Morgan wrote:
> 
> Hello,
> 
> Peter Selinger wrote:
> > This looks like a libusb issue to me, not a NUT issue. Perhaps you
> > should write to one of the libusb mailing lists:
> 
> 	It does, indeed, appear to have been a libusb issue: short-reads in 
> descriptors.  I've figured out how to get it working, but still need 
> confirmation from the libusb team that it's the "right solution".  But 
> in the meantime, it works for me ;)
> 
> 
> > Once you manage to connect to your device, please report back and we
> > can continue from there. -- Peter
> 
> 	I've checked out a copy from CVS (as of ~11pm), copied belkin-hid.[ch] 
> to liebert-hid.[ch], modified for vendor-ID and s/belkin/liebert/, 
> modified the build process and updated newhidups.c.  Running it now 
> outputs the following -- this is much better, yes? :)
> 
> 	So, the question is now what else do you need from me to get this 
> driver fully working? :)
> 
> 
> ----8<--------8<--------8<--------8<--------8<--------8<--------8<----
> root@#>/newhidups -DD a
> Network UPS Tools: New USB/HID UPS driver 0.28 (2.1.0)
> 
> debug level is '2'
> Checking device (10AF/0004) (/dev/usb0//dev/ugen0)
> - VendorID: 10af
> - ProductID: 0004
> - Manufacturer: Liebert
> - Product: Liebert PSI 1440 FW:06
> - Serial Number: 0507600052AD069
> - Bus: /dev/usb0
> Trying to match device
> Device matches
> HID descriptor retrieved (Reportlen = 653)
> Report descriptor retrieved (Reportlen = 653)
> Found HID device
> Report Descriptor size = 653
> Detected a UPS: Liebert/Liebert PSI 1440 FW:06
> Using subdriver: Liebert HID 0.1
> Path: UPS.LIEBERTConfig.LIEBERTConfigVoltage, Type: Feature, Value: 
> 230.000000
> Path: UPS.LIEBERTConfig.LIEBERTConfigFrequency, Type: Feature, Value: 
> 50.000000
> Path: UPS.LIEBERTConfig.LIEBERTConfigApparentPower, Type: Feature, 
> Value: 1440.000000
> Path: UPS.LIEBERTConfig.LIEBERTConfigBatteryVoltage, Type: Feature, 
> Value: 48.000000
> Path: UPS.LIEBERTDevice.LIEBERTModelString, Type: Feature, Value: 22.000000
> Path: UPS.LIEBERTDevice.LIEBERTModelStringOffset, Type: Feature, Value: 
> 0.000000
> Path: UPS.LIEBERTDevice.LIEBERTUPSType, Type: Feature, Value: 98.000000
> Path: UPS.LIEBERTControls.LIEBERTTest, Type: Feature, Value: 1.000000
> Path: UPS.LIEBERTControls.LIEBERTAudibleAlarmControl, Type: Feature, 
> Value: 2.000000
> Path: UPS.LIEBERTControls.LIEBERTLoadOn, Type: Feature, Value: 0.000000
> Path: UPS.LIEBERTControls.LIEBERTLoadOff, Type: Feature, Value: 0.000000
> Path: UPS.LIEBERTControls.LIEBERTDelayBeforeShutdown, Type: Feature, 
> Value: 0.000000
> Path: UPS.LIEBERTControls.LIEBERTDelayBeforeStartup, Type: Feature, 
> Value: 0.000000
> Path: UPS.LIEBERTPowerState.LIEBERTInput.LIEBERTVoltage, Type: Feature, 
> Value: 2370.000000
> Path: UPS.LIEBERTPowerState.LIEBERTInput.LIEBERTFrequency, Type: 
> Feature, Value: 500.000000
> Path: UPS.LIEBERTPowerState.LIEBERTInput.LIEBERTTemperature, Type: 
> Feature, Value: 40.000000
> Path: UPS.LIEBERTPowerState.LIEBERTOutput.LIEBERTVoltage, Type: Feature, 
> Value: 2389.000000
> Path: UPS.LIEBERTPowerState.LIEBERTOutput.LIEBERTFrequency, Type: 
> Feature, Value: 500.000000
> Path: UPS.LIEBERTPowerState.LIEBERTOutput.LIEBERTPercentLoad, Type: 
> Feature, Value: 51.000000
> Path: UPS.LIEBERTBatterySystem.LIEBERTVoltage, Type: Feature, Value: 
> 560.000000
> Path: UPS.LIEBERTBatterySystem.LIEBERTCharge, Type: Feature, Value: 
> 100.000000
> Path: UPS.LIEBERTStatus.LIEBERTPowerStatus, Type: Feature, Value: 
> 32768.000000
> Path: UPS.LIEBERTStatus.LIEBERTBatteryStatus, Type: Feature, Value: 
> 16.000000
> Path: UPS.00860006.00860080, Type: Feature, Value: 2.000000
> Path: UPS.00860006.00860081, Type: Feature, Value: 0.000000
> Path: UPS.00860006.00860082, Type: Feature, Value: 2.000000
> Path: UPS.00860006.00860083, Type: Feature, Value: 120.000000
> Path: UPS.00860006.00860084, Type: Feature, Value: 2.000000
> Path: UPS.00860006.00860085, Type: Feature, Value: 3.000000
> Path: UPS.00860006.00860086, Type: Feature, Value: 3.000000
> Path: UPS.00860006.00860087, Type: Feature, Value: 0.000000
> Path: UPS.PowerSummary.iProduct, Type: Feature, Value: 20.000000
> Path: UPS.PowerSummary.iSerialNumber, Type: Feature, Value: 34.000000
> Path: UPS.PowerSummary.iDeviceChemistry, Type: Feature, Value: 24.000000
> Path: UPS.PowerSummary.iOEMInformation, Type: Feature, Value: 4.000000
> Path: UPS.PowerSummary.Rechargeable, Type: Feature, Value: 1.000000
> Path: UPS.PowerSummary.Charging, Type: Input, Value: 1.000000
> Path: UPS.PowerSummary.Charging, Type: Feature, Value: 1.000000
> Path: UPS.PowerSummary.Discharging, Type: Input, Value: 0.000000
> Path: UPS.PowerSummary.Discharging, Type: Feature, Value: 0.000000
> Path: UPS.PowerSummary.ConfigVoltage, Type: Feature, Value: 48.000000
> Path: UPS.PowerSummary.Voltage, Type: Feature, Value: 2389.000000
> Path: UPS.PowerSummary.Current, Type: Feature, Value: 0.000000
> Path: UPS.PowerSummary.CapacityMode, Type: Feature, Value: 2.000000
> Path: UPS.PowerSummary.RemainingCapacity, Type: Input, Value: 100.000000
> Path: UPS.PowerSummary.RemainingCapacity, Type: Feature, Value: 100.000000
> Path: UPS.PowerSummary.0085006c, Type: Feature, Value: 15.000000
> Path: UPS.PowerSummary.RunTimeToEmpty, Type: Input, Value: 900.000000
> Path: UPS.PowerSummary.RunTimeToEmpty, Type: Feature, Value: 900.000000
> Path: UPS.PowerSummary.DesignCapacity, Type: Feature, Value: 100.000000
> Path: UPS.PowerSummary.FullChargeCapacity, Type: Feature, Value: 100.000000
> Path: UPS.PowerSummary.WarningCapacityLimit, Type: Feature, Value: 30.000000
> Path: UPS.PowerSummary.CapacityGranularity2, Type: Feature, Value: 1.000000
> Path: UPS.PowerSummary.RemainingCapacityLimit, Type: Feature, Value: 
> 20.000000
> Path: UPS.PowerSummary.CapacityGranularity1, Type: Feature, Value: 1.000000
> Path: UPS.PowerSummary.ACPresent, Type: Feature, Value: 1.000000
> Path: UPS.PowerSummary.ACPresent, Type: Input, Value: 1.000000
> Path: UPS.PowerSummary.BelowRemainingCapacityLimit, Type: Input, Value: 
> 0.000000
> Path: UPS.PowerSummary.BelowRemainingCapacityLimit, Type: Feature, 
> Value: 0.000000
> Path: UPS.PowerSummary.ShutdownImminent, Type: Input, Value: 0.000000
> Path: UPS.PowerSummary.ShutdownImminent, Type: Feature, Value: 0.000000
> entering identify_ups(0x10af, 0x0004)
> 
> -> String: PbAc (len = 4/4)
> Can't find object UPS.LIEBERTDevice.LIEBERTVoltageSensitivity
> Can't find object UPS.LIEBERTConfig.LIEBERTHighVoltageTransfer
> Can't find object UPS.LIEBERTConfig.LIEBERTHighVoltageTransferMax
> Can't find object UPS.LIEBERTConfig.LIEBERTHighVoltageTransferMin
> Can't find object UPS.LIEBERTConfig.LIEBERTLowVoltageTransfer
> Can't find object UPS.LIEBERTConfig.LIEBERTLowVoltageTransferMax
> Can't find object UPS.LIEBERTConfig.LIEBERTLowVoltageTransferMin
> Can't find object UPS.LIEBERTConfig.LIEBERTConfigOverloadTransfer
> Can't find object UPS.PowerSummary.ManufacturerDate
> process_status_info: CHRG
> process_status_info: !LB
> process_status_info: OL
> process_status_info: !LB
> process_status_info:
> process_status_info:
> process_status_info:
> process_status_info:
> process_status_info:
> upsdrv_updateinfo...
> -> String: PbAc (len = 4/4)
> process_status_info: CHRG
> process_status_info: !LB
> process_status_info: OL
> process_status_info: !LB
> process_status_info:
> process_status_info:
> process_status_info:
> process_status_info:
> process_status_info:
> dstate_init: sock /var/db/nut/newhidups-a open on fd 4
> upsdrv_updateinfo...
> Waiting for notifications...
> upsdrv_updateinfo...
> Waiting for notifications...
> upsdrv_updateinfo...
> Waiting for notifications...
> upsdrv_updateinfo...
> ---->8-------->8-------->8-------->8-------->8-------->8----
> 
> Stewart.
> 




More information about the Nut-upsdev mailing list