# Embedded Controller

Als Embedded Controller (EC) wird ein spezieller Mikrocontroller in Notebooks bezeichnet, der verschiedene Steuerungsaufgaben unabhängig vom Betriebssystem übernimmt.

## Aufgaben

Ein Embedded Controller hat typischerweise folgende Aufgaben:
* Empfang von Tastendruck-Signalen, sowohl von der Notebook-Tastatur als auch von anderen Tasten und Schaltern (z. B. Einschalt-Taste, Lid-Switch)
* Ein- und Ausschalten des eigentlichen Computersystems
* Ladesteuerung des Akkus
* Messung der Temperatur
* Steuerung der Lüfter und anderer Kühler
* Versetzen des eigentlichen Computersystems in einen „Schlafmodus“ (Standby) und das Wiedererwecken daraus (Resume)
* Steuerung eventueller LEDs am System
Der Embedded Controller ist bei Stromversorgung immer angeschaltet.
Häufig kann das eigentliche Computersystem mit dem Embedded Controller kommunizieren. Dafür wird oft eine der folgenden Kommunikationsformen verwendet:
* ACPI Embedded Controller
* SMBus
* Shared Memory

## Software

Der Embedded Controller hat eigenes RAM und fast immer Flash-ROM, auf dem die auszuführende Software gespeichert ist. Diese Software wird je nach Hersteller unterschiedlich benannt:
* „Firmware“, „EC Firmware“ oder „Embedded Controller Firmware“
* „EC BIOS“ oder „Embedded Controller BIOS“
* „Mikrocontroller Software“
* „Keyboard BIOS“, „Keyboard Controller BIOS“ oder „KBC BIOS“
Viele BIOS-Updates enthalten neben der Aktualisierung der eigentlichen BIOS-Software auch eine Aktualisierung der Embedded Controller Firmware.
In den Fällen, wo es keine jeweils separate Firmware für BIOS und Embedded Controller gibt, hat der Embedded Controller wahrscheinlich zusammen mit der eigentlichen CPU einen gemeinsamen Zugriff auf den einzigen Flash-Speicher des Systems. Dieser gemeinsame Zugriff bedeutet oft auch die Kommunikationsform Shared Memory.

## Name

Der Name „Keyboard Controller BIOS“ kommt daher, dass der Embedded Controller fast immer die Aufgabe der Tastatursteuerung der Notebook-Tastatur übernimmt. Auch historisch gesehen hat sich das zum Embedded Controller entwickelt, was früher lediglich der Tastatur-Controller war. Noch heute wird, wenn mit einem ACPI Embedded Controller kommuniziert wird, der gleiche Weg (Port 0x62 und Port 0x66) verwendet, wie es früher zur Kommunikation mit dem Tastatur-Controller üblich war.

## System-Architekturen

Häufig verwendete Mikrocontroller-Architekturen für Embedded Controller sind:
* Hitachi H8
* National Semiconductor CompactRisc16A („CR16A“) (z. B. für den National Semiconductor PC87570 Embedded Controller)
* MCS-51-Mikrocontroller

## Bekannte Embedded-Controller-Modelle

* National Semiconductor PC87570
** gemeinsamer Zugriff von Host (eigentlicher CPU) und Controller auf gemeinsamen Flash-Speicher
* SMSC LPC47N253
** verwendet MCS-51-Architektur
* EnE KB3886
* EnE KB3910 „EnE 910“

## Ergonomie

Auch wenn der Embedded Controller sehr „tief“ im System ist, kann er für den Nutzer wegen der Steuerung der Kühlung dennoch wichtig sein. Häufig produzieren Notebooks (selbst mit Stromspar-Technologie) so viel Abwärme, dass die Steuerung anhand der Temperatur entscheidet, den Lüfter anzuschalten. Der Lüfter wird dabei nicht einfach angeschaltet, sondern für kurze Zeit „hochgedreht“ und dann auf einer niedrigeren Drehzahl belassen, bis eine gewünschte Temperatur unterschritten wurde. Dies kann für ergonomisches Arbeiten sehr unangenehm sein, insbesondere wenn dies regelmäßig auftritt und der Lüfter – besonders in ruhigen Räumen – deutlich hörbar ist.
Abhilfe schafft hier eine Änderung der Steuerung: Der Lüfter werde nicht mehr „hochgedreht“ und die Drehzahl bleibt – bei moderaten Temperaturen – sehr niedrig. In diesem Fall ist es wahrscheinlich, dass die resultierende Luftströmung nicht mehr turbulent, sondern laminar und der Lüfter damit kaum noch hörbar ist. Oft ist die Kühlleistung eines so modifizierten Systems fast genauso gut wie die des Original-Systems. Ist sie es aber nicht, dauert ein Lüftungsvorgang, bis die Zieltemperatur unterschritten wurde, länger.
Um eine solche Modifikation umzusetzen, ist in der Regel eine Änderung der Embedded Controller Firmware notwendig. Manchmal reicht eine Änderung der ACPI DSDT aus (nämlich dann, wenn die Lüftersteuerung nicht durch den Embedded Controller, sondern durch den ACPI-Interpreter des Systems durchgeführt wird).