Files
wedding-phone/AUDIO_FIX.md
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

3.3 KiB

FIX: HiFiBerry Audio Working Now! 🎉

The Problem

Your HiFiBerry is detected as:

  • Card 3 (not card 0)
  • PyAudio device index 1 (not 0)

The old configuration was trying to use device 0 (the built-in headphone jack), which is why you heard nothing from your speaker.

SOLUTION - Quick Fix

Run this script to auto-detect and configure everything:

cd /home/berwn
chmod +x configure_hifiberry.sh
./configure_hifiberry.sh

This will:

  1. Auto-detect your HiFiBerry card number
  2. Create the correct ~/.asoundrc
  3. Set volume to 100%
  4. Test the speaker

Method 2: Manual Configuration

Step 1: Create correct ALSA config

cat > ~/.asoundrc << 'EOF'
pcm.!default {
    type asym
    playback.pcm "plughw:3,0"
    capture.pcm "plughw:3,0"
}

ctl.!default {
    type hw
    card 3
}
EOF

Step 2: Set volume

amixer -c 3 sset Digital 100%
amixer -c 3 sset Analogue 100%

Step 3: Test speaker

aplay -D plughw:3,0 /usr/share/sounds/alsa/Front_Center.wav
# OR
speaker-test -D plughw:3,0 -c 1 -t wav

Method 3: Use the Updated Python Script

The updated rotary_phone_web.py now uses device index 1 automatically!

Just download the new version and run it:

cd /home/berwn
python3 rotary_phone_web.py

🎵 Test Your Speaker Now

After configuration, test with:

# Using ALSA (command line)
aplay -D plughw:3,0 /usr/share/sounds/alsa/Front_Center.wav

# Using speaker-test
speaker-test -D plughw:3,0 -c 1 -t sine -f 440 -l 3

# Using the Python script
python3 rotary_phone_web.py
# Then pick up the phone handset

📝 Understanding Your Audio Setup

Device 0: bcm2835 Headphones (built-in audio jack)
Device 1: HiFiBerry DAC+ADC Pro ← YOUR SPEAKER IS HERE!

In ALSA terms:

  • Card 0 = bcm2835 (built-in)
  • Card 3 = HiFiBerry ← YOUR CARD

In PyAudio terms:

  • Device index 0 = bcm2835
  • Device index 1 = HiFiBerry ← YOUR DEVICE

Updated Script Features

The new rotary_phone_web.py includes:

  1. Automatic device selection: Uses device index 1 for HiFiBerry
  2. Both playback and recording: Configured for your HiFiBerry
  3. Comments for easy changes: If your device index differs

If your HiFiBerry shows as a different device index, edit these lines in the script:

# Line ~95 - Playback
output_device_index=1,  # Change this number if needed

# Line ~135 - Recording  
input_device_index=1,   # Change this number if needed

🔧 Optional: Make HiFiBerry Card 0

If you want HiFiBerry to be card 0 (optional), disable the built-in audio:

sudo nano /boot/firmware/config.txt
# (or /boot/config.txt on older systems)

# Add or uncomment:
dtparam=audio=off

# Make sure this exists:
dtoverlay=hifiberry-dacplusadcpro

# Save and reboot
sudo reboot

After reboot, HiFiBerry will be card 0, and you can use the simpler config:

cat > ~/.asoundrc << 'EOF'
pcm.!default {
    type asym
    playback.pcm "plughw:0,0"
    capture.pcm "plughw:0,0"
}

ctl.!default {
    type hw
    card 0
}
EOF

🎉 You're All Set!

Your speaker should now work perfectly with:

  • Command-line tools (aplay, speaker-test)
  • Python script (rotary_phone_web.py)
  • Web interface
  • Recording from microphone

Enjoy your working rotary phone! 📞🎵