Der Controller und seine Firmware: DDM, APC, Speicher, Schutz
Jeder verwaltete Transceiver hat einen kleinen Computer eingebaut. Der Mikrocontroller (MCU) misst, regelt, meldet und — aus Sicht des Programmierers am wichtigsten — ist der Speicher, den Sie lesen und schreiben. Ob ein Modul ein einfaches EEPROM hat oder einen MCU, der eines vortäuscht, entscheidet, wie es codiert werden kann, warum manche Schreibvorgänge nach einem Stromzyklus verschwinden und warum es überhaupt Passwörter gibt. Diese Seite beschreibt, was der Controller tut und wie sich sein Design auf der Werkbank zeigt.
Was der MCU tut
| Aufgabe | Details | Sichtbar als |
|---|---|---|
| Messung | tastet Temperatur (Thermistor oder On-Chip-Sensor), Vcc, Laser-Bias, Monitor-PD-Strom (Tx) und Empfänger-Fotostrom (Rx) mehrmals pro Sekunde über einen 10–12-Bit-ADC ab; wendet die Werkskalibrierung an | DDM-Werte — Parameter |
| APC — automatische Leistungsregelung | vergleicht den Monitor-PD-Strom mit dem Werkssollwert und passt den Bias-DAC des Treibers an | konstante Tx-Leistung, steigender Bias — Tx-Bias & Alterung |
| Temperaturkompensation | Lookup-Tabellen passen Modulationsstrom und, bei PAM4, DSP-Einstellungen über der Temperatur an | stabiles Extinktionsverhältnis |
| TEC-Regelung | PID-Regelkreis, der bei gekühlten Modulen die Lasertemperatur hält; Rückkopplung des Wellenlängen-Lockers bei DWDM | Lasertemperatur, TEC-Strom-Monitore |
| Schwellwerte und Flags | vergleicht jeden Monitorwert mit den Alarm-/Warnschwellen, setzt verriegelte Flags, steuert IntL | Schwellwerte & Alarme |
| Low-Speed-Pins | liest TX_DISABLE, RS0/RS1, LPMode, ResetL; steuert TX_FAULT, RX_LOS (oder gattert die Hardwaresignale) | Pin-Verhalten |
| Zweidraht-Slave | antwortet auf A0h/A2h (SFP) oder A0h mit Pages/Bänken (QSFP, CMIS) | die Speicherkarte — Zweidraht-Schnittstelle |
| Zustandsautomaten | CMIS-Modul- und Datenpfad-Zustände; Anwendungsauswahl; Squelch | CMIS |
| Schutz- und Vendor-Funktionen | Passwörter, schreibgeschützte Bereiche, Save-Befehle, Vendor-Unlock, Authentifizierungssignaturen | Schreibschutzarten |
| CDB/Firmware-Update | empfängt und flasht bei CMIS-Modulen neue Firmware-Images | Firmware-Versions-Bytes |
Typische Bauteile: 8-Bit-MCUs (8051-Klasse) mit wenigen kB Flash in günstigen SFP/SFP+; 32-Bit-Cortex-M-Klasse in 100G+- und CMIS-Modulen; manche Hersteller setzen einen dedizierten Transceiver-Controller-ASIC ein, der ADCs, DACs und den Zweidraht-Slave integriert.
Zwei Wege, den Speicher aufzubauen
| Design | Wie die Karte gespeichert wird | Folgen für die Programmierung |
|---|---|---|
| Diskretes EEPROM (z. B. AT24C02-Klasse) für A0h, MCU für A2h | die Identität in A0h ist ein echtes serielles EEPROM, mit dem Host und Programmiergerät direkt sprechen; der MCU übernimmt nur die Diagnose | Schreibvorgänge auf A0h sind normale EEPROM-Schreibvorgänge — t_WR und Seitengröße beachten; ein Hardware-WP-Pin kann sie blockieren (Schreibschutzarten 1–3) |
| MCU-emulierte Karte | der MCU beantwortet jede Zweidraht-Anfrage aus dem RAM und spiegelt Änderungen in sein internes Flash/EEPROM — oder auch nicht | Schreibvorgänge landen dort, wo die Firmware entscheidet: akzeptiert, ignoriert, passwortgesperrt, erst nach einem Save-Befehl gespeichert, oder beim nächsten Boot durch die eigene Kopie der Firmware überschrieben (Arten 4–5) |
| Hybrid | EEPROM für den Vendor-Block, MCU für Pages und Passwörter | gemischte Regeln je Byte-Bereich |
Eine emulierte Karte erklärt die meisten Rätsel auf der Werkbank: FFh von einer Page, die die Firmware nicht implementiert, Schreibvorgänge, die „gelingen“ und dann zurückspringen, Bytes, die in einem Bereich schreibgeschützt und im nächsten frei sind, Clock Stretching, während der MCU mit dem Sampling beschäftigt ist (EEPROM-Lese-/Schreibfehler).
Boot und das t_init-Fenster
Beim Einschalten lädt der MCU Kalibrierung und Identität aus seinem nichtflüchtigen Speicher, startet den ADC, führt die APC bis zu ihrem Sollwert und aktiviert erst dann den Zweidraht-Slave und löscht data-not-ready. Das sind die 300 ms (SFP) bis 2 s (QSFP/CMIS), die die Spezifikationen einräumen, bevor ein Host Antworten erwarten darf, und der Grund, warum ein Lesevorgang unmittelbar nach dem Einstecken Datenmüll liefert (Was der Host tut).
Hier lebt die Kalibrierung
Die rohen ADC-Zählwerte bedeuten nichts ohne die Konstanten, die die Fabrik an einer Teststation gemessen hat: Monitor-PD-Strom vs. tatsächliche Sendeleistung, Empfänger-Fotostrom vs. Eingangsleistung bei der Wellenlänge des Moduls, Thermistorkurve, Bias-DAC-Skalierung. Bei intern kalibrierten Modulen wendet die Firmware sie an und meldet physikalische Einheiten; bei extern kalibrierten Modulen werden die Konstanten in A2h 56–91 geschrieben, damit der Host sie anwendet (Kalibrierung). Das Überschreiben des Vendor-Bereichs, in dem manche Firmwares diese Konstanten aufbewahren, erzeugt absurde DDM-Werte oder eine tote APC-Schleife — die klassische Art, wie ein unbedachter Schreibvorgang ein Modul „bricked“ (Fertigung & Prüfung).
Wie der Schutz umgesetzt ist
| Mechanismus | Umsetzung | Sicht auf der Werkbank |
|---|---|---|
| Passwort | die Firmware vergleicht die 4 in den Passwortbereich geschriebenen Bytes (SFP A2h 123–126, QSFP 123–126, CMIS 122–125) mit einem gespeicherten Wert; schaltet Schreibvorgänge für die Sitzung frei | WRITE FAIL, bis der richtige Wert eingegeben wird — Passwörter |
| Schreibgeschützte Bereiche | die Firmware ignoriert Schreibvorgänge in Bereiche, die sie als schreibgeschützt betrachtet (Prüfsummen, Schwellwerte, Kalibrierung, Vendor-Bereich) | beim Rücklesen unveränderte Bytes, kein Fehler |
| Hardware-WP-Pin an einem diskreten EEPROM | der Pin liegt im Modul fest auf High oder wird vom MCU angesteuert | erfordert, dass das Programmiergerät ihn ansteuert |
| Save-Befehl | Schreibvorgänge landen im RAM; eine herstellerspezifische Sequenz übernimmt sie ins Flash | springt nach einem Stromzyklus zurück, sofern die Sequenz nicht gesendet wird |
| Firmware-Spiegel | beim Booten schreibt die Firmware die Karte aus ihrem eigenen Image neu | Änderungen verschwinden bei jedem Stromzyklus — nur das Tool des Herstellers kann das Image ändern |
| Authentifizierung | die Firmware berechnet eine Signatur (Hash aus Seriennummer, Vendor-Daten und einem Geheimnis) in Vendor-Bytes; der Host prüft sie | Identitätsänderungen bestehen die Prüfsummen, und dennoch lehnt der Host sie ab — Herstellersperre |
Wie sich jede Art erkennen und programmieren lässt: Schreibschutzarten, EEPROM-Umcodierung.
Firmware-Updates
CMIS-Module können über den Zweidraht-Bus per CDB-Befehlen Firmware empfangen (Start-Download, Blöcke schreiben, Abschluss, Ausführen, Commit), oft mit zwei Image-Bänken, sodass ein fehlgeschlagenes Update zurückfällt. SFF-8472/8636-Module haben keinen Standardmechanismus; Hersteller nutzen proprietäre Sequenzen über Vendor-Bytes. Firmware-Fixes sind der Weg, wie Hersteller CMIS-Interoperabilitätsprobleme lösen (CMIS-Probleme), und Firmware-Versions-Bytes (CMIS Lower Page 39–40, Page 01h 128–129) lohnt es sich, zusammen mit der Identität festzuhalten.
Fehlermodi des Controllers
| Symptom | Wahrscheinliche Ursache |
|---|---|
| Modul auf dem Bus unsichtbar, Optik ansonsten in Ordnung | MCU bootet nicht: beschädigte Firmware, Brown-out, defekter Quarz |
| DDM-Werte eingefroren oder absurd | ADC- oder Kalibrierungsdefekt; Firmware hängt |
| Tx-Leistung driftet, obwohl die APC sie halten sollte | Fehler an Monitor-PD oder ADC, APC deaktiviert |
| Zufällige NACKs, langsame Lesevorgänge | MCU überlastet (Sampling), Clock-Stretch-Grenzen durch ein schnelles Programmiergerät überschritten |
| Funktioniert, aber jeder Schreibvorgang springt zurück | Firmware-Spiegel per Design — kein Fehler |
| Modul nach einem Schreibvorgang tot | Firmware-Konfigurations- oder Kalibrierbereich überschrieben |
In CodingBox
CodingBox behandelt das Modul so, wie die Firmware es darstellt: Es erkennt den Kartentyp, wendet bekannte Passwörter und Programmierskripte für Save-Befehl- und Spiegel-Designs an, berechnet Prüfsummen neu, legt vor jedem Schreibvorgang ein Backup an und lässt Sie es aus der Code-Datenbank wiederherstellen, falls ein Controller schlecht reagiert. Der EEPROM-Editor markiert Bereiche, die die Spezifikation als schreibgeschützt oder herstellerspezifisch definiert, damit Sie wissen, wann Sie in das private Territorium der Firmware schreiben.