Die Wärmebildkamera Thermal Master P2 Pro mit Lightning-Stecker läuft am iPhone. Am Windows-PC von oleksandrtashno meldete die Thermal-Master-App nur “no camera”. Mit p2pro-ios-viewer bekommst du das Livebild dieser Kamera auf den PC und kannst Temperaturen messen, aufnehmen und per RTSP streamen. Das Reverse Engineering und die erste Version stammen von oleksandrtashno, ich stelle hier meinen Fork vor.
Vibe-Coding-Hinweis: Laut README des Originalprojekts hat der KI-Assistent Claude Code, Reverse Engineering und README im Chat erstellt, oleksandrtashno stellte die Hardware, testete und gab die Richtung vor. Meine Erweiterungen sind ebenfalls mit Claude entstanden. Behandle das Projekt als Experiment, geprüfte Software ist es nicht.

Die Oberfläche, unter Linux aus einem Einzelbild des USB-Mitschnitts gerendert. Dem Mitschnitt fehlt die Shutter-Referenz, deshalb rauscht das Bild stärker als im Livebetrieb, und die Temperaturen im Bild sagen nichts aus.
Die Kamera gibt sich als iPhone-Zubehör aus
Unter Windows taucht die Kamera als USB\VID_0BDA&PID_5840 auf, ohne Webcam-Schnittstelle (UVC). Sie bietet zwei herstellerspezifische Interfaces an: iAP Interface und com.xinfrared.pios1. Über das erste spricht sie Apples Zubehörprotokoll iAP2, über das zweite laufen Kommandos und Video. Die Software übernimmt also die Rolle des iPhones.
Der Weg zum Videobild
Diesen Weg ist oleksandrtashno gegangen, ich gebe ihn hier nach dem README wieder. Zuerst entstand ein iAP2-Nachbau in Python, der durch Handshake, Authentifizierung und Identifikation kam. Die Kamera akzeptierte das gesendete “AuthenticationSucceeded”, ohne dass der Nachbau ihr Zertifikat prüfte, und Apple-Hardware war nicht nötig. Auf dem Datenkanal antwortete sie auf ein paar Info-Kommandos. Blindes Probieren fand aber kein Kommando, das den Videostrom startet.
Den Videostart lieferte dann ein Mitschnitt: Ein USB Packet Viewer hing zwischen iPhone und Kamera, während die iOS-App das Bild zeigte.

Das iPhone hängt über den Lightning-USB-Adapter am HOST-Port des Analyzers, die Kamera über ihren Adapter und eine Verlängerung am DEVICE-Port. Foto: oleksandrtashno.
Im Mitschnitt stehen 1151 Kommandos, die die iOS-App vor dem Videostart sendet. Darunter sind 1013 Kommandos mit dem Befehlsbyte 1b, vermutlich ein Tabellen-Upload. Der Viewer schickt alle 1151 unverändert an die Kamera und bekommt danach Video. Ob das letzte Kommando 03 02 01 allein reichen würde, ist laut README ungetestet.
Ein Frame besteht aus 210 USB-Paketen mit je 506 Byte Nutzdaten, zusammen 260 × 204 Werte zu 16 Bit. Davon gehören 256 × 196 zum Bild, das README nennt 24,4 bis 24,9 gemessene Frames pro Sekunde. Ohne Abzug eines Referenzbilds bei geschlossenem Shutter siehst du fast nur Festmusterrauschen.
Die Protokollnotizen und der Mitschnitt liegen im Repository. Der Mitschnitt enthält auch das Wärmevideo der Sitzung, rund 400 Frames.
Funktionen
Messen, Paletten, Bildverbesserung, Aufnahme und RTSP gehören zum Originalprojekt. Mein Fork ergänzt die Windows-Exe mit ffmpeg, Drehen und Spiegeln, den Export, die Treiberinstallation und eine überarbeitete Oberfläche.
- Messen: Ein Klick setzt einen Temperatur-Cursor, durch Ziehen entsteht ein Rechteck mit Maximum, Minimum und Mittelwert. Dazu kommen Markierungen für den heißesten und kältesten Punkt, Fadenkreuz, °C und °F.
- Anzeige: Du wählst aus neun Paletten, automatischer oder fester Skala und den Kontrastmodi linear, Plateau-Histogramm oder CLAHE. Drehen in 90-Grad-Schritten und Spiegeln gehen auch, Cursor und Rechtecke wandern mit.
- Bildverbesserung: Die App repariert Fehlpixel, entfernt Streifenrauschen und entrauscht zeitlich mit Bewegungserkennung. Diese drei Schritte ändern auch die Messwerte. Detailverstärkung, Schärfen und Hochskalieren bis zur neuronalen ESPCN-Superresolution ×4 ändern nur das Bild.
- Ausgabe: Du speicherst Screenshots als PNG oder JPEG und die Temperatur jedes Pixels als CSV, XML oder 32-Bit-TIFF. Videos landen als MP4 auf der Platte, und der RTSP-Stream läuft unter
rtsp://<pc-ip>:8554/thermal.
Treiber unter Windows
Die App prüft beim Start, welcher Treiber an der Kamera hängt, und bietet bei Bedarf zwei Wege an:
A: WinUSB (empfohlen). Die App bindet den Windows-eigenen WinUSB-Treiber an die Kamera. Du lädst nichts herunter und bestätigst eine UAC-Abfrage. Im Menü Camera > Remove Windows Driver Binding… machst du das rückgängig.
B: libusbK vom Hersteller. Die App lädt das rund 55 MB große Installationsprogramm von Thermal Master und entpackt daraus nur den Ordner drivers. Das Paket ist nicht signiert, deshalb dürfte pnputil auf aktuellem Windows scheitern. Dann fragt die App nach und startet auf Wunsch das driver_install.exe des Herstellers mit Adminrechten.
Laut statischer Analyse legt das bei Weg B enthaltene dpscat.exe ein selbstsigniertes Zertifikat namens “libwdi” in die Speicher Root und TrustedPublisher des Rechners und entfernt es nicht wieder. Du kannst es in certlm.msc löschen. Für diese Analyse habe ich die Herstellertools nicht ausgeführt. Weg A installiert kein Zertifikat oder weitere Software sondern nutzt orginal Windows-Treiber.
Installation
Unter Releases liegt mit v1.0.2 eine rund 214 MB große P2ProViewer.exe, die ffmpeg und MediaMTX mitbringt. Oder du startest aus dem Quellcode:
git clone https://github.com/maggo1404/p2pro-ios-viewer
cd p2pro-ios-viewer
pip install -r requirements.txt
python app.py
Aus dem Quellcode brauchst du für RTSP zusätzlich MediaMTX, das du mit python tools/get_mediamtx.py holst.
Schließe vorher die Thermal-Master-App. Zieh die Kamera außerdem vor jedem Start ab und steck sie neu ein: Nach einer Sitzung antwortete sie in den Tests von oleksandrtashno erst nach einer Stromunterbrechung wieder auf den Handshake.
Temperaturen
Verlass dich nicht auf die Messwerte. Die Kamera liefert Rohwerte von 0 bis 16383, die mit steigender Temperatur fallen. Der Mitschnitt enthält keine erkennbaren Umrechnungsdaten, und die App rechnet deshalb linear:
Die Vorgaben gain 0,012 °C pro Zählwert und offset 28 °C sind grobe Schätzungen ohne Vergleich mit einer Referenz, der Fehler ist also unbekannt. Unter Calibrate temp… klickst du eine Stelle an und trägst ihre echte Temperatur ein. Ein Punkt setzt den Offset, ein zweiter bei anderer Temperatur auch die Steigung. Auch für diese Kalibrierung fehlt bisher eine Prüfung an Objekten bekannter Temperatur.
Einschränkungen
- Die App lief bisher mit zwei P2 Pro, beide mit Lightning-Stecker und unter Windows. Für die USB-C-Version, andere Kameras und andere Betriebssysteme gibt es keine Tests.
- Die 1151 Startkommandos stammen aus der Sitzung mit einer einzigen Kamera und könnten auf anderen Geräten versagen.
- Den RTSP-Stream hat bisher nur ein ffmpeg-Client auf demselben PC empfangen.
Quellcode
Das Original liegt unter oleksandrtashno/p2pro-ios-viewer, mein Fork unter maggo1404/p2pro-ios-viewer. Beide haben bisher keine Lizenzdatei. Falls du eine andere P2 Pro mit Lightning-Stecker hast, schreib in einem Issue, ob die Startsequenz auf deinem Exemplar funktioniert.
73 de DC8WAN
