Files
wedding-phone/configure_hifiberry.sh
grabowski 80c45389b2 Add rotary phone web interface with multiple greeting support
Features:
- Web interface for managing rotary phone system
- Support for multiple greeting messages with selector
- Direct audio playback in browser for recordings and greetings
- Upload multiple WAV files at once
- Set active greeting that plays when phone is picked up
- HiFiBerry DAC+ADC Pro audio configuration
- GPIO-based handset detection and audio recording
- Real-time status monitoring with auto-refresh

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 14:37:20 +07:00

101 lines
2.6 KiB
Bash

#!/bin/bash
# Auto-detect HiFiBerry and configure ALSA
echo "=========================================="
echo "HiFiBerry Auto-Configuration"
echo "=========================================="
echo ""
# Find HiFiBerry card number
echo "Detecting HiFiBerry..."
CARD_INFO=$(aplay -l | grep -i hifiberry)
if [ -z "$CARD_INFO" ]; then
echo "❌ HiFiBerry not found!"
echo ""
echo "Make sure:"
echo "1. HiFiBerry is properly seated on GPIO pins"
echo "2. /boot/firmware/config.txt has: dtoverlay=hifiberry-dacplusadcpro"
echo "3. You've rebooted after changing config.txt"
exit 1
fi
echo "✓ HiFiBerry found:"
echo "$CARD_INFO"
echo ""
# Extract card number
CARD_NUM=$(echo "$CARD_INFO" | grep -oP 'card \K[0-9]+' | head -1)
echo "Card number: $CARD_NUM"
echo ""
# Create ALSA config
echo "Creating ~/.asoundrc..."
cat > ~/.asoundrc << EOF
# ALSA Configuration for HiFiBerry DAC+ADC Pro
# Auto-generated configuration
pcm.!default {
type asym
playback.pcm "plughw:${CARD_NUM},0"
capture.pcm "plughw:${CARD_NUM},0"
}
ctl.!default {
type hw
card ${CARD_NUM}
}
EOF
echo "✓ Created ~/.asoundrc with card ${CARD_NUM}"
echo ""
# Show the config
echo "Configuration:"
cat ~/.asoundrc
echo ""
# Set volume
echo "Setting volume to 100%..."
amixer -c ${CARD_NUM} sset Master 100% 2>/dev/null || echo "Master control not available"
amixer -c ${CARD_NUM} sset PCM 100% 2>/dev/null || echo "PCM control not available"
amixer -c ${CARD_NUM} sset Digital 100% 2>/dev/null || echo "Digital control not available"
amixer -c ${CARD_NUM} sset Analogue 100% 2>/dev/null || echo "Analogue control not available"
echo ""
# Test speaker
echo "Testing speaker..."
echo "🔊 Playing test tone - you should hear a beep!"
aplay -D plughw:${CARD_NUM},0 /usr/share/sounds/alsa/Front_Center.wav 2>/dev/null || \
speaker-test -D plughw:${CARD_NUM},0 -c 1 -t sine -f 440 -l 2 2>/dev/null
echo ""
echo "=========================================="
echo "Configuration Complete!"
echo "=========================================="
echo ""
echo "Your HiFiBerry is configured as card ${CARD_NUM}"
echo ""
echo "Test commands:"
echo " aplay -D plughw:${CARD_NUM},0 /usr/share/sounds/alsa/Front_Center.wav"
echo " speaker-test -D plughw:${CARD_NUM},0 -c 1 -t wav"
echo ""
echo "For Python script, use device index:"
# Find PyAudio device index
python3 << PYEOF
import pyaudio
audio = pyaudio.PyAudio()
print("")
for i in range(audio.get_device_count()):
info = audio.get_device_info_by_index(i)
if 'hifiberry' in info['name'].lower():
print(f" PyAudio device index: {i}")
print(f" Device name: {info['name']}")
break
audio.terminate()
PYEOF
echo ""