ALSA

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page ALSA and the translation is 10% complete.
Outdated translations are marked like this.
Some of the information in this article may have drifted out of sync with current practices. Please help out by checking over the content (how to get started).


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.

Hardverészlelés

Important
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 audio

A 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:

KERNEL
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:

KERNEL
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:

  1. the aloop virtual card
  2. the hda-intel PCM device
  3. the hda-intel HDMI device
  4. the VirMIDI virtual device
  5. the USB card

then the relevant modules should be loaded in that order:

FILE /etc/modprobe.d/alsa.conf
options 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.

To get the model strings, use lspci(1) (or lsusb(1) for USB cards):

root #lspci -nn
04: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:

FILE /etc/modules-load.d/alsa.conf
snd-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 @world

A 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-utils

Commands 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 -L
front:CARD=Generic,DEV=0
HD-Audio Generic, ALC282 Analog
Front speakers

...akkor ez azt jelenti, hogy a ~/.asoundrc fájlnak ilyennek kell lennie:

FILE ~/.asoundrc
defaults.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*/id
Q1U
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:

FILE ~/.asoundrc
pcm.!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"
#}
Note
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.
Note
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.
FILE /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.

FILE /etc/asound.conf
ctl.!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.)

FILE ~/.asoundrc
pcm.!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 6

The 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.

FILE ~/.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/*.wav
user $aplay -D pcm.a52 /home/me/Music/Led_Zeppelin/Celegration_Day/PCM51-24bit/*.wav

JACK 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 larry
user: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 audio
user $grep audio /etc/group
audio::18:larry
Warning
Unless 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/group
audio::18:larry
Warning
Ö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 audio

Szolgáltatás

OpenRC

The alsasound service saves and restores mixer levels. To start it manually:

root #rc-service alsasound start

Annak é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 boot

systemd

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-restore

Haszná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 2

Az 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 surround51

Ha 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 6

7.1-es csatorna teszteléséhez:

user $mplayer -channels 8 "/path/to/downloaded/flac_file.flac" -channels 8
Note
Azé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.flac
user $cvlc /path/to/downloaded/flac_file.flac

Mikrofon 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.wav

Az 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-devices
Note
Elő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

Külső források

Hivatkozások