I was looking for a way to connect my Google Home to my old Sonos Play:1.
Yes because it's really annoying to not be able to change a song or modify the volume when you're in your shower !
The "Sonos Play One" include directly alexa and recently google home voice assistant but the Sonos Play:1 not...
Let's see how we can hack it !
Step 1: Open Your Sonos Play 1
Step 2: Some Observations
We can identify some chips :
I2S DAC : PC5101A
The Amp : TPA 3116 on the back of the motherboard
Sonos Play 1 is a mono speaker that includes 2 speakers : one for medium/low frequencies, one other for high frequencies (tweeter).
It has the particularity that each of these two speakers has his own channel on the DAC and on the amp : the right channel of the DAC (Pin 5) is used for tweeter and the left channel (pin 6) is used for medium.
The processor (mpc8314vradda) mix the 2 channels (Right and Left) from the source then it separate the high frequencies and Low frequencies.
These 2 channels are send to the dac by using I2S : The low freq. are send to the left channel and the high to the right channel.
Then from the dac these two channels are amplified separately by the amp (TPA 3116) and then send separately to the tweeter and the medium/bass speaker.
We are going to connect the bluetooth module between the dac and the amp. At this point the signal is analog.
But 2 problems :
- The amp go to sleep automatically after about 1 minute.
- The analog signal from the dac is already in mono and separated with high/low frequencies.
Step 3: Let's Hack It !
At first we need to disable the sleep from the amp. According to the datasheet of the TPA 3116, the mute mode is driven by PIN 12 (low = output enabled, High = mute) . So I decided to cut it : the amp will never be muted again.Beware this is very dangerous to cut this pin because it's really small and you could broke your sonos.
If you don't have a very precise cutter, please don't do it !
Step 4: Mixing Bluetooth Module Output Stereo to Mono
OK now let's see how and where to connect the bluetooth module.
At first we take a bluetooth module with line out output (L,R and Ground).
We have to mix the stereo output to mono. Easy to do with 3 resistors (2x475Ω + 1x20kΩ).
Step 5: Isolate High Frequencies of the Bluetooth
Ok we are going to make a quick and dirty bass filter to send only high frequencies to the tweeter and avoid to deteriorate it. To do so we are going to use a simple capacitor in Parallel. After some test I choose a 0.1μF capacitor.
The native bass filter of the Sonos cut sounds under 500 hz. This filter will cut sounds under 200hz. I'm not a specialist but I think that it will keep the tweeter alive.
Step 6: Connect Bluetooth Module to Your Sonos Play 1
You will find 24V , 5V and 3.3V on the mother board.
I choose 3.3v points that are easy to access near the wifi card. If you have ground loop problems (buzzing sounds are quite often with bluetooth modules) I recommend to use the 24v of the sonos (somewhere near the 2 big capacitors) and use an isolated step down like a B2403S-1W (You'll find the 24v points in this video). ... and twist the cables it helps too.
The amp TPA3116 is really small. it's quite difficult to solder on it. So I found 2 alternative points to solder your bluetooth output to your Sonos Play1 .
Step 7: Make a Test !
Ok, let's make a test.
You have good videos on youtube to do it :
Frequencies test -> very interesting test to make if you couplate it with plug/unplugged the speakers one by one.
As you can see I added a ground loop filter on the output of my bluetooth module. Without it I have a lot of buzzing sounds from the bluetooth module. As I said previously it can be a better solution to use an isolated step down like a B2403S-1W.
Step 8: Fix the Bluetooth Module and Close the Sonos Play
I use glue to be sure that the module will not move or vibrate during playback. Fix the antenna in the top of the sonos : this part is not covered by metal, there's just the plastic top over it.
And now you can use your Sonos as usual or like a bluetooth speaker !
Step 9: Some Remarks
This mod is quick and dirty but the result is not bad at all. Some improvements that should be done :
- Use an isolated step down like a B2403S-1w to avoid the ground loop filter at the output of the BT module.
- Add a switch to switch off the BT module
- Use the BT module to deactivate mute mode of the amp only when necessary instead cutting the mute Pin on the amp (it avoid that your Sonos runs hot)
- Protect the dac from the input source
In a similar way I also add a jack input on my sonos. But you have to disconnect the jack plug from your smartphone to keep the normal Sonos dac able to send sounds.... An electronic engineer could resolve it easily ! But as the bluetooth module solution does not suffer of the same problem (the native sonos dac still works as before) I choose to explain that one ;-)
To conclude I don't recommend to make this mod unless you have good tools and good skills.
The best way to have Google Home or Alexa on your Sonos still to buy a Sonos Play One instead a Sonos Play:1 ! And don't forget that Play:5 (gen2),Play:5 (gen1),Connect,Connect:Amp and Amp have an line input that can be synchronized to all your Sonos speakers at the same time ;-)