Files
Aime/docs/07-betrieb.md
T
Claude db3d946592 docs: komplette CallRec-Dokumentation mit Mermaid-Diagrammen
Architektur, Hardware/Thermik, PipeWire-Audio-Topologie, Aufnahme-Pipeline,
Diarization (Anchor-Merge), LLM-Analyse (Gemma-3-4B/NPU), iPhone-BT-HFP,
Betrieb/Troubleshooting und Changelog-Chronik.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 10:51:22 +02:00

4.3 KiB
Raw Blame History

07 — Betrieb

⚠️ Dieses Repo ist privat; hier stehen LAN-Zugangsdaten. Nicht öffentlich stellen.

Zugänge

System Zugang
Board SSH root@192.168.1.200 (WLAN, primär) / root@192.168.1.50 (LAN), PW 123456
Web-GUI http://192.168.1.200:3000
MariaDB (auf dem Board) DB callrec, User callrec, PW callrec123 (kein sqlite3/CLI-Client — mysql nutzen)
Gitea (diese Doku) http://192.168.1.199:3000, User sascha
App-User auf dem Board callrec, Code in /opt/callrec

systemd-Einheiten

Einheit Scope Aufgabe
callrec.service system Node-App (Web-GUI :3000, Aufnahme, Pipeline)
callrec-btwatch.service system BT-Headset-Auto-Connect (card-aware)
callrec-perf.service system CPU-Governor performance + A76-Pinning
aime-usb-audio.service user PipeWire-Topologie beim Boot (callmix, Loopbacks, Remap)
aime-micgate.service user LADSPA-Noise-Gate-Filter-Chain
aime-volume-headset.service user Windows-Volume → Headset-Sink (UAC2 numid=7)
aime-headset-keys.service root H390-Inline-Tasten → Lautstärke
aime-iphone-route.service — HFP-Routing-Watcher für iPhone-Anrufe
filter-chain.service (PipeWire-Standard) user MASKIERT — würde micgate doppeln
aime-audio-out / aime-volume user ES8323-Ära, disabled

Wichtige Pfade auf dem Board

Pfad Inhalt
/opt/callrec/*.js server / recorder / llm / diar / spk / db / bt
/opt/callrec/web/ Vite-Frontend (npx vite build nach Änderungen an src/)
/opt/callrec/aime-*.sh Setup-/Bridge-/Cap-Skripte
/opt/callrec/milestones/m1-20260709/ Meilenstein-1-Snapshot inkl. MANIFEST.md (Rollback)
/opt/callrec/*.bak-* Datei-Backups je Änderung (z. B. .bak-structsum, .bak-anchor)
/etc/sudoers.d/callrec-cpucap NOPASSWD für aime-cpucap.sh (Thermal-Cap)

Deploy-Ablauf (von Windows aus)

flowchart LR
    DEV["Datei lokal ändern<br/>(pscp vom Board holen)"] --> BAK["Backup auf Board:<br/>cp X X.bak-&lt;thema&gt;"]
    BAK --> UP["pscp hochladen"]
    UP --> FE{"Frontend<br/>geändert?"}
    FE -- ja --> BUILD["ssh: cd /opt/callrec/web && npx vite build"]
    FE -- nein --> RESTART
    BUILD --> RESTART["systemctl restart callrec"]
    RESTART --> VERIFY["Verifizieren: journalctl -u callrec,<br/>GUI-Test, ggf. reanalyze-llm"]
    VERIFY --> DOC["Doku + Changelog in Gitea aktualisieren"]
  • Windows-Seite: PuTTY-Tools (plink -batch -pw …, pscp) — OpenSSH-Keys sind nicht hinterlegt.
  • Node-Syntax vor Upload prüfen: node --check datei.js.

Troubleshooting

Symptom Ursache / Fix
Zeile hängt auf transcribing Absturz mitten in Diarization → GUI „Neu transkribieren“ (/retranscribe)
Summary wirkt leer nach Retranskription GUI muss analysis_status pollen, nicht status — Analyse ist fire-and-forget
Board plötzlich aus Thermik prüfen — Schutzabschaltung; Cap-Skript/Sudoers intakt? (Kap. 01)
Zu viele Sprecher Audio geclippt? (Gain-Staging Kap. 02) Sonst „Analyse neu“ mit gepinnter Zahl
Teilnehmer ≠ Sprecher Teilnehmer kommen aus Diarization; Namen im Sprecher-Editor vergeben
Kein far-end bei iPhone-Aufnahme BT-Gerät Trusted=yes? HFP-Nodes erscheinen nur IM Anruf (Kap. 06)
GUI zeigt Quelle ohne Signal .monitor-Falle — Quelle mit parecord + ffmpeg astats prüfen (Kap. 02)
pactl load-module module-filter-chain → „No such entity“ Filter-Chain ist Core-Modul → Drop-in-Config nutzen (Kap. 02)
rkllm/Whisper rc=-6 RAM-Contention — nicht beide NPU-resident; NPU-Lock beachten (Kap. 05)
Analyse „KI Fehler“ bei langen Aufnahmen Kontext-Überlauf → Chunk-Pfad greift; bei schwachem Ergebnis „Analyse neu“

Offene Punkte (Stand 2026-07-16)

  • Bedingter Takt-Cap (nur > 15 min Aufnahmedauer) — angeboten, nicht gebaut (~1,4× schnellere Kurzclips).
  • Feinabstimmung Mikro/PC-Balance in einem echten Headset-Call.
  • Glossar Phase 2: nächtlicher systemd-Timer + large-v3-Kandidaten-Vorschläge mit Bestätigung (verschoben).
  • iPhone-Pfad: automatischer Aufnahme-Start + voller E2E-Test (Kap. 06).
  • Qwen-1.5B als schnellerer LLM-Kandidat für Kurzclips (verschoben).
  • Aufnahme #41 bleibt dauerhaft geclippt (Referenz für den Gain-Bug).