
Estoy ejecutando Lubuntu en una Chromebook (Acer C720) y tengo problemas para obtener 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 tarjetas actuales /proc/asound/cards
puedo ver dos tarjetas 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, razón por la cual el conector de audio y los parlantes no funcionan.
Una mirada a los módulos que utilizan,/proc/asound/modules
0 snd_hda_intel
1 snd_hda_intel
Muestra que ambos usan el mismo módulo. Si ambas tarjetas tienen el mismo módulo, ¿cómo puedo usar alsa-base.conf
para especificar que quiero usar la tarjeta PCH por defecto?
Respuesta1
alsa.opensrc.orgtiene una breve sección que describe un escenario similar a este problema.
Si tiene más de una tarjeta de sonido que utiliza los mismos módulos, es posible que desee definir el orden de las tarjetas. Esto se puede hacer especificando opciones de índice e ID para el módulo que se está cargando. Por ejemplo,
opciones snd-usb-audio índice=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 el pid aquí se descubrieron usando lsusb.
Ninguna tarjeta de sonido es un dispositivo USB, por lo que no puedes acceder a los campos del módulo con lsusb
; sin embargo, ese mismo artículo sugiere usar modinfo
para 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 man para modinfo
show usan una -F
bandera con un nombre de campo para imprimir un valor de campo. Lo intenté modinfo -F id snd_hda_intel
pero no produjo ningún resultado.
/proc/asound/
Tiene carpetas para ambas tarjetas (bajo card0
y card1
). Estas carpetas a su vez tenían id
archivos. Un cat /proc/asound/card0/id
resultado rápido HDMI
fue , lo mismo para la tarjeta 1 PCH
.
Como un intento un poco 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 era originalmente el final de la pregunta, pero después de reiniciar el sistema, este cambio alsa-base.conf
solucionó el problema.