onboard audio: JMISC HPH wiring, UCM fix, update scripts for git deploy
This commit is contained in:
@@ -2,7 +2,9 @@
|
||||
# Run with: just <recipe>
|
||||
# Override board host: just BOARD_HOST=192.168.1.100 deploy
|
||||
|
||||
BOARD_HOST := env_var_or_default('BOARD_HOST', 'uno-q.local')
|
||||
set dotenv-load := true
|
||||
|
||||
BOARD_HOST := env_var_or_default('BOARD_HOST', '192.168.9.167')
|
||||
BOARD_USER := env_var_or_default('BOARD_USER', 'arduino')
|
||||
BOARD_PASS := env_var_or_default('BOARD_PASS', 'arduino')
|
||||
SSH_KEY := env_var_or_default('SSH_KEY', '/home/david/.ssh/unoq_deploy_key')
|
||||
@@ -154,17 +156,18 @@ enable-host-mode: deploy-midi-bridge deploy-led-matrix-viz
|
||||
echo '[OK] Host mode services enabled and started'"
|
||||
|
||||
# Install all systemd services
|
||||
install-services:
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
SCP_OPTS="{{SSH_OPTS}}"
|
||||
echo "[INSTALL] Services on {{BOARD_USER}}@{{BOARD_HOST}}"
|
||||
for svc in usb-role-detect usb-gadget-audio pd-synth-auto pd-synth detect-i2s-device pd-synth-i2s; do
|
||||
scp $SCP_OPTS "system/$svc.service" "{{BOARD_USER}}@{{BOARD_HOST}}:/tmp/"
|
||||
scp $SCP_OPTS "system/${svc}.service" "{{BOARD_USER}}@{{BOARD_HOST}}:/tmp/"
|
||||
done
|
||||
scp $SCP_OPTS system/99-usb-role.rules "{{BOARD_USER}}@{{BOARD_HOST}}:/tmp/"
|
||||
ssh $SCP_OPTS "{{BOARD_USER}}@{{BOARD_HOST}}" "\
|
||||
for svc in usb-role-detect usb-gadget-audio pd-synth-auto pd-synth detect-i2s-device pd-synth-i2s; do \
|
||||
sudo mv /tmp/\$svc.service /etc/systemd/system/; \
|
||||
sudo mv /tmp/\${svc}.service /etc/systemd/system/; \
|
||||
done && \
|
||||
sudo mv /tmp/99-usb-role.rules /etc/udev/rules.d/ && \
|
||||
sudo udevadm control --reload-rules && \
|
||||
@@ -219,6 +222,27 @@ run-remote:
|
||||
echo "[RUN] Starting Pd on {{BOARD_USER}}@{{BOARD_HOST}} (auto-detect)"
|
||||
ssh $SCP_OPTS -t "{{BOARD_USER}}@{{BOARD_HOST}}" "killall pd 2>/dev/null; sudo {{SYSTEM_DIR}}/bin/start-synth.sh --auto --verbose"
|
||||
|
||||
# Fix UCM bug: removes nonexistent "RX HPH Mode" control
|
||||
# that prevents PipeWire from enabling the Headphones UCM device.
|
||||
# Must run once after OS updates or first install.
|
||||
fix-ucm:
|
||||
@ssh {{SSH_OPTS}} "{{BOARD_USER}}@{{BOARD_HOST}}" "\
|
||||
if grep -q 'RX HPH Mode' /usr/share/alsa/ucm2/codecs/qcom-lpass/rx-macro/HeadphoneEnableSeq.conf 2>/dev/null; then \
|
||||
echo '{{BOARD_PASS}}' | sudo -S sed -i '/RX HPH Mode/d' /usr/share/alsa/ucm2/codecs/qcom-lpass/rx-macro/HeadphoneEnableSeq.conf && \
|
||||
sudo systemctl restart wireplumber && \
|
||||
echo '[OK] UCM HeadphoneEnableSeq patched'; \
|
||||
else \
|
||||
echo '[OK] UCM already patched'; \
|
||||
fi"
|
||||
|
||||
# Test onboard headphone audio (hw:0,0 — ArduinoImolaHPH)
|
||||
test-audio-headphones:
|
||||
@ssh {{SSH_OPTS}} "{{BOARD_USER}}@{{BOARD_HOST}}" "\
|
||||
systemctl --user stop pipewire.socket pipewire.service wireplumber 2>/dev/null; \
|
||||
sleep 0.5; \
|
||||
speaker-test -t sine -f 440 -l 2 -D hw:0,0 2>&1 | tail -3; \
|
||||
systemctl --user start pipewire.socket pipewire.service wireplumber 2>/dev/null"
|
||||
|
||||
# Test audio (gadget mode)
|
||||
test-audio:
|
||||
@ssh {{SSH_OPTS}} "{{BOARD_USER}}@{{BOARD_HOST}}" "speaker-test -D hw:UAC1Gadget,0 -c 2 -t sine -f 440 -l 1"
|
||||
@@ -233,6 +257,11 @@ test-audio-host:
|
||||
echo '[ERROR] No USB audio interface found'; \
|
||||
fi"
|
||||
|
||||
# LED matrix end-to-end diagnostic (router → MCU → UDP → viz)
|
||||
diag-led:
|
||||
@scp {{SSH_OPTS}} scripts/diag-led.sh "{{BOARD_USER}}@{{BOARD_HOST}}:/tmp/diag-led.sh"
|
||||
@ssh {{SSH_OPTS}} "{{BOARD_USER}}@{{BOARD_HOST}}" "chmod +x /tmp/diag-led.sh && bash /tmp/diag-led.sh"
|
||||
|
||||
# Deploy diagnostic script to board
|
||||
deploy-diag:
|
||||
@scp {{SSH_OPTS}} scripts/diag.sh "{{BOARD_USER}}@{{BOARD_HOST}}:{{SYSTEM_DIR}}/bin/diag.sh"
|
||||
|
||||
Reference in New Issue
Block a user