Modding Docs — Hisense HE40E5600FFWTS (Vidaa U, V0100.01.00A.N0410)
Stand: 2026-10-26
TV: Hisense HE40E5600FFWTS, FW V0100.01.00A.N0410, LAN 192.168.188.94
Host/Server: 192.168.188.150:9000
Root/SSH: siehe ../root/ROOT-GUIDE.md
Status: Root + Dropbear-SSH (key-only) live; Modding-Recipes in diesem Ordner sind static/live belegt, aber noch nicht alle am TV getestet (siehe 07-evidence-unknowns.md).
Die drei Fragen in 30 Sekunden
Welches Linux ist das?
Ein Hisense/MediaTek Embedded Linux, kein Standard-Distro:
- Kernel: Linux 3.18.25 (ARMv7, SMP PREEMPT, Linaro GCC 4.8.2, Build 2023-04-10)
- SoC: MediaTek MT53xx/MT5863-Klasse (Kernel-Cmdline
mt53xx-emmc; Browser-Buildmt5863_sa_768_linux; Cortex-A53, ARMv7, NEON/VFPv4) - Userland: glibc 2.18 (
/lib/libc-2.18.so,ld-linux.so.3), BusyBox 1.18.5, GNU/BusyBox-Mix - Init: SysV-artig (
/etc/inittab,/etc/init.d/rcS,/etc/rc.d/rc.local), kein systemd - Kein
/etc/os-release, keine Distro-Version; Firmware-StringV0100.01.00A.N0410 - Storage: squashfs-ro Rootfs (
/, 38.8 MB, 100 % voll),/3rdsquashfs-ro (141 MB, 100 %),/3rd_rwext4-rw (1.1 GB, 56 % belegt),/dataext4-rw (1.9 GB, fast leer),/permext4-rw (3.9 MB),/spdataext4-ro - Kein overlayfs im Kernel; Modding läuft über rw-Partitionen +
mount --bindund die vorhandenen rw-Verzeichnisse (/3rd_rw,/data,/perm).
Gibt es einen Package Manager?
Nein. Kein apt, dpkg, opkg, ipkg, rpm, apk, yum oder pacman; keine /etc/opkg, /var/lib/dpkg o. ä. (Root-Check, siehe 07).
Konsequenz: Eigene Tools/UI/Services werden als statische ARM-Binaries (oder Shell-Skripte) gebaut und per File.download, SSH/base64/tar, USB oder (nach optionalem SFTP-Install) per sftp/scp nach /3rd_rw gebracht. Es gibt kein Paket-Repo, kein opkg install.
Wo ist das UI und wie läuft es?
Das TV-UI ist eine Web-UI im hisenseUI-Browser (Opera/Chromium-Basis, root, GLES):
/basic/autorun.sh (Zeile 168)
→ /3rd/opera4x/hisenseUI/start-UI.sh
→ ./bin/hisenseUI --hw-gles --jsplugins-dir=/3rd/UI_jsplugins \
--disable-web-security ... -u /3rd_rw/UI/index.html
- UI-Prozess:
hisenseUI(z. B. PID 589), root,--hw-gles,--disable-web-security, JS-Plugins aus/3rd/UI_jsplugins, DevTools-Port 9223 (wenn/3rd_rw/appdata/enable_developer_toolsexistiert) - UI-Seite:
/3rd_rw/UI/index.html(PIXI-basierte UI; lädtmodel/model.js,sdk/UI.js,lib/launcherDataInterface.js,pub/HisProductConfig.jsusw.) - Launcher-/App-Daten:
/3rd_rw/appdata/launcher/preset.txt— die 26 vorinstallierten App-Tiles (Netflix, Prime Video, Disney+, YouTube, …; aktuell inkl.VidaaRecon)Appinfo.json— vom Nutzer installierte Web-Apps (unserVidaaRecon)deletedPresetApp.txt— JSON-Array der ausgeblendeten Tiles (Stand 2026-10-26:[], alte Probe-URLs entfernt)data/CategoryIndex.xml,CategoryList_*.xml,Category_1001_*.xml,Category_57_*.xml,PicInfo.xml— Kategorien/App-Daten (aktiv, wennserviceUpdate.xmlzum Land passt; sonstUI/data/-Default)res/*.png— Tile-Icons;cache/index.json— Icon-Cache
- LauncherService:
/3rd/launcherservice/bin/LauncherService(startet per/3rd/launcherservice/startLS.shausdelayrun.shnach ca. 15 s); liefert/aktualisiert Launcher-Daten; Strings u. a./3rd_rw/appdata/launcher/data/CategoryIndex.xml,PicInfo.xml,/tmp/launcher/launcherServiceAuth.xml - Native Apps / AM:
/basic/app_man -c /basic/am_config -s /basic/am_start.ini -input_fifo; startetdtv_svc(TV),netflix,dialserver,samba_relay_agent,browser_base,securetimeusw.; App-Steuerung über:am,<app>,:<verb>=<val> - Web-Browser (nicht das TV-UI):
hisense_browser(z. B. PID 1320), gestartet über/3rd/opera4x/browser/run-Browser.sh(AM-Appopera4x),--hw-dfb,--allow-file-access-from-files, DevTools 9224; hier läuft unsere Recon-Seite. Der „TV Browser“-Tile startet diesen Browser.
Wichtig: hisenseUI (TV-UI) und hisense_browser (Web-Browser) sind zwei verschiedene Prozesse mit unterschiedlichen Startskripten, Renderern (GLES vs. DFB), JS-Plugin-Verzeichnissen und Debug-Ports.
Ordnerstruktur
| Datei | Inhalt |
|---|---|
01-system-linux.md |
Linux/Kernel/SoC, glibc/BusyBox, Package-Manager-Negativ, Dateisysteme, Partitionen, Toolchain-Constraints |
02-boot.md |
U-Boot/eMMC, Kernel-Cmdline, init/rcS/rc.local, autorun.sh, developer.sh, AM/UI/Delayrun, Services, Boot-Hooks |
03-ui.md |
hisenseUI vs. hisense_browser, /3rd_rw/UI, ldi.js, Launcher-/App-Daten, preset/Appinfo/deleted, LauncherService, AM/:am, Plugins, DevTools, Restart |
04-modding.md |
Rezepte: Custom-App-Tile, Custom-UI, Launcher-Skin/Daten, eigener Service, developer.sh, patch/opera4x, Bind-Mounts, :am/JS-APIs, Rollback |
05-bloat.md |
26 Preset-Apps, Native-Apps/Services-Matrix, was man gefahrlos deaktivieren kann, developer.sh-Stubs, Platz/Reclaim, Risiken |
06-toolchain-deploy.md |
Kein Package Manager: statisch für ARM bauen, deployen (File/SSH/USB), glibc-2.18-/Kernel-3.18-Fallen, Dropbear/PTY, Checks |
07-evidence-unknowns.md |
Belege, Pfade, Hashes, Verification-Status, bekannte Unknowns |
templates/ |
developer.sh, custom-app.json, hide-preset.json, custom-ui.html, start-UI-custom.sh, README |
../root/ROOT-GUIDE.md |
Kompletter Root-/SSH-Weg (USB-ext4-Symlink, libtvsysinfo-Shadow, Root-Loop, Dropbear, PTY, Persistenz) |
Schnellstart (was zuerst?)
- Root/SSH prüfen:
ssh root@192.168.188.94 'id; ps | grep -E "hisenseUI|hisense_browser|dropbear"'— Details im Root-Guide. SFTP (optional):../root/scripts/host/install_sftp.sh(testet Port 2222, dann 22); danachsftp root@192.168.188.94. - UI ansehen: Im UI-Prozess DevTools 9223 (falls
enable_developer_tools), im Web-Browser 9224. Die UI-Seite ist/3rd_rw/UI/index.html. - Sicherster Modding-Schritt: Eine eigene App-Tile über
/3rd_rw/appdata/launcher/Appinfo.json(siehe04-modding.md, Route A). Das ist reversibel und macht das UI nicht kaputt. - Dann: Launcher-Daten/Tiles über
preset.txt/deletedPresetApp.txt/Category_*.xmlanpassen (Route C). - Erst danach: Die UI-Seite
/3rd_rw/UI/index.htmlersetzen (Route B) — Backup, SSH/Web-Browser als Rettungsweg, UI-Prozess neu starten. - Bloat: Preset-Tiles ausblenden (
deletedPresetApp.txt), native Apps/Services überam_start.ini/am_config/delayrun.shunddeveloper.shdeaktivieren (05-bloat.md). Kein Flash nötig. - Eigene Services/Funktionen:
/3rd_rw/developer.sh(früher Root-Hook) oder der vorhandeneHamService-Wrapper (spät, nach 15 s); statische ARM-Binaries;:am/Hisense_*/HiBrowserAPIs.
Die wichtigsten Pfade (Cheat-Sheet)
# TV-UI
/3rd_rw/UI/index.html # UI-Seite (PIXI), rw
/3rd_rw/UI/{model,sdk,lib,pub,templates,module,assets,language,keyboard,data}
/3rd/opera4x/hisenseUI/start-UI.sh # startet hisenseUI (ro)
/3rd/UI_jsplugins/ # JS-TV-APIs der UI (ro)
# Launcher / Apps
/3rd_rw/appdata/launcher/preset.txt
/3rd_rw/appdata/launcher/Appinfo.json
/3rd_rw/appdata/launcher/deletedPresetApp.txt
/3rd_rw/appdata/launcher/data/{CategoryIndex.xml,CategoryList_*.xml,Category_*.xml,PicInfo.xml,serviceUpdate.xml}
/3rd_rw/appdata/launcher/res/ # Icons
/3rd_rw/appdata/launcher/cache/index.json
# Web-Browser
/3rd/opera4x/browser/run-Browser.sh # startet hisense_browser
/3rd_rw/opera4x/opera_home_browser/ # Profil (browser.db, opera.json, ...)
/3rd/opera4x/opera_dir/jsplugins/ # HiBrowser/JS-APIs des Browsers
# Native Apps / AM
/basic/app_man
/basic/am_config
/basic/am_start.ini
/basic/delayrun.sh
/3rd/launcherservice/startLS.sh
/3rd/hamservice/startHam.sh
/3rd_rw/hamservice/HamService # aktueller Wrapper (SSH/Root-Loop)
/3rd_rw/developer.sh # optionaler früher Root-Boot-Hook (Zeile 90)
/3rd_rw/patch/opera4x # optionaler Vendor-Overlay (full bind mount)
# Root/SSH
/3rd_rw/appdata/root_loop.sh # Root-Kommandokanal
/3rd_rw/appdata/root_proof.txt
/3rd_rw/sshd/ # Dropbear, Host-Key, authorized_keys, start_sshd.sh
Warnungen / Spielregeln
- Kein Flash, kein
.pkg, kein Bootloader. Der Rootfs und/3rdsind squashfs-ro; Änderungen gehören nach/3rd_rw(rw),/data(rw) oder/perm(rw). Für ro-Dateien:mount --bindaus/3rd_rw(kein overlayfs im Kernel). - Backup vor jedem UI-/Launcher-/AM-Eingriff. Besonders
/3rd_rw/UI/index.html,/3rd_rw/appdata/launcher/*,/basic/am_config/am_start.ini(Kopien nach/3rd_rw/backup/). - SSH/Root als Rettungsweg behalten. Das UI kann durch eine kaputte Seite schwarz werden; der
hisenseUI-Prozess lässt sich per SSH/root-Loop killen und neu starten, die Seite aus dem Backup zurückholen. developer.shist ein früher Root-Hook (vorms_service,hisenseUI,app_man,delayrun). Ein Fehler dort kann den Boot/UI beeinflussen; immer mitset -x/Log und Fallback (SSH/Web-Browser) arbeiten./3rd_rw/patch/opera4xist ein full bind mount über/3rd/opera4x: Es ersetzt das ganze Verzeichnis. Nur mit vollständiger Kopie oder Symlink-Baum verwenden; für einzelne Dateien lieberdeveloper.sh+ Datei-Bind-Mount.- Kein Package Manager: Keine
opkg/apt-Pakete; statische ARM-Binaries bauen/testen; die TV-glibc ist 2.18, der Kernel 3.18. /devist statisch/ro (kein devtmpfs); PTYs brauchen den devpts-Workaround (/dev/shm/pts→ bind/dev/pts); siehe Root-Guide/06.- Keine Secrets in diesem Ordner: Kein Root-Hash, kein privater SSH-Key; nur Public Key/Host-Fingerprint.
- Kein Internet-Exposure: Der TV ist im LAN; SSH ist key-only root; nicht ins Internet weiterleiten.
- Getestet vs. ungetestet: Root/SSH/PTY sind live bestätigt; die UI-/Bloat-/Custom-UI-Rezepte sind aus statischen/live Daten abgeleitet und noch nicht alle ausgeführt (Status in
07). Erst eine Änderung, dann testen, dann die nächste.
Kurz: der rote Faden
USB-ext4 + tvi-Symlink
→ libtvsysinfo-Shadow (Index 17) → DT_INIT root
→ Root-Loop → SSH (Dropbear, key-only)
→ /3rd_rw/developer.sh (früh) oder HamService-Wrapper (spät)
→ UI/App-Daten/Services anpassen
→ /3rd_rw/UI (UI-Seite), /3rd_rw/appdata/launcher (Tiles),
/basic/am_config|am_start (native Apps), delayrun (Services)
Viel Spaß beim Modden — und immer schön backupen. :)
Wo liegen die Root-/Deploy-Skripte?
Alles im Schwester-Ordner ../root/:
../root/tools/pub/— ausgelieferte Dateien (Payload, Dropbear, Keys, TV-Skripte)../root/scripts/host/— USB, Server, Payload-Plant, Upload, Root-CMD, Builds,install_sftp.sh/build_sftp_server.sh../root/scripts/tv/—start_sshd.sh,root_loop.sh,hamservice-wrapper.sh,deploy_sshd.sh,verify.sh,rollback.sh,install_sftp_stage.sh/enable_sftp.sh/swap_sftp.sh../root/ROOT-GUIDE.md— der komplette Root-Weg
Die Modding-Rezepte in 04-modding.md nutzen diese Skripte/Templates, aber du kannst alles auch manuell per SSH/Recon-Seite machen. Nichts hier erfordert den alten Run-Ordner.