feat: komplette Codebase vom Board ins Repo gespiegelt

app/ = /opt/callrec (Node-Backend, Vite-Frontend, Python-Inferenz,
Audio-Skripte, rkllm_server.cpp), system/ = systemd-Units,
WirePlumber/PipeWire-Drop-ins, sudoers. Modelle, Binaries, Aufnahmen
und node_modules bleiben draussen (.gitignore).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Claude
2026-07-16 11:18:29 +02:00
parent 560622e125
commit f9e1eb82c4
61 changed files with 5546 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
#!/bin/bash
# Auto-route iPhone HFP calls (the nodes exist only during a call):
# uplink (what far-end hears) <- micgate.out (GATED mic only -> no self-echo)
# far-end voice (bluez_input) -> callmix (recorded digitally, clean)
# and remove WirePlumber's default callrec_mix->uplink auto-link (that mix carried
# the ungated mic which picks up the far-end acoustically = echo).
export XDG_RUNTIME_DIR=/run/user/1000
MAC=B4_96_A5_42_BD_D6
PL(){ pw-link "$@" 2>/dev/null; }
while true; do
# uplink sink node (has input_FL) present = a call is up
UPPORT=$(pw-link -i 2>/dev/null | grep -m1 "bluez_output\.${MAC}.*:input_FL")
if [ -n "$UPPORT" ]; then
B=${UPPORT%%:*}
I=$(pw-link -o 2>/dev/null | grep -m1 "bluez_input\.${MAC}.*:output_FL"); I=${I%%:*}
if ! pw-link -l "$B" 2>/dev/null | grep -q micgate.out; then
PL -d callrec_mix:capture_FL "$B:input_FL"; PL -d callrec_mix:capture_FR "$B:input_FR"
PL micgate.out:output_FL "$B:input_FL"; PL micgate.out:output_FR "$B:input_FR"
[ -n "$I" ] && { PL "$I:output_FL" callmix:playback_FL; PL "$I:output_FR" callmix:playback_FR; }
logger -t aime-iphone-route "applied iPhone call routing ($B)"
fi
fi
sleep 2
done