Benutzer:Wseifert/Spielwiese8: Unterschied zwischen den Versionen

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Markierungen: Manuelle Zurücksetzung Zurückgesetzt
Zeile 1: Zeile 1:
== Fortron TwinsPro SP900 DUAL Netzteil unter Linux auslesen ==
== Fortron TwinsPro SP900 DUAL Netzteil unter Linux auslesen ==
[[Datei:TwinsPro900W.png|alternativtext=Fortron FSP Twins Pro 900W|mini|300x300px|Forton TwinsPro SP900 DUAL]]
[[Datei:TwinsPro900W.png|alternativtext=Fortron FSP Twins Pro 900W|mini|300x300px|Forton TwinsPro SP900 DUAL]]
Das '''Fortron TwinsPro SP900 Dual Netzteil''' bietet für den Einsatz unter Linux auf einem Server-Board keine native Möglichkeit, Daten über das Netzteil auszulesen. Mithilfe von Linux-eigenen Mitteln lassen sich die Daten aber dennoch auswerten.
Das Fortron TwinsPro SP900 Dual Netzteil bietet für den Einsatz unter Linux auf einem Server-Board keine native Möglichkeit, Daten über das Netzteil auszulesen. Mithilfe von Linux-eigenen Mitteln lassen sich die Daten aber dennoch auswerten.


== Problemstellung ==
== Problemstellung ==
Zeile 9: Zeile 9:


Im folgenden soll daher mit bereits vorhandenen Werkzeugen in modernen Linux-Umgebungen das Auslesen der Daten ermöglicht werden:
Im folgenden soll daher mit bereits vorhandenen Werkzeugen in modernen Linux-Umgebungen das Auslesen der Daten ermöglicht werden:
* Konfiguration mit Boardmitteln
* Konfiguration mit Boardmitteln konfigurieren
* Das Netzteil anschließen und testen
* Das Netzteil anschließen und testen
* im Kernelspace für Überwachungsfunktionen verfügbar machen
* im Kernelspace für Überwachungsfunktionen verfügbar machen
* Fehlerfallprüfung
* Fehlerfallprüfung


== Konfiguration ==
== Auslesen der Netzteilinformationen unter Linux eigenen Boardmitteln ==
Im folgenden konfigurieren wir das Auslesen der Daten mithilfe von <code>i2c-tools</code> und <code>lm-sensors</code> eines Netzteils mit Anschluss an einen '''USB 2.0 Header'''.
Setting / Testumgebung:<syntaxhighlight lang="bash">
 
=== Testumgebung ===
Für die Konfiguration wird ein System mit Linux-Betriebssystem benötigt. Wir testen mit einem Ubuntu Image:<syntaxhighlight lang="bash">


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
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
Zeile 24: Zeile 21:
</syntaxhighlight>
</syntaxhighlight>


== Konfiguration ==
Um das Netzteil im System bekannt zu machen werden die I2C Tools benötigt:<syntaxhighlight>
 
apt install i2c-tools lm-sensors
=== Pakteinstallation ===
 
Installieren Sie <code>i2c-tools</code> und <code>lm-sensors</code>:<syntaxhighlight lang="shell-session">
root@custom-hw-image:~# apt install i2c-tools lm-sensors
 
</syntaxhighlight>


=== Hardwareerkennung ===
</syntaxhighlight>Checken ob das Netzteil über die USB Schnittstelle an einem USB 2.0 Header angeschlossen ist.<syntaxhighlight lang="shell-session">
Damit die Daten ausgelesen werden können, muss das Gerät korrekt erkannt und eingebunden sein. Prüfen Sie zunächst, ob das Netzteil über einen USB 2.0 Header angeschlossen ist:<syntaxhighlight lang="shell-session">root@custom-hw-image:~# lsusb
root@custom-hw-image:~# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
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 003: ID 10c4:ea90 Silicon Labs CP2112 HID I2C Bridge
Bus 001 Device 002: ID 046d:c31c Logitech, Inc. Keyboard K120
Bus 001 Device 002: ID 046d:c31c Logitech, Inc. Keyboard K120
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub</syntaxhighlight>Das gesuchte Netzteil ist '''Device 003 auf Bus 001''' korrekt erkannt worden. Jetzt prüfen Sie, auf welchem Bus die Bridge über I2C eingebunden wurde:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 
</syntaxhighlight>Hier wurde das Netzteil gefunden : ''Silicon Labs CP2112 HID I2C bridge''
 
Jetzt prüfen auf welchem Bus die Bridge über I2C eingebunden wurde:


<syntaxhighlight lang="shell-session">
<syntaxhighlight lang="shell-session">
Zeile 52: Zeile 47:
</syntaxhighlight>
</syntaxhighlight>


Hier wurde die '''SMBus Bridge''' auf '''Bus i2c-6''' gefunden.


=== Bus auslesen ===


Sie können nun den I2C-Bus auf dieser Adresse auslesen:<syntaxhighlight lang="shell-session">
Hier wurde die SMBus Bridge auf BusNummer i2c-6 gefunden.
 
Jetzt wird der I2C-Bus auf dieser Adresse ausgelesen:<syntaxhighlight lang="shell-session">


root@custom-hw-image:~# i2cdetect -y 6
root@custom-hw-image:~# i2cdetect -y 6
Zeile 70: Zeile 65:
70:
70:


</syntaxhighlight>Hier werden beide Netzteile auf den Adressen '''0x58''' und '''0x59''' erkannt.
</syntaxhighlight>   


Hier werden beide Netzteile auf Addressen hex58 / hex 59 erkannt.


Wir starten ein paar Checks:<syntaxhighlight lang="shell-session">
root@custom-hw-image:~# i2cget -y 6 0x58 0x99 i 8
0x09 0x46 0x53 0x50 0x2d 0x47 0x52 0x4f


Wir starten ein paar Checks:<syntaxhighlight lang="shell-session">root@custom-hw-image:~# i2cget -y 6 0x58 0x99 i 8
</syntaxhighlight>und lassen uns das umrechnen: <syntaxhighlight lang="shell-session">
0x09 0x46 0x53 0x50 0x2d 0x47 0x52 0x4f</syntaxhighlight>und lassen uns das umrechnen: <syntaxhighlight lang="shell-session">


root@custom-hw-image:~# printf "\x09\x46\x53\x50\x2d\x47\x52\x4f\n"
root@custom-hw-image:~# printf "\x09\x46\x53\x50\x2d\x47\x52\x4f\n"

Version vom 29. April 2026, 10:41 Uhr

Fortron TwinsPro SP900 DUAL Netzteil unter Linux auslesen

Fortron FSP Twins Pro 900W
Forton TwinsPro SP900 DUAL

Das Fortron TwinsPro SP900 Dual Netzteil bietet für den Einsatz unter Linux auf einem Server-Board keine native Möglichkeit, Daten über das Netzteil auszulesen. Mithilfe von Linux-eigenen Mitteln lassen sich die Daten aber dennoch auswerten.

Problemstellung

Fortron bietet ab Werk ausschließlich einen Windows-Port, um mittels der firmeneigenen proprietären Software FSP Guardian das Netzteil auszulesen.

Will man das Netzteil auf einem Server-Board unter einem Linux-Server-Betriebssystem betreiben, fehlen herstellerseitige Mittel für das Auslesen der Daten. Auch ein PMBus-Anschluss ist nicht vorhanden.

Im folgenden soll daher mit bereits vorhandenen Werkzeugen in modernen Linux-Umgebungen das Auslesen der Daten ermöglicht werden:

  • Konfiguration mit Boardmitteln konfigurieren
  • Das Netzteil anschließen und testen
  • im Kernelspace für Überwachungsfunktionen verfügbar machen
  • Fehlerfallprüfung

Auslesen der Netzteilinformationen unter Linux eigenen Boardmitteln

Setting / Testumgebung:

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

Um das Netzteil im System bekannt zu machen werden die I2C Tools benötigt:

apt install i2c-tools lm-sensors

Checken ob das Netzteil über die USB Schnittstelle an einem USB 2.0 Header angeschlossen ist.

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

Hier wurde das Netzteil gefunden : Silicon Labs CP2112 HID I2C bridge

Jetzt prüfen auf welchem Bus die Bridge über I2C eingebunden wurde:

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


Hier wurde die SMBus Bridge auf BusNummer i2c-6 gefunden.

Jetzt wird der I2C-Bus auf dieser Adresse ausgelesen:

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:

   

Hier werden beide Netzteile auf Addressen hex58 / hex 59 erkannt.

Wir starten ein paar Checks:

root@custom-hw-image:~# i2cget -y 6 0x58 0x99 i 8
0x09 0x46 0x53 0x50 0x2d 0x47 0x52 0x4f

und lassen uns das umrechnen:

root@custom-hw-image:~# printf "\x09\x46\x53\x50\x2d\x47\x52\x4f\n"
        FSP-GRO

Hier wird der Herstellername ausgegeben.

root@custom-hw-image:~# i2cget -y 6 0x58 0x8B w
0x1879

Um diesen Wert für den Check umzurechnen :

HexWert 0x1879 = Dezimal: 6265

da nach Spezifikation linear gerechnet wird : 6265*2Exp9 = 6265 / 512 = 12.236V

Beide Netzteile im System anmelden und im Kernel Space verfügbar machen

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

Jetzt sind beide Netzteile unter Kontrolle des Kernels:

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:


Die Beiden Netzteile sind erst mal so für direkte Abfragen via I2C nicht erreichbar,

da diese nun komplett im KernelSpace eingebunden sind. (UU Upper Unit)

Jetzt können beide Netzteile vollständig mittels sensors ausgelesen werden


Fortron SP900 readout DUAL Linux



Fehlerfallprüfung Netzteile durchzuführen

Hier wird testweise eine 230V Schiene abgeklemmt, Kaltgerätestecker gezogen.

Fehlerfallprüfung Netzteil 1






*Respektive mit Netzteil 2 den Test durchführen.



Autor: Wilfried Seifert

Wilfried Seifert, tätig in der Abteilung Systems Engineering bei Thomas-Krenn, ist in seinem Arbeitsbereich für die System-/Prototypenentwicklung sowie Softwaredeployment / Rollout unterschiedlicher Architekturen zuständig. LPIC 3 zertifiziert, beschäftigt sich u.a. mit Aufbau / Programmierung Embedded (x64/ARM) Systemen.