---
title: 'IPMI - Hardwareverwaltung aus der Ferne'
url: 'https://gerfficient.com/de/home/ipmi'
markdown: 'https://gerfficient.com/de/home/ipmi.md'
lang: de
date: '2024-01-21'
description: 'IPMI (Intelligent Platform Management Interface) ist eine standardisierte Schnittstelle zur Hardware und Firmware des Computers, über die sie auf Hardwareebene ferngesteuert, überwacht und verwaltet werden können, insbesondere wenn sie ausgeschaltet sind oder kein Betriebssystem installiert ist. Ze…'
---

# IPMI - Hardwareverwaltung aus der Ferne

###  21. Jan. 2024 

IPMI (*Intelligent Platform Management Interface*) ist eine standardisierte Schnittstelle zur Hardware und Firmware des Computers, über die sie auf Hardwareebene ferngesteuert, überwacht und verwaltet werden können, insbesondere wenn sie ausgeschaltet sind oder kein Betriebssystem installiert ist. Zentral zum IPMI ist der BMC (*Baseboard Management Controller*), der als anwendungsspezifische integrierte Schaltung über den IPMB (*Intelligent Platform Management Bus*) mit den grundlegenden Komponenten des Computers auf Hardwareebene, und den erforderlichen Kommunikationsschnittstellen (wie USB oder einer Netzwerkschnittstelle)verbunden ist.

Wie beim BIOS-Chip befindet sich auch ein BMS-Chip auf der Hauptplatine, der gestartet wird (vergleichbar mit dem Booten), sobald der Computer mit Standbystrom versorgt wird (also sobald das Netzteil eingeschaltet wird). Nachdem der BMC eine Reihe grundlegender Tests der Hardware ausgeführt hat, wird eine Schnittstelle (z.B. eine Webseite) bereitgestellt, auf die man als Administrator zugreifen kann, um den Computer zu verwalten. Um Unberechtigten den Zugriff zu verweigern, muss man sich authentifizieren, um auf diese Schnittstelle zugreifen zu können.

Erwirbt man aber eine gebrauchte Hauptplatine, besteht die Möglichkeit, dass das Benutzername und/oder Passwort geändert wurden. Um auch auf das IPMI zugreifen zu können, müssen die Zugangsdaten geändert werden. Hier können Werkzeuge, wie `ipmi-config` oder `ipmitool` Abhilfe verschaffen. Dieselben Werkzeuge können auch Einstellungen ändern, um z.B. die Lüftersteuerung an geänderte Hardware anzupassen. Dieser Beitrag erläutert, wie diese Werkzeuge installiert und benutzt werden können.

## Installation

In meinem Home-Lab setzte ich Unraid ein, wo Docker-Container und Plugins installiert werden können. Hierbei kann das [IPMI-Plugin](https://github.com/SimonFair/IPMI-unRAID/) installiert werden, wodurch auch der Befehl `ipmi-config` (und weitere IPMI-Befehle) für die Konsole installiert werden. Um `ipmitool` zu installieren, muss zuerst das Plugin [NerdTools](https://github.com/UnRAIDES/unRAID-NerdTools) installiert, und dann in den Einstellungen des Plugins `ipmitool` hinzugefügt werden.

## Netzwerk

Sollte der BMC sich nicht mit dem Heimnetz verbinden (z.B. weil eine statische IP gespeichert war, die nicht zur neuen Netzwerkkonfiguration passt), so sollte der BMC eine neue IP-Adresse dynamisch beziehen. Hierfür ändert man die Netzwerkeinstellungen des BMC auf DHCP:

```
ipmi-config --commit --key-pair=Lan_Conf:IP_Address_Source=Use_DHCP
```

## Benutzer

Sobald man dann die Admin-Webseite aufrufen kann, muss man sich anmelden.

![login](https://gerfficient.com/user/pages/home/ipmi/login.png "login")

Ab Werk sind die Zugangsdaten ADMIN und ADMIN. Sollte das Passwort jedoch geändert worden sein, kann man ein neues wie folgt definieren:

```
ipmi-config --commit --key-pair=User2:Password=new_password
```

Oder mit:

```
ipmitool user set password 2 new_password
```

Hierbei ist `User2` bzw. die Benutzer-ID `2` ausgewählt, da dies das Konto des Administrators war. Welche Benutzer es gibt, und welche ID sie haben, kann mit dem folgenden Befehlen aufgeführt werden:

```
ipmi-config --checkout | grep User
```

oder

```
ipmitool user list
```

## Lüfter

Da nicht jedes Home-Lab klassische Serverlüfter einsetzt (insbesondere, wenn der Server im Arbeitszimmer stehen und nicht zu laut sein soll) kann es wünschenswert sein, die Lüftereinstellungen anzupassen. Hierfür

```
ipmi-sensors-config --checkout | grep FAN
```

oder

```
ipmitool sensor
```

Die Ausgabe sollte dann z.B. folgende informationen enthalten:

```
Section 1009_FAN1
Section 1076_FAN2
Section 1143_FAN3
Section 1210_FAN4
Section 1277_FAN5
```

bzw. für `ipmitool`

```
...
FAN1                     | 3100.000   | RPM        | ok    | 200.000   | 500.000   | 800.000   | 25300.000 | 25400.000 | 25500.000 
FAN2                     | 2200.000   | RPM        | ok    | 200.000   | 500.000   | 800.000   | 25300.000 | 25400.000 | 25500.000 
FAN3                     | 2200.000   | RPM        | ok    | 200.000   | 500.000   | 800.000   | 25300.000 | 25400.000 | 25500.000 
FAN4                     | na         |            | na    | na        | na        | na        | na        | na        | na        
FAN5                     | 3200.000   | RPM        | ok    | 200.000   | 500.000   | 800.000   | 25300.000 | 25400.000 | 25500.000 
...
```

Inspiziert man nun die Einstellungen für FAN1 mit:

```
ipmi-sensors-config --checkout --section=1009_FAN1
```

erhält man folgende Informationen:

```
Section 1009_FAN1
        ## Possible values: Yes/No
        Enable_All_Event_Messages                                                   Yes
        ## Possible values: Yes/No
        Enable_Scanning_On_This_Sensor                                              Yes
        ## Possible values: Yes/No
        Enable_Assertion_Event_Lower_Critical_Going_Low                             Yes
        ## Possible values: Yes/No
        Enable_Assertion_Event_Lower_Non_Recoverable_Going_Low                      Yes
        ## Possible values: Yes/No
        Enable_Assertion_Event_Upper_Critical_Going_High                            Yes
        ## Possible values: Yes/No
        Enable_Assertion_Event_Upper_Non_Recoverable_Going_High                     Yes
        ## Possible values: Yes/No
        Enable_Deassertion_Event_Lower_Critical_Going_Low                           Yes
        ## Possible values: Yes/No
        Enable_Deassertion_Event_Lower_Non_Recoverable_Going_Low                    Yes
        ## Possible values: Yes/No
        Enable_Deassertion_Event_Upper_Critical_Going_High                          Yes
        ## Possible values: Yes/No
        Enable_Deassertion_Event_Upper_Non_Recoverable_Going_High                   Yes
        ## Give valid input for sensor type = Fan; units = RPM
        Lower_Non_Critical_Threshold                                                800.000000
        ## Give valid input for sensor type = Fan; units = RPM
        Lower_Critical_Threshold                                                    500.000000
        ## Give valid input for sensor type = Fan; units = RPM
        Lower_Non_Recoverable_Threshold                                             200.000000
        ## Give valid input for sensor type = Fan; units = RPM
        Upper_Non_Critical_Threshold                                                25300.000000
        ## Give valid input for sensor type = Fan; units = RPM
        Upper_Critical_Threshold                                                    25400.000000
        ## Give valid input for sensor type = Fan; units = RPM
        Upper_Non_Recoverable_Threshold                                             25500.000000
        ## Give valid input for sensor type = Fan; units = RPM; 'None' to not use hysteresis
        Positive_Going_Threshold_Hysteresis                                         100.000000
        ## Give valid input for sensor type = Fan; units = RPM; 'None' to not use hysteresis
        Negative_Going_Threshold_Hysteresis                                         100.000000
EndSection
```

So kann man nun die Schwellenwerte einzeln auf die Werte ändern, die zu dem eingebauten Lüfter am besten passen. Lüfter von Noctua z.B. drehen sich so langsam, dass eine Schwelle von 500 rpm (Umdrehungen pro Minute) zu hoch sein könnte. Der Server würde dann immer einen Fehler des Lüfters erkennen und in umgehend mit 100% ansteuern. Die Schwellenwerte können dann wie folgt geändert werden:

```
ipmi-sensors-config --commit --key-pair=1009_FAN1:Lower_Non_Critical_Threshold=300
ipmi-sensors-config --commit --key-pair=1009_FAN1:Lower_Critical_Threshold=200
ipmi-sensors-config --commit --key-pair=1009_FAN1:Lower_Non_Recoverable_Threshold=100
```

Und auf vergleichbare Weise können auch die Einstellungen der anderen Lüfter geändert werden.

---

## Navigation

- Parent: [Home](https://gerfficient.com/de/index.md)
- Previous: [p5.js](https://gerfficient.com/de/home/p5js.md)
- Next: [SVG als Favicon](https://gerfficient.com/de/home/svg-favicons.md)
