Two max98357A for stereo output through TRRS connector

I bought two MAX98357A breakout boards. Configured first one for Left Channel and second one for Right Channel as in hookup guide HERE

I’m outputting I2S from ESP32 Thing Plus via an A2DP stream sink. This goes through two MAX98357A breakout boards. One configured for Left Channel Other configured for Right

One channel wired to TRRS plays crystal clear, hookup second one and static.

Currently connected as follows:

TIP-> LEFT → (MAX98357A - Mono open L jumper closed) “+” output
RING1 ->RIGHT → (MAX98357A - Mono open R jumper closed) “+” output
RING2 → GROUND → BOTH Max98357A “-” outputs
SLEEVE → MIC → Not connected

Worked for a while to clean and MAKE sure jumpers are correct. Reading datasheet about SD_MODE pin HERE

Behaviour:

If only LEFT Max98357A is only connected crystal clear audio and get left channel. SD_MODE pin is same as Vdd when I measure it.

If only RIGHT Max98357A is connected okay audio and still get left channel. SD_MODE pin is same as Vdd when I measure it.

UPDATE: I think I figured this out. I must have a defective MAX98357A breakout board. Right channel right channel SD_MODE should have lower voltage than left channel SD_MODE. They are equal.

Either way though, wouldn’t I just get left on both outputs of TRRS and not static? I’m getting terrible static if I hook up both sides to the TRRS connector. Just one board and sounds fine.

Referenced Boards:

Working with A2DP library:

If you swap the boards, same behavior?

Share a diagram of your setup

1 Like

@TS-Russell thanks for helping with my thread! As far as does problem follow board, more or less yes. I think it’s a broken breakout board, more info below:

Both boards were functioning as left channel with SD_MODE at 5.4V (input voltage) despite the one configured for left and the other for right. To validate jumper configuration I probed voltage at the SD_MODE pin. Reading datasheet, it seems, 5.4V (input voltage) will select left then right must be a lower voltage from what I saw there (yet above 1.4v?). Ground / 0V would essentially be mono if I understood correctly. The right channel SD_MODE was at 5.4V despite jumpering for right. Makes since as I was getting the left channel out of the board configured for right.

The board I configured for left works Okay. There’s some popping noise in the circuit (likely my breadboard?), I had it playing crystal clear on left channel for a while. Anyways, it’s good enough for prototyping.

Right channel board however, seems broken. Only thing I can think of is I broke it trying to resolder the jumper for second time. Now the chip heats up to point cannot be touched.

Here’s my diagrams. Thanks again for your help…



UPDATE: I went back today and now neither breakout board will work. I think I must have destroyed them trying to de-solder and solder the jumpers. I had left the prototype w/ left channel plugged in and circuit powered all night and something was probably wrong (popping noise / symptom?) and the chip or whatever didn’t survive.

That’s possible, fortunately the boards are inexpensive so getting two more won’t be much of an issue.

What I’d do first though would be to reflow your existing header pins and clean all the flux off the board so you can carefully inspect the jumpers. You might get lucky and things will work again.

Use some rubbing alcohol and an old toothbrush to clean the flux off. Make sure the board is completely dry before applying power.

1 Like

It’s probably just superstition but I’d stick with sleeve for common/ground and N/C on mic/its closest ring.

1 Like

@YellowDog

Thanks any tips with soldering are greatly appreciated. I certainly FAT fingered quite a few times before. When I was doing engineering full time, I always had to have a tech do that stuff for me! Got the one board working by reflowing the header. I assume I didn’t get a good connection on backside of board. This time I melted the solder all the way through. As for the other board that I tried to configure for right channel and was heating up. I reflowed it and it’s just toast. Won’t work at all, just heats up. Thanks for tip!

I’m ordering two new boards but this time I’m using SD_MODE to configure channel instead.

Thanks for the tip. I tried that previously, with ground on sleeve. Didn’t work, as my headset has sleeve for mic channel. It would play when I clicked the button on the headset otherwise, attenuated the volume / signal.

Sorry for multiple posts. I cannot figure out how to quote, and furthermore how to quote in one post. Got it figured out. Bad board, saved one per tip. Ordering new boards. Need Sleeve for ground per headset I’m using to prototype.

Last question. Have you guys use the MAX98357A? Did you get clean audio? I get some pops in there. Power line is clean (probed with oscope). Assuming the noise is due to using breadboard instead of soldered connections for everything?

I understand and sorry for questioning and recommending otherwise. The important thing is that you’re on top of your audio connections.

1 Like

No worries, thanks for participating in my thread.

Hi @mjeschke , Seems like you’re on the right track. But I thought it could be useful to look through our example doing something similar with the WM8960 CODEC.

https://learn.sparkfun.com/tutorials/audio-codec-breakout—wm8960-hookup-guide#example-9-i2s-bluetooth

I seem to remember getting some pops/crackles/noises until we adjusted the I2S settings to match the CODEC. Could be your I2S channel_format, communication_format, or other settings are not matching what the DAC breakout wants to see. Hope this helps! -Pete

Those I2S settings are setup in the Arduino Sketch here:

https://github.com/sparkfun/SparkFun_WM8960_Arduino_Library/blob/main/examples/Example_09_I2S_Bluetooth/Example_09_I2S_Bluetooth.ino#L186

@pete.lewis dang that’s a cool chip and breakout board. Wish I’d spotted that before I started prototyping. I may have to rev my design before I print a PCB to utilize that WM8960 chip. In the least your hookup guide shows how to clean up the audio out lines. Very thankful for you sharing this.

Right now my challenge is I need to decode J1850 VPW (OBDII) datastream. I suspect somewhere on the car’s network is possibly commands for a AUX audio device such as CD changer to; play, pause, next, previous, etc.

Really want a lightweight / software implementation to sniff the Class 2 / J1850 VPW data so I can avoid populating my board with a bunch of chips. Already have an ESP32 in there. I do see you have a OBDII diagnostic board but maybe much more than I need.

Hey Pete, thanks for the tip to use WM8960 breakout. I’m getting ready to order a second round of breakout boards for my prototype, including the WM8960 breakout you designed. As part of my diligence I’m looking where to source the WM8960 IC for my final PCB design.

Having some difficulty… Mouser doesn’t seem to list it anymore (searching web not finding it either, nor the bare chip in SparkFun catalog). They have revised the WM8960 part number?