Alsaongelmia
Kun kaikki näyttää toimivan – mutta ääntä ei kuulu
Tämä on tarina tilanteesta, joka on varmasti tuttu monelle Linuxia, SDR:ää ja radiotekniikkaa harrastavalle.
Kaikki näyttää toimivan:
- FM-DX-Webserver pyörii normaalisti
- selainliittymä toimii
- spektri elää
- signaalimittarit liikkuvat
- RDS dekoodautuu
Mutta silti:
Web-audio on täysin mykkä.
Ei virheilmoituksia.
Ei kaatumisia.
Ei mitään selkeää vihjettä siitä, missä vika on.
Ympäristö lyhyesti
Kokoonpano oli seuraava:
- Raspberry Pi 3B+
- FM-DX-Webserver
- TEF668x-vastaanotin
- USB-äänikortti (ESI MAYA U5)
- Audio TEF:ltä line-inin kautta äänikortille
- ALSA + FFmpeg web-audiolle
Kaikki oli aiemmin toiminut.
Ensimmäinen harhapolku: “Spektri elää, joten audiokin on kunnossa”
Tämä on se oletus, johon moni – myös kokenut harrastaja – sortuu.
Jos spektri elää ja tasomittarit liikkuvat, signaaliahan siellä on.
Ja se pitää paikkansa.
Mutta se ei tarkoita, että encoder saa oikeaa audiota.
FM-DX-Webserverissä on kaksi eri maailmaa:
DSP / analyysi
- spektri
- signaalitasot
- RDS-dekoodaus
Web-audio / encoder
- FFmpeg
- MP3 / Opus
- selaimen WebAudio
Nämä eivät ole sama audiopolku.
ALSA:n hiljainen ansa
Kaikki mikserisäädöt näyttivät oikeilta:
- Line In capture päällä
- gainit kohdallaan
- mikrofoni mykistetty
- mitään ei ollut mutella
Silti web-audio pysyi mykkänä.
Ratkaiseva vihje löytyi komennolla:
amixer -c 0
Sieltä löytyi rivi, jota en ollut aluksi huomannut:
Simple mixer control 'PCM Capture Source',0
Items: 'Microphone' 'Line In' 'Stereo Mix' 'Spdif Rx'
Item0: 'Microphone'
Se yksi väärä valinta
Vaikka Line In oli capture-tilassa aktiivinen ja gainit auki, PCM Capture Source osoitti silti Microphoneen.
FM-DX-Webserver (ja FFmpeg) lukevat PCM-lähdettä, eivät yksittäisten faderien tilaa.
Yksi komento ratkaisi kaiken:
amixer -c 0 set 'PCM Capture Source' 'Line In'
Heti tämän jälkeen:
- web-audio heräsi henkiin
- ääni kuului selaimessa normaalisti
- mitään muuta ei tarvinnut muuttaa
Miksi tämä on niin petollinen vika?
Koska:
- ALSA ei varoita
- mikään ei kaadu
- UI ei näytä virhettä
- spektri elää normaalisti
DSP näkee energiaa, mutta encoder tarvitsee oikean lähteen.
Tämä on täysin analoginen tilanne sille, että:
- IF-asteessa näkyy vahva signaali
- mutta AF-vahvistin on mykkä
Vastaanotin ei ole rikki – audiopolku vain katkeaa yhdessä kohdassa.
Opetus: Linux-audiossa kaikki voi olla “melkein oikein” – ja silti täysin mykkää.
Erityisesti USB-äänikorteissa:
- mikserit resetoituvat
- lähdevalinnat unohtuvat
- yksi väärä MUX-valinta riittää katkaisemaan koko ketjun
Ja tämä tapahtuu hiljaa.
Yhteenveto:
- Vika ei ollut kaapelissa
- Vika ei ollut FFmpegissä
- Vika ei ollut selaimessa
- Vika ei ollut FM-DX-Webserverissä
Vika oli yksi ALSA-valinta:
PCM Capture Source = Microphone
Kun sen vaihtoi:
PCM Capture Source = Line In
…kaikki alkoi toimia. Murphyn lain mukaisesti. Tuntien tunkkaus ja ratkaisu ihan nenän edessedessä!