Volumio 2 on Orange Pi Boards

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?

Heads up, I added the linux-headers package into GitHub - ashthespy/platform-orangepi so from the next time it should be less of a headache to fetch them.

Yes of course, I was using PA18-PA21 on the OPI side and pins 12, 35, 38 and 40 of the 40 pins connector of the DAC (compatible with rpi GPIOs 18-21) +5V and GND.

Ok I’m just replying to myself : I might have only connected the i2s interface and no i2c (for detection and configuration … ) … will try again :wink:

Look at this pinout:

That’s what I did for the i2s part (ie PA18-PA20 + PA21 even if not used)

Nice work!

Could you give more detailed info for GPIO pins for SSD1306 (128x64 pixel) display? I wold like to know about pins for SCK and SDA diaplays contacts.

If I uderstud right, we need get installation from GitHub - dhrone/pydPiper: A general purpose program to display song metadata on LCD and OLED devices?
After that I need change install.sh from OrangePI-Volumio-pydPiper/install.sh at main · radiomanoff/OrangePI-Volumio-pydPiper · GitHub and which file I need make display configuration for SSD1306 (128x64 pixel) display?
Thank you very much!

gpio readall shows
 +------+-----+----------+------+---+OrangePiH3+---+------+----------+-----+------+
 | GPIO | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | GPIO |
 +------+-----+----------+------+---+----++----+---+------+----------+-----+------+
 |      |     |     3.3V |      |   |  1 || 2  |   |      | 5V       |     |      |
 |   12 |   0 |    SDA.0 | ALT2 | 0 |  3 || 4  |   |      | 5V       |     |      |
 |   11 |   1 |    SCL.0 | ALT2 | 0 |  5 || 6  |   |      | GND      |     |      |
 |    6 |   2 |      PA6 |  OFF | 0 |  7 || 8  | 0 | OFF  | TXD.3    | 3   | 13   |
 |      |     |      GND |      |   |  9 || 10 | 0 | OFF  | RXD.3    | 4   | 14   |
 |    1 |   5 |    RXD.2 |  OFF | 0 | 11 || 12 | 0 | OFF  | PD14     | 6   | 110  |
 |    0 |   7 |    TXD.2 |  OFF | 0 | 13 || 14 |   |      | GND      |     |      |
 |    3 |   8 |    CTS.2 |  OFF | 0 | 15 || 16 | 0 | OFF  | PC04     | 9   | 68   |
 |      |     |     3.3V |      |   | 17 || 18 | 0 | OFF  | PC07     | 10  | 71   |
 |   64 |  11 |   MOSI.0 |  OFF | 0 | 19 || 20 |   |      | GND      |     |      |
 |   65 |  12 |   MISO.0 |  OFF | 0 | 21 || 22 | 0 | OFF  | RTS.2    | 13  | 2    |
 |   66 |  14 |   SCLK.0 |  OFF | 0 | 23 || 24 | 0 | OFF  | CE.0     | 15  | 67   |
 |      |     |      GND |      |   | 25 || 26 | 0 | ALT2 | PA21     | 16  | 21   |
 |   19 |  17 |    SDA.1 | ALT2 | 0 | 27 || 28 | 0 | ALT2 | SCL.1    | 18  | 18   |
 |    7 |  19 |     PA07 |  OFF | 0 | 29 || 30 |   |      | GND      |     |      |
 |    8 |  20 |     PA08 |  OFF | 0 | 31 || 32 | 0 | OFF  | RTS.1    | 21  | 200  |
 |    9 |  22 |     PA09 |  OFF | 0 | 33 || 34 |   |      | GND      |     |      |
 |   10 |  23 |     PA10 |  OFF | 0 | 35 || 36 | 0 | OFF  | CTS.1    | 24  | 201  |
 |   20 |  25 |     PA20 | ALT2 | 0 | 37 || 38 | 0 | OFF  | TXD.1    | 26  | 198  |
 |      |     |      GND |      |   | 39 || 40 | 0 | OFF  | RXD.1    | 27  | 199  |
 +------+-----+----------+------+---+----++----+---+------+----------+-----+------+
 | GPIO | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | GPIO |
 +------+-----+----------+------+---+OrangePiH3+---+------+----------+-----+------+

GND —>6 (Physical)
VDD —>1
SCK —>5
SDA —>3

@kovus Later, I can write the full instructions for installing pydpiper on the Orange PI, if there are specific questions.

1 Like

Thank you! I’ll try repeat this.

Hi all

Did anyone make PCM5122 working on Orange Pi Zero ? I’m not sure if this possible.

Like this board
pcm5122

Search this thread on some hints to get I2S working on the Zero. IIRC, depending what version of the Zero you have you might need some extra surgery to enable I2S.

The new version Volumio 2.873 (Orange Pi Lite, Orange Pi PC, Orange Pi One).

>>>link

2 Likes
3 Likes

Hi guys.
I’m new to Volumio and new here. First of all thank you all for great job with volumio.
Recently having more spare time because of COVID I was digging in my drawer I found OrangePi One board and WM8804 board from AliExpress. It’s called PiFi v1.0 and is a clone of many similar boards.


I wanted to make it work and found Volumio but I didn’t find any working solution for this pair (Opi+pifi). So I’ve decided to give it a try. Inspired by Alexandre Belloni talk on YouTube about ASOC architecture on Linux I wanted to make it work without special machine driver (anyway all that rasp hats with wm8804 are just PCB with WM8804, power IC, Xtal and toslink interface without any logic), (precisely speaking simple-audio-card is machine driver) and no changes to platform driver. Linux kernel tree wm8804 driver is (as per documentation)for hardware mode meanwhile all that hats set wm8004 in software mode. So it took some minor touches to wm8804 driver to make it more software mode usable with some parameters passed via DT (dts file).
It works in Master mode (WM804 is master) which is better and native audio solution. IMHO it can’t be used in slave mode with OPI One as wm8804 needs external MCLK clock in slave mode for SPDIF transmitter but Opi One doesn’t provide it to outside world. Only wm8804 driver is changed a little bit so it should work with other boards with armbian and i2s platform driver (even in slave mode as my pifi v1.0 board has MCLK pin connected to pad on PCB).
Just remember that Opi One pin header is compatible with raspberry but not in 100% and I2S pins don’t match so layer 1 (hardware layer) requires some modifications which was covered in previous posts.
As I’m new to Volumio I generated platform files with armbian toolchain and used opifam branch of Volumio github to generate image (without digging deeper in Volumio architecture). It’s based on 5.10 kernel.
It works pretty cool for me. At the moment (I hope it’ll change) I’m using Technics DX950 so I’ve tested it to 24bit@48K but it should go up to 24bits@192k. Also testes optical and electrical outputs.

https://megawrzuta.pl/download/e622af36144876f2676bdfde6a623d2b.html

Maybe someone will find this image good for testing or listening

1 Like

Nice work! :slight_smile: If you can add your patches, we can add them into the volumio repo so all further images pick them up as well.

Look at the platform-orangepi repo on how this could be done. Also with the corresponding dts files, let me know if you have additional questions :slight_smile:

I put all changes in forked repo. Please, take a look.

1 Like

Final version. Orange Pi PC & PCM5102

2 Likes

The new version Volumio 2.882 (Orange Pi Lite, Orange Pi PC, Orange Pi One).

>>>link

Xunlong started selling the Orange Pi Lite version with 1GB (2x512MB).
I bought it on Ali, and testing it. Working great.