ULTRA++ installation guide

dear all,

what would be the reason, that using the “headphones and external mic” configuration preset (clean installation, following the instructions above. Rpi 4 B , newest OS , drivers etc… I2C enabled…) , only one (trrs headset, where mic is connected to the headphones) out of 9 different trs mics (bought specifically for the purpose of using with this board) works?.. I’m completely destroyed with this result. also, i wanted to use a splitter and have 2 mono mics as a source, but the signal seems to be always mono (using a right input as far as i remember)… is there a preset, which allows stereo input, compining 2 mono or at least the one which keeps the build in mics activated as input channels1-2 and external mic as channel 3?..

thanks for the help in advance.

git clone https://github.com/RASPIAUDIO/ULTRA.git

This worked for my Ultra++. Mine isn’t a blue board. Raspberry Pi 4B. 64bit. it comes up as “snd_rpi_googelvoicehat_soundcar”. volume controls are not functional, so I suspect the speakers are playing at 100%.

EDIT: nevermind. did this all over again and for some reason I can control the volume. this is perfect! purchased this ages ago. couldn’t make it work when i purchased it and just held onto it. glad it’s finally useful.

Just to be clear, automatic install didn’t work. optional manual install didn’t work.
git clone https://github.com/RASPIAUDIO/ultra_install.git
the above line also did not work.

yes autoinstall is for the blue PCB of the ultra (EEPROM on board), previous versions can still use the new built in drivers

Good news is that the driver is now directly included in the kernel, just be sure to be updated with the last Pi OS version. Also update your Pi firmware:

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update

Once done you should be up to date
open a terminal and type:

sudo nano /boot/firmware/config.txt

and at the end of the file add:

dtoverlay=wm8960-soundcard.dtbo

I tried adding the dtoverlay line to the config file and while i can select the audio device in the volume control within Raspbian, it doesn’t output audio.

I’ll try this again over the next few days to see if it actually works and report back, thanks.

be sure to have the last version of PIOS

I’m on Linux raspberrypi 6.12.34+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.34-1+rpt1~bookworm (2025-06-26) aarch64

i2c enabled.
audio device selected: wm8960-soundcard

ran

sudo apt-get update && sudo apt-get upgrade && sudo rpi-update

and then did these

sudo nano /boot/firmware/config.txt

and at the end of the file add:

dtoverlay=wm8960-soundcard.dtbo

no audio output from youtube video playing in chromium.

please advise.

Hey,

I aknowledge the issue, with new version of the kernel the wm8960-soundcard.dtbo is broken, we are not alone and I have posted a message to fix it.

Workaround we can use a custom driver (it breaks my heart but it is working)

git clone GitHub - waveshareteam/WM8960-Audio-HAT: The drivers of [WM8960 Audio HAT] for Raspberry Pi
cd WM8960-Audio-HAT
sudo ./install.sh
sudo reboot

check if installed :

sudo dkms status
aplay -l
arecord -l

Any updates about this? I’m unable to get this working. I’m working on a headless OS

Hi please give me more details on the OS you are using.

Hi, here is my info $ uname -a
Linux raspberry 6.12.34+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.34-1+rpt1~bookworm (2025-06-26) aarch64 GNU/Linux

have your tried this ?

git clone GitHub - waveshareteam/WM8960-Audio-HAT: The drivers of [WM8960 Audio HAT] for Raspberry Pi
cd WM8960-Audio-HAT
sudo ./install.sh
sudo reboot

described 2 messages above

I did try, it installs the driver but it is not able to play or record audio.


fasciahub@Hub508:~/WM8960-Audio-HAT $ uname -a
Linux Hub508 6.12.34+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.34-1+rpt1~bookworm (2025-06-26) aarch64 GNU/Linux
fasciahub@Hub508:~/WM8960-Audio-HAT $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: wm8960soundcard [wm8960-soundcard], device 0: 1f000a0000.i2s-wm8960-hifi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
fasciahub@Hub508:~/WM8960-Audio-HAT $ arecord -D hw:0,0 -f S32_LE -r 16000 -c 2 test.wav
arecord: main:831: audio open error: Invalid argument
fasciahub@Hub508:~/WM8960-Audio-HAT $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: wm8960soundcard [wm8960-soundcard], device 0: 1f000a0000.i2s-wm8960-hifi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
fasciahub@Hub508:~/WM8960-Audio-HAT $ aplay -D hw:0,0 test.wav
aplay: main:831: audio open error: Invalid argument
fasciahub@Hub508:~/WM8960-Audio-HAT $ ls
asound.conf   install.sh  README.md            wm8960.c          wm8960-soundcard.c     wm8960-soundcard.service
builddtbo.sh  LICENSE     uninstall.sh         wm8960.h          wm8960-soundcard.dtbo
dkms.conf     Makefile    wm8960_asound.state  wm8960-soundcard  wm8960-soundcard.dts
fasciahub@Hub508:~/WM8960-Audio-HAT $ cd ..
fasciahub@Hub508:~ $ ls
test.wav  WM8960-Audio-HAT
fasciahub@Hub508:~ $ aplay -D hw:0,0 test.wav
aplay: main:831: audio open error: Invalid argument
fasciahub@Hub508:~ $

I can confirm that this method works for me on RPI4B. Thanks!

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 6.12.42-v8+ #1899 SMP PREEMPT Tue Aug 19 15:10:07 BST 2025 aarch64 GNU/Linux
pi@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 1: wm8960soundcard [wm8960-soundcard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 [bcm2835-i2s-wm8960-hifi wm8960-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

So, I used a previously mentioned approach which also works, i.e.
git clone https://github.com/RASPIAUDIO/ULTRA.git

What’s the difference between your custom driver approach and the approach I used before? Is there a sound quality/volume difference?

Just so you know there is a new Pi OS update that fixes the autodetect of the ULTRA

so be be sure to be up to date:


sudo apt-get update
sudo apt-get upgrade
sudo rpi-update

I am not using a blue board.
Autodetect still doesn’t work - does it only work with the blue board?

pi@raspberrypi:~ $ sudo apt-get update && sudo apt-get upgrade
Hit:1 https://download.docker.com/linux/debian bookworm InRelease
Hit:2 http://deb.debian.org/debian bookworm InRelease
Hit:3 http://deb.debian.org/debian-security bookworm-security InRelease
Hit:4 http://deb.debian.org/debian bookworm-updates InRelease
Hit:5 http://archive.raspberrypi.com/debian bookworm InRelease
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 6.12.47+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.47-1+rpt1~bookworm (2025-09-16) aarch64 GNU/Linux
pi@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7

I can also confirm if I follow manual instructions (add “dtoverlay=wm8960-soundcard.dtbo” to /boot/firmware/config.txt), also does not work - no audio from youtube.

Hi, only the blue version has the EEPROM for auto detect.

on your command line you have not done the ‘sudo rpi-update’ maybe this is it, if you don’t have the driver wm8960-soundcard.dtbo in your system

I actually did ‘sudo rpi-update’, I just felt it was too long to show and thought that ‘uname -a’ would be sufficient proof (considering the version date is 4 days after your last post).

I’ll come back again when I get a moment to do the whole thing over again.

Trying to send to a spcifice outpu audio device the ultra +
Example: I want to send only to the headphone

When I do a
aplay -c1 -D plughw:1 sample-3s.wav

It sends to both the onboard stereo speaker and the headphone jack
I only want to send specifcally to the Headphone jack

Any ideas on how to do this?

admin@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: wm8960soundcard [wm8960-soundcard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 [bcm2835-i2s-wm8960-hifi wm8960-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0

hi if you want to disable the speaker there is a slider to do that in Alsamixer, it is one of the 5 first one

What I am looking to do is the following Concurrently :
Send Audio Stream A to the Headphone jack
Send Audio Stream B to the Right Speaker
Send Audio Stream C to the Left Speaker

aplay -c1 -D plughw:1 sample-A.wav
aplay -c1 -D plughw:1 sample-B.wav
aplay -c1 -D plughw:1 sample-C.wav

When I send an audio file to the board the audio output appears on all the Outputs. Onboard speakers and Headphone jack. I only want to send to a specific output device. Example headphone jack. I did do alsamixer but that does not solve my problem.

Regards