codepayne / linux-sound-huawei

linux kernel for Huawei matebook AMD sound support
Other
86 stars 3 forks source link

No sound on 6.7rc5 and Matebook AMD (HUAWEI BOM-WXX9 M1010) #28

Open andreaconsole opened 6 months ago

andreaconsole commented 6 months ago

Hi @codepayne , I've just installed 6.7rc5 on Ubuntu 23.10 (6.7.0-060700rc5-generic (64-bit); HUAWEI BOM-WXX9 M1010). I took a look at the wiki and at this page to configure alsamixer and run the command you suggested as root (echo -1 > /sys/bus/pci/drivers/snd_acp_pci/0000:03:00.5/power/autosuspend_delay_ms), but the pc is still silent. Any hints? Thanks a lot! Free beer for you when you come to Rome!

Attached Screenshot_20231215_155809 Screenshot_20231215_155735 dmesg.txt http://alsa-project.org/db/?f=bb9c6b623e1b0015506f194ec7f76783cc7120b0

TomZanna commented 6 months ago

did you only run the workaround once with echo -1 > /sys/...? Have you already tried running the command, logging out and then logging in?

if you have created the systemd service, can you show me the output of the sudo systemctl status disable-sound-autosuspend.service command?

from alsa-info.sh I see you have both pipewire and pulseaudio with only the first one running. Did you change anything manually or has it been like this since you installed it?

andreaconsole commented 6 months ago

Hi Tom, thank you for answering. I didn't set up the systemd service because I first wanted to check if the workaround was effective for me.

I've just tried the sequence:

  1. workaround
  2. log off
  3. log in
  4. workaround again

but still no sound.

Regarding the presence of both pulseaudio and pipewire, it probably dates back to when I installed Kubuntu on my laptop. I tried fixing the issue myself before realising how complex the solution was. I've never refreshed the installation since then (I've merely upgraded the system as new Kubuntu releases came out) as this is my "production" laptop, with lots of software painfully installed :)

saber716rus commented 6 months ago

I have the same model, I tried it on rc6 too, there is no sound. Although I turned on alsamixer, I used a workaround. https://github.com/codepayne/linux-sound-huawei/issues/27

TomZanna commented 6 months ago

are you both on Ubuntu 23.10? and you both see the sound card from alsamixer but not from Gnome/KDE settings right? can you try to play an audio with the aplay command? (@saber716rus remember to push Headphone and DAC to 100%)

In the meantime I'll also try Ubuntu 23.10

saber716rus commented 6 months ago

https://github.com/codepayne/linux-sound-huawei/issues/27#issuecomment-1868257677 there is also no sound. saber716rus@saber716rus-M1010 ~> aplay -d 1 /usr/share/sounds/alsa/Noise.wav Воспроизведение WAVE '/usr/share/sounds/alsa/Noise.wav' : Signed 16 bit Little Endian, Частота 48000 Гц, Моно saber716rus@saber716rus-M1010 ~>

andreaconsole commented 6 months ago

I just tried. No sound This is what I see: Screenshot_20231223_125109

TomZanna commented 6 months ago

In the meantime I'll also try Ubuntu 23.10

Here I am. After a fresh install, I just needed to install the 6.7-rc6 kernel from the mainline ppa, set the levels in alsamixer, and enable the workaround to get the audio to work. So I switched my system to PulseAudio and had the same situation as @andreaconsole. Returning to Pipewire the problems were resolved... probably by delving into the management of profiles in pulseaudio it should also work on pulseaudio.

To switch from pipewire to pulseaudio I run sudo apt install pulseaudio pipewire-pulse- (pay attention to the last dash, for some reason pipewire-pulse is not automatically removed) From pulseaudio to pipewire I run sudo apt install pipewire-audio In any case, be careful to the packages that apt will install/remove before pressing the Y key, they should only be components of pipewire or pulseaudio.

@saber716rus I'm no expert but your situation seems very strange, IMO it is better to keep things separate in the relevant GitHub issues.

saber716rus commented 6 months ago

@TomZanna perhaps the problem is in the gnome's settings. Kde sees the sound card itself, while there will be no sound, but gnome does not see it. he writes a fictitious sound.

andreaconsole commented 6 months ago

Thanks for helping out, Tom. I installed pipewire with sudo apt install pipewire-audio, but nothing changed. How do I switch to using it? I do not see any option in the config tool.

TomZanna commented 6 months ago

@andreaconsole It should be enabled by default but you can check by running systemctl --user status pipewire and systemctl --user status pipewire-pulse. You should see "active (running)"

In KDE settings you can still see the audio card right? Can you attach the output of alsa-info and dpkg --list | grep "wire\|pulse"?

do you have any possibility of trying a clean install of a distro with kernel 6.7-rc in a second/external disk or a second partition?

andreaconsole commented 6 months ago

@TomZanna ok, the system returns active/running to both commands. This is my alsa-info http://alsa-project.org/db/?f=1511e08d23aab877a0a1f4c3a76a6acc5612a642 and the result of dpkg --list | grep "wire\|pulse" is attached. In KDE settings I only have one option for playback device, which is "audio pro", as before. Regarding the clean install, I would avoid that. I'm afraid I could mess up the laptop and jeopardize other my ongoing projects. dkpg-wire.txt

saber716rus commented 6 months ago

@andreaconsole It should be enabled by default but you can check by running systemctl --user status pipewire and systemctl --user status pipewire-pulse. You should see "active (running)"

In KDE settings you can still see the audio card right? Can you attach the output of alsa-info and dpkg --list | grep "wire\|pulse"?

do you have any possibility of trying a clean install of a distro with kernel 6.7-rc in a second/external disk or a second partition?

see what a picture the pavucontol gui gives Снимок экрана от 2023-12-24 13-34-40 Снимок экрана от 2023-12-24 13-34-55

saber716rus commented 6 months ago

saber716rus@saber716rus-M1010 ~> dpkg --list | grep "wire|pulse" ii gstreamer1.0-pipewire:amd64 0.3.79-2 amd64 GStreamer 1.0 plugin for the PipeWire multimedia server ii libcanberra-pulse:amd64 0.30-10ubuntu4 amd64 PulseAudio backend for libcanberra ii libpipewire-0.3-0:amd64 0.3.79-2 amd64 libraries for the PipeWire multimedia server ii libpipewire-0.3-common 0.3.79-2 all libraries for the PipeWire multimedia server - common files ii libpipewire-0.3-modules:amd64 0.3.79-2 amd64 libraries for the PipeWire multimedia server - modules ii libpulse-mainloop-glib0:amd64 1:16.1+dfsg1-2ubuntu4 amd64 PulseAudio client libraries (glib support) ii libpulse0:amd64 1:16.1+dfsg1-2ubuntu4 amd64 PulseAudio client libraries ii libpulsedsp:amd64 1:16.1+dfsg1-2ubuntu4 amd64 PulseAudio OSS pre-load library ii libwireplumber-0.4-0:amd64 0.4.14-4ubuntu1 amd64 Shared libraries for WirePlumber ii pamixer 1.6-1 amd64 pulseaudio command line mixer ii pipewire:amd64 0.3.79-2 amd64 audio and video processing engine multimedia server ii pipewire-alsa:amd64 0.3.79-2 amd64 PipeWire ALSA plugin ii pipewire-audio 0.3.79-2 all recommended set of PipeWire packages for a standard audio desktop use ii pipewire-bin 0.3.79-2 amd64 PipeWire multimedia server - programs ii pipewire-pulse 0.3.79-2 amd64 PipeWire PulseAudio daemon rc pulseaudio 1:16.1+dfsg1-2ubuntu4 amd64 PulseAudio sound server ii pulseaudio-utils 1:16.1+dfsg1-2ubuntu4 amd64 Command line tools for the PulseAudio sound server ii rfkill 2.39.1-4ubuntu2 amd64 tool for enabling and disabling wireless devices ii wireless-regdb 2022.06.06-0ubuntu2 all wireless regulatory database ii wireless-tools 30~pre9-13.1ubuntu4 amd64 Tools for manipulating Linux Wireless Extensions ii wireplumber 0.4.14-4ubuntu1 amd64 modular session / policy manager for PipeWire saber716rus@saber716rus-M1010 ~>

saber716rus commented 6 months ago

saber716rus@saber716rus-M1010 ~ [1]> systemctl --user status pipewire ● pipewire.service - PipeWire Multimedia Service Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: enabled) Active: active (running) since Sun 2023-12-24 13:28:47 MSK; 15min ago TriggeredBy: ● pipewire.socket Main PID: 1148 (pipewire) Tasks: 3 (limit: 18305) Memory: 28.6M CPU: 6.241s CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service └─1148 /usr/bin/pipewire

дек 24 13:29:48 saber716rus-M1010 pipewire[1148]: mod.adapter: 0x5bd55f8df120: can't get format: Нет такого файла или каталога дек 24 13:29:48 saber716rus-M1010 pipewire[1148]: mod.adapter: usage: node.name= дек 24 13:34:15 saber716rus-M1010 pipewire[1148]: spa.alsa: Broken configuration: no configurations available: Недопустимый аргумент дек 24 13:34:15 saber716rus-M1010 pipewire[1148]: spa.alsa: Broken configuration: no configurations available: Недопустимый аргумент дек 24 13:34:15 saber716rus-M1010 pipewire[1148]: mod.adapter: 0x5bd55fb0b850: can't get format: Нет такого файла или каталога дек 24 13:34:15 saber716rus-M1010 pipewire[1148]: mod.adapter: usage: node.name= дек 24 13:34:15 saber716rus-M1010 pipewire[1148]: spa.alsa: Broken configuration: no configurations available: Недопустимый аргумент дек 24 13:34:15 saber716rus-M1010 pipewire[1148]: spa.alsa: Broken configuration: no configurations available: Недопустимый аргумент дек 24 13:34:15 saber716rus-M1010 pipewire[1148]: mod.adapter: 0x5bd55fb0b850: can't get format: Нет такого файла или каталога дек 24 13:34:15 saber716rus-M1010 pipewire[1148]: mod.adapter: usage: node.name= fish: Job 2, 'systemctl --user status pipewire' has stopped saber716rus@saber716rus-M1010 ~ [1]> systemctl --user status pipewire-pulse ● pipewire-pulse.service - PipeWire PulseAudio Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; enabled; preset: enabled) Active: active (running) since Sun 2023-12-24 13:28:47 MSK; 15min ago TriggeredBy: ● pipewire-pulse.socket Main PID: 1158 (pipewire-pulse) Tasks: 3 (limit: 18305) Memory: 32.3M CPU: 6.842s CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service └─1158 /usr/bin/pipewire-pulse

дек 24 13:28:47 saber716rus-M1010 systemd[1141]: Started pipewire-pulse.service - PipeWire PulseAudio. saber716rus@saber716rus-M1010 ~>

TomZanna commented 6 months ago

@andreaconsole from alsa-info and dpkg everything seem right.

@saber716rus oh, I hadn't thought about pavucontrol. Here's mine. If I set it to Pro Audio the audio no longer works. pavucontrol Remember that the workaround must be applied at every startup if you have not created the systemd service.

P.S. When reporting the output of a command, if possible attach a file or include them in a code snipped and also in a collapsed sections

andreaconsole commented 6 months ago

@TomZanna this is weird: if I set profile -> off I don't have any output device available (pavucontrol: "no output device available")

TomZanna commented 6 months ago

@andreaconsole how many entries do you have in the configuration tab? We are interested in ACP/ACP3x/ACP6x audio coprocessor, Radeon HD Audio Controller is the sound via HDMI output.

saber716rus commented 6 months ago

I tried the "pro" profile, but there is still no sound. Снимок экрана от 2023-12-24 17-47-56

Снимок экрана от 2023-12-24 17-47-48

andreaconsole commented 6 months ago

@TomZanna I have the same options as @saber716rus

TomZanna commented 6 months ago

my impression is that the sound server (PulseAudio or Pipewire) is making a mess in detecting sound cards. It would be interesting to be able to test the individual sound cards directly but I don't know how 🤷‍♂️😢

andreaconsole commented 6 months ago

Thanks anyway. It seems I will have to wait a little longer...

saber716rus commented 6 months ago

my impression is that the sound server (PulseAudio or Pipewire) is making a mess in detecting sound cards. It would be interesting to be able to test the individual sound cards directly but I don't know how 🤷‍♂️😢

perhaps you are right.

andreaconsole commented 6 months ago

Could the output of wireplumber be useful? wireplumber.txt

TomZanna commented 6 months ago

@andreaconsole @saber716rus can you try the today's Fedora Workstation Rawhide? just boot it from a usb, adjust the levels in alsamixer and apply the workaround. At the moment it's only available from the official website, later you will also be able to find it from mirrors such as fedora.mirror.garr.it

Also in this issue similar to yours they solved it by creating a new account. It's a different model, give it a try but I don't have much hope.

andreaconsole commented 6 months ago

Hi @TomZanna , I tried by creating a new account, but it didn't work. I tried booting Fedora from the usb, too. Alsamixer shows the sound card (I applied the same changes as in my Kubuntu installation), but it is not available in the system configuration tool (it only shows the "dummy" option). I applied the workaround and even created an additional user to switch to, but nothing changed in the config menu.

codepayne commented 6 months ago

@TomZanna @andreaconsole @saber716rus I have been working on a proper card profile for this sound card. This new profile also adds proper support for the internal DMIC microphone and support for microphones from headsets. Maybe this fixes some of your issues?

The profile can be found here: https://github.com/codepayne/alsa-ucm-conf

To install: curl -L -o alsa-ucm-conf.tar.gz https://github.com/codepayne/alsa-ucm-conf/archive/refs/heads/master.tar.gz sudo tar xvzf alsa-ucm-conf.tar.gz -C /usr/share/alsa --strip-components=1 --wildcards "/ucm" "/ucm2"

In order to reload the new profile settings run these commands: alsaucm -c acp3x-es83xx reload && sudo alsactl restore -P && alsactl init

Then restart the laptop.

This will only work on the driver from upstream, meaning only the rc kernels for the moment ( doesn't work on my sound drivers from my github).

codepayne commented 6 months ago

@andreaconsole When you play video in youtube do you observe that the video stream flows at normal speed, or does it hang? Can you play a video in youtube for a few seconds and then paste the output from /proc/interrupts?

andreaconsole commented 6 months ago

@codepayne

tar: /ucm: Not found in archive
tar: /ucm2: Not found in archive
tar: Exiting with failure status due to previous errors

what did I do wrong?

Can you play a video in youtube for a few seconds and then paste the output from /proc/interrupts?

Do you mean after applying the workaround?

codepayne commented 6 months ago

@andreaconsole can you look inside the archive that curl downloaded, do you see folders named ucm and ucm2?

Do you mean after applying the workaround?

Yes after the workaround.

andreaconsole commented 6 months ago

@andreaconsole can you look inside the archive that curl downloaded, do you see folders named ucm and ucm2?

Yes, these two folders are both present

codepayne commented 6 months ago

@andreaconsole ok, the oneliner work for me, you can do the step manually:

Delete /usr/share/alsa/ucm and /usr/share/alsa/ucm2 folders, and replace them with the two folders from the archive.

andreaconsole commented 6 months ago

Youtube videos play smooth. Here is the output of proc/interrupt [Uploading proc_int.txt…]()

codepayne commented 6 months ago

@andreaconsole Can you also attach a screenshot from pavucontrol on the input and output tab? by the way I can't download the output of /proc/interrupts for some reason.

saber716rus commented 6 months ago

@codepayne copied and initialized and rebooted. There are no changes. saber716rus@saber716rus-M1010 ~> alsaucm -c acp3x-es83xx reload && sudo alsactl restore -P && alsactl init [sudo] пароль для saber716rus: Found hardware: "HDA-Intel" "ATI R6xx HDMI" "HDA:1002aa01,00aa0100,00100700" "0x152d" "0x1365" Hardware is initialized using a generic method saber716rus@saber716rus-M1010 ~ [99]> Снимок экрана от 2023-12-30 19-48-56

codepayne commented 6 months ago

@saber716rus post screenshots from the input and output tabs of pavucontrol.

saber716rus commented 6 months ago

That's what I told you earlier. Снимок экрана от 2023-12-30 19-52-46 Снимок экрана от 2023-12-30 19-52-55

saber716rus commented 6 months ago

@codepayne I have a core saber716rus@saber716rus-M1010 ~> uname -a Linux saber716rus-M1010 6.7.0-060700rc6-generic #202312172332 SMP PREEMPT_DYNAMIC Sun Dec 17 23:41:37 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux saber716rus@saber716rus-M1010 ~>

andreaconsole commented 6 months ago

Attached the screenshots of my pavucontrol after the change you proposed and after applying the workaround Screenshot_20231230_175406 Screenshot_20231230_175547 Screenshot_20231230_175608

codepayne commented 6 months ago

@andreaconsole The UCM profile doesn't seem to be enabled, don't understand why. WHat do you have in the input devices and output devices tab? Can you paste the output of: alsactl info ? Also reupload the /proc/interrupts output, I can't download it.

andreaconsole commented 6 months ago

Here they are: alsactlinfo.txt proc_int.txt

codepayne commented 6 months ago

@andreaconsole The good news is that it seems that the sound works ok for you since videos do not hang and interrupts occur on the i2s bus. It looks like it's something related to pipewire or pulseaudio. Which one do you use right now ?

andreaconsole commented 6 months ago

How do I check?

codepayne commented 6 months ago

systemctl --user status pulseaudio

systemctl --user status pipewire

andreaconsole commented 6 months ago

pactl info | grep "Server Name" -> Server Name: PulseAudio (on PipeWire 0.3.79)

andrea@andrea-BOM-WXX9:~$ systemctl --user status pulseaudio Unit pulseaudio.service could not be found. andrea@andrea-BOM-WXX9:~$ systemctl --user status pipewire ● pipewire.service - PipeWire Multimedia Service Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: enabled) Active: active (running) since Sat 2023-12-30 17:51:15 CET; 23min ago TriggeredBy: ● pipewire.socket Main PID: 1806 (pipewire) Tasks: 3 (limit: 8588) Memory: 22.7M CPU: 23.676s CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service └─1806 /usr/bin/pipewire dic 30 17:51:15 andrea-BOM-WXX9 pipewire[1806]: spa.alsa: Broken configuration: no configurations available: Invalid argument dic 30 17:51:15 andrea-BOM-WXX9 pipewire[1806]: spa.alsa: Broken configuration: no configurations available: Invalid argument dic 30 17:51:15 andrea-BOM-WXX9 pipewire[1806]: mod.adapter: 0x59f68e7826e0: can't get format: No such file or directory dic 30 17:51:15 andrea-BOM-WXX9 pipewire[1806]: mod.adapter: usage: node.name= dic 30 17:52:49 andrea-BOM-WXX9 pipewire[1806]: spa.alsa: hw:1: snd_pcm_drop No such device dic 30 17:52:49 andrea-BOM-WXX9 pipewire[1806]: spa.alsa: hw:1: close failed: No such device dic 30 17:52:49 andrea-BOM-WXX9 pipewire[1806]: spa.alsa: front:1: snd_pcm_drop No such device dic 30 17:52:49 andrea-BOM-WXX9 pipewire[1806]: spa.alsa: front:1: close failed: No such device dic 30 18:06:00 andrea-BOM-WXX9 pipewire[1806]: spa.alsa: front:1: snd_pcm_drop No such device dic 30 18:06:00 andrea-BOM-WXX9 pipewire[1806]: spa.alsa: front:1: close failed: No such device

saber716rus commented 6 months ago

saber716rus@saber716rus-M1010 ~> alsactl info #

Sound card

#

This script visits the following commands/files to collect diagnostic information about your ALSA installation and sound related hardware.

dmesg lspci aplay amixer alsactl rpm, dpkg /proc/asound/ /sys/class/sound/ ~/.asoundrc (etc.)

See './alsa-info.sh --help' for command line options.

cat: '/sys/module/snd_acp_legacy_mach/parameters/*': No such file or directory ./alsa-info.sh: line 659: tree: command not found ./alsa-info.sh: line 659: tree: command not found dmesg: read kernel buffer failed: Operation not permitted Automatically upload ALSA information to www.alsa-project.org? [y/N] : y Uploading information to www.alsa-project.org ... Done!

Your ALSA information is located at http://alsa-project.org/db/?f=947c55517f110162e6f0277b737403a659c3629a Please inform the person helping you.

saber716rus@saber716rus-M1010 ~> systemctl-pipe.txt systemctl-pulse.txt

codepayne commented 6 months ago

@andreaconsole You have pipewire running, can you run the command: pipewire --version and paste the output.

We need to enable the debug logs of pipewire to see what happens: first copy this file to your home config folder:

cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/pipewire.conf

Then edit the file from ~/.config/pipewire/pipewire.conf and search for: log.level Uncomment the line and set it to value 5 like this:

    log.level                             = 5

Then restart pipewire:

systemctl --user --now restart pipewire.service pipewire.socket pipewire-pulse.service pipewire-pulse.socket wireplumber.service

Then upload the logs here, you can get them like this:

journalctl --user -u pipewire -b > pipewire-logs.txt
andreaconsole commented 6 months ago

pipewire Compiled with libpipewire 0.3.79 Linked with libpipewire 0.3.79

I had to create the "pipewire" folder within my .config folder because it was not there (is it weird?). This is the log after restarting the service: pipewire-logs.txt

codepayne commented 6 months ago

@andreaconsole The input devices and output devices tab, can you upload the screenshots?

codepayne commented 6 months ago

@andreaconsole also install the tree package, and then issue the command:

tree /sys/class/sound/
andreaconsole commented 6 months ago

/sys/class/sound/ ├── card0 -> ../../devices/pci0000:00/0000:00:08.1/0000:03:00.1/sound/card0 ├── card1 -> ../../devices/pci0000:00/0000:00:08.1/0000:03:00.5/acp_asoc_renoir.0/acp3x-es83xx/sound/card1 ├── controlC0 -> ../../devices/pci0000:00/0000:00:08.1/0000:03:00.1/sound/card0/controlC0 ├── controlC1 -> ../../devices/pci0000:00/0000:00:08.1/0000:03:00.5/acp_asoc_renoir.0/acp3x-es83xx/sound/card1/controlC1 ├── hwC0D0 -> ../../devices/pci0000:00/0000:00:08.1/0000:03:00.1/sound/card0/hwC0D0 ├── pcmC0D3p -> ../../devices/pci0000:00/0000:00:08.1/0000:03:00.1/sound/card0/pcmC0D3p ├── pcmC1D0c -> ../../devices/pci0000:00/0000:00:08.1/0000:03:00.5/acp_asoc_renoir.0/acp3x-es83xx/sound/card1/pcmC1D0c ├── pcmC1D0p -> ../../devices/pci0000:00/0000:00:08.1/0000:03:00.5/acp_asoc_renoir.0/acp3x-es83xx/sound/card1/pcmC1D0p ├── pcmC1D1c -> ../../devices/pci0000:00/0000:00:08.1/0000:03:00.5/acp_asoc_renoir.0/acp3x-es83xx/sound/card1/pcmC1D1c ├── seq -> ../../devices/virtual/sound/seq └── timer -> ../../devices/virtual/sound/timer Screenshot_20231230_230634

Input and output device options in the KDE configuration tool are Pro Audio and Off. With pavucontrol I see some additional options which are not available. Screenshot_20231230_175406 Screenshot_20231230_175547 Screenshot_20231230_175608 Screenshot_20231230_230634