RK3588 Upgrade – No Audio from Built-in Speakers

Hello!

I recently upgraded my classic MNT Reform to the RK3588 and have been very pleased with the performance boost.

However, I’ve run into an issue I haven’t been able to resolve, and I’m hoping for some help:

When I launch Volume Control (e.g., pavucontrol), the only output shown is Dummy Output. If I restart the machine with an HDMI monitor connected, I usually (but not always) get audio over HDMI. In that case, additional outputs like Headphones and Built-in Speakers appear, but selecting them produces no sound.

  • I’ve reinstalled fresh images multiple times and the behavior remains the same.

  • The built-in speakers worked fine with the previous compute module, so this does not appear to be a hardware failure.

  • I’ve included a dump of commands that I tried to use for troubleshooting. I don’t know enough about their output to limit to only the necessary info. As such, apologies for the noise.

Thanks for reading — and huge thanks in advance to anyone who can help!

aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: hdmi1 [hdmi1], device 0: fddf4000.i2s-i2s-hifi i2s-hifi-0 [fddf4000.i2s-i2s-hifi i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: rk3588wm8960 [rk3588-wm8960], device 0: fe470000.i2s-wm8960-hifi wm8960-hifi-0 [fe470000.i2s-wm8960-hifi wm8960-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
systemctl --user status pipewire
● pipewire.service - PipeWire Multimedia Service
     Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: enabled)
     Active: active (running) since Mon 2025-07-21 08:12:16 MDT; 1h 53min ago
 Invocation: 053b4932e1c0494a8d7d08ac63bc5536
TriggeredBy: ● pipewire.socket
   Main PID: 1062 (pipewire)
      Tasks: 3 (limit: 37710)
     Memory: 10.9M (peak: 13.1M)
        CPU: 17.268s
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
             └─1062 /usr/bin/pipewire

Jul 21 08:12:16 mnt systemd[977]: Started pipewire.service - PipeWire Multimedia Service.
pactl info
Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 367
Tile Size: 65472
Server Name: PulseAudio (on PipeWire 1.4.2)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: auto_null
Default Source: alsa_input.platform-analog-sound.stereo-fallback
Cookie: fc73:e930
pactl list short sinks
35	auto_null	PipeWire	float32le 2ch 48000Hz	RUNNING
dmesg | grep -i audio
[   11.162476] hdmi-audio-codec hdmi-audio-codec.6.auto: HDMI: Unknown ELD version 0
[   11.162842] hdmi-audio-codec hdmi-audio-codec.6.auto: ASoC error (-19): at snd_soc_dai_prepare() on i2s-hifi

@minute potential regression from the UCM profile addition?

you don’t need to reinstall. To test things it is sufficient to test them from an image that you have flashed to an sd-card. To rule out that a recent software upgrade broke this, could you maybe try one of the older system images?

I had similar issues and I found that using alsamixer to unmute the left/right channels on the rk3588 sound card fixed the issue for me. Note you need to switch to the card using F6.

That would be strange because the UCM profile is for tlv320aic3100, not for wm8960.

Maybe reform-hw-setup stopped working?

Thanks all. Sorry for the delayed update here, life got away from me.

I’ve fixed this though - here is what I found.

  1. WM8960 appears as Card 0 or Card 1 randomly, but hardcoded in hw-setup. I edited hw-setup to pull the card number dynamically.

  2. WM8960 “dummy regulator” messages hinted at possible power supply issues at boot (sometimes, not always). I added a hard 5s pause to hw-setup, this seems to be stable now.

  3. Pipewire wasn’t always registering the speaker or headphone outputs. I added a user level service to restart pipewire after user login.

All of these issues were sporadic. Before I’d get audio on maybe one of 10 or 12 boots. These bodges look to be providing audio consistently now.

Thanks again!

2 Likes

May be worth an PR upstream at source.mnt.re?! :slightly_smiling_face:

@significantalgae i just found out that reform-hw-setup more often than not is failing on my RK3588 classic reform as well:

Aug 13 08:02:07 reform systemd[1]: Starting reform-hw-setup.service - MNT Reform Hardware Defaults Setup...
Aug 13 08:02:08 reform reform-hw-setup[851]: Simple mixer control 'Playback',0
Aug 13 08:02:08 reform reform-hw-setup[851]:   Capabilities: volume
Aug 13 08:02:08 reform reform-hw-setup[851]:   Playback channels: Front Left - Front Right
Aug 13 08:02:08 reform reform-hw-setup[851]:   Capture channels: Front Left - Front Right
Aug 13 08:02:08 reform reform-hw-setup[851]:   Limits: 0 - 255
Aug 13 08:02:08 reform reform-hw-setup[851]:   Front Left: 255 [100%] [0.00dB]
Aug 13 08:02:08 reform reform-hw-setup[851]:   Front Right: 255 [100%] [0.00dB]
Aug 13 08:02:08 reform reform-hw-setup[857]: Simple mixer control 'Left Output Mixer PCM',0
Aug 13 08:02:08 reform reform-hw-setup[857]:   Capabilities: pswitch pswitch-joined
Aug 13 08:02:08 reform reform-hw-setup[857]:   Playback channels: Mono
Aug 13 08:02:08 reform reform-hw-setup[857]:   Mono: Playback [on]
Aug 13 08:02:08 reform reform-hw-setup[858]: Simple mixer control 'Right Output Mixer PCM',0
Aug 13 08:02:08 reform reform-hw-setup[858]:   Capabilities: pswitch pswitch-joined
Aug 13 08:02:08 reform reform-hw-setup[858]:   Playback channels: Mono
Aug 13 08:02:08 reform reform-hw-setup[858]:   Mono: Playback [on]
Aug 13 08:02:08 reform reform-hw-setup[860]: Simple mixer control 'Left Input Mixer Boost',0
Aug 13 08:02:08 reform reform-hw-setup[860]:   Capabilities: pswitch pswitch-joined
Aug 13 08:02:08 reform reform-hw-setup[860]:   Playback channels: Mono
Aug 13 08:02:08 reform reform-hw-setup[860]:   Mono: Playback [on]
Aug 13 08:02:08 reform systemd[1]: reform-hw-setup.service: Deactivated successfully.
Aug 13 08:02:08 reform systemd[1]: Finished reform-hw-setup.service - MNT Reform Hardware Defaults Setup.
-- Boot 8539fa111abe449f850a8f0ad6bfa183 --
Aug 13 09:10:53 reform systemd[1]: Starting reform-hw-setup.service - MNT Reform Hardware Defaults Setup...
Aug 13 09:10:54 reform reform-hw-setup[857]: amixer: Unable to find simple control 'Playback',0
Aug 13 09:10:54 reform systemd[1]: reform-hw-setup.service: Main process exited, code=exited, status=1/FAILURE
Aug 13 09:10:54 reform systemd[1]: reform-hw-setup.service: Failed with result 'exit-code'.
Aug 13 09:10:54 reform systemd[1]: Failed to start reform-hw-setup.service - MNT Reform Hardware Defaults Setup.
-- Boot 615ba078426c47039589c04068701fd1 --
Aug 14 07:30:55 reform systemd[1]: Starting reform-hw-setup.service - MNT Reform Hardware Defaults Setup...
Aug 14 07:30:56 reform reform-hw-setup[925]: amixer: Unable to find simple control 'Playback',0
Aug 14 07:30:56 reform systemd[1]: reform-hw-setup.service: Main process exited, code=exited, status=1/FAILURE
Aug 14 07:30:56 reform systemd[1]: reform-hw-setup.service: Failed with result 'exit-code'.
Aug 14 07:30:56 reform systemd[1]: Failed to start reform-hw-setup.service - MNT Reform Hardware Defaults Setup.

Are these similar to the errors you have seen? internal speakers work for me even when the unit fails though

Sorry, too late now: bin/reform-hw-setup: select soundcard by name, not by number (!136) · Merge requests · Reform / MNT Reform Tools · GitLab

@significantalgae Did you come up with a better way to do this?

The reason why this issue was introduced is probably that there was no HDMI audio before recent kernel uploads (I think 6.15 is “at fault”).

Anybody wants to test the fixed script?

@josch I’ll take a look at your solution this weekend, and would be happy to test the script then as well, if you’d like me to.

@rwa I’ll check my notes this weekend too, and get back.

reform-tools 1.77 is now in the MNT repositories and fixes the amixer: Unable to find simple control problem in reform-hw-setup.