Somehow OrangePi ecosystem lacking Hi-Fi expansion boards. I'm building one based on PCM5102 chip. It has great performance in terms of audio quality. It requires relatively simple design to get it working. It is hand solderable, making it more interesting to work with. And it is dead cheap, which concludes perfect DAC for 10$ compute board.
This is ongoing projest and more details will be added in project log.
I'm comparing my design to chinese module based on the same PCM5102 chip
To do (almost) blind test I connect two sources at the same time and switch between them with single button on the amp.
Sound is quite similar, however
- Mine gives a bit claener feeling in whole range, meaning a bit cleaner bass, mids and highs.
- Scene is slightly better with mine
- Most importantly, noise pickup is much better on my board, which was my biggest concern, and here is why.
Biggest issue with Orange PIs I had so far is that they are quite considerably noisier than Paspberry PIs. With yellow module above Orange PI out of the box is quite unbearable, picking up all kind of noises when you perform any activity on the board, in other words all the time. This was the biggest motivation for running my own design.
I'm not much experienced on that matter and all I did is
- Provide whole ground plane between Orange Pi and DAC
- Provided independant low noise stabilized power for DAC
- Try to lay out board carefully, all caps close to consumers, no overlapping paths and this kind of things.
Guess that did the trick. Although one just might ask himself, why wouldn't you just start with Raspberry Pi in the first place ;-)
Let's configure I2S sound card and try to output some audio there.
I'm doing this on top of latest at the moment Armbian, calls itself 'Armbian 20.08.17 Buster with Linux 5.8.16-sunxi'. It's installation is covered here.
1. Get this repo
$ git clone -b H3 https://github.com/anabolyc/pcm5102a-for-armbian-orangepi-zero
$ cd pcm5102a-for-armbian-orangepi-zero
We need to add device tree overlay. It will tell linux kernel to use I2S pins not just as regular GPIOs, but as audio output device.
$ sudo armbian-add-overlay i2s-sound.dts
It will compile and add our overlay file to /boot/overlay-user folder and add user_overlays=i2s-sound recored to /boot/armbianEnv.txt file. So after reboot kernel will try to apply aout overlay. But we should not reboot just yet, since we referenced kernel module (i2s driver) that not exists yet.
Let's build it first. Since we're about to build kernel module, we need kernel headers.
Looks good, but we don't relly now yet if card is working, since system will output pins with data whether someone listening on the other end or not. Let's produce some sound to see if it's actually working
With first prototype only few minor issues were found, small missizing, also i think single power led is enough.
Also i soldered out SPI and I2C headers for OLEd screen to be attached, and it works, but for my applications i don't really need it. Normally it would be well hidden, therefore at this stage not much value in attached screen.