Volumio 2 on Orange Pi Boards

I use the image from @VyacheslavS version Volumio2.806-2020-08-22-orangepipc.
The Rotary Encoder Plugin from @Saiyato is installed. I use an EC11 encoder with a button. Everything is working.
Connection diagram
Settings in volumio, for example

Pin numbering is determined by the BCM tab

VCC -3,3V

1 Like

@Radiomanoff Thank you!
I bought the display, installed pydpiper and everything worked.

I bought a blue display, but I think I should have taken a white one.


Hi, a used Volumio 2.861 image from VyacheslavS it works with audio optput on board Orange Pi Pc.
It works fine, thanks VyacheslavS !
I am trying to make it work with

but no success.

I need some help, please, thanks.

Hello. Check the correspondence of the I2S contacts, according to the diagram

In Raspberry Pi, the I2S interface sits on other pins.

Radiomanoff thanks o lot, i will try

Hi, I’m new to the Volumio ecosystem and I’m using the latest build on a OPI PC with an es9038qm2 i2s connected DAC.

I’ve followed the connections provided in another thread to connect to the hat board (not directly as it has a 40 pins connector compatible with RPI).

I can see the I2S-Master in both aplay and Volumio “Output” configuration, but the later never gives me the opportunity to actually select which kind of DAC I have on the other side of the I2S link : am I missing something here (configuration ? link ?).

Thanks for your help !

There is only a single overlay device that enables I2S output as a master device. The overlay uses the PCM512a codec but if you require any other codec, you would have to make a new overlay file with the said codec, and add the additional kernel modules it requires, if its not already in the kernel image.

Once the DAC is up and working, you would have to add it list over on the Volumio2 repo so that is shows up as a selectable DAC, which would let you load the overlay file “on the fly”…

Thanks for the explanation !

I’ve found the overlay and the codec and I’m now trying to compile the module for the OPI PC.
The apt sources list does not seem to be set up to match the actual kernel installed on the build provided (kernel 5.3 or 5.10 but apt showing headers for 3.x or 4.9).
I’ve tried to manually dpkg the headers and sources for the correct kernel but it won’t work (compilation just exit stating that sources for kernel modules are not found) : do you have any clue on how to retreive the correct needed kernel sources ?

Yep, it’s most probably showing the default Debian Jessie package (3.16.0-10). But as this platform is added using the Armbian build system, you could leverage the scripts in platform-orangepi to pull out the linux-headers package.

That being said, since we don’t know the exact version from the image, and armbian’s repo don’t have the resources to track all but the current versions, the fastest way would be to build it yourself.

Else, when I find some time I can build a new image (but it will be 5.10.y/Buster beta) with the header package as well.

Ok, I basically did that (manually playing with apt source list from armbian to install the correct headers for 5.10.13 kernel).

I’m now in the process of updating the audio codec to 5.x asoc compatible calls (was made for 4.19).

Great job! :slight_smile: What codec is it might I ask?

It should be rather straightforward if you follow the compiler, also look at History for sound/soc/codecs/rk3308_codec.c - ashthespy/linux-rockchip · GitHub for some hacky inspiration :wink:

Ok, finally done with the porting (not so much in the end) : it compiles, sources are here : GitHub - arpel/I-Sabre_9038Q2M: New Audiophonics I-sabre 9038Q2M driver

I will be using a “generic copy” of the Audiophonics board based on es9038q2m DAC.

I’m now completely struggling with the dts file and structure with yours as the baseline : I actually do not understand how to merge your file (embedding both i2s definition and simple-sound-card) and the one made for RPI (which does not include i2s / i2c definitions). (the dts from rpi is also available in the repository above).

have a look at this, I’ve been using simple-soundcard

I also tried the same structure with tfa9879, it works but only in mono configuration with one device (simple-card seems to not support stereo with two devices)

I tried something : I-Sabre_9038Q2M/i-sabre-q2m-overlay-opi.dts at master · arpel/I-Sabre_9038Q2M · GitHub

I got stuck at boot … sorry that’s my first dts :wink:

Looks like you aren’t targetting the right i2c block – overlay files are bit of arcane dark magic for me as well :smiley: but I believe you are missing setting the right i2c target.

Try something along these lines…


/ {
	compatible = "allwinner,sun8i-h3";
    // make life a bit easier..
	fragment@0 {
		target-path = "/aliases";
		__overlay__ {
			i2c0 = "/soc/i2c@1c2ac00";
			i2c1 = "/soc/i2c@1c2b000";
			i2c2 = "/soc/i2c@1c2b400";

 	fragment@1 {
        // Enable i2c0 -- adjust this for the right i2c block
        // This will be on (SCL, SDA): PA11, PA12
 		target = <&i2c0>; 
		__overlay__ {
			#address-cells = <1>;
			#size-cells = <0>;
			status = "okay";

			sabre: i-sabre-codec@48 {
				#sound-dai-cells = <0>;
				compatible = "audiophonics,i-sabre-codec";
				reg = <0x48>;
				status = "okay";

	fragment@1 {
		target = <&i2s0>;
		__overlay__ {
			status = "okay";
			pinctrl-0 = <&i2s0_pins>;
			sound-dai = <&sabre>;
			pinctrl-names = "default";

	fragment@2 {
		target-path = "/";
		__overlay__ {
			sound_i2s {
				compatible = "simple-audio-card";
				simple-audio-card,name = "es9038q2m";
				simple-audio-card,format = "i2s";
				status = "okay";

				simple-audio-card,cpu {
					sound-dai = <&i2s0>;

				simple-audio-card,codec {
					sound-dai = <&sabre>;

Thanks a lot for you help !

I tried updating according to your directions : Trying things (still not working) · arpel/I-Sabre_9038Q2M@a477896 · GitHub
It boots but generates a lot of i2c errors.

Actually i’m pretty sure that the DAC is i2s only, I changed only the 1st line of fragment1 and … boot stuck.

Still digging … !

Hi, the codec uses it, so you need both i2s and i2c.
Have a look at this, perhaps it helps: debian_kernel/es90x8q2m-dac-overlay.dts at 8bb796b3eff3bc0fcc89406f9f83fd9a224b7526 · TinkerBoard/debian_kernel · GitHub
This is how I implemented it for the tinkerboard kernel, it is not using sound_simple_card but that should not make a difference.

Well, I tried several things and even if no boot issue, I did not succeed in getting the DAC detected (ie kernel modules loaded).

I finally plugged it to a rpi4 with “baseline” volumio and it worked straight away (either as a RPI-DAC or a Hifiberry).

I’ll maybe try again in a few days (for the sake of not letting it go).

How exactly are you connecting this DAC to the OpiPC?
The pinout isn’t the same, so it might need some consideration tweaking right? Are you sure your hooking up the pins correctly? Even without the kernel modules, you should be able to run i2cdetect to check if the DAC is up on the Bus?