Reading the Fortron TwinsPro FSP900 DUAL power supply under Linux

Fortron TwinsPro FSP900 Dual power supply does not provide a native way to read data from the power supply when used with Linux on a server motherboard. However, the data can still be analyzed using Linux's built-in tools.
Problem
Fortron provides only a Windows port as standard, allowing users to monitor the power supply using the company's proprietary software, FSP Guardian.
If you want to use the power supply on a server motherboard running a Linux server operating system, the manufacturer does not provide the means to read the data. A PMBus interface is also missing.
The following section will therefore explain how to retrieve the data using existing tools in modern Linux environments:
- Configuration with board resources
- Connecting and testing the power supply unit
- Making available the kernelspace for monitoring functions
- Error checking
Configuration
In the following, we configure the data readout with the help of i2c-tools and lm-sensors from a power supply by connecting it to a USB 2.0 header.
Testing environment
For the configuration, a system with Linux operating system is required. We test with an Ubuntu image:
Linux custom-hw-image 5.15.0-97-generic #107-Ubuntu SMP Wed Feb 7 13:26:48 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Configuration
Package installation
Install i2c-tools and lm-sensors:
root@custom-hw-image:~# apt install i2c-tools lm-sensors
Hardware detection
So that the data can be read out, the device must be detected correctly and integrated. Verify first, if the power supply is connected via USB 2.0 header:
root@custom-hw-image:~# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 10c4:ea90 Silicon Labs CP2112 HID I2C Bridge
Bus 001 Device 002: ID 046d:c31c Logitech, Inc. Keyboard K120
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
The searched power supply unit device 003 on bus 001 has been detected correctly. Now verify, on which bus the bridge is integrated via I2C:
root@custom-hw-image:~# i2cdetect -l
i2c-0 smbus SMBus I801 adapter at efa0 SMBus adapter
i2c-1 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-2 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-3 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-4 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-5 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-6 i2c CP2112 SMBus Bridge on hidraw2 I2C adapter
Here, the SMBus bridge has been found on bus i2c-6.
Reading out bus
You can now read out the I2C-bus on this address:
root@custom-hw-image:~# i2cdetect -y 6
Warning: Can't use SMBus Quick Write command, will skip some addresses
0 1 2 3 4 5 6 7 8 9 a b c d e f
00:
10:
20:
30: -- -- -- -- -- -- -- --
40:
50: 50 51 -- -- -- -- 56 -- 58 59 -- -- -- -- -- --
60:
70:
Here, both power supply units are detected on the addresses 0x58 and 0x59. To check, if the manufacturer name is correct:
root@custom-hw-image:~# i2cget -y 6 0x58 0x99 i 8
0x09 0x46 0x53 0x50 0x2d 0x47 0x52 0x4f
root@custom-hw-image:~# printf "\x09\x46\x53\x50\x2d\x47\x52\x4f\n"
FSP-GRO
The voltage can be read out for the verification.
root@custom-hw-image:~# i2cget -y 6 0x58 0x8B w
0x1879
This value must be converted and expressed in volts. The manufacturer uses a direct scaling. The voltage can be therefore calculated linearly:
Integration of ports in kernelspace

With the following commands, you can add both power supply ports to the kernelspace:
root@custom-hw-image:~# echo pmbus 0x58 | sudo tee /sys/bus/i2c/devices/i2c-6/new_device
pmbus 0x58
root@custom-hw-image:~# echo pmbus 0x59 | sudo tee /sys/bus/i2c/devices/i2c-6/new_device
pmbus 0x59
Verify the successful integration:
root@custom-hw-image:~# i2cdetect -y 6
Warning: Can't use SMBus Quick Write command, will skip some addresses
0 1 2 3 4 5 6 7 8 9 a b c d e f
00:
10:
20:
30: -- -- -- -- -- -- -- --
40:
50: 50 51 -- -- -- -- 56 -- UU UU -- -- -- -- -- --
60:
70:
The two power supplies cannot be accessed directly via I2C because they are now fully integrated into the kernel-space "UU (Upper Unit)".
Both power supplies can be completely read out with lm-sensors (for the output, take a look at the second image):
root@custom-hw-image:~# sensors
Error checking
Finally, you can simulate an error scenario. Here, the IEC power plug from power supply 1 (3rd image):

|
Author: Wilfried Seifert Wilfried Seifert, working in the Systems Engineering department at Thomas-Krenn, is responsible for system/prototype development in his work area. LPIC 3 certified, deals with construction / programming of embedded / GPIO systems; in his spare time he likes to repair old home computers, attends Linux conferences or is on the road with his bike (MTB) for sporting compensation.
|
|
Translator: Alina Ranzinger Alina has been working at Thomas-Krenn.AG since 2024. After her training as multilingual business assistant, she got her job as assistant of the Product Management and is responsible for the translation of texts and for the organisation of the department.
|


