Files
Phoenix/README.md
T

7.6 KiB

Phoenix v1.0.0

Phoenix ist das native Rust-Backend des Analyzers auf Raspberry Pi.

Der Browser rendert nur noch die GUI. Audio-Capture, Messung, Recorder und die globale Gerätekonfiguration laufen in Phoenix.

Aktueller Stand

Phoenix übernimmt heute:

  • ALSA-Audio-Capture
  • Live-Metering über WebSocket
  • globale Gerätekonfiguration
  • RTA
  • Spectrogram
  • Waveform
  • XY / Goniometer
  • Phase Wheel
  • Recorder in wav, mp3 und webm
  • direktes Speichern auf dem Gerät

Nicht mehr Teil der Architektur:

  • WebAudio-/AudioWorklet-Analyse im Browser
  • Browser-MediaRecorder als Haupt-Recorder
  • Umschalten zwischen line und spdif

Der aktuelle Zielpfad ist Line In auf der Behringer/USB-Audio-Hardware.

Architektur

  • Phoenix besitzt die Audio-Hardware
  • Phoenix berechnet die Messwerte
  • die Web-GUI verbindet sich per HTTP + WebSocket mit Phoenix
  • globale Geräteoptionen werden in Phoenix gespeichert und an Browser synchronisiert
  • browser-lokale Optionen wie Phoenix URL bleiben clientseitig

Standard-Endpunkte

  • GET /health
  • GET /api/v1/status
  • GET /api/v1/global-config
  • POST /api/v1/global-config
  • GET /api/v1/rta-config
  • POST /api/v1/rta-config
  • GET /api/v1/metrics/ws
  • POST /api/v1/recordings/wav/start/:session_id
  • POST /api/v1/recordings/wav/stop/:session_id
  • POST /api/v1/recordings/stop/:session_id/:format
  • POST /api/v1/recordings/save/:target/:filename

Build

Lokaler Build:

cargo build --release

Check:

cargo check

Das Binary liegt danach unter:

target/release/phoenix

Raspberry Pi Betrieb

Für den Pi ist der maßgebliche Ablauf in:

RASPBERRY_PI_SETUP.txt

Dort sind enthalten:

  • benötigte Systempakete
  • systemd-Services
  • Kiosk-Start
  • Webserver auf Port 80
  • Autostart

Relevante Dateien:

Volumio-Betrieb

Für Volumio gibt es einen getrennten Kiosk-Pfad mit eigener Session und eigenen systemd-Units:

Erwarteter Projektpfad auf dem Zielgerät:

/home/volumio/Phoenix

Volumio-spezifisch:

  • session_volumio.sh startet Analyzer-GUI und Volumio im Dual-Tab-Kiosk
  • die Analyzer-GUI läuft im Volumio-Fall auf http://localhost:8088/
  • toggle-ext wird unter Phoenix/toggle-ext erwartet
  • VirtualKeyboard wird bevorzugt unter Phoenix/VirtualKeyboard gesucht, mit Fallback auf die bekannten Systempfade
  • Logs liegen typischerweise unter:
/home/volumio/dual-kiosk.log
/home/volumio/phoenix.log

Die Volumio-spezifischen Units, der eingeschränkte Update-Helfer und die zugehörige sudo-Regel werden einmalig als root installiert:

sudo bash /home/volumio/Phoenix/scripts/install_volumio_services.sh

Der Installer verändert keine Debian-/Analyzer-Units und startet laufende Dienste nicht automatisch neu.

Wenn toggle-ext genutzt werden soll, sollte es also unter diesem Pfad liegen:

/home/volumio/Phoenix/toggle-ext

Analyzer vs. Volumio

Die beiden Betriebsarten teilen sich Phoenix, aber nicht denselben Kiosk-Rahmen.

Wichtig:

  • Volumio darf den Analyzer-Webserver nicht auf :80 binden, weil dort Volumio selbst bzw. dessen Frontproxy hängt.
  • Die einzige beabsichtigte Global-Config-Abweichung zwischen den Referenzständen ist normalerweise recordTarget.

Referenz-Global-Configs

Für einen sauberen Gerätestand liegen zwei Referenzdateien im Projekt:

Kopieren auf dem Zielgerät:

mkdir -p ~/.config/phoenix
cp /home/<user>/Phoenix/reference-config/phoenix-global-config.<profil>.json ~/.config/phoenix/global-config.json

Beispiele:

cp /home/analyzer/Phoenix/reference-config/phoenix-global-config.analyzer.json /home/analyzer/.config/phoenix/global-config.json
cp /home/volumio/Phoenix/reference-config/phoenix-global-config.volumio.json /home/volumio/.config/phoenix/global-config.json

Danach Phoenix bzw. den Kiosk-Dienst neu starten.

Erster Start auf neuem Gerät

Für einen frischen Pi werden mindestens diese Build-Abhängigkeiten benötigt:

sudo apt-get update
sudo apt-get install -y pkg-config libasound2-dev curl ca-certificates git build-essential

Wenn cargo/rustc fehlen oder zu alt sind, kann kiosk-start.sh beim Start eine aktuelle Rust-Toolchain per rustup installieren. Das ist besonders für ältere Volumio-/Debian-Systeme wichtig, deren apt-Rust oft zu alt für aktuelle Crates ist.

Wichtige Umgebungsvariablen

  • PHOENIX_LISTEN default: 127.0.0.1:8789

  • PHOENIX_ALSA_CARD default: 2

  • PHOENIX_ALSA_DEVICE optional explizites ALSA-Gerät, z. B. hw:CARD=CODEC,DEV=0

  • PHOENIX_SAMPLE_RATE default: 48000

  • PHOENIX_PERIOD_SIZE default: 128

  • PHOENIX_BUFFER_SIZE default: 512

  • PHOENIX_GLOBAL_CONFIG_PATH default: $HOME/.config/phoenix/global-config.json

  • PHOENIX_RECORDINGS_DIR_ANALYZER default: /home/analyzer/Aufnahmen

  • PHOENIX_RECORDINGS_DIR_VOLUMIO default: /home/volumio/Aufnahmen

  • PHOENIX_MAX_RECORDING_UPLOAD_BYTES default: 2147483648

  • PHOENIX_LR_FRAC_DELAY_ENABLED default: true

  • PHOENIX_LR_FRAC_DELAY_SAMPLES default: 0.996

  • PHOENIX_LOG default: phoenix=info,tower_http=info

Hinweise

  • Phoenix ist jetzt der produktive Hauptpfad, nicht mehr nur ein Scaffold.
  • Das Changelog der GUI liegt in index.html.
  • Build-Logs beim Pi-Start landen in der Regel unter:
~/phoenix-build.log
  • Laufzeit-Logs der X-/Kiosk-Session liegen unter:
/home/analyzer/analyzer-kiosk.log