Elegir una tarjeta de sonido predeterminada

1

Estoy ejecutando Lubuntu en un Chromebook (Acer C720) y tengo problemas para obtener cualquier sonido.

/etc/modprobe.d/alsa-base.conf parece ser la configuración predeterminada de Ubuntu y, según tengo entendido, los módulos con índice 0 se usarán de forma predeterminada.

# autoloader aliases
install sound-slot-0 /sbin/modprobe snd-card-0
install sound-slot-1 /sbin/modprobe snd-card-1
install sound-slot-2 /sbin/modprobe snd-card-2
install sound-slot-3 /sbin/modprobe snd-card-3
install sound-slot-4 /sbin/modprobe snd-card-4
install sound-slot-5 /sbin/modprobe snd-card-5
install sound-slot-6 /sbin/modprobe snd-card-6
install sound-slot-7 /sbin/modprobe snd-card-7

# Cause optional modules to be loaded above generic modules
install snd /sbin/modprobe --ignore-install snd $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-ioctl32 ; /sbin/modprobe --quiet --use-blacklist snd-seq ; }
#
# Workaround at bug #499695 (reverted in Ubuntu see LP #319505)
install snd-pcm /sbin/modprobe --ignore-install snd-pcm $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-pcm-oss ; : ; }
install snd-mixer /sbin/modprobe --ignore-install snd-mixer $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-mixer-oss ; : ; }
install snd-seq /sbin/modprobe --ignore-install snd-seq $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; /sbin/modprobe --quiet --use-blacklist snd-seq-oss ; : ; }
#
install snd-rawmidi /sbin/modprobe --ignore-install snd-rawmidi $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; : ; }
# Cause optional modules to be loaded above sound card driver modules
install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-emu10k1-synth ; }
install snd-via82xx /sbin/modprobe --ignore-install snd-via82xx $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq ; }

# Load saa7134-alsa instead of saa7134 (which gets dragged in by it anyway)
install saa7134 /sbin/modprobe --ignore-install saa7134 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist saa7134-alsa ; : ; }
# Prevent abnormal drivers from grabbing index 0
options bt87x index=-2
options cx88_alsa index=-2
options saa7134-alsa index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2
options snd-usb-audio index=-2
options snd-usb-caiaq index=-2
options snd-usb-ua101 index=-2
options snd-usb-us122l index=-2
options snd-usb-usx2y index=-2
# Ubuntu #62691, enable MPU for snd-cmipci
options snd-cmipci mpu_port=0x330 fm_port=0x388
# Keep snd-pcsp from being loaded as first soundcard
options snd-pcsp index=-2
# Keep snd-usb-audio from beeing loaded as first soundcard
options snd-usb-audio index=-2

Si miro las cartas actuales, /proc/asound/cardspuedo ver dos cartas disponibles.

0 [HDMI           ]: HDA-Intel - HDA Intel HDMI
                     HDA Intel HDMI at 0xe0510000 irq 44
1 [PCH            ]: HDA-Intel - HDA Intel PCH
                     HDA Intel PCH at 0xe0514000 irq 45

La tarjeta de sonido HDMI tiene el índice predeterminado, por lo que el conector de audio y los altavoces no funcionan.

Una mirada a los módulos que usan, /proc/asound/modules

0 snd_hda_intel
1 snd_hda_intel

Muestra que ambos usan el mismo módulo. Si ambas tarjetas tienen ese mismo módulo, ¿cómo puedo usar el alsa-base.confpara especificar que quiero usar la tarjeta PCH de manera predeterminada?

Dan Prince
fuente

Respuestas:

0

alsa.opensrc.org tiene una sección corta que describe un escenario similar a este problema.

Si tiene más de una tarjeta de sonido que usa los mismos módulos, puede definir el orden de la tarjeta. Esto se puede hacer especificando opciones de índice e ID para el módulo que se está cargando. Por ejemplo,

opciones snd-usb-audio index = 1,2 vid = 0x0ccd, 0x0d8c pid = 0x0028,0x000c

Esto definirá 2 tarjetas de sonido usb, la primera en index = 1, vid = 0x0ccd y pid = 0x0028; el segundo en index = 2, vid = 0x0d8c y pid = 0x000c. El vid y pid aquí fueron descubiertos usando lsusb.

Ninguna de las tarjetas de sonido es un dispositivo USB, por lo que no puede obtener los campos del módulo lsusb, sin embargo, ese mismo artículo sugiere usar modinfopara obtener una lista de parámetros para ese módulo:

modinfo -p snd_hda_intel

index:Index value for Intel HD audio interface. (array of int)
id:ID string for Intel HD audio interface. (array of charp)
enable:Enable Intel HD audio interface. (array of bool)
model:Use the given board model. (array of charp)
position_fix:DMA pointer read method.(-1 = system default, 0 = auto, 1 = LPIB, 2 = POSBUF, 3 = VIACOMBO, 4 = COMBO). (array of int)
bdl_pos_adj:BDL position adjustment offset. (array of int)
probe_mask:Bitmask to probe codecs (default = -1). (array of int)
probe_only:Only probing and no codec initialization. (array of int)
jackpoll_ms:Ms between polling for jack events (default = 0, using unsol events only) (array of int)
single_cmd:Use single command to communicate with codecs (for debugging only). (bool)
enable_msi:Enable Message Signaled Interrupt (MSI) (bint)
patch:Patch file for Intel HD audio interface. (array of charp)
beep_mode:Select HDA Beep registration mode (0=off, 1=on) (default=1). (array of bool)
power_save:Automatic power-saving timeout (in second, 0 = disable). (xint)
power_save_controller:Reset controller in power save mode. (bool)
align_buffer_size:Force buffer and period sizes to be multiple of 128   bytes. (bint)
snoop:Enable/disable snooping (bint)

Las páginas del manual para modinfomostrar usando una -Fbandera con un nombre de campo para imprimir un valor de campo. Lo intenté modinfo -F id snd_hda_intelpero no produjo ningún resultado.

/proc/asound/tiene carpetas para ambas tarjetas (debajo card0y card1). Estas carpetas a su vez tenían idarchivos. Se cat /proc/asound/card0/idprodujo un rápido HDMI, del mismo modo para la tarjeta1 PCH.

Como un intento ciego, agregué las siguientes líneas a /etc/modprobe.d/alsa-base.conf

# fix ordering of HDMI and PCH soundcards on Chromebook
options snd_hda_intel index=0,1 id=PCH,HDMI

Esta respuesta fue originalmente el final de la pregunta, pero después de reiniciar el sistema, este cambio alsa-base.confsolucionó el problema.

Dan Prince
fuente