# Divoom Pixoo64 Update API Research Dokumentation der Recherche für eine potenzielle RSS-Bridge für Pixoo64 Firmware-Updates. ## Zusammenfassung Die offizielle Divoom API für Firmware-Updates ist **nicht öffentlich zugänglich** und benötigt Authentifizierung mit einem registrierten Gerät. Eine RSS-Bridge ohne physisches Gerät ist daher **nicht umsetzbar**. --- ## Gefundene API-Endpoints ### Base URLs Aus der dekompilierten APK (`com.divoom.Divoom`) gefunden: - `https://appin.divoom-gz.com` - Haupt-API (international) - `https://app.divoom-gz.com` - Alternative API - `https://appchina.divoom-gz.com` - China-spezifisch - `https://appusa.divoom-gz.com` - USA-spezifisch - `https://apptest.divoom-gz.com` - Test-Umgebung - `https://f.divoom-gz.com` - File Downloads - `https://ai.divoom-gz.com` - KI-Features ### Update-Endpoints Aus APK-Analyse (`classes.dex`): ``` Device/GetUpdateInfo - Firmware Update-Informationen Device/GetUpdateFileList - Liste verfügbarer Update-Dateien Device/GetFileVersion - Aktuelle Firmware-Version des Geräts Device/NotifyUpdate - Update-Benachrichtigungen GetNewAppVersion - App-Versions-Updates GetUpdateFileV3 - Update-Datei Download (Version 3) ``` ### Request/Response-Klassen (gefunden in DEX) ```java // Requests com.divoom.Divoom.http.request.device.DeviceGetUpdateInfoRequest com.divoom.Divoom.http.request.device.DeviceGetUpdateFileListRequest com.divoom.Divoom.http.request.device.DeviceGetFileVersionRequest com.divoom.Divoom.http.request.update.GetNewAppVersionRequest // Responses com.divoom.Divoom.http.response.device.DeviceGetUpdateInfoResponse com.divoom.Divoom.http.response.device.DeviceGetUpdateFileListResponse com.divoom.Divoom.http.response.update.GetNewAppVersionResponse ``` --- ## API-Tests ### Test 1: GetUpdateInfo (ohne Parameter) ```bash curl -X POST "https://appin.divoom-gz.com/Device/GetUpdateInfo" \ -H "Content-Type: application/json" -d '{}' ``` **Response:** ```json {"ReturnCode":11,"ReturnMessage":"Token is not match"} ``` ### Test 2: GetUpdateInfo (mit DeviceType) ```bash curl -X POST "https://appin.divoom-gz.com/Device/GetUpdateInfo" \ -H "Content-Type: application/json" -d '{"DeviceType": 1}' ``` **Response:** ```json {"ReturnCode":1,"ReturnMessage":"no device"} ``` ### Test 3: GetUpdateFileList ```bash curl -X GET "https://appin.divoom-gz.com/Device/GetUpdateFileList" ``` **Response:** ```json {"ReturnCode":1,"ReturnMessage":"Failed"} ``` ### Test 4: GetNewAppVersion ```bash curl -X POST "https://appin.divoom-gz.com/GetNewAppVersion" \ -H "Content-Type: application/json" -d '{}' ``` **Response:** ```json {"ReturnCode":3,"ReturnMessage":"Request data is incomplete"} ``` --- ## Authentifizierungs-Anforderungen ### Aus APK-Analyse identifizierte Parameter: **Device-Parameter:** - `DeviceId` - Eindeutige Geräte-ID - `DeviceType` - Gerätetyp (Pixoo64, Pixoo16, etc.) - `DeviceModel` - Modellnummer - `BluetoothDeviceId` - Bluetooth-Gerät-ID **Auth-Parameter:** - `Token` - Authentifizierungs-Token - Wird bei `ReturnCode: 11` mit "Token is not match" abgelehnt ### Error-Codes: - `ReturnCode: 1` - "Failed" / "no device" - `ReturnCode: 3` - "Request data is incomplete" - `ReturnCode: 10` - "Command is not match" - `ReturnCode: 11` - "Token is not match" --- ## Device-Typen (aus APK) ```java DeviceTypeEnum { PIXOO_64, PIXOO_16, PIXOO_MAX, TIMEBOX_EVO, // weitere... } ``` --- ## Externe Ressourcen ### Reddit-Post **URL:** https://old.reddit.com/r/Divoom/comments/1i7fe1u/privacy_check/ **Gefundene Server-Adressen:** ``` api.divoom-gz.com appin.divoom-gz.com fin.divoom-gz.com min-api.cryptocompare.com # Crypto-Preise qt.gtimg.cn # Aktien-Kurse www.googleapis.com # YouTube/Wetter ``` ### GitHub-Projekte #### 1. Pixoo64-Advanced-Tools **URL:** https://github.com/tidyhf/Pixoo64-Advanced-Tools **Relevante Findings:** - Python-Tool für lokale Steuerung - Nutzt `pixoo` und `pixoo1664` Libraries - Cloud API-Endpoints gefunden: ```python DIV_BASE_URL = "https://app.divoom-gz.com" DIV_FILE_URL = "https://f.divoom-gz.com" ``` - Endpoints: - `/User/UserLogin` - Login - `/GetCategoryFileListV2` - Gallery - `/Comment/GetCommentListV3` - Kommentare - `/Cloud/GetLikeUserList` - Likes #### 2. pixoo-homeassistant **URL:** https://github.com/gickowtf/pixoo-homeassistant **Info:** - Home Assistant Integration - Lokale IP-basierte Kommunikation - Keine Firmware-Update-Features #### 3. pixoo_api (APK Reverse Engineering) **URL:** https://github.com/Grayda/pixoo_api/blob/main/NOTES.md **Relevante Endpoints aus decompilierter APK:** - `Device/GetUpdateInfo` - `Device/GetUpdateFileList` - `Device/NotifyUpdate` - `GetNewAppVersion` - `GetUpdateFileV3` **Dokumentation:** - Base URL: `https://appin.divoom-gz.com/` - Undokumentierte Remote API - Verschlüsselung: AES mit Key/IV aus APK #### 4. Firmware-Repository **URL:** https://github.com/amnemonic/Pixoo64 **Verfügbare Versionen:** ``` V90122 - 27 Jul 2022 V90126 - 21 Aug 2022 V90127 - 02 Sep 2022 V90136 - 06 Nov 2022 V90146 - 28 Nov 2022 V90149 - 26 Dec 2022 V90153 - 05 Jan 2023 V90156 - 05 Jan 2023 V90165 - 23 Mar 2023 V90166 - 29 Mar 2023 V90167 - 03 Apr 2023 V90180 - 27 Jul 2023 V90181 - 28 Aug 2023 V90192 - 25 Apr 2024 V90205 - 15 Feb 2025 ``` **Limitations:** - Keine offiziellen Releases - Keine Changelogs - Nur binäre Firmware-Dateien - Unvollständige Sammlung (laut README) --- ## APK-Analyse Details ### Analysierte APK - **Package:** `com.divoom.Divoom` - **Pfad:** `/mnt/d/GitHub/Bridges/com_divoom_Divoom/` - **DEX-Dateien:** 4 (classes.dex, classes2-4.dex) ### Extraktions-Methoden ```bash # URLs extrahieren strings classes*.dex | grep "divoom-gz.com" # API-Endpoints finden strings classes*.dex | grep -E "(Device/|Update/|GetNew)" # Request/Response-Klassen strings classes*.dex | grep "Request\|Response" ``` ### Weitere gefundene Endpoints (nicht Update-bezogen) ``` User/UserLogin Cloud/GetLikeUserList Comment/GetCommentListV3 GetCategoryFileListV2 SocialPlatform/* (OAuth für Twitter, Reddit, TikTok, etc.) ``` --- ## Mögliche zukünftige Ansätze ### Option 1: GitHub-Repository überwachen - **Pro:** Öffentlich zugänglich, keine Auth nötig - **Contra:** - Keine Changelogs - Unvollständige Sammlung - Manuelle Updates durch Community **Implementation:** ```php // GitHub Commits API $url = "https://api.github.com/repos/amnemonic/Pixoo64/commits"; // oder Atom Feed: $url = "https://github.com/amnemonic/Pixoo64/commits/master.atom"; ``` ### Option 2: APK-Updates überwachen - APKPure/APKMirror für App-Versionen - Indirekte Information über neue Features ### Option 3: Mit physischem Gerät Wenn Zugriff auf ein Pixoo64: 1. Gerät in App registrieren 2. Token/DeviceId aus App extrahieren 3. API-Calls mit valider Auth **Token-Extraktion:** ```bash # Aus Android App-Daten (Root erforderlich) adb shell cd /data/data/com.divoom.Divoom/shared_prefs/ cat *.xml | grep -i "token\|deviceid" ``` ### Option 4: Divoom-Website Scraping - Falls offizielle Changelog-Seite existiert - Keine API-Auth nötig --- ## Lokale API (Device) ### Dokumentation **URL:** http://doc.divoom-gz.com/web/#/12?page_id=196 **Info:** - Lokale HTTP-API auf Pixoo64-Gerät - Direkter Netzwerk-Zugriff (IP-basiert) - Keine Firmware-Update-Funktionen - Nur für Display-Steuerung **Kategorien:** - Dial control - Channel control - System settings - Tool functions - Animation functions --- ## Fazit Eine **RSS-Bridge für Pixoo64 Firmware-Updates ist derzeit nicht realisierbar**, da: 1. Alle Update-APIs benötigen Device-Authentifizierung 2. Kein öffentlicher Changelog verfügbar 3. GitHub-Repo ist unvollständig und Community-maintained **Empfehlung:** Warten auf: - Offizielle Divoom Changelog-Seite - Öffentliche API-Dokumentation - Vollständigeres GitHub-Repository --- ## Kontakt **Divoom Support:** - Website: https://divoom.com - Developer Email: developer@divoom.com (laut APK) - Support: https://divoom.com/apps/help-center **Recherche durchgeführt:** 2025-01-25 via Claude Code