Använda en USB-ljudenhet med en Raspberry Pi

Min tidigare handledning om Raspberry Pi, Använda en Raspberry Pi som en AirPlay-mottagare, utnyttjade enhetens inbyggda 3,5 mm jack för ljudutgång. Detta producerar dock ljud som i bästa fall är medioker och om du vill använda Raspberry Pi för någon mängd ljudljud, kommer det att behöva producera en bättre ljudkvalitet. Vi kommer inte att pressa mycket mer ut ur de inbyggda komponenterna, så i denna handledning kommer jag att förklara hur du ställer in och konfigurerar ett billigt USB-ljudkort som Raspberry Pis standard ljudutgångsenhet, vilket ger en bättre kvalitet , och volym, ljud.


Innan du börjar

Denna handledning kommer att följa med från min tidigare handledning, Använda en Raspberry Pi som en AirPlay-mottagare. Det förväntas att du har slutfört denna handledning och din Raspberry Pi kan för närvarande fungera som en AirPlay-mottagare, om än med den inbyggda ljudutgången.


USB-ljudenhet

Tillbaka i goda gamla dagar behövde de flesta ljudenheter sin egen uppsättning drivrutiner och programvara för att fungera. Detta visade sig ofta mycket frustrerande för slutanvändare och utvecklare.

Anledningen till detta är att många enheter från olika tillverkare faktiskt använder samma chipset, De fysiska komponenterna som utgör enheten. Det här är vad drivrutinerna och programvaran är för och du kommer ofta att finna att ett antal olika ljudenheter från många tillverkare kommer att använda exakt samma chipset, den enda skillnaden mellan dem kommer vanligtvis bara att vara varumärket.

Numera har de flesta moderna operativsystem och ljudenheter inga krav som de flesta chipset fungerar till en accepterad standard, och eftersom de flesta tillverkare använder samma små antal chipset, är det mycket lättare att tillhandahålla omfattande stöd. Det finns säkert ett litet antal mer specialiserade ljudenheter som kräver ytterligare programvara men alla generiska ljudutmatningsenheter är vanligtvis bara plug-and-play

Kompatibilitet

Detta gäller inte bara Mac OS X och Windows, utan även Linux, med Raspbian som kan stödja enheter via AlsaProject, en uppsättning kompatibla ljuddrivrutiner för Linux.

Tips: Inte alla USB-ljudutgångsenheter stöds, men du kan kontrollera AlsaProject Compatibility List för att säkerställa att enheten du planerar att använda ska vara kompatibel.

Vad jag rekommenderar

USB-ljudenheten som jag ska använda med min Raspberry Pi är en generisk som jag hittade på Amazon, kostar bara $ 2. Det kallas ganska vagt, 7.1-kanals USB-externt ljudkort ljudadapter. Anledningen till att du använder den här speciella USB-ljudenheten är följande:


Jag har tidigare använt denna USB-ljudenhet med både Mac och PC. Inte illa för något som kostar mindre än en kopp kaffe!
  • Det är billigt
  • Det behöver inte mycket kraft
  • Det är tillräckligt liten för att användas lätt
  • Det stöds

Denna speciella ljudenhet använder C-Media-ljudchipsetet, något som stöds av AlsaProject i Raspian.

När du använder en USB-ljudenhet måste du se till att din Raspberry Pi får tillräckligt med ström så att den kan stödja en USB-driven enhet. Om du kör din Raspberry Pi från en nätadapter ska du vara helt klar.

Tips: USB-ljudenheter är vanligtvis lite större än en minnessticka och kommer antagligen att ta upp mer fysiskt utrymme, vilket hindrar åtkomst till den andra USB-porten. Om du behöver använda båda USB-portarna samtidigt rekommenderar jag att du använder en USB-förlängningskabel och ansluter din USB-ljudenhet så, istället.


Inställning

Nu när jag har täckt kraven för att köpa en lämplig USB-ljudenhet, visar jag dig hur du konfigurerar den.

Följande steg kommer att utföras inom kommandoraden på Raspberry Pi. Om du är bekant med SSH och vet hur du får tillgång till din Raspberry Pi med den, kan du utföra följande steg utan att behöva vara fysiskt i din Raspberry Pi.

Steg 1

Innan du fortsätter, se till att din Raspberry Pi är avstängd och anslut sedan USB-ljudenheten till dess USB-port. Kom ihåg att om du behöver åtkomst till båda USB-portarna använder du USB-ljudenheten tillsammans med en USB-förlängningskabel, förhindrar att den andra porten blockeras.

Steg 2

Kör upp din Raspberry Pi och, när den har startat, öppna LXTerminal app. (Återigen, om du är bekant med SSH så kan du helt enkelt ansluta och utföra de återstående kommandona på distans).

Först ska jag se till att USB-ljudenheten detekteras av både hårdvaran och programvaran. Ange följande kommando och tryck på enter:

$ lsusb

Vi kan se vilka USB-enheter som är anslutna och förhoppningsvis se USB-ljudenheten.

Detta visar information om anslutna USB-enheter. Som du kan se är den senaste enheten som visas i skärmbilden ovan USB-ljudenheten märkt som C-Media Electronics, Inc. Ljudadapter. Än så länge är allt bra.

Steg 3

Jag kommer att använda ett kommando för att visa den nuvarande ljudenheten, som fortfarande är det inbyggda ljudet. Detta kommando visar olika uppgifter om den aktuella ljudenheten.

$ amixer

Detta kommando ger information om den angivna ljudenheten. Som standard är det den inbyggda ljudutgången.

Steg 4

Jag vill inte använda den inbyggda ljudenheten, istället vill jag använda USB-ljudenheten som jag har anslutit. Jag behöver redigera en konfigurationsfil så att varje gång Raspberry Pi stöttar kommer det att vara standard att använda USB-ljudenheten som den föredragna metoden för ljudutgång.

Konfigureringsfilen som jag behöver redigera kallas alsa-base.conf. Här kontrolleras hur alla anslutna ljudenheter hanteras. Med den här konfigurationsfilen kan jag ställa in den ordning som ska användas för en ansluten ljudenhet, vilket gör USB-ljudenheten den första som ska användas och sedan återgå till de andra om den inte detekteras. För att göra detta, skriv in:

$ sudo nano /etc/modprobe.d/alsa-base.conf

Konfigurationsfilen anger alla olika inställningar för ljudutgång. Det är här vi behöver göra en enda förändring.

Detta kommer att starta textredigeraren nano med konfigurationsfilen så att jag kan redigera den i enlighet med detta. Det kan se lite komplicerat eller svårt att förstå, men allt jag behöver göra är att lägga till en enda karaktär. Leta efter följande rad:

alternativ snd-usb-ljudindex = -2

För tillfället orsakar den här raden alla USB-ljudenheter som detekteras att tryckas ner i orderlistan och används inte som standard. För att åsidosätta detta, lägg helt enkelt till en pund / hash symbol framför linjen så den läser så här:

# alternativ snd-usb-ljudindex = -2

Om du bara kommenterar linjen kommer USB-ljudenheten att vara den primära metoden för utmatning.

Steg 5

Tryck Ctrl Z och spara ändringarna, starta om din Raspberry Pi genom att ange:

$ sudo omstart

Steg 6

När Raspberry Pi startas om kör du igen följande kommando:

$ amixer

Om allt går bra kommer det nu att visa mer information när den samlar den från USB-ljudenheten.

Istället för samma information som jag fick tidigare, borde jag nu ha en helt annan uppsättning. Du kommer märka att jag också har information om ljudinspelning, vilket ytterligare bekräftar att jag använder USB-ljudenheten som mitt standard ljudutmatningsalternativ.

Det är konstigt att det fortfarande anges att utgången är i mono. Detta kan ignoreras, eftersom det faktiskt inte är korrekt, utsignalen kommer verkligen att vara stereo, som du kommer att se (eller höra) inom kort.


Testa ljud

Nu när jag har ställt in USB-ljudenheten som standard ljudutgång för Raspberry Pi, är det dags att testa det för att det ska fungera. Anslut en uppsättning högtalare till USB-ljudenheten och börja sedan spela upp ljud genom dem.

Raspian innehåller ett antal test ljudklipp som jag kan använda för att kontrollera att allt fungerar bra. Ange följande kommando:

$ aplay /usr/share/scratch/Media/Sounds/Vocals/Singer1.wav

Det finns ett antal medföljande ljudklipp för teständamål.

Om allt gick bra, borde du ha hört ett snabbt klipp av en opera sångers röst. Klämman är oerhört låg kvalitet och mono, så jag ser till att allt fungerar och använder ett klipp som är i stereo.

Steg 1

Jag ska testa det här ytterligare med hjälp av en MP3-fil, men jag behöver först installera någon programvara som kan göra det här. Jag kan använda verktyget mpg321 att göra detta. Installera det är väldigt enkelt, använd bara:

$ sudo apt-get -y installera mp321

Ytterligare programvara krävs för att spela upp MP3-filer.

Raspian installerar automatiskt verktyget och eventuella ytterligare bitar och bitar som det kan behöva fungera.

Steg 2

Jag har skapat ett litet MP3-klämma som pannar från vänster till höger, vilket gör att alla stereoljud fungerar korrekt. För att ladda ner det, skriv:

$ wget https://cdn.tutsplus.com/mac.tutsplus.com/uploads/2013/10/test-song.mp3

'wget' hämtar filer till din Raspberry Pi, så se till att en internetanslutning är tillgänglig.

Det här ska det låta som:

Steg 3

När låten är nedladdad, skriv in:

$ mpg321 test-song.mp3

Vissa uppgifter visas under uppspelning.

Du bör höra ett kort musikklipp som pannar ljud från vänster till höger.


Justera volymen

Om ljudutgången är för hög eller tyst kan vi justera detta med ett annat verktyg som heter alsamixer.

För att starta det, skriv bara in namnet på kommandoraden, så här:

$ alsamixer

'alsamixer' styr vissa funktioner i ljudutgången, huvudsakligen volymen.

Detta ger en mer grafisk bild av volymen och informationen om USB-ljudenheten. Med piltangenterna på ditt tangentbord väljer du volymkolumnen och justerar volymen högre eller lägre, beroende på dina behov. Håll volymen under 80-90% om möjligt, för att undvika förvrängning.


Avslutar

Att använda en dedikerad USB-ljudenhet betyder bättre ljudkvalitet och mer kontroll, liksom bättre volym så många enheter kan producera mycket bättre än Raspberry Pi: s inbyggda ljud.

Vid slutet av denna handledning bör du nu kunna konfigurera en ny USB-ljudenhet och ställa in den som Raspberry Pi: s standard ljudutmatningsalternativ när du använder Raspian. Om du använde din Raspberry Pi som en AirPlay-mottagare behöver du inte omkonfigurera några inställningar, starta bara AirPlay-tjänsten och ljudet kommer automatiskt att matas ut till USB-ljudenheten automatiskt..