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,mp3undwebm - direktes Speichern auf dem Gerät
Nicht mehr Teil der Architektur:
- WebAudio-/AudioWorklet-Analyse im Browser
- Browser-MediaRecorder als Haupt-Recorder
- Umschalten zwischen
lineundspdif
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 + WebSocketmit Phoenix - globale Geräteoptionen werden in Phoenix gespeichert und an Browser synchronisiert
- browser-lokale Optionen wie
Phoenix URLbleiben clientseitig
Standard-Endpunkte
GET /healthGET /api/v1/statusGET /api/v1/global-configPOST /api/v1/global-configGET /api/v1/rta-configPOST /api/v1/rta-configGET /api/v1/metrics/wsPOST /api/v1/recordings/wav/start/:session_idPOST /api/v1/recordings/wav/stop/:session_idPOST /api/v1/recordings/stop/:session_id/:formatPOST /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:
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.shstartet Analyzer-GUI und Volumio im Dual-Tab-Kiosk- die Analyzer-GUI läuft im Volumio-Fall auf
http://localhost:8088/ toggle-extwird unterPhoenix/toggle-exterwartetVirtualKeyboardwird bevorzugt unterPhoenix/VirtualKeyboardgesucht, 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.
-
Analyzer:
- Projektpfad:
/home/analyzer/Phoenix - Web-GUI:
http://localhost/ - systemd-Units: analyzer-kiosk.service, analyzer-web.service
- Session: session.sh
- Chromium-Profil:
/data/chrome-analyzer
- Projektpfad:
-
Volumio:
- Projektpfad:
/home/volumio/Phoenix - Analyzer-GUI:
http://localhost:8088/ - Volumio-GUI intern:
http://localhost:3000/ - systemd-Units: analyzer-kiosk-volumio.service, analyzer-web-volumio.service
- Session: session_volumio.sh
- Chromium-Profil:
/data/chrome-dualtabs toggle-exterwartet unter/home/volumio/Phoenix/toggle-ext
- Projektpfad:
Wichtig:
- Volumio darf den Analyzer-Webserver nicht auf
:80binden, 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_LISTENdefault:127.0.0.1:8789 -
PHOENIX_ALSA_CARDdefault:2 -
PHOENIX_ALSA_DEVICEoptional explizites ALSA-Gerät, z. B.hw:CARD=CODEC,DEV=0 -
PHOENIX_SAMPLE_RATEdefault:48000 -
PHOENIX_PERIOD_SIZEdefault:128 -
PHOENIX_BUFFER_SIZEdefault:512 -
PHOENIX_GLOBAL_CONFIG_PATHdefault:$HOME/.config/phoenix/global-config.json -
PHOENIX_RECORDINGS_DIR_ANALYZERdefault:/home/analyzer/Aufnahmen -
PHOENIX_RECORDINGS_DIR_VOLUMIOdefault:/home/volumio/Aufnahmen -
PHOENIX_MAX_RECORDING_UPLOAD_BYTESdefault:2147483648 -
PHOENIX_LR_FRAC_DELAY_ENABLEDdefault:true -
PHOENIX_LR_FRAC_DELAY_SAMPLESdefault:0.996 -
PHOENIX_LOGdefault: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