status:onlinesite:nandecoreghost:user:kiki
       _   _____    _   ______  ________________  ____  ______
      / | / /   |  / | / / __ \/ ____/ ____/ __ \/ __ \/ ____/
  /  |/ / /| | /  |/ / / / / __/ / /   / / / / /_/ / __/
 / /|  / ___ |/ /|  / /_/ / /___/ /___/ /_/ / _, _/ /___
/_/ |_/_/  |_/_/ |_/_____/_____/\____/\____/_/ |_/_____/
                
個人用端末
✦ NANDECORE-TERMINAL // BLOG ✦
kiki@nandecore:~$
リアルタイム
00:00:00
---
23%
signal
ghost sync
87%
stable - no anomalies
blog / OMEN Mindframe Prime FrostCap unter Linux

Das HP OMEN Mindframe Prime ist ein Gaming-Headset mit einem ziemlich eigenwilligen Feature. FrostCap nennt HP das: eine aktive Kühlung für die Ohrmuscheln, damit dir beim Zocken nicht die Löffel schmelzen. Klingt nach Werbeversprechen, funktioniert aber tatsächlich.

Das Problem liegt woanders. HP liefert die Steuersoftware nur für Windows. Unter Linux erkennt der Kernel das Headset als ganz normales USB-Audio-Device. Sound und Mikrofon laufen sofort. Aber FrostCap? Tot. Keine App, kein Treiber, keine einzige Einstellmöglichkeit.

In diesem Artikel zeige ich, wie wir die Kühlung unter Linux steuern, ohne dauerhaft ein Windows offen zu halten. Der Trick: wir fangen die USB-Befehle ab, die das HP-Tool beim Umschalten versendet, und spielen sie auf Linux exakt wieder ein.

Warum wir das Protokoll nicht knacken

Ich hätte das proprietäre Protokoll reverse-engineeren können. Hätte ich aber nicht müssen. Das HP-Tool redet über einen Standard-USB-Control-Transfer mit dem Headset, einen sogenannten HID SET_REPORT. Wir müssen nicht verstehen, was jedes einzelne Byte bedeutet. Wir schnappen uns einfach die Bytes, die beim Wechsel der Kühlstufe rausgehen, und schicken sie später identisch zurück.

Warum den Schlüssel knacken, wenn man ihn nachgießen kann.

Schritt 1: Capture in einer Windows-VM

Ich nutze WinBoat, eine Windows-VM auf Linux mit USB-Passthrough. Jede andere Windows-VM tut es auch.

  • Headset per USB-Passthrough an die VM durchreichen.
  • In der VM HP OMEN Software und Wireshark installieren. Beim Wireshark-Installer USBPcap mitwählen, das ist wichtig.
  • Wireshark starten, Capture auf USBPcap1.
  • In der HP-Software FrostCap durchschalten: Aus, Leicht, Mittel, Stark, wieder Aus.
  • Stoppen und als capture.pcapng speichern.

Eine Sache noch: nur FrostCap anfassen. Sonst mischen sich RGB- oder Audio-Frames in den Capture und wir fischen später die falschen Bytes raus.

Schritt 2: Frames auf dem Linux-Host extrahieren

Weder tshark noch scapy sind auf meinem System installiert. Brauchen wir auch nicht. Wir parsen die pcapng mit reiner Python-Standardbibliothek. Das USBPcap-Format ist simpel: Enhanced Packet Blocks, ein 28 Byte langer Pseudoheader, acht Byte Setup, dann die Report-Daten. Wir filtern auf bmRequestType 0x21 und bRequest 0x09, also HID SET_REPORT, und holen die 16 Byte Payload raus.

Für das Mindframe Prime kommt dabei Folgendes heraus:

  • Aus: 01 05 00
  • Leicht: 01 05 01
  • Mittel: 01 05 02
  • Stark: 01 05 03

Byte 0 ist die Report-ID, Byte 1 die Kühlstufe von 0 bis 3. Das passt exakt zur HeadSetCoolingModes-Enum im Open-Source-Tool HPOmenMindframeControl. Zwei unabhängige Quellen, dieselben Bytes. Damit war klar, dass wir den richtigen Schlüssel haben.

Schritt 3: Replay unter Linux

Mit pyusb senden wir den Frame über einen Control-Transfer:

import usb.core
dev = usb.core.find(idVendor=0x03f0, idProduct=0x3241)
dev.ctrl_transfer(0x21, 0x09, 0x0201, 3, bytes([0x01, 0x05, 0x02] + [0] * 13))

Fertig. Das Headset kühlt auf Mittel.

Schritt 4: Rootlos mit udev

Eine udev-Regel, damit wir nicht für jeden Befehl root brauchen:

SUBSYSTEM=="usb", ATTR{idVendor}=="03f0", ATTR{idProduct}=="3241", MODE="0664", GROUP="dein-user"

Danach udevadm control --reload und udevadm trigger, das Headset einmal ab- und anklemmen. Dann läuft alles als normaler User.

Was bleibt

Wir haben die Windows-Abhängigkeit für FrostCap komplett weggeworfen. Das Headset merkt sich die Stufe ohnehin im Gerät, also reicht ein einmaliger Aufruf. Sound und Mikrofon liefen ohnehin native unter Linux.

Der eigentlich brauchbare Teil ist das Muster dahinter. Es funktioniert für jedes USB-HID-Gerät, das nur Windows-Software mitbringt. Capture, Replay, fertig. Kein Reverse-Engineering, kein Risiko, das Gerät zu verbiegen.

Das komplette Tool, bestehend aus Parser, Replay-Skript und udev-Regel, liegt bei mir. Fragt mich an, falls ich daraus ein Video machen soll.

[ ← back to blog ]
connect
s9@nandecore.net
signal: online