No HDMI sound on Lenovo Thinkpad L380

Hello,

On my laptop (Lenovo Thinkpad L380) the sound through the HDMI doesn’t work. This seems to be a problem with this specific laptop and Fedora running on it. My work laptop (a different Thinkpad) doesn’t have this issue.

Things I’ve noticed:

  • When plugged in, the HDMI is detected as output device.
  • Executing a sound test, or playing a video yields no sound through the HDMI cable (plugged into the TV)
  • This has been the case with F35, F36, F36 KDE Spin, F37, F37 Kinoite (current installation).
  • The laptop is capable of producing sound through the HDMI port with this cable and this TV.

Things I’ve tried:

  • Installing different versions of Fedora (see above). No sound is produced through HDMI.
  • Using pavucontrol, pipewire-media-session, and wireplumber (all separately). No sound is produced through HDMI.
  • Using a live cd of F36 and F37 to test the sound. No sound is produced through HDMI.
  • Using an installed version of Ubuntu. Sound was produced through HDMI.
  • Using a live cd of Ubuntu to test the sound. Sound was produced through HDMI.
  • Using a live cd of MX Linux to test the sound. Sound was produced through HDMI.

Is there anything I could do to get the sound to work through HDMI?
Thanks in advance.

Welcome to ask.fedora @eduardjbotha

Please give us an inxi -Fzx and paste it as pre-formatted </> text

Have also a look to

systemctl status --user pipewire-*
systemctl status --user wireplumber

to see which kind of output you get.
Remember you have to choose between pipewire-media-session and wireplumber.

Fedora is not Ubuntu, so to compare it is quite useless.

Hey @ilikelinux,

Thank you for the quick response.

Please give us an inxi -Fzx and paste it as pre-formatted </> text

System:
  Kernel: 6.0.9-300.fc37.x86_64 arch: x86_64 bits: 64 compiler: gcc
    v: 2.38-24.fc37 Desktop: KDE Plasma v: ERR-101 Distro: Fedora release 37
    (Thirty Seven)
Machine:
  Type: Laptop System: LENOVO product: 20M6S01K00 v: ThinkPad L380
    serial: <superuser required>
  Mobo: LENOVO model: 20M6S01K00 serial: <superuser required> UEFI: LENOVO
    v: R0RET46W (1.29 ) date: 07/05/2022
Battery:
  ID-1: BAT0 charge: 26.9 Wh (91.5%) condition: 29.4/45.0 Wh (65.3%)
    volts: 12.4 min: 11.1 model: LGC 01AV481 status: charging
CPU:
  Info: quad core model: Intel Core i5-8250U bits: 64 type: MT MCP
    arch: Coffee Lake rev: A cache: L1: 256 KiB L2: 1024 KiB L3: 6 MiB
  Speed (MHz): avg: 1237 high: 1800 min/max: 400/3400 cores: 1: 900 2: 901
    3: 900 4: 1800 5: 1800 6: 900 7: 900 8: 1800 bogomips: 28800
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Graphics:
  Device-1: Intel UHD Graphics 620 vendor: Lenovo driver: i915 v: kernel
    arch: Gen-9.5 bus-ID: 00:02.0
  Device-2: SunplusIT Integrated Camera type: USB driver: uvcvideo
    bus-ID: 1-5:3
  Display: x11 server: X.Org v: 1.20.14 driver: gpu: i915 note: X driver n/a
    resolution: 1: 2048x1152~60Hz 2: 1600x900~60Hz
  API: N/A Message: No display API data. No known data sources.
Audio:
  Device-1: Intel Sunrise Point-LP HD Audio vendor: Lenovo
    driver: snd_hda_intel v: kernel bus-ID: 00:1f.3
  Sound API: ALSA v: k6.0.9-300.fc37.x86_64 running: yes
Network:
  Device-1: Intel Ethernet I219-V vendor: Lenovo driver: e1000e v: kernel
    port: N/A bus-ID: 00:1f.6
  IF: enp0s31f6 state: down mac: <filter>
  Device-2: Intel Wireless 8265 / 8275 driver: iwlwifi v: kernel
    bus-ID: 02:00.0
  IF: wlp2s0 state: up mac: <filter>
  Device-3: Realtek USB 10/100/1000 LAN type: USB driver: r8152
    bus-ID: 2-1.4:3
  IF: enp0s20f0u1u4 state: down mac: <filter>
Bluetooth:
  Device-1: N/A type: USB driver: btusb v: 0.8 bus-ID: 1-7:4
  Report: rfkill ID: hci0 rfk-id: 0 state: up address: see --recommends
Drives:
  Local Storage: total: 238.47 GiB used: 14.74 GiB (6.2%)
  ID-1: /dev/nvme0n1 vendor: Lenovo model: LENSE20256GMSP34MEAT2TA
    size: 238.47 GiB temp: 37.9 C
Partition:
  Message: No partition data found.
Swap:
  ID-1: swap-1 type: zram size: 8 GiB used: 0 KiB (0.0%) dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 1.0 C mobo: N/A
  Fan Speeds (RPM): fan-1: 0 fan-2: 0
Info:
  Processes: 283 Uptime: 2h 15m Memory: 31.24 GiB used: 5.58 GiB (17.9%)
  Init: systemd Compilers: gcc: N/A Packages: N/A note: see --rpm Shell: Bash
  v: 5.2.9 inxi: 3.3.23

systemctl status --user pipewire-*

● pipewire-pulse.socket - PipeWire PulseAudio
     Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.socket; enabled; preset: enabled)
     Active: active (running) since Sun 2022-11-27 12:37:42 CET; 2h 19min ago
      Until: Sun 2022-11-27 12:37:42 CET; 2h 19min ago
   Triggers: ● pipewire-pulse.service
     Listen: /run/user/1000/pulse/native (Stream)
     CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/pipewire-pulse.socket

Nov 27 12:37:42 fedora systemd[1170]: Listening on pipewire-pulse.socket - PipeWire PulseAudio.

● pipewire-pulse.service - PipeWire PulseAudio
     Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; disabled; preset: disabled)
     Active: active (running) since Sun 2022-11-27 12:37:48 CET; 2h 19min ago
TriggeredBy: ● pipewire-pulse.socket
   Main PID: 1781 (pipewire-pulse)
      Tasks: 2 (limit: 38289)
     Memory: 22.0M
        CPU: 3.164s
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
             └─1781 /usr/bin/pipewire-pulse

Nov 27 12:37:48 fedora systemd[1170]: Started pipewire-pulse.service - PipeWire PulseAudio.
Nov 27 14:43:33 fedora pipewire-pulse[1781]: mod.protocol-pulse: client 0x562453554750 [libcanberra]: ERROR command:18 (PLAY_SAMPLE) tag:6 error:25 (Input/o>
Nov 27 14:43:33 fedora pipewire-pulse[1781]: mod.protocol-pulse: client 0x562453554750 [libcanberra]: ERROR command:18 (PLAY_SAMPLE) tag:8 error:25 (Input/o>
Nov 27 14:43:33 fedora pipewire-pulse[1781]: mod.protocol-pulse: client 0x562453554750 [libcanberra]: ERROR command:18 (PLAY_SAMPLE) tag:10 error:25 (Input/>
lines 1-25/25 (END)

systemctl status --user wireplumber

● wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
     Active: active (running) since Sun 2022-11-27 12:37:43 CET; 2h 21min ago
   Main PID: 1284 (wireplumber)
      Tasks: 4 (limit: 38289)
     Memory: 9.7M
        CPU: 17.279s
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
             └─1284 /usr/bin/wireplumber

Nov 27 12:37:43 fedora wireplumber[1284]: Can't find xdg-portal: (null)
Nov 27 12:37:43 fedora wireplumber[1284]: found session bus but no portal
Nov 27 12:37:43 fedora wireplumber[1284]: Failed to set scheduler settings: Operation not permitted
Nov 27 12:37:43 fedora wireplumber[1284]: SPA handle 'api.libcamera.enum.manager' could not be loaded; is it installed?
Nov 27 12:37:43 fedora wireplumber[1284]: PipeWire's libcamera SPA missing or broken. libcamera not supported.
Nov 27 14:43:16 fedora wireplumber[1284]: RFCOMM receive command but modem not available: AT+BTRH?
Nov 27 14:43:16 fedora wireplumber[1284]: RFCOMM receive command but modem not available: 
                                          AT+XEVENT=Bose SoundLink,158
Nov 27 14:43:16 fedora wireplumber[1284]: Failed to register battery provider. Error: org.freedesktop.DBus.Error.UnknownMethod
Nov 27 14:43:16 fedora wireplumber[1284]: BlueZ Battery Provider is not available, won't retry to register it. Make sure you are running BlueZ 5.56+ with ex>
Nov 27 14:43:21 fedora wireplumber[1284]: RFCOMM receive command but modem not available: AT+CSRSF=0,0,0,1,0,0,0
lines 1-21/21 (END)

Fedora is not Ubuntu, so to compare it is quite useless.

The goal was to prove that the problem does not lie with any of the hardware (HDMI port, cable, TV), but with the software.

Do you have something under ~/.config/pipewire/?
Removed any old pulseaudio config if any.

Restart and see if you still the error with wireplumber.

Currently, I have a fresh install (installed yesterday) of F37 Kinoite. I haven’t made any configuration changes. There is no ~/.config/pipewire directory.

After the restart, executing systemctl status --user wireplumber:

● wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
     Active: active (running) since Sun 2022-11-27 22:03:07 CET; 5min ago
   Main PID: 1239 (wireplumber)
      Tasks: 4 (limit: 38289)
     Memory: 10.6M
        CPU: 192ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
             └─1239 /usr/bin/wireplumber

Nov 27 22:03:07 fedora systemd[1127]: Started wireplumber.service - Multimedia Service Session Manager.
Nov 27 22:03:07 fedora wireplumber[1239]: Can't find xdg-portal: (null)
Nov 27 22:03:07 fedora wireplumber[1239]: found session bus but no portal
Nov 27 22:03:07 fedora wireplumber[1239]: Failed to set scheduler settings: Operation not permitted
Nov 27 22:03:07 fedora wireplumber[1239]: SPA handle 'api.libcamera.enum.manager' could not be loaded; is it installed?
Nov 27 22:03:07 fedora wireplumber[1239]: PipeWire's libcamera SPA missing or broken. libcamera not supported.

can you also take a look at

wpctl status

Thanks

As you use a Immutable OS you might try to install

from flat-pak.
Wireplumber is complaining because of this.

Edit:
It looks like xdg-portal is present in your wpctl status

wpctl status

PipeWire 'pipewire-0' [0.3.60, eduard@fedora, cookie:1991519111]
 └─ Clients:
        32. uresourced                          [0.3.60, eduard@fedora, pid:1269]
        33. WirePlumber                         [0.3.60, eduard@fedora, pid:1281]
        34. WirePlumber [export]                [0.3.60, eduard@fedora, pid:1281]
        47. pipewire-pulse                      [0.3.60, eduard@fedora, pid:1786]
        48. xdg-desktop-portal                  [0.3.60, eduard@fedora, pid:1282]
        49. Plasma PA                           [0.3.60, eduard@fedora, pid:1439]
        53. wpctl                               [0.3.60, eduard@fedora, pid:2821]

Audio
 ├─ Devices:
 │      42. Built-in Audio                      [alsa]
 │  
 ├─ Sinks:
 │  *   50. Built-in Audio Digital Stereo (HDMI 2) [vol: 0.43]
 │  
 ├─ Sink endpoints:
 │  
 ├─ Sources:
 │  
 ├─ Source endpoints:
 │  
 └─ Streams:

Video
 ├─ Devices:
 │      40. Integrated Camera                   [v4l2]
 │      41. Integrated Camera                   [v4l2]
 │  
 ├─ Sinks:
 │  
 ├─ Sink endpoints:
 │  
 ├─ Sources:
 │  *   43. Integrated Camera (V4L2)           
 │  
 ├─ Source endpoints:
 │  
 └─ Streams:

Settings
 └─ Default Configured Node Names:
         0. Audio/Sink    bluez_output.78_2B_64_14_01_77.1

And just to be sure I didn’t mess anything up in the previous answers, here are the previous commands again with the hdmi cable plugged in:

inxi -Fzx

System:
  Kernel: 6.0.9-300.fc37.x86_64 arch: x86_64 bits: 64 compiler: gcc
    v: 2.38-24.fc37 Desktop: KDE Plasma v: ERR-101 Distro: Fedora release 37
    (Thirty Seven)
Machine:
  Type: Laptop System: LENOVO product: 20M6S01K00 v: ThinkPad L380
    serial: <superuser required>
  Mobo: LENOVO model: 20M6S01K00 serial: <superuser required> UEFI: LENOVO
    v: R0RET46W (1.29 ) date: 07/05/2022
Battery:
  ID-1: BAT0 charge: 21.0 Wh (77.5%) condition: 27.1/45.0 Wh (60.1%)
    volts: 11.7 min: 11.1 model: LGC 01AV481 status: discharging
CPU:
  Info: quad core model: Intel Core i5-8250U bits: 64 type: MT MCP
    arch: Coffee Lake rev: A cache: L1: 256 KiB L2: 1024 KiB L3: 6 MiB
  Speed (MHz): avg: 1276 high: 1800 min/max: 400/3400 cores: 1: 1800 2: 764
    3: 900 4: 824 5: 1800 6: 520 7: 1800 8: 1800 bogomips: 28800
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Graphics:
  Device-1: Intel UHD Graphics 620 vendor: Lenovo driver: i915 v: kernel
    arch: Gen-9.5 bus-ID: 00:02.0
  Device-2: SunplusIT Integrated Camera type: USB driver: uvcvideo
    bus-ID: 1-5:2
  Display: x11 server: X.Org v: 1.20.14 driver: gpu: i915 note: X driver n/a
    resolution: 1: 1920x1080~60Hz 2: 1920x1080~60Hz
  API: N/A Message: No display API data. No known data sources.
Audio:
  Device-1: Intel Sunrise Point-LP HD Audio vendor: Lenovo
    driver: snd_hda_intel v: kernel bus-ID: 00:1f.3
  Sound API: ALSA v: k6.0.9-300.fc37.x86_64 running: yes
Network:
  Device-1: Intel Ethernet I219-V vendor: Lenovo driver: e1000e v: kernel
    port: N/A bus-ID: 00:1f.6
  IF: enp0s31f6 state: down mac: <filter>
  Device-2: Intel Wireless 8265 / 8275 driver: iwlwifi v: kernel
    bus-ID: 02:00.0
  IF: wlp2s0 state: up mac: <filter>
Bluetooth:
  Device-1: N/A type: USB driver: btusb v: 0.8 bus-ID: 1-7:3
  Report: rfkill ID: hci0 rfk-id: 0 state: up address: see --recommends
Drives:
  Local Storage: total: 238.47 GiB used: 17.49 GiB (7.3%)
  ID-1: /dev/nvme0n1 vendor: Lenovo model: LENSE20256GMSP34MEAT2TA
    size: 238.47 GiB temp: 29.9 C
Partition:
  Message: No partition data found.
Swap:
  ID-1: swap-1 type: zram size: 8 GiB used: 0 KiB (0.0%) dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 1.0 C mobo: N/A
  Fan Speeds (RPM): fan-1: 0 fan-2: 0
Info:
  Processes: 256 Uptime: 26m Memory: 31.24 GiB used: 2.87 GiB (9.2%)
  Init: systemd Compilers: gcc: 12.2.1 Packages: N/A note: see --rpm
  Shell: Bash v: 5.2.9 inxi: 3.3.23

systemctl status --user pipewire-*

● pipewire-pulse.socket - PipeWire PulseAudio
     Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.socket; enabled; preset: enabled)
     Active: active (running) since Mon 2022-11-28 08:12:12 CET; 19min ago
      Until: Mon 2022-11-28 08:12:12 CET; 19min ago
   Triggers: ● pipewire-pulse.service
     Listen: /run/user/1000/pulse/native (Stream)
     CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/pipewire-pulse.socket

Nov 28 08:12:12 fedora systemd[1161]: Listening on pipewire-pulse.socket - PipeWire PulseAudio.

● pipewire-pulse.service - PipeWire PulseAudio
     Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; disabled; preset: disabled)
     Active: active (running) since Mon 2022-11-28 08:12:16 CET; 19min ago
TriggeredBy: ● pipewire-pulse.socket
   Main PID: 1786 (pipewire-pulse)
      Tasks: 2 (limit: 38289)
     Memory: 3.5M
        CPU: 72ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
             └─1786 /usr/bin/pipewire-pulse

Nov 28 08:12:16 fedora systemd[1161]: Started pipewire-pulse.service - PipeWire PulseAudio.
Nov 28 08:12:16 fedora pipewire-pulse[1790]: 536870912

systemctl status --user wireplumber

● wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
     Active: active (running) since Mon 2022-11-28 08:12:13 CET; 21min ago
   Main PID: 1281 (wireplumber)
      Tasks: 4 (limit: 38289)
     Memory: 9.7M
        CPU: 369ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
             └─1281 /usr/bin/wireplumber

Nov 28 08:12:13 fedora systemd[1161]: Started wireplumber.service - Multimedia Service Session Manager.
Nov 28 08:12:13 fedora wireplumber[1281]: Can't find xdg-portal: (null)
Nov 28 08:12:13 fedora wireplumber[1281]: found session bus but no portal
Nov 28 08:12:13 fedora wireplumber[1281]: Failed to set scheduler settings: Operation not permitted
Nov 28 08:12:13 fedora wireplumber[1281]: SPA handle 'api.libcamera.enum.manager' could not be loaded; is it installed?
Nov 28 08:12:13 fedora wireplumber[1281]: PipeWire's libcamera SPA missing or broken. libcamera not supported.
1 Like

Can you try adding a kernel argument?
rpm-ostree kargs --append=snd-intel-dspcfg dsp_driver=1

Wondering if it is something related to, 2039902 – HDMI/DP audio output not working in default install of f35 sb

Thanks

It looks like xdg-portal is present in your wpctl status

@ilikelinux It seems as if your suggestion/question was answered. Please let me know if I should try anything.

Can you try adding a kernel argument?
rpm-ostree kargs --append=snd-intel-dspcfg dsp_driver=1

@grumpey I’ve added the kernel argument and rebooted, but the HDMI still doesn’t produce any sound.

I just saw that I also get this error (I use the basic Workstation setup). If I check with wpctl status it is listed anyway.

nov 29 06:30:41 fedo.local wireplumber[1973]: Can't find xdg-portal: (null)
nov 29 06:30:41 fedo.local wireplumber[1973]: found session bus but no portal

The difference you mentioned about the other Linux Distribution could be that Fedora not delivers the codecs per default. Did you install them?
Installing plugins for playing movies and music :: Fedora Docs

if you haven’t already, rpm-ostree kargs --delete=snd-intel-dspcfg dsp_driver=1

can you get the output of:
aplay -l
This should have the same outputs (sinks) as wpctl, if it is not installed it is part of alsa-utils

You may also want to try and see if installing alsa-sof-firmware works.

Thanks

The difference you mentioned about the other Linux Distribution could be that Fedora not delivers the codecs per default. Did you install them?

@ilikelinux I haven’t installed them, but it makes sense why the sound on the other distros work out of the box. I can only find information on how to install the codecs with dnf or with the gnome software center. Is there a recommended way to install them on Kinoite? Should I run all the dnf commands, but with rpm-ostree?


can you get the output of:
aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC257 Analog [ALC257 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [PHILIPS FTV]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

@grumpey the aplay -l output shows more HDMI devices than wpctl. There is however only one HDMI port on my laptop. My first reaction was that they relate to what appears in the KDE audio settings, but the aplay -l output remains the same if I select another audio profile in the settings.

$ rpm-ostree install alsa-sof-firmware
error: "alsa-sof-firmware" is already provided by: alsa-sof-firmware-2.2.2-1.fc37.noarch. Use --allow-inactive to explicitly require it.

@grumpey It seems to be installed already.

1 Like

You probably have to layer the software:
https://fedoramagazine.org/how-i-customize-fedora-silverblue-and-fedora-kinoite/

But please do first what @grumpey says. To see what effective is the problem. Normally without codec’s you have sound just not always.

Can you try setting the options with:
echo "options snd-intel-dspcfg dsp_driver=1" | sudo tee /etc/modprobe.d/inteldsp.conf

Thanks

Edit: (I ran out of time this morning)
You can you also try setting it to:
3 to use the SOF driver
2 to use the SST driver

1 is the legacy driver.
reference here: https://fedoraproject.org/wiki/Changes/SofDefaultForIntelLpe

You could also try swapping pipewire for pulse to see if it makes any difference.
sudo dnf swap --allowerasing pipewire-pulseaudio pulseaudio

just swap pipewire-pulseaudo and pulseaudio to undo it.

If none of that works you could try falling back to an older kernel, kwizart/kernel-longterm-5.15 Copr

One of the differences would be MX and Ubuntu are on an older kernel.

Thanks

So I’ve done some experiments:

Audio Driver dsp_driver HMDI result
pipewire-pulseaudio No setting no sound
pipewire-pulseaudio 1 no sound
pipewire-pulseaudio 2 no audio device detected, cannot output any audio
pipewire-pulseaudio 3 no audio device detected, cannot output any audio
pulseaudio 3 no audio device detected, cannot output any audio
pulseaudio 2 no audio device detected, cannot output any audio
pulseaudio 1 "Error trying to play a test sound. The system said
pulseaudio No setting "Error trying to play a test sound. The system said

The at this point something strange happened. Note, the current computer state is only the change from pipewire-pulseaudio to pulseaudio. I changed the audio profile to Audio Stereo Duplex (laptop speakers) and the error message was still visible, but after clicking the Front Right speaker test button, the error message disappeared and sound played through the laptop speaker. Then I changed it back to the HDMI profile and the sound worked through the HDMI.

So:

  • If I unplug the laptop, there is no sound through the laptop speakers. Changing the audio profile to anything else and back then produces audio.
  • Plugging the HDMI cable back in produces no audio on the default profile (in this case HDMI was selected automatically). Then changing the audio profile to the laptop speakers produce sound through the laptop speakers. Changing it back to HDMI produces sound through the HDMI cable.
  • With the HDMI cable unplugged (audio profile switched to something else and back again), the laptop sound works. Restarting the laptop and immediately testing the sound doesn’t work; the audio profile needs to be switched to something else and back again before there is sound on the laptop speakers.

There is definitely some problem with pipewire-pulseaudio on my laptop, so this is an improvement, but switching to pulseaudio has introduced another problem.

Questions:

  1. Is this something that can be fixed in pipewire-pulseaudio?
  2. Is there a way to get pulseaudio to work correctly without me having to change an audio profile?

Can you check,

pactl list short modules

and see if

module-switch-on-connect
module-switch-on-port-available

Are loaded?

… some other things to maybe try:
When you have this working you’ll want to capture:

pacmd list-cards
pacmd list-cards | grep 'active profile' 

You will want to capture the active profile for each of the working instances, and the index/name of the card.

You can set a default profile by:
creating a file: ~/.config/pulse/default.pa
and adding:
set-card-profile <cardindex> <profilename>
or
set-card-profile <symbolic name> <profilename>

symbolic name comes from the name from the earlier list cards command.

You can also try setting a fallback device in pavucontrol and see if that works.

ref: https://wiki.archlinux.org/title/PulseAudio/Examples