ALSA
Ez a cikk egy hangkártya beállítását írja le az ALSA (Advanced Linux Sound Architecture. Magyarul: fejlett Linux hangarchitektúra) segítségével.
As of 2026-01-14, desktop profiles enable the PipeWire sound server. This includes support for packages which make use of the PulseAudio interface (e.g. via the pulseaudio USE flag), by using media-sound/libpulse and pipewire-pulse(1).
Those using PipeWire as a sound server - whether via a profile or otherwise - should typically not need to manually configure ALSA. However, those with more complex hardware and software setups might need to do so.
This page assumes that no sound server is being used.
Telepítés
Hardverészlelés
Gyakran tapasztalható az ALSA telepítése során, hogy a hangkártyák kernel-illesztőprogram-moduljai nincsenek megfelelően telepítve a rendszerre. Annak ellenőrzéséhez, hogy a rendszerben vannak-e működő hangkártya-illesztőprogram-modulok, futtassa az lsmod parancsot. Ha nincsenek
snd_ előtaggal rendelkező modulok, akkor fontolja meg a kernel illesztőprogram moduljának megfelelő telepítését a rendszer specifikus hangkártyájához. Részletesebb útmutató a kernelmodulok (Kernel Modules) oldalán található.A megfelelő illesztőprogram kiválasztásához először észlelje a használt hangvezérlőt. Ehhez a feladathoz használja az lspci parancsot:
user $lspci | grep -i audioA vezérlő nevének meghatározása után a szükséges meghajtó megtalálható az ALSA sound card matrix oldalán.
Kernel
Aktiválja a következő kernelbeállításokat:
Device Drivers --->
<*> Sound card support
<*> Advanced Linux Sound Architecture --->
[*] PCI sound devices --->
Select the driver for your audio controller.
HD-Audio --->
Select a codec or enable all and let the generic parse choose the right one:
[*] Build Realtek HD-audio codec support
[*] ...
[*] Build Silicon Labs 3054 HD-modem codec support
[*] Enable generic HD-audio codec parser
[*] USB sound devices --->
Must have as some cards are presented as USB devices.
[*] USB Audio/MIDI driver
General setup --->
[*] System V IPC
Ha a rendszer nyolcnál több hangkimenettel rendelkezik (a grafikuskártyán minden HDMI kimenet egynek számít), akkor a hangkártyák maximális számát növelni kell:
Device Drivers --->
<*> Sound card support
<*> Advanced Linux Sound Architecture --->
[*] Dynamic device file minor numbers
(32) Max number of sound cards
Kernel modules
For advanced configurations (e.g. involving multiple sound cards), it can be better to select all the ALSA-related kernel options as modules. Then, their use can be configured via two files:
- /etc/modules-load.d/alsa.conf - one line per module, normally only needed for virtual sound cards.
- /etc/modprobe.d/alsa.conf - for the modules' options.
For example, assume a laptop with two hda-intel sound cards and an external USB card. If the aloop and VirMIDI virtual sound cards are also required, together with a card order that persists across reboots:
- the aloop virtual card
- the hda-intel PCM device
- the hda-intel HDMI device
- the VirMIDI virtual device
- the USB card
then the relevant modules should be loaded in that order:
/etc/modprobe.d/alsa.confoptions snd slots=snd-aloop,snd-hda-intel,snd-hda-intel,snd-virmidi,snd-usb-audio
options snd-hda-intel index=1,2 model=1002:1637,1022:15e3
Card indexes start from 0.
root #lspci -nn04:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Renoir Radeon High Definition Audio Controller [1002:1637] 04:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h/19h HD Audio Controller [1022:15e3]
Instruct the kernel to load the virtual sound cards:
/etc/modules-load.d/alsa.confsnd-aloop
snd-virmidi
Szoftver
A Portage ismeri az alsa globális USE jelölőzászlót, amely lehetővé teszi az ALSA támogatását más szoftvercsomagokban. Ennek az USE jelölőzászlónak az engedélyezése automatikusan be fogja húzni a media-libs/alsa-lib szoftvercsomagot (már alapértelmezett az x86 és amd64 asztali profilokban):
Ennek beállítása után feltétlenül frissítse a rendszert, hogy a változtatások érvénybe lépjenek:
root #emerge --ask --changed-use --deep @worldA media-sound/alsa-utils szoftvercsomag tartalmaz néhány eszközt a hangrendszer hibaelhárításához és teszteléséhez. Jó ötlet összevonni a szoftvercsomagot, ha még nincs telepítve:
root #emerge --ask media-sound/alsa-utilsCommands provided by media-sound/alsa-utils include:
| Name | Description |
|---|---|
| aconnect(1) | ALSA sequencer connection manager |
| alsactl(1) | Advanced controls for ALSA soundcard driver |
| alsamixer(1) | Soundcard mixer for ALSA soundcard driver, with ncurses interface |
| amixer(1) | Command-line mixer for ALSA soundcard driver |
| aplay(1) | Command-line player for ALSA soundcard driver |
| aplaymidi(1) | Play Standard MIDI Files |
| arecord(1) | Command-line sound recorder for ALSA soundcard driver |
| aseqdump(1) | Show the events received at an ALSA sequencer port |
| speaker-test(1) | Command-line speaker test tone generator for ALSA |
Beállítás
Fájlok
- /etc/asound.conf - Globális (system egészére ható) beállításfájl.
- ~/.asoundrc - Helyi (felhasználói fiókonkénti) beállításfájl.
- /var/lib/alsa/conf.d/
- /usr/etc/alsa/conf.d/
- /etc/alsa/conf.d/
- /etc/asound.conf or /usr/etc/asound.conf
- ~/.asoundrc
- ${XDG_CONFIG_HOME}/alsa/asoundrc
Configuration locations later in the list override earlier ones. If the XDG_CONFIG_HOME environment variable is not set, it's given a default value of ~/.config/.
/etc/asound.conf is typically used as the global (system-wide) configuration file, while ~/.asoundrc is typically used as a local (per-user) configuration file, overriding ALSA configuration for a specific user. Neither file exists by default; each must be created manually as necessary.
This page refers to both /etc/asound.conf and ~/.asoundrc when describing configuration snippets, but the snippets can typically be added to either file (or to another location), depending on the specific configuration being sought. For example, one particular snippet might be most appropriately applied system-wide, or might be most appropriately applied per-user.
A description of the syntax for ALSA configuration files is available in /usr/share/doc/alsa-lib-<version>/asoundrc.txt.gz.
Various configuration snippets are available in the /usr/share/alsa/, the global configuration directory. For example, snippets available in the /usr/share/alsa/pcm/ directory include dmix.conf, hdmi.conf, and surround51.conf.
Creating a configuration
In general, ALSA should work "out of the box", and not require any manual configuration. To list the current ALSA configuration, including any configuration files being applied, use the command alsactl dump-cfg. Additionally, ALSA's current state can be listed by using the command alsactl dump-state; ALSA state is stored in, and restored from, /var/lib/alsa/asound.state.
Ez a fájl opcionálisan használható, hogy felhasználói fiókonként felülírható legyen az ALSA alapértelmezett beállításai. Ha a rendszer speciális hardverrel rendelkezik, akkor valószínűleg a nulladik kártya és nulladik eszköz (alapértelmezett) nem fog működni.
Ha úgy tűnik, hogy Ön nem találja a használni kívánt hangkártyához tartozó eszközhöz rendelt kártyaszámot, akkor ne essen pánikba – a kártyaszám a rendszerben belsőleg egy név, amelyet használhat. Amennyiben az Ön kártyája valóban így látszik...
user $aplay -Lfront:CARD=Generic,DEV=0 HD-Audio Generic, ALC282 Analog Front speakers
...akkor ez azt jelenti, hogy a ~/.asoundrc fájlnak ilyennek kell lennie:
~/.asoundrcdefaults.pcm.!card Generic
defaults.pcm.!device 0
defaults.ctl.!card Generic
This snippet demonstrates the use of .! to specify 'override' operation mode[1].
The default operation mode, 'merge+create', is indicated by either a bare . character before the final component of the node, or by .+ in that position. In this mode, if a configuration node is not present, a new one is created; otherwise, if it passes type checking, the assignment is merged.
For example, in the node defaults.pcm.card, the final component is card, and there is a bare . preceding it, thus indicating that 'merge+create' mode is used for the node.
However, if .! is used instead, as in the snippet above, 'override' mode is used for the node: the old node value will be overwritten with the new value. Thus, the above snippet will overwrite the old value of each of the specified nodes with the value specified (e.g. PCH)
Ha Önnek nem nyilvánvaló a helyes név, akkor az érvényes nevek listája könnyen megszerezhető ezzel a módszerrel:
user $cat /sys/class/sound/card*/idQ1U HDMI PCH C930e
Itt van a Q1U mikrofon, Q1U jelöléssel. Aztán itt van a beépített HDMI mint HDMI. Az analóg audio csatlakozók a PCH. A webkamera és beépített mikrofon ami a C930e. Ezek bármelyike érvényes név a kártyára.
PulseAudio emulation
Some software (e.g. Firefox) makes use of the Pulse API. For PulseAudio support on a pure-ALSA system (i.e. one not using a sound server such as PipeWire or Pulse), install apulse.
S/PDIF or HDMI .asoundrc
With a default ALSA installation, an S/PDIF or HDMI connection might work "out of the box", without requiring any manual configuration of ALSA. If this is not the case, use aplay -L to find the appropriate card name and device number, as described in the the "Files" section above, then use that information in the following snippet for the appropriate ALSA configuration file:
~/.asoundrcpcm.!spdif {
type hw
card 0
device 1
}
pcm.!default {
type plug
slave {
pcm "spdif"
}
}
# Share a single card with multiple applications
#pcm.!default {
# type plug
# slave.pcm "dmix:CARD=0,DEVICE=1,RATE=48000"
#}
Hangfájlok lejátszásakor az aplay használatával a lejátszás eleje le lesz vágva, mert a digitális S/PDIF vagy HDMI kapcsolat nincs nyitva, és minden hangfájl lejátszásakor el kell indítani. A Micro$oft Window$ észreveszi, és nyitva tartja a vevőegységet vagy a DAC-t, és lejátszás közben újrakeveri a médiát.
A fentiek nem teszik lehetővé, hogy egynél több hangalkalmazásból, vagy egy hangkártyán egyszerre kettőnél több hangot játsszon le. Ennek a feladatnak a végrehajtása érdekében a hangokat a hangminőség enyhe romlásával újrakeverik. A legtöbb zenét hallgató ember ezt inkább nem engedi meg a megszakítások és a hangminőség csökkenése miatt. Azonban azok számára, akik vágynak erre, azoknak a fentebb ki kommentezett kódrészlet éri ezt el.
/etc/asound.conf# Share a single card with multiple applications
pcm.!default {
type plug
slave.pcm "dmix:CARD=PCH,DEVICE=1,RATE=48000"
}
Hang klónozása 2 vagy több eszközhöz
Néha szükség van a hang klónozására (például 2 klónozott képernyő használata különböző bemenetekkel (első képernyő HDMI és második képernyő DVI + Analóg hang)). Ez egy egyszerű szkript, amelyet globális vagy helyi beállításként használhat 2 (vagy több) klóncsatorna számára. a rendszeréhez kell igazítania a kommentált sorok alatti sorokat. További információkat a szkript szerzőjétől és a fórumbeszélgetésről itt olvashat.
The following snippet provides such a configuration. Adjust it as necessary for the system to which it's being applied.
Refer to this forum discussion for more information.
/etc/asound.confctl.!default {
type hw
# Set your default card
card 0
}
pcm.!default both
pcm.both {
type softvol
slave {
pcm {
type plug
slave {
pcm {
type route
slave {
pcm {
type multi
slaves.a.pcm {
type dmix
ipc_key 2589455
ipc_perm 0666
slave {
pcm {
# Add the default card - change to suit your sound card #1
type hw
card 0
device 0
}
buffer_size 4096
channels 2
}
}
slaves.b.pcm {
type dmix
ipc_key 4855689
ipc_perm 0666
slave {
pcm {
# Add the slave sound card - change to suit your sound card #2
type hw
card 1
device 7
}
buffer_size 4096
channels 2
}
}
slaves.a.channels 2
slaves.b.channels 2
bindings.0.slave a
bindings.0.channel 0
bindings.1.slave a
bindings.1.channel 1
bindings.2.slave b
bindings.2.channel 0
bindings.3.slave b
bindings.3.channel 1
}
}
ttable.0.0 1
ttable.1.1 1
ttable.0.2 1
ttable.1.3 1
}
}
}
}
control {
# Define volume control name
name PCM
# Set to the Default card
card 0
}
A/52, AC3, Dolby, DTS
Az S/PDIF kimenetet biztosító hangkártyák veszteségesen tömörített többcsatornás hangot is fel tudják dolgozni. Az én hallásom szerint a nagy bitsebességű tömörített adathordozó csekély veszteséggel jár a kétcsatornás CD vagy DVD hanghoz képest. Feltételezem, hogy ez azért van, mert manapság már többcsatornás érzetű és több hangszórót használunk egyszerre. Tehát minél több hardver, annál ekvivalensebb vagy jobb hangzású?
Ha a hangkártya azt állítja, hogy rendelkezik S/PDIF-vel, akkor valószínűleg átmegy a Dolby-n vagy a DTS-en, még akkor is, ha nem mutat kifejezetten Dolby vagy DTS ikont, vagy nem szerepel a szolgáltatásai között. Ez azért van, mert amikor Dolby-t vagy DTS-t listáznak, akkor szoftvert biztosítanak a keveréshez, vagy a dekódolt jelet analóg kimeneten keresztül biztosítják.
A Dolby vagy DTS dekódoláshoz vagy kódolásához licenc szükséges. Ha már vásárolt hangkártyát ezzel a többcsatornás támogatással, akkor valószínűleg már rendelkezik licenccel. Tekintse meg ezt a cikket további információkért.
Az ALSA media-plugins/alsa-plugins szoftvercsomag forráskódból történő újrafordítást igényel annak érdekében, hogy tartalmazza a futtatható kód az ffmpeg USE jelölőzászlót az A/52 (pcm.a52encode) beépülő modullal.
Adja hozzá a többcsatornás kodekeket az mplayer.conf fájlhoz, így a lejátszani próbált média először a hardveres áthárítás lehetőségét biztosította a lekeverés helyett.
Átkódolás A/52 formátumba
A/52 kódolt hang szimulálásához normál egy vagy kétcsatornás hangfolyamokból vagy fájlokból, az ALSA képes felkeverni az A/52 bővítmény segítségével. (Az a/52 ac-3 vagy dolby digitális kódolásként is ismert.)
~/.asoundrcpcm.!default {
type plug:surroundaudio
}
ctl.!default {
type plug:surroundaudio
}
pcm.a52encode {
type a52
format S16_LE
channels 6
rate 48000
bitrate 448
}
pcm.surroundaudio a52encode
ctl.surroundaudio {
type hw
card 0
device 1
}
Test the configuration with speaker-test(1):
user $speaker-test -Dsurroundaudio -c 6The preceding snippet might not work with PCM 5.1 streams. Additionally, such streams might also require downmixing from S24_LE to S16_LE format: 24-bit is a common format for most media, but receivers can sometimes only decode 16- or 32-bit audio.
A következő .asoundrc kivonat egy PCM 5.1 24 bites adatfolyamot 16 bites A/52 adatfolyamba kódol az S/PDIF-en keresztüli adatfolyamhoz.
~/.asoundrc#####
# Description: This will make it possible to use a52 with PulseAudio out of
# the box. It may be useful for other use cases. Just include
# this in the ~/.asoundrc file.
pcm.a52 {
@args [ CARD ]
@args.CARD {
type string
default 0
}
type plug
slave {
pcm {
type a52
card $CARD
bitrate 640 # Default 448
}
# Convert to S16 bit format, per SPDIF spec
format S16_LE # Required for current S/PDIF spec
}
}
user $aplay -D pcm.a52 /home/me/Music/Led_Zeppelin/Celegration_Day/PCM51-24bit/*.wavuser $aplay -D pcm.a52 /home/me/Music/Led_Zeppelin/Celegration_Day/PCM51-24bit/*.wavJACK audio csatlakozókészlet
Lehetőség van a JACK és az ALSA összekapcsolására. Az cikk írásának időpontjában úgy látszik, hogy a legjobb megoldás az snd-loopback modulon és a jack ALSA pluginon keresztüli összekapcsolás. Tekintse meg a JACK#ALSA, ALSA és a JACK összekapcsolása leírást. Továbbá, JACK — describes the setup of a playing sound with JACK (JACK Audio Connection Kit)..
Jogosultságok
Ha az acl USE jelölőzászló globálisan van engedélyezve, és bejelentkezési szolgáltatás (pl. systemd-logind vagy elogind) van használatban (azaz a rendszer desktop profilt használ), akkor a hangkártyákhoz tartozó engedélyeket a rendszer automatikusan kezeli. Az engedélyek a getfacl segítségével ellenőrizhetők:
user $getfacl /dev/snd/controlC0 | grep larryuser:larry:rw-Egy tágabb megoldás, ha a hangkártyához hozzáférni kívánt felhasználót hozzáadjuk az audio csoporthoz:
root #gpasswd -a larry audiouser $grep audio /etc/groupaudio::18:larryUnless use of the
dmix plugin has been configured, a user being in the audio group might result in a single application taking control of the sound card in a way that prevents other applications from using it. Note also that adding a user to the audio group is not needed when using PipeWire.To confirm that the user has been added to the audio group, check the contents of /etc/group:
user $grep audio /etc/groupaudio::18:larry
Önnek ki kell jelentkeznie, majd újra be kell jelentkeznie annak érdekében, hogy az alsamixer működjön, különben az alsamixer parancs futtatása a "Nem lehet megnyitni a mixert: Nincs ilyen fájl vagy könyvtár" hibát fogja adni.
user $newgrp audioSzolgáltatás
OpenRC
The alsasound service saves and restores mixer levels. To start it manually:
root #rc-service alsasound startAnnak érdekében, hogy az ALSA elinduljon rendszerindításkor, adja hozzá a rendszerindítási futási szinthez a rc-update segítségével:
root #rc-update add alsasound bootsystemd
Ha a systemd-t használja, az ALSA állapot megmarad, és automatikusan visszaáll a rendszer újraindításakor.
Az ALSA állapota a systemctl paranccsal ellenőrizhető:
root #systemctl status alsa-restoreHasználat
This section assumes that the media-sound/alsa-utils package has been installed, as recommended in the "Software" section.
Hangszórók tesztelése
Use speaker-test(1) to test speakers:
user $speaker-test -t wav -c 2Az 5.1-es térhatású hangrendszert használó beállítások számára:
A teszt megszakításához nyomja meg a Ctrl+C billentyűzet gombokat egyszerre.
Various options are available to specify the test output, e.g. the number of channels and the test type; refer to the man page for details.
For systems using 5.1 surround sound:
user $speaker-test -t wav -c 6 -D surround51Ha megpróbálja lefuttatni a teszteljárást, és a speaker-test hibát ad vissza egy olyan IPC szemafor függvényről, amely nincs implementálva, akkor ezt a lehetőséget aktiválni kell a kernelben:
HDMI/SPDIF 5.1 és 7.1 hangszórók tesztelése
Ki van jelentve, hogy az ALSA hangszóróteszt segédprogram nem tesztel több mint kétcsatornás hangot HDMI-n vagy SPDIF-en keresztül. Ehhez az mplayert kell használnod, az ALSA dokumentációból idézve.
Töltsön le egy 5.1 csatornás (FLAC) vagy 7.1 csatornás (FLAC) hangszóróteszt fájlt:
A mellékelt hangfájl lejátszása: meghatározza a HDMI vagy SPDIF eszközt, a PCM fájlt és a csatornák számát, amely valószínűleg vagy 6 (5.1-es héthatású hang esetén), vagy 8 (7.1-csatornás tárhatású hang esetén).
Az 5.1-es csatorna tesztelése az mplayer segítségével:
user $mplayer -channels 6 "/path/to/downloaded/flac_file.flac" -channels 67.1-es csatorna teszteléséhez:
user $mplayer -channels 8 "/path/to/downloaded/flac_file.flac" -channels 8Azért, hogy a nem alapértelmezett eszközzel tesztelése a mplayer lejátszót, adja át a kiegészítő
-ao alsa:device=hw=0.7 opciót, ahol a hw= érték a megfelelő hangeszközhöz van igazítva.user $cvlc /path/to/downloaded/flac_file.flacuser $cvlc /path/to/downloaded/flac_file.flacMikrofon tesztelése
arecord(1) can be used to test a microphone.
A következő parancs kiadása korlátlan ideig rögzíti a hangot, amíg Ön le nem nyomja a CTRL+C billentyűkombinációt. Alapértelmezetten 8 kHz, mono minőségű felvételt fog létrehozni:
user $arecord /tmp/test.wavAz mplayer vagy a aplay használatával játssza le a mentett fájlt. Én általában "dat" vagy legalább "cd" minőségű formátumban rögzítek. A DAT a legjobb a benchmarking során.
The file type, number of channels, and file format can be specified via the -t/--file-type, -c/--channels, and -f/--format options, respectively.
Ha szükséges, akkor válassza ki az audioeszközt, ha nincs megadva alapértelmezett, és adja hozzá a --device=hw:0,0 értéket az arecord parancshoz, helyettesítve a CardNumber-t és az DeviceNumber-t az hw után.
user $arecord --list-devicesElőfordulhat, hogy fel kell oldania a vonal vagy a mikrofoncsatorna némítását. Parancssorban nyissa meg az alsamixer eszközt, és először válassza ki a hangkártyát (azaz F6 gomb a billentyűzeten), majd nyomja meg az F4 gombot a Capture Channels megjelenítéséhez. Billentyűzeten a "bal/jobb" nyilakkal válassza ki a "Mikrofon"-t, és nyomja meg a Szóköz gombot a RÖGZÍTÉS ki/be kapcsolásához.
Hibaelhárítás
Refer to the ALSA/troubleshooting page.
További olvasnivaló a témában
- Power management/Soundcard — describes the setup of power management of sound devices.
- PulseAudio — a multi-platform, open source, sound server that provides a number of features on top of the low-level audio interface ALSA
- Pipewire — low-latency, graph-based, processing engine and server, for interfacing with audio and video devices.
Külső források
- https://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html - Official ALSA PCM (digital audio) plugin descriptions and configuration file examples.
- https://alsa.opensrc.org/MultipleCards - Alsa Opensrc Org support page for multiple sound cards configuration with examples.
Hivatkozások
- ↑ ALSA project - the C library reference: Configuration files: Operation modes for parsing nodes