TeamSpeak-3-Status auf dem OLED der SteelSeries Arctis Nova Pro Basisstation: wer gerade spricht, ob dein Mikro stumm ist, wer den Channel betritt, wer dich anstupst.
Ein einzelnes natives TeamSpeak-Plugin. Kein Hintergrunddienst, kein zusätzliches Programm, kein Autostart-Eintrag.
┌──────────────────────────────┐
│ ♪ Anna │
│ Bernd │
│ Lobby 4/7 │
└──────────────────────────────┘
128 × 64, 3 Zeilen
Sprache: Deutsch und Englisch, folgt standardmäßig der Windows-Anzeigesprache.
Zehn Bausteine, einzeln an- und abschaltbar, in frei wählbarer Reihenfolge:
| Anzeige | wann |
|---|---|
| Wer spricht | bis zu drei Namen, einer je Zeile, mit Sprech-Icon |
| Stumm gesprochen | du redest ins stumme Mikrofon — schlägt alles andere |
| Angestupst | wer, plus die Nachricht |
| Ping / Paketverlust | nur bei schlechten Werten (Schwellen einstellbar) |
| Verbindungsstatus | Verbinde…, Getrennt |
| Neue Nachricht | Absender und Anfang der Nachricht |
| Buddy kommt online | jemand von deiner Buddy-Liste betritt den Server |
| Betritt Channel | jemand kommt in deinen Channel |
| Mute / Deaf | kurz nach dem Umschalten |
| Channel | Name plus aktiv/gesamt — stumme, taube und abwesende Leute sind da, aber nicht ansprechbar |
Das Display wird nur belegt, wenn es etwas zu melden gibt, und danach sofort an SteelSeries GG zurückgegeben. Läuft nebenbei Musik, behältst du deine NowPlaying-Anzeige, solange in TeamSpeak nichts passiert.
Das ist keine Sparsamkeit, sondern eine Notwendigkeit: Bei mehreren aktiven GameSense-Apps wechselt GG zwischen den Anzeigen und flackert dabei sichtbar. Eine Dauerbelegung würde deine Musikanzeige zerhacken. Ausführlich in ADR 0006 und ADR 0007.
| Betriebssystem | Windows |
| TeamSpeak | 3.6.x, 64 Bit (Plugin-API 26) |
| Hardware | SteelSeries Arctis Nova Pro Wireless — Basisstation mit 128×64-OLED |
| Software | SteelSeries GG muss laufen — ihm gehört das Display |
Andere SteelSeries-Geräte mit Bildschirm sind nicht ausgeschlossen: Das Plugin bindet den generischen Gerätetyp
screened. Getestet ist ausschließlich die Nova-Pro-Basisstation.
ts3-steelseries-plugin-<version>.ts3_pluginvon der Releases-Seite laden.- Doppelklick. TeamSpeak fragt nach und installiert selbst.
- TeamSpeak neu starten.
- Extras → Optionen → Addons — Plugin aktivieren.
Falls der Doppelklick nicht greift, ist .ts3_plugin schlicht ein ZIP-Archiv:
- Umbenennen in
.zipund entpacken. plugins\ts3_steelseries.dllnach%APPDATA%\TS3Client\plugins\kopieren.- TeamSpeak neu starten und unter Addons aktivieren.
Öffne die Einstellungen (siehe unten). Unten links steht entweder „GameSense verbunden (127.0.0.1:…)" oder „SteelSeries GG läuft nicht". Das beantwortet die häufigste Frage sofort, ohne ins Log zu schauen.
Zwei Wege:
- Extras → Optionen → Addons → Plugin auswählen → Einstellungen
- Menüband Plugins → TS3 SteelSeries OLED → Einstellungen
Einstellbar sind: welche Anzeigen aktiv sind und in welcher Reihenfolge, die Dauer je Anzeige (1–60 s), die Warnschwellen für Ping und Paketverlust, die Buddy-Liste und die Sprache. Speichern wirkt sofort — kein TeamSpeak-Neustart.
Buddys nimmst du per Rechtsklick auf einen Nutzer auf (Plugins → TS3 SteelSeries
OLED → Als Buddy merken) oder trägst die UID im Dialog ein. Gespeichert wird die
CLIENT_UNIQUE_IDENTIFIER, nicht der Nickname — der Eintrag übersteht also eine
Umbenennung.
Alles landet in %APPDATA%\TS3Client\plugins\ts3_steelseries\config.json und kann auch
direkt bearbeitet werden; das Schema steht in configuration.md.
Ehrlichkeitshalber vorweg — das meiste davon ist gemessen, nicht vermutet:
Drei Zeilen, rund 16 Zeichen (12 mit Icon). Der Font ist fest, ein Icon kostet die 32 linkesten Pixel und damit vier Zeichen.
Es gibt keinen Bildlauf. Zu langer Text wird abgeschnitten, nicht durchgescrollt —
mit einem absichtlich viel zu langen Text nachgemessen. Lange Nicknames werden deshalb
gekürzt (EinSehrLangerN.). Dass die NowPlaying-App scrollen kann, hilft nicht: Sie
erreicht das offenbar über einen anderen Mechanismus als den dokumentierten
JSON-Texthandler.
Keine Grafik. Beide dokumentierten Bitmap-Wege des SDK wurden geprüft und zeigen auf diesem Gerät nichts an. Nur Text.
Flackern bei paralleler GameSense-App. Zeigt gleichzeitig NowPlaying oder die CS2-App etwas an, wechselt GG zwischen den Anzeigen. Das Plugin hält den Schirm deshalb nur kurz — das verkürzt das Flackern auf Sekunden, beseitigt es aber nicht.
Nur der aktive Server-Tab. Bei mehreren Verbindungen zählt der Tab im Vordergrund (ADR 0004).
Eigene Buddy-Liste. TeamSpeaks Freunde-/Feinde-Verwaltung ist clientintern und wird Plugins überhaupt nicht angeboten — eine Suche über die gesamten SDK-Header findet weder Funktion noch Enum-Wert. Deshalb die separate Liste.
Ohne SteelSeries GG bleibt das Display leer. Das Plugin wartet mit Backoff und verbindet sich, sobald GG startet.
Nach einem TeamSpeak-Update kann das Plugin wortlos verschwinden. Dann hat sich
PLUGIN_API_VERSION geändert und es braucht einen neuen Build — die erste
Diagnosefrage bei „geht nicht mehr".
Fremde GameSense-Apps können das Display zerstören. Issue #66 im SDK, offen und ungefixt. Wir senden seriell und rate-limitiert; gegen andere Schreiber hilft das nicht. Abhilfe: Basisstation kurz stromlos machen.
- Visual Studio 2022 oder neuer mit der Workload Desktop-Entwicklung mit C++
- Darin zusätzlich, unter Einzelne Komponenten:
- Windows 11 SDK
- C++-CMake-Tools für Windows
Beide fehlen in manchen Standardinstallationen der Workload. Ohne Windows SDK kompiliert gar nichts, ohne CMake-Tools gibt es keine
cmake.exe. CMake geht alternativ perwinget install Kitware.CMake.
git clone --recursive https://github.com/MYF540/ts3-steelseries-plugin.git
cd ts3-steelseries-plugin
cmake --preset release
cmake --build --preset releaseOhne --recursive geklont? git submodule update --init --recursive nachholen — das
TeamSpeak-Plugin-SDK hängt als Submodul unter third_party/.
Das Ergebnis liegt in build\release\bin\RelWithDebInfo\ts3_steelseries.dll.
Externe Abhängigkeiten holt CMake selbst (nlohmann/json, für Tests doctest); beim ersten Konfigurieren wird also Netzzugang gebraucht.
ctest --preset debug24 Unit-Tests über Composer, Widgets und Konfiguration — ohne laufenden TeamSpeak und ohne angeschlossenes Headset.
.\tools\package.ps1 -Preset releaseLegt dist\ts3-steelseries-plugin-<version>.ts3_plugin an. Die Versionsnummer steht
ausschließlich in CMakeLists.txt und wird überall eingesetzt.
| Werkzeug | Zweck |
|---|---|
tools\install-dev.ps1 |
DLL ins TeamSpeak-Plugin-Verzeichnis kopieren |
tools\smoke-test.ps1 |
DLL laden und init/shutdown fahren — ohne TeamSpeak |
tools\smoke-test.ps1 -Configure |
zusätzlich den Einstellungsdialog öffnen |
tools\gamesense-probe.ps1 |
prüfen, welcher GameSense-Gerätetyp das Display erreicht |
tools\gamesense-capabilities.ps1 |
Zeilenzahl, Bitmap, Freigabeverhalten, App-Konkurrenz |
Der Smoke-Test ist der Grund, warum die Schleife erträglich ist: Alles unterhalb der ABI-Schicht lässt sich prüfen, ohne TeamSpeak jedes Mal neu zu starten.
| Symptom | wahrscheinlichste Ursache |
|---|---|
| Plugin taucht in TS3 gar nicht auf | 32-Bit-Build, oder DLL im falschen Verzeichnis |
| Gelistet, lässt sich nicht aktivieren | PLUGIN_API_VERSION passt nicht zum Client |
| Aktiv, Display bleibt leer | GG läuft nicht — Statuszeile im Einstellungsdialog prüfen |
| Nichts erscheint, obwohl was passiert | Anzeige im Dialog deaktiviert, oder eine andere GameSense-App hat den Schirm |
| Pixelmüll | Issue #66, fremder Schreiber — Basisstation neu starten |
| Buddy meldet sich nicht | Buddy-Liste leer, oder die UID passt nicht (Nicknames zählen nicht) |
Log: %APPDATA%\TS3Client\plugins\ts3_steelseries\ts3_steelseries.log. Für mehr Details
in config.json unter logging.level auf "debug" stellen.
TeamSpeak 3 Client
└─ ts3_steelseries.dll
├─ TS3-Callbacks ──► ClientState (wer spricht, Mute, Channel, Ereignisse)
├─ Widgets ──► Composer (was ist einen Frame wert?)
└─ GameSense HTTP ──► SteelSeries GG ──► OLED
TS3-Callbacks laufen auf einem Client-Thread, der auch Audio bedient — sie schreiben deshalb nur Zustand und wecken einen eigenen Worker-Thread, der die Netzarbeit macht.
| Dokument | Inhalt |
|---|---|
| architecture.md | Schichten, Threading, Datenmodell, Fehlerverhalten |
| widgets.md | Wie man eine Anzeige hinzufügt |
| configuration.md | Config-Schema und Dialog |
| gamesense-notes.md | Gemessene GameSense-Fakten und Fallstricke |
| ts3-plugin-notes.md | TS3-SDK-Fakten und Fallstricke |
| decisions/ | Architekturentscheidungen samt verworfener Alternativen |
| roadmap.md | Entstehungsgeschichte, inklusive der Sackgassen |
Eine neue Anzeige kostet eine Datei in src/widgets/ plus eine Registrierungszeile —
Composer, Dialog und Konfiguration greifen sie automatisch auf.
MIT — Copyright © 2026 MYF540.
Fremde Bestandteile sind in THIRD-PARTY-NOTICES.md aufgeführt. Zwei Punkte daraus sind erwähnenswert:
nlohmann/json(MIT) ist header-only und damit in der DLL enthalten. Der Lizenzhinweis liegt deshalb auch dem.ts3_plugin-Paket bei.- Das TeamSpeak-Plugin-SDK steht unter „Copyright © TeamSpeak Systems GmbH. All
rights reserved." — keine Open-Source-Lizenz. Es liegt als Git-Submodul und wird von
diesem Repository nicht mitverteilt; beim Klonen holt
git submodule updatees direkt von TeamSpeak.