I am experiencing issues while using a Waveshare PCM5122 DAC module (PCM5122-Audio-Board-A). I am not connecting it directly to the Raspberry Pi; instead, I am using seven wires corresponding to the I2C and I2S pins, plus one 5V pin and one GND. The wires are not long (approximately 15 cm) and are of good quality.
However, I am encountering popping and clicking noises, occasional XRUNs, and noticeable background noise even when no audio is playing. In addition, there is a fairly loud hum during startup, which only decreases after the operating system has finished booting.
I previously used a DAC GY-PCM5102a and didn’t experience this problem.
Has anyone experienced a similar issue and found a solution? Thank you very much.
Hey @sangto2906 - I’ve experienced many somewhat similar problems, too many. I would recommend hooking the PCM5122-Audio-Board-A ‘directly’ to the Pi, either really directly, header to pins, or if that’s not practical, using a 40 pin ribbon cable. Maybe just for a test to see if the 15cm wires are the issue - it could be something very different. Was the DAC GY-PCM5102a that did not have the problem(s) hooked up the same way by ~15cm wires?
Other possibilities:
Make the I2C and I2S signal lines a twisted pair. Separately!
Hook up more or all the 5V and Gnd pins.
Shortening the wires if possible.
Using shielded cable - either individually, for pairs, or as a group.
Add some bypass caps between 5V and GND - perhaps the same value as on the PCM5122 or the Pi.
A picture of your setup showing the connections would be helpful.
Thank you for your suggestions. Previously, I mounted the GY-PCM5102A module directly on the PCB and connected it to the Pi 5 using a 40-pin flat ribbon cable. I wired the I2S and I2C pins directly, and only connected a single GND wire as well as 5V. I also considered plugging it directly into the Raspberry Pi, but I’d like to confirm the exact root cause before doing that.
15cm flying wires are definitely too long. If you really have to do that, you may make things a bit better if you put 330Ω resitors in the i2s and i2c lines close to the Pi or use 160Ω each at both ends.
This reduces ringing of the digital signal and makes timings more reliable.
The second important thing is to connect all ground and power pins, each with an individual wire.
Good luck.
Thank you for your response. It seems the main issue is likely the wiring, so I’ll connect the module directly to the Raspberry Pi to achieve better results.