# VideoKonverter - Samsung Tizen TV Installation

Die VideoKonverter TV-App auf einem Samsung Smart TV (Tizen) installieren.

## Voraussetzungen

- Samsung Smart TV mit Tizen OS (ab 2017, getestet: Tizen 9.0)
- PC und TV im gleichen Netzwerk
- Samsung Developer Account (kostenlos): https://developer.samsung.com/
- Tizen Studio auf dem PC

## Schritt 1: Tizen Studio installieren

Download: https://developer.tizen.org/development/tizen-studio/download

### Linux (Manjaro/Arch)

```bash
# Installer herunterladen und ausfuehren
chmod +x web-ide_Tizen_Studio_*.bin
./web-ide_Tizen_Studio_*.bin

# Nach Installation: Package Manager CLI nutzen
~/tizen-studio/package-manager/package-manager-cli.bin install \
  --accept-license cert-add-on TV-SAMSUNG-Public

# WICHTIG auf Manjaro/Arch: Fake-dpkg Wrapper anlegen
# (Tizen PM prueft dpkg Pakete die auf Arch nicht existieren)
mkdir -p /tmp/fake-dpkg
cat > /tmp/fake-dpkg/dpkg << 'EOF'
#!/bin/bash
if [[ "$*" == *"-l"* ]] || [[ "$*" == *"--list"* ]] || [[ "$*" == *"-s"* ]]; then
    for pkg in "$@"; do
        [[ "$pkg" != -* ]] && echo "ii  $pkg  99.0  amd64  Fake"
    done
fi
exit 0
EOF
chmod +x /tmp/fake-dpkg/dpkg
# Dann mit PATH="/tmp/fake-dpkg:$PATH" den Package Manager starten
```

### Wichtige Pfade nach Installation

```
~/tizen-studio/tools/sdb                              # Smart Development Bridge
~/tizen-studio/tools/ide/bin/tizen                     # CLI-Tool
~/tizen-studio/tools/certificate-manager/certificate-manager  # Certificate Manager GUI
```

## Schritt 2: Samsung Developer Zertifikat erstellen

Das Zertifikat signiert die App fuer den TV. Samsung TVs akzeptieren NUR Samsung-signierte
Zertifikate (nicht Standard-Tizen!).

### Voraussetzung: Samsung Certificate Extension installieren

```bash
# MUSS installiert sein, sonst erscheint "Samsung" nicht als Option!
PATH="/tmp/fake-dpkg:$PATH" ~/tizen-studio/package-manager/package-manager-cli.bin \
  install --accept-license cert-add-on
```

### Zertifikat erstellen (Certificate Manager GUI)

1. Certificate Manager starten: `~/tizen-studio/tools/certificate-manager/certificate-manager`
2. **"+" klicken** > **Samsung** waehlen (NICHT Tizen!)
3. **TV** als Geraetetyp waehlen
4. Author-Zertifikat: Key Filename + Author Name eingeben
5. Samsung Developer Account einloggen
6. Distributor-Zertifikat: DUID des TVs eintragen (siehe Schritt 3)
7. **Finish** - Zertifikat wird unter `~/SamsungCertificate/<Profilname>/` gespeichert

**WICHTIG:** Zertifikat sichern! Bei App-Updates muss das gleiche Zertifikat verwendet werden.
Backup liegt in `tizen-app/certs/`.

## Schritt 3: TV vorbereiten (Developer Mode)

1. TV einschalten
2. **Apps** oeffnen (Home > Apps)
3. Ziffern **12345** eingeben (virtuelles Nummernfeld bei neueren Fernbedienungen)
4. Developer Mode **ON** schalten
5. **Host PC IP** eingeben (IP des PCs mit Tizen Studio)
6. **TV neustarten** (wichtig!)

### DUID auslesen (fuer Zertifikat)

```bash
# Erst TV verbinden (Schritt 4), dann:
~/tizen-studio/tools/sdb shell 0 getduid
# Gibt z.B. zurueck: KLCDNTGIJS4OU
```

## Schritt 4: TV verbinden

```bash
# Verbinden (Port 26101 muss offen sein)
~/tizen-studio/tools/sdb connect <TV-IP>

# Pruefen
~/tizen-studio/tools/sdb devices
# Zeigt: <IP>:26101  device  <TV-Modell>
```

Falls Verbindung fehlschlaegt:
- Developer Mode aktiviert? PC-IP korrekt eingegeben?
- TV nach Aenderung des Developer Mode neugestartet?
- Port 26101 in Firewall offen?

## Schritt 5: WGT bauen und installieren

### WGT mit Samsung-Zertifikat signieren

```bash
# Sauberes Build-Verzeichnis erstellen (nur App-Dateien!)
mkdir -p /tmp/tizen-build
cp tizen-app/config.xml tizen-app/index.html tizen-app/icon.png /tmp/tizen-build/

# WGT mit Samsung Security Profile signieren
cd /tmp/tizen-build
~/tizen-studio/tools/ide/bin/tizen package -t wgt -s <Profilname> -- /tmp/tizen-build/
```

### Auf TV installieren

```bash
# TV-Name mit sdb devices ermitteln
~/tizen-studio/tools/ide/bin/tizen install -n /tmp/tizen-build/VideoKonverter.wgt -t <TV-Name>
```

Erfolgreiche Ausgabe:
```
Tizen application is successfully installed.
```

### App deinstallieren (falls noetig)

```bash
~/tizen-studio/tools/sdb shell 0 vd_appuninstall vkTVApp001.VideoKonverter
```

## Schritt 6: App starten

1. App erscheint als **"VideoKonverter"** im Apps-Menue des TVs
2. Beim **ersten Start**: Server-IP eingeben (z.B. `192.168.155.12:8080`)
3. Die IP wird gespeichert - beim naechsten Start verbindet die App automatisch
4. Login mit TV-App Benutzerdaten (erstellt in der Admin-Oberflaeche unter `/admin`)

## Wie funktioniert die App?

Die Tizen-App ist nur ein **duenner Wrapper**. Sie macht nichts ausser:

1. Beim ersten Start die Server-Adresse abfragen
2. Weiterleiten auf `http://<Server-IP>/tv/`
3. Ab dann kommt alles vom Docker-Container

**Vorteil:** Bei Software-Updates muss nur der Docker-Container aktualisiert werden.
Die App auf dem TV muss NICHT neu installiert werden.

## Fehlerbehebung

### "Invalid certificate chain" bei Installation
- **Haeufigster Fehler!** Samsung TVs akzeptieren NUR Samsung-signierte Zertifikate
- Im Certificate Manager: "Samsung" waehlen, NICHT "Tizen"
- Samsung Certificate Extension (`cert-add-on`) muss installiert sein

### TV wird nicht gefunden
- Sind PC und TV im gleichen Netzwerk/VLAN?
- Ist Developer Mode auf dem TV aktiviert + TV neugestartet?
- Firewall auf dem PC: Port 26101 offen?

### Video startet langsam / nicht
- Server laeuft? `curl http://<Server-IP>:8080/tv/`
- AV1-Videos brauchen einen TV mit AV1-Unterstuetzung (ab ~2020)
- Streaming nutzt fragmented MP4 (`frag_keyframe+empty_moov+default_base_moof`)

### App startet nicht / weisser Bildschirm
- Richtige Server-IP eingegeben?
- Browser-Cache leeren: App deinstallieren und neu installieren

## Getestete Konfiguration

| Komponente | Version |
|-----------|---------|
| Samsung TV | GQ65Q7FAAUXZG (Tizen 9.0) |
| Tizen Studio | 6.0+ |
| sdb | 4.2.36 |
| tizen CLI | 2.5.25 |
| Host OS | Manjaro Linux (KDE) |

## Links

- Samsung Developer Portal: https://developer.samsung.com/smarttv/develop
- Tizen Studio Download: https://developer.tizen.org/development/tizen-studio/download
- Samsung TV Quick-Start Guide: https://developer.samsung.com/smarttv/develop/getting-started/quick-start-guide.html
