Hi list,

I have two Debian 10 partitions on my laptop - a venerable ThinkPad
T400 with libreboot - and in one of these partitions (in /dev/sda5,
a.k.a. the "bad partition") sound doesn't work, and in the other one
(/dev/sda4, a.k.a. the "good partition" from here on) it does...

The "bad partition" had Debian 9, and after I upgraded it to 10 with
"apt-get dist-upgrade" sound stopped working on it (details soon). I
then installed Debian 10 from a installation pen drive on an empty
partition to be able to test things on both; sound works on it
perfectly, so let's call it the "good partition".

I've tried several sound debugging recipes that I found on the
internets and they didn't work, so I've decided to use this as an
excuse to learn more about sound on Linux.

"Sound doesn't work" here means that all applications that play
sound - including speaker-test, that seems to be very low-level -
behave normally, but I can't hear anything - even when I use alsamixer
to set "Master", "Headphon", "Speaker", "PCM", "Beep" and "Internal"
all to the maximum level.

I tried to follow the instructions here,

  https://wiki.debian.org/Sound

and I sort of converted them - except for the step with pavucontrol;
more on it at the end of the e-mail - into a script... this one:


  logthis () { echo $*:; eval $* 2>&1; echo; echo; }
  {
    # Debian version
    logthis cat /etc/issue
    logthis cat /etc/debian_version
    logthis cat /etc/os-release
    logthis lsb_release -da
    logthis hostnamectl

    # List devices and PCMs
    logthis aplay -l
    logthis aplay -L

    # Drivers and modules
    logthis "lspci -vvv | grep -A8 Audio"
    logthis "lspci -knn | grep -A2 Audio"

    # Permissions
    logthis groups
    logthis ls -lAF /proc/asound/

    # This partition
    logthis "mount | grep 'on / '"

    # ALSA state
    logthis "rm -f /tmp/o; /usr/sbin/alsactl -f /tmp/o store; cat /tmp/o"

  } | tee ~/oalsa


I ran it in both partitions and compared the outputs with tkdiff.
Here are the relevant differences:

  1) In the bad partition the output of "aplay -l" is:

     **** List of PLAYBACK Hardware Devices ****
     card 0: Intel [HDA Intel], device 0: CX20561 Analog [CX20561 Analog]
       Subdevices: 0/1
       Subdevice #0: subdevice #0
     card 0: Intel [HDA Intel], device 1: CX20561 Digital [CX20561 Digital]
       Subdevices: 1/1
       Subdevice #0: subdevice #0

     and in the good partition it is:

     **** List of PLAYBACK Hardware Devices ****
     card 0: Intel [HDA Intel], device 0: CX20561 Analog [CX20561 Analog]
       Subdevices: 1/1
       Subdevice #0: subdevice #0
     card 0: Intel [HDA Intel], device 1: CX20561 Digital [CX20561 Digital]
       Subdevices: 1/1
       Subdevice #0: subdevice #0

     Note the "Subdevices: 0/1" in the bad partition.

  2) In the output of "/usr/sbin/alsactl -f /tmp/o store" some of
     fields "value.0", "value.1", "dbvalue.0", "dbvalue.1", are
     different between the two partitions, but they are all in the
     allowed ranges and they look reasonable to me (i.e., to my
     untrained eye).

  3) In the output of "/usr/sbin/alsactl -f /tmp/o store" the
     subsections of "state.Intel { ... }" appear in a different order.
     In the good partition the subsections 10-25 are numbered like
     this,

        control.10 : name 'Beep Playback Volume'
        control.11 : name 'Beep Playback Switch'
        control.12 : name 'IEC958 Playback Con Mask'
        control.13 : name 'IEC958 Playback Pro Mask'
        control.14 : name 'IEC958 Playback Default'
        control.15 : name 'IEC958 Playback Switch'
        control.16 : name 'IEC958 Default PCM Playback Switch'
        control.17 : name 'Master Playback Volume'
        control.18 : name 'Master Playback Switch'
        control.19 : name 'Mic Jack'
        control.20 : name 'Internal Mic Phantom Jack'
        control.21 : name 'Dock Mic Jack'
        control.22 : name 'Speaker Phantom Jack'
        control.23 : name 'Dock Headphone Jack'
        control.24 : name 'Headphone Jack'
        control.25 : name 'SPDIF Phantom Jack'

     and in the bad partition like this:

        control.10 : name 'IEC958 Playback Con Mask'
        control.11 : name 'IEC958 Playback Pro Mask'
        control.12 : name 'IEC958 Playback Default'
        control.13 : name 'IEC958 Playback Switch'
        control.14 : name 'IEC958 Default PCM Playback Switch'
        control.15 : name 'Master Playback Volume'
        control.16 : name 'Master Playback Switch'
        control.17 : name 'Mic Jack'
        control.18 : name 'Internal Mic Phantom Jack'
        control.19 : name 'Dock Mic Jack'
        control.20 : name 'Speaker Phantom Jack'
        control.21 : name 'Dock Headphone Jack'
        control.22 : name 'Headphone Jack'
        control.23 : name 'SPDIF Phantom Jack'
        control.24 : name 'Beep Playback Volume'
        control.25 : name 'Beep Playback Switch'

About pavucontrol: in the bad partition the only output device that
appears in the "Output Devices" tab is called "Dummy Output". This
looks like a red flag, but I got the impression - please confirm -
that PulseAudio runs on a level above ALSA, and problems with
PulseAudio should not affect the behavior of speaker-test.

So: any hints? What should I add to my script to compare the behavior
of ALSA in the two partitions? Am I wrong in thinking that
speaker-test ignores PulseAudio? How do I examine the status of
PulseAudio without using the GUI? Are there ways to mute and unmute
the sound using the functions in /usr/share/alsa/utils.sh? What
else?...

  Thanks in advance!
    Eduardo Ochs
    http://angg.twu.net/
    http://angg.twu.net/emacsconf2019.html
      (^ on "executable notes")


_______________________________________________
Alsa-user mailing list
Alsa-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to