Loud buzzing when using any USB powered speakers

audio

#1

I am using the Little Bird 5 inch display, that uses HDMI but has no speakers, so I need to use the analogue audio jack on my Raspberry Pi 3.

I’ve narrowed the buzzing down to being reproduced whenever the USB powered Speakers and the Rasberry Pi share a common DC power source. Eg. from the same USB hub, or even with the speakers being powered from the Pi’s own USB port.

This problem doesn’t occur when using headphones, or speakers that have a separate AC power supply (USB powered speakers running off their own USB wall power adaptor also qualifies as a separate AC power supply and avoids the buzzing too).

I’ve tested with a variety of

  • Stereo male-to-male audio cables
  • USB powered speakers
  • and USB hubs

all with the same terrible buzzing noise, so long as the Speakers and Pi share a DC power supply.

I recorded a video demonstrating the problem


and another demonstrating the interesting variety of noises you get with the change in screen activity

As you can see, the solution is to have two separate AC power supplies, but this is incredibly clunky.

In fact, you can reproduce the buzzing even with two separate AC power supplies - by connecting a wire between the housing of the two USB plugs of the Pi and the Speakers. So it’s something to do with them sharing a common ground on a DC power supply.

I was told that this product, the Pimoroni Phat DAC https://www.littlebirdelectronics.com.au/pimoroni-phat-dac-for-raspberry-pi-zero will solve the issue. Before I throw down more money on this solution, can I get an opinion / explanation of what’s going on here and how that will solve the problem? I.e. how is it different than the existing sound hardware on the Pi 3?

Someone in another forum suggested it may have something to do with the composite video output on the 3.5mm jack in the Pi, but apparently having “hdmi_force_hotplug=1” in my config.txt should disable the video on that jack, and I have this line (uncommented) in my config.txt already. But perhaps I need a special kind of 3.5mm Audio/Video plug that correctly grounds out the video signal? I.e. the one with 3 black bands.


#2

G’day,

This will be long, sorry.

Thanks, that’s an interesting problem. You are probably hearing 50 Hz hum and harmonics received by the speakers on the audio cable, and then amplified. There’s not enough information in your description or the videos to prove what causes the problem; you would need to tell us more about;

  • the audio cable; how many conductors it has at either end, and how they are connected inside the plugs, and;
  • the internal design schematic of the USB powered speakers; in particular if the pre-amplifier chip has a balanced or unbalanced input.

However, the most likely cause is a loop or ring formed in your tests by either;

  • the three cables; the USB cable to the powered speakers, the USB cable to the Raspberry Pi, and the audio cable, or;
  • the two cables; the USB cable to the powered speakers, and the audio cable.

The reason why switching one USB cable to the Apple USB power supply fixes it; each USB power supply is isolated with respect to the 240V AC side, and the double isolation of the two power supplies, in series, will break the loop.

The Raspberry Pi 3 audio ground is shared with the DC ground of the Raspberry Pi. It isn’t balanced. This can be seen in schematics.

You might try these ideas;

  • test the USB powered speakers against a laptop or PC; see if the problem happens there too,
  • try some USB powered speakers with a balanced input,
  • add galvanic isolation to the Raspberry Pi 3 output; by adding a lifting capacitor on the audio ground line; you can test that idea with a breadboard, 3.5mm breakout board, or 3.5mm screw terminal socket.

The Pimoroni pHAT DAC photographs show capacitors on the audio ground side, so your other correspondent is likely correct. It does however seem to be a long way to go just to fix a loop hum.


#3

Oh don’t apologise, I’m happy for any info I can get, this has been frustrating me for a long time. I’ve been experimenting a lot, and so far people on the Raspberry Pi forums haven’t been able to work this out.

Regarding the first points;

  • I’ve tried a couple different audio cables. They are standard 3.5mm male-to-male stereo audio cables.
  • Well, while I can’t provide a schematic for the 2 different USB powered speakers I’ve tested with, I wouldn’t be surprised to find out they are unbalanced, since that seems like the cheaper solution, and these speakers aren’t to expensive. But the ones I chose sound great.

And regarding the last points;

  • I just tested the USB powered speakers on the audio out and USB port at the front panel of my PC, and it had no problem - perfect sound, no buzzing.
  • I would like to attempt to try USB powered speakers with balanced input, how do I know this is the case when choosing them?
  • I would love to try this, it sounds like a cheap solution and intuitively I feel like this is the right direction. But while I’m not afraid to do some basic electronics, I need more info to be exactly sure what components you’re talking about and how to connect them.

#4

G’day,

There is an audio amplifier inside your USB powered speakers.

Balanced input is a design feature of audio amplifers. Some have it,
some don’t. It has a small cost, so a factory will avoid a balanced
input if the normal use-case of the product doesn’t need it. I don’t
think USB powered speakers need the feature very often.

The Raspberry Pi audio output is unbalanced; the audio output ground
wire is connected inside the Raspberry Pi to the DC input ground.

As long as one of the things is unbalanced, then the other thing being
balanced will hide the loop noise. Perfect is an unbalanced output
connected to an unbalanced input. Concert audio systems use that
technique.

You can test your USB powered speakers for balanced input using a
signal generator, a multimeter, by tracing the circuit, or by reading
the specifications.

To use a signal generator, set it to make a test tone, and apply the
signal between the audio input points, then between each of the audio
input wires and the DC input ground. An unbalanced input will sound
the same. A balanced input may sound best when avoiding the DC input
ground. This test isn’t particularly reliable.

To use a multimeter, set it for resistance mode, and with the powered
speaker disconnected from everything measure the resistance between
the DC input ground wire and the audio input ground wire. Reverse
polarity and measure again. An unbalanced input will usually show a
very low and unchanging resistance; of the order of no more than ten
ohms. A balanced input will usually show a high and changing
resistance. This test is a bit more reliable than the first.

To use circuit tracing, disassemble the speakers and draw a circuit
corresponding to what can be seen. If you see the audio input ground
wire connect directly to the DC input ground wire (e.g. the USB
cable), then you can be very sure it is unbalanced.

To use specifications, read the manuals and contact the manufacturer
via mail or their web site. Very cheap speakers won’t have a
manufacturer available to help. It costs money to provide that kind
of service, and the products are more expensive as a result.

Your PC audio output is probably balanced; this is common. You can
test for that in a similar way; with multimeter, circuit tracing, or
specifications. If it is balanced, then it won’t cause the same
problem.

The trick with the capacitor might or might not work. You use a
capacitor to replace the audio ground wire; i.e. in series with the
wire. Another method is to get an unbalanced to balanced converter,
such as the Altronics A2514, but at $35 plus lots of adapter cables it
may be cheaper to get a better set of speakers, or as you said before,
get a DAC module for the Raspberry Pi with a balanced output.

Hope that helps.


#5

Thank you. I really appreciate you sharing your wealth of knowledge.

Because I’ve been at this a while, I had another thread going on an electronics forum, before coming here, and your suggestions pointed towards a ground loop, which I asked about there. Conversation progressed rapidly and they determined it was certainly a ground loop issue (due to the lack of balancing, as you described) because I could reproduce it even with separate AC power supplies, by touching a wire between the housings of the two USB plugs.

They pointed me to a product on Jaycar, and Jaycar even allowed me to test it right there before buying it. It’s a “Ground loop noise isolator” and it comes in different forms, for car stereos etc. but this one comes with a simple 3.5mm passthrough connection, for situations just like mine.

https://www.jaycar.com.au/ground-loop-noise-isolator-stereo-3-5mm/p/AA3086

I tried it and it has perfectly eliminated the problem, I can now power both devices off the same DC source and the sound is fine! I noticed a slight noise with the isolator at the speaker end of the audio cable, but moving it to the Pi end of the audio cable, eliminated even that. The only thing left is a very faint buzz that the speakers emit even when not connected to anything.

Your support affected the kinds of questions I was asking on the other forum and sped things up considerably, so thank you. I even learned how to use the multimeter to test to see if it’s a balanced input or not.


#6

No worries, glad to help.

Yes, the Jaycar AA3086 will do the trick as well. Like the Altronics product, it is made with two audio transformers, one per audio channel.

A transformer is a pair of coils of insulated wire wrapped around an iron core. The signal travels by a magnetic field. It gives you “galvanic isolation”, and you can prove it by measuring the resistance from end to end; it would be infinite.

Thank you for teaching me that the Raspberry Pi audio output is unbalanced; until your thread I wasn’t aware of it!


#7

Thanks - you guys really do have experts here!

My hope is other people will see my conclusions here and the other thread and not have to go through what I did. It seems like someone should have encountered this problem by now…