10 KiB
Schlussdiagnose: Philips 43PUS7394/12 – interne Speicherwarnung
Stand: 2026-08-25. Plattform TPM191E, Firmware
TPM191E_R.211.000.103.000, Android TV 12, Kernel 4.9.310-ab4215.
Dies ist die aktuelle Kurzfassung. Die vertrauliche Deep-Forensics-Fassung mit Angriffsflächenanalyse ist nicht Teil der kuratierten Veröffentlichung.
Phase-4-Update: Eine konsistente UID1000-Kopie der EPG-DB schließt die
letzte zentrale Lücke. scheduletable hält 3.071.250 vollständig abgelaufene
Zeilen; 97,81 % sind älter als 30 Tage. Die Tabelle belegt 1.436,98 MiB, ihre
vier Indizes 222,06 MiB; freelist_count=0, auto_vacuum=FULL,
integrity_check=ok. Damit ist jahrelang nicht gelöschte Schedule-Historie die
bewiesene Hauptursache. Die veröffentlichten Details stehen in
phase4/epg-database-forensics.md.
Ergebnis
Die Warnung ist kein Beleg dafür, dass Androids /data-Dateisystem unmittelbar
voll ist. Die letzte Momentaufnahme zeigte:
| Wert | Ergebnis |
|---|---|
/data gesamt |
5.089.920 KiB = 4,85 GiB |
| belegt | 3.831.944 KiB = 78 % |
| verfügbar | 1.136.840 KiB = 1,084 GiB |
| Inodes | 7 % belegt |
| Android-Status | NORMAL |
Philips verwendet jedoch einen eigenen Monitor in der Nähe von 1 GiB freiem
/data. Zur 1-GiB-Marke blieben zuletzt nur 88.264 KiB beziehungsweise
86,2 MiB. Normale Schwankungen reichen deshalb aus, die Philips-Warnung
wiederholt auszulösen, obwohl Android selbst noch keinen Low-Storage-Zustand
meldet.
Eine nach dem späteren Aufwachen sichtbare Philips-Zeile mit rund 762 MB frei
misst nicht /data, sondern die separate 1000-MiB-ext4-Partition
/data/vendor/user_setting. TvProvider warnt dort erst unter rund 13 % und
10 %; aktuell sind bezogen auf die Rohpartitionsgröße rund 72,7 % frei. Diese
zweite Messung ist daher unauffällig und nicht die Ursache der Meldung.
Der klare Hauptverursacher ist eine Philips-EPG-Datenbank:
| Verursacher | Größe |
|---|---|
org.droidtv.channels/.../EpgDatabase.db |
1.742.053.376 B = 1,622 GiB |
org.droidtv.gel/.../androidx.work.workdb |
229.453.824 B = 218,824 MiB |
| sichtbarer Code von 18 aktualisierten System-Apps | 686,195 MiB |
| statbare Basis-ODEX/VDEX dieser Apps | 226,381 MiB |
Insgesamt sind konservativ 2.830,530 MiB beziehungsweise rund 75–76 % der
belegten /data-Kapazität konkret erklärt. Rund 0,88–0,89 GiB bleiben wegen
App-Sandbox, DAC und SELinux nicht einzeln aufteilbar; dieser Rest wurde nicht
als frei oder unbenutzt behandelt.
EPG-Datenbank: Ursache und offene Größe
Für EpgDatabase.db sind folgende Werte direkt bewiesen:
- Seitengröße 4096 Byte;
page_count425.306;- Dateigröße exakt
425.306 × 4096 = 1.742.053.376Byte; - nur 358 sichtbare Index-, 195 Now- und 162 Next-Zeilen, aber AUTOINCREMENT-IDs im Millionenbereich;
- eine unbeschränkte lesende Schedule-Abfrage war nach mehr als 120 Sekunden noch nicht vollständig und wurde clientseitig abgebrochen.
Die APK-Analyse erklärt einen konkreten Wachstumsmechanismus: Der als Stale-Cleanup benannte Runnable berechnet Grenzwerte und schreibt Logmeldungen, führt aber keine Löschoperation aus. Zusätzlich sind die Zeitkonstanten dort offenbar als Millisekunden statt als die beabsichtigten längeren Intervalle verwendet. Vorhandene echte Zeit-Löschmethoden sind nicht mit diesem globalen Cleanup-Pfad verbunden.
Philips' interne rebuilddb-Pfade sind ebenfalls kein physischer
Datenbank-Neuaufbau. Sie löschen beziehungsweise synchronisieren Zeilen in
derselben Datei und rufen weder VACUUM noch einen Dateiersatz auf.
Wichtig ist die Grenze der Aussage: freelist_count, der persistierte
auto_vacuum-Headerwert und die Seitennutzung der großen Schedule-/FVP-
Tabellen sind nicht zugänglich. AOSP baut Plattform-SQLite langjährig mit
SQLITE_DEFAULT_AUTOVACUUM=1 (FULL); da die Philips-App keinen anderen
Modus setzt, ist FULL eine starke Inferenz, aber kein Gerätebeweis. Deshalb
ist eine sehr große Freelist nicht als Hauptursache bewiesen. Die Datei
kann zu wesentlichen Teilen aus noch lebenden Schedule-Daten, freien Seiten
und/oder interner Fragmentierung bestehen. Der tatsächlich rückgewinnbare
Platz ist derzeit nicht seriös bezifferbar.
GEL-WorkManager-Datenbank
GELs androidx.work.workdb ist rund 2.155-mal größer als typische
WorkManager-Datenbanken auf demselben Gerät. Die APK erzeugt wiederholt
GEL_WORK mit APPEND_OR_REPLACE; eine lang gewachsene Work-Kette ist daher
sehr wahrscheinlich. Die Hauptdatei hat 4096-Byte-Seiten und 56.019 Seiten;
der Live-Stand umfasst wegen aktivem WAL 56.020 Seiten. WAL und SHM belegen
zusammen nur 0,531 MiB und erklären den Ausreißer nicht. Tabellen- und
Freelist-Anteile bleiben ohne autorisierten Owner-Zugriff unbekannt.
Adoptierter Speicher
Das adoptierte 112-GiB-Volume ist korrekt gemountet und praktisch leer. Die
18 Pakete unter /data/app sind jedoch ausnahmslos Updates von System-Apps;
auch Channels und GEL sind Systempakete. Android verschiebt solche Pakete und
ihre privaten Daten nicht auf das adoptierte Volume. Der große freie
USB-Speicher kann die beiden Datenbanken daher nicht automatisch aufnehmen.
Ein Philips-spezifischer mFreeSize 0-Fehler für öffentliche/adoptierte
Volumes ist in Logs vorhanden. Androids eigener StorageManager misst diese
Volumes korrekt. Ein Einfluss des Fehlers auf einzelne Philips-Oberflächen ist
plausibel, aber er erklärt weder die reale /data-Belegung noch ist er als
Auslöser des hier dekompilierten Warnpfads bewiesen.
eMMC-Gesundheit
Philips hat beim Boot beide eMMC-Life-Time-Felder als 0x0a/0x0a ermittelt,
protokolliert und in persist.odm.tpv.sys.emmc_lifetime gespeichert. Nach der
von KIOXIA mit JEDEC-Genehmigung wiedergegebenen Tabelle bedeutet 0x0a für
beide Felder die grobe Klasse 90–100 % der geschätzten Lebensdauer verbraucht.
Das ist keine exakte Restlebensdauer und beweist keinen gegenwärtigen I/O-
Fehler.
PRE_EOL_INFO beschreibt getrennt den Verbrauch reservierter Ersatzblöcke.
Eine spätere rein lesende Eventlog-Abfrage hat diesen Wert unabhängig von der
Philips-Property sichtbar gemacht:
storaged_emmc_info: [emmc 5.1,1,10,10]. Die installierte Tagdefinition ordnet
die Felder als Version, EOL, Lifetime A und Lifetime B zu. Damit sind eMMC 5.1,
PRE_EOL_INFO=0x01 (Normal) und A/B 0x0a/0x0a für diesen Boot bestätigt.
Nur der direkte Rohdump sowie CID, CSD, Hersteller und Modell bleiben auf
diesem Production-Build durch SELinux gesperrt. storaged wurde beim
zusätzlichen Lesen des EXT_CSD-Debugfs-Knotens als UID 0 durch SELinux
abgewiesen; Root allein wäre daher weiterhin keine vollständige Zugriffs- oder
Reparaturlösung.
Im verfügbaren Bugreport-/Logfenster wurden keine echten MMC-, Block-I/O-, EXT4-, JBD2-, ENOSPC- oder Read-only-Remount-Fehler gefunden. Weil dmesg, PStore, EXT4-Fehlerzähler und ein OEM-Board-Dump fehlen, ist das ein begrenzter Nichtfund und kein Gesundheitszertifikat.
Quellen: KIOXIA Wear Leveling, KIOXIA Bad Block Management, AOSP EXT_CSD-Auswertung, AOSP SQLite-Buildoptionen und SQLite VACUUM.
Bewertung möglicher Maßnahmen – nichts davon ausgeführt
| Option | Bewertung |
|---|---|
| Philips-dokumentierter, geordneter EPG-Dateirebuild | technisch größter gezielter Hebel und voraussichtlich schreibärmer als VACUUM; wurde aber weder als UI-/Supportweg gefunden noch auf Nebenwirkungen verifiziert |
internes rebuilddb / rebuilddbonnewchannellist |
kein bestätigter Dateirebuild; Speichergewinn abhängig vom unbekannten Auto-Vacuum und mit EPG-/Verknüpfungsrisiken |
manuelles Löschen von EpgDatabase.db |
nicht vertretbar bei laufendem Provider, offenen FDs und unbekannten Labels/Abhängigkeiten |
VACUUM |
vermeiden: hohe Schreiblast; kann bis zu ungefähr eine zusätzliche DB-Größe benötigen, während nur rund 1,1 GiB frei sind |
pm clear org.droidtv.channels |
zu grob; löscht das gesamte Paketprofil und kann Spiegel/Einstellungen betreffen |
| Werksreset/Firmware-Flash | unverhältnismäßig, schreibintensiv und ohne Beleg für dauerhafte Fehlerbehebung |
| adoptierter Speicher | für die bestehenden Systempaketdaten kein gangbarer Hebel |
Die risikoärmste Folgerung lautet daher weiterhin: keine spontane Mutation. Sinnvoll wäre ein von Philips/TPV ausdrücklich dokumentierter Ablauf, der den Channels-Prozess geordnet schließt, nur die EPG-Datenbank konsistent neu erzeugt, Sender/Favoriten/Timer schützt und die Nebenwirkungen benennt. Eine solche Prozedur wurde in der Firmware und den vorhandenen Supportartefakten nicht gefunden.
Standby-Nachprüfung
Der während der Analyse beobachtete Aus-Zustand war kein Absturz und kein
Neustart. Nach dem manuellen Einschalten lief die Uptime weiter. Die Logs
belegen power off by auto power down, den Übergang nach
POWER_STATE_SEMI_STANDBY mit detail=SWITCH_OFF_TIMER und später das
Aufwachen per WAKE_REASON_WAKE_KEY. Die Kontrollmessung danach blieb bei
78 % /data-Belegung und Android-Status NORMAL. Im erhaltenen aktuellen
Logfenster trat nach dem Aufwachen kein MEMORY_CRITICAL, CLEANUP_APPS oder
Android-Low-/Full-Storage-Ereignis auf.
Nachvollziehbarkeit und Sicherheit
Am Fernseher wurden keine Dateien gelöscht oder verändert, keine Einstellungen
oder Pakete geändert und kein Reboot, Recovery-, Flash-, Root- oder
Reparaturvorgang ausgeführt. Lange Provider-Leseabfragen wurden nur auf dem PC
abgebrochen. Transparenz-Ausnahme: Das vom Auftrag ausdrücklich verlangte
dumpsys diskstats meldete selbst einen [512B Data Write]-Latenztest; dieser
Android-Test wurde danach nicht wiederholt.
Detailberichte:
Rohbefehle, private Zustandsdaten sowie Privilegien-/SELinux-Berichte sind aus dieser Veröffentlichung ausgeschlossen.