CSR8675 programming guide w. software and tons of CSR info

Hi all!

I thought I'll do a quick write up on what I've found out the other day - programming the CSR8675!

The CSR bluetooth chips are the most well known BT modules out there on small china amplifiers. Although the Chinese are outsourcing for a cheaper chip, the CSR BT modules is still a much better option when it comes to changing parimeters or eq. Some CSR versions even have a test app where you can change some eq settings on the fly! (Only known to work for CSRA642xxx and CSR867x).

The reason why I'm doing this write up is because I've struggeled to get the CSR8675 modules to be programmed by any software. This is because both the software and the firmware on the modules have to match to work, and they often don't! I've also spent tons of time trying to find the most up to date version of the ADK, but had no luck in fining an ADK that matched the firmware on the BT receiver I had. Then I came across TinySine and they write up on their BT 5.0 modules/amplifiers. They also use the CSR8675, and was kind enough to send me the firmware for their products. This made it possible to flash the module with a firmware that would work with the ADK they had posted on their site.

Just to give some pros and cons on the CSR8675 modules:
  • Transmitter and receiver mode, up to 100x(?) can be liked together, not just TWS where it only supports 2 connections.
  • More feature for DSP in the CVC software, including crossover and dynamic bass adjustment (key point for me, still testing it)
  • 3 analog outputs (L, R, SUB)
  • Working audio prompts (.wav files to be played on events, not just beeps)
  • APTX-DH


  • Some issues with connecting to the programmer, needs to be reset by PS tools to properly connect sometimes
  • New software, no other writes up on it

So lets begin. First off, go to TinySine's web page and read up, that will give you a jump start on what I'm taking about. I would also recommend to just go for the CSR64215 if you don't need the advance DSP settings or multi connection. The CSR64215 can do EQ, TWS and APTX and is much more stable to program and use. There's also some amplifiers you can buy on ali that uses the CSR64215:

My fav CSR64215 amp combo:
Note: even got a working AUX input that is routed through the CSR chip, so you get seemless switching between line-in and BT. You're EQ/DSP settings also work when you route it through the CSR chip! Also got connectors for LED, BTN etc. I love using the LED on a BT switch for my speakers, you can create cool patterns to let you know what's going on.

More generic, and a little cheaper:

Note: does not have AUX in, nor breakout for an LED.

I do not recomend to go for neither the CSR8630,-35 or -45 unless you don't care for changing anything. You can do it, but they do brick easily. It is possible to get them to work if you brick em, but just don't...

Quick tip:
If you only want to change the name, you can use a generic USB SPI FTDI programmer and use PS tools to change the name. Take a look here for more info. For any other changes, you do need a dedicated USB to SPI adapter from CSR.

Info to get you started

Change Name:
EQ settings:
https://www.tinyosshop.com/index.php?route=information/news&news_id=86

Restore for older versions: (8635,-45, A6215)
https://www.tinyosshop.com/how-to-restore-bluetooth-audio-module-default-settings

For other great CSR info in video format, visit Darie on YouTube, a great friend and CSR-BT master!
------------------------------------------------------------------------------------------------------------------

Now, to get going you will need a receiver. There are some other breakouts and they will work, you just might need to change some of the PIO's. Also, you WILL need a x64 bit version of win to get the software to work properly, I've tested it with win10.

Firstly, go and download the tool at TinySine, the ADK 4.3 is all you need. You can also fin the software in my dropbox folder along with a lot of other info regarding CSR, both software and a ton of documentation. It's kind of messy, and I will add more of the CSR stuff I got laying around.

Dropbox heaven for CSR

EDIT 18.02.21:
Google Drive folder

Secondly, to be able to do some changes you need to connect the programmer to the module, there's kind of a "standard" layout on most BT amplifiers/breakouts for SPI.

G -GND
V -VCC (3v3)
E (blank) - SPI enable (connect it to 1v8 or with a resistor to 3v3)
I - MOSI
K - CLK
B - CSB
O - MISO

Next is to burn the correct firmware on to your BT module. This will make the module exactly identical to the TSA6175 that TinySine is selling. One thing to note is that you need to do some changes if you're doing to to this to several modules. The main issue with copy-paste the firmware is that every BT module has the same address and is identifies as the same device. This is not a good thing. I will explain how to fix this after you have burned the new firmware:

Find the folder called "8675_firmware" and copy it. You will then need to open "BlueFlash". Connect the module to the SPI and the software should prompt the SPI converter. Click on "Stop Processor" if your BT module is running. When the module has stoped, find the folder with the firmware and click on the "dump" file. Clock on download, and the software should do the rest. Your module is now updated and you should be able to use the "ADK Configuration Tool" to change buttons and the general behaviour of the module!

To make every BT module unique you will need to open "PSTool", connect through the SPI and when you have read the chip you will be prompted with the BT modules address. Just change the value (change a 1 to a 2), click on "Set" and you're good to go!

To test if everything went well you should be able to connect to the BT module we just updated. To do this on this module you will use a wire between "KEYCOM" and "vol-". First turn the module on, you should hear a sound. Double tap the "vol-" with the wire and you should hear "pairing". If not, use the wire to single tap KEYCOM and "NEXT" then do the "vol-" double tap. This will set the module in receive mode and in pairing mode. If you tap the "PREV" you will go into transmitting mode. I've not tested anything else at this point than receive mode. "The name will be "CSR6875" if you got it into pairing.
To change the name or any DSP settings follow the guides at TinySine that was given above.

Last part in this tiny guide is to pull up the "ADK Configuration Tool". Here you can use it to change mot of the setting. Be warned, some settings can cause if to not work properly, but no worry, if everything goes south, you can always reflash the firmware and you're on safe ground. Try to stay away from most of the settings except the once in "User Interface" that seems to be the most safe. Also DON'T delete all the settings under "User Events" etc, leave at least one if not you WILL brick it!

Have fun, and let me know if this was helpful. I would recommend watching YouTube videos and read up on things before you mess up. You should be able to fix a bricked module, but it can be a pain. Just ask questions if something was unclear, and I'll try to explain it. Do take a look in the Dropbox folder, as it contains a lot of info and some pictures.
 
Last edited:
  • Thank You
Reactions: 1 user
Problem solved it was enough to use a 10k resistor between KEYMOTE and VOL + (PIO2) by hitting the pin twice. I followed the image that was on the tinyshop store of the tsa6175

AudioB5-2.jpg


Now if I would like the pairing to always be active what should I change in PSTools?:confused: Thanks for help
 
Problem solved it was enough to use a 10k resistor between KEYMOTE and VOL + (PIO2) by hitting the pin twice. I followed the image that was on the tinyshop store of the tsa6175

AudioB5-2.jpg


Now if I would like the pairing to always be active what should I change in PSTools?:confused: Thanks for help

Haven't really tried to have the module always being being in paring mode, but I think if you follow the two steps shown in the attached pictures that you can make it work. Just tick the boxes circled in red and remove the tick from the circle in orange (if you got that setting enabled). I think this will always set the bt module in paring mode, but I think the first one that connects to the module will be the desired source. This is why it's helpful to be able to reset the paring list. Give it a go and let us know how it went.

Sorry that the pictures won't show, they're linked to my shared Dropbox folder.

An externally hosted image should be here but it was not working when we last tested it.

An externally hosted image should be here but it was not working when we last tested it.
 
Thank you !

Hello ErikDIY,
Your post is very interesting. I tested with the Tinysine firmware and indeed it works perfectly!

I would like to make a 2.1 soundbar.
You are talking about 3 analog outputs: L & R ok, but where is the SUB analog output? The CSR8675 only has 2 internal DACs to analog. I guess you have to go through an i2s converter for L and R, and use a DAC for the SUB? :confused:
 
No Apt-X on TinySine CSR8675

Hello Eric,

I have a TinySine CSR8675 board and have no Apt-X connection. The Android developer options show the used codec, paired with other Apt-X capable receivers my phone instantly uses Apt-X. In the ADK Configuration Tool under Bluetooth-BR/EDR-Profiles/AD2P only AAC is activated. If I activate the Apt-X settings the phone shows an Apt-X connection but the CSR board becomes silent..

I will explain how to fix this after you have burned the new firmware:
Find the folder called "8675_firmware" and copy it.
Do you mean the file in CSR Heaven\CSR Programming\CSR8675\Misc? (I can't find a folder with this name in your Dropbox.) With this I get an Apt-X connection but no sound and the ADK Configuration Tool does not work.


Have you tested your boards for Apt-X connection? If you have success, what boards do you have exactly and do the Configuration Tool and Music Manager work?


Thank you for your help!
 
One thing I'm misunderstanding about TWS is if it's persistent. Let's say you have two amps - once setup, do they automatically establish themselves as TWS - or do you have to twiddle the buttons everytime because the amp always powers on "normally"?

I guess what many would like is to be able to build a 2-way to 4-way wireless speaker - with this little BT module handling ALL the crossover and channel leveling needs, then outputting 2-4 I2S to their I2S input amps.
 
I do not know how the TWS exactly works, but two ideas:

Any CSR Chip with I2S output: Use a Wondom/Sure DSP to do the crossover (it has 4 DACs). For the connection there is a (German, but Google Translate should do the job) instruction: CSRA64215 – Sure DSP Wiki . But as far as I know the programming of the Sure/Wondom DSP is a bit tricky as it is with the CSR boards, an additional programmer is needed.

Other Idea: If after turning the system on only some buttons have to be pressed, the buttons can be activated by Arduino Nano driven optocouplers. I use LTV847 optocouplers to remote control a CSR board and it works fine. (220 Ohm resistor between Arduino output pin and optocoupler, 10 kOhm between CSR PIO the optocoupler.)



 
Hello ErikDIY,
Your post is very interesting. I tested with the Tinysine firmware and indeed it works perfectly!

I would like to make a 2.1 soundbar.
You are talking about 3 analog outputs: L & R ok, but where is the SUB analog output? The CSR8675 only has 2 internal DACs to analog. I guess you have to go through an i2s converter for L and R, and use a DAC for the SUB? :confused:

It seem I've spoke too soon about the sub out. It is possible to have all 3 outputs, but you would need to either connect the sub wirelessly with another bt module (not tested) or do it like you describles. You can also do it the other way arround, DAC for R, L and use the I2S for the sub... either should work.

Hi!

Thanks for the amazing work!

Did you also manage to make the Gaia App work? I can not get it to connect..

Thanks!

I've had no problem with the GAIA app.
I don't know what firmware your bt module is running, but there is an option for enable the GAIA "protocol"... also, you are using the CSR8675 or the CSR64xxx? It does not work with older models like the CSR8635, CSR8645...

Does the DSP work if audio is routed to a discrete DAC via i2s ? Thanks.

Yes, you can choose what to route through the DSP in the CVC tool, including I2S, analog in/out.

Hi! How to MUTE control the amplifier (TPA3116D2) from CSR8675 BT?

Many ways, depends on the amplifier, it it has LOW og HIGH logic for the mute. You can chose any GPIO. There is a setting for MUTE, so that the module will pull it high when the amplifier is muted. For the TPA311x you have to pull MUTE LOW. So an easier way is to connect it with a 1k to one of the LED outputs. Then use the "A2DP steaming" settings under LED events. This will mute the amplifer when you're not streaming music.

Hi @All,

does someone know if the CSR8675 DSP supports a FIR-Filter?

I have no clue, sorry. It could be done if you wrote your own code, but that's way above my knowlage.

Is it possible to program the DSP for delay?, I want to delay certain band of frequencies. This to fix some timing issues.

No idea. Don't think so. Same answer as the one I gave above.
 
Hello Eric,

I have a TinySine CSR8675 board and have no Apt-X connection. The Android developer options show the used codec, paired with other Apt-X capable receivers my phone instantly uses Apt-X. In the ADK Configuration Tool under Bluetooth-BR/EDR-Profiles/AD2P only AAC is activated. If I activate the Apt-X settings the phone shows an Apt-X connection but the CSR board becomes silent..

Do you mean the file in CSR Heaven\CSR Programming\CSR8675\Misc? (I can't find a folder with this name in your Dropbox.) With this I get an Apt-X connection but no sound and the ADK Configuration Tool does not work.


Have you tested your boards for Apt-X connection? If you have success, what boards do you have exactly and do the Configuration Tool and Music Manager work?


Thank you for your help!

Yes, I've had no problem with aptX, but you have to be sure the module is not set to use the lower codecs by force.

Try this:
Open the config tool and go to "Config set - Audio" Untick, remove "Use Low Power Codec".

Then:
"Config set - Bluetooth - BR/EDR Profiles" Enable all the aptX features codecs you want.

This should work. I have no idea why you don't get any audio. Hope you saved the original firmware/settings so you can go back and then try the settings I just sent you. Good luck.

One thing I'm misunderstanding about TWS is if it's persistent. Let's say you have two amps - once setup, do they automatically establish themselves as TWS - or do you have to twiddle the buttons everytime because the amp always powers on "normally"?

I guess what many would like is to be able to build a 2-way to 4-way wireless speaker - with this little BT module handling ALL the crossover and channel leveling needs, then outputting 2-4 I2S to their I2S input amps.

You have a setting where you can choose if the connection is temorary or permanent. AKA, auto connect on power on, or not. If you want the two modules to connect at power on without messing with the buttons you can.

TWS could do this, but I would rather use "ShareMe". This is the same feature as other brands like JBL, BOSE etc use to connect 100+ speakers together. But you have more control over each amps DSP and settings. TWS basicaly links everything (more or less). You can do all the crossover with the module, so there is no reason why it should not work.

I do not know how the TWS exactly works, but two ideas:

Any CSR Chip with I2S output: Use a Wondom/Sure DSP to do the crossover (it has 4 DACs). For the connection there is a (German, but Google Translate should do the job) instruction: CSRA64215 – Sure DSP Wiki . But as far as I know the programming of the Sure/Wondom DSP is a bit tricky as it is with the CSR boards, an additional programmer is needed.

Other Idea: If after turning the system on only some buttons have to be pressed, the buttons can be activated by Arduino Nano driven optocouplers. I use LTV847 optocouplers to remote control a CSR board and it works fine. (220 Ohm resistor between Arduino output pin and optocoupler, 10 kOhm between CSR PIO the optocoupler.)




Not quite sure what you're saying. First of all, if you only need basic cross over why bother with the DSP board from SURE, just use the CSR8675.

Secondly, you don't need to reconfigure the TWS if you already have established the connection and it is set to permanently. The only downfall with the CSRA64215 is that it runs an older firmware, so TWS is buggy. I would rather go for a QCC3008 (newer model, new firmware, same pinout. Also CSR got bought up by Qualcomm (QCC), so they just made some minor changes).

What do you emulate with the buttons? TWS connection? The CSR8675 should have the "single" button feature, for connecting the speakers.

Pro tip. The CSR8675 got 3v3 compatible GPIO, so run the arduino at 3v3 and tie it directly with a 1k to the pins. If you want to go even future, use only on pin and set up the IR remote function and emulare it in code. Then you only need one GPIO for all the commands you can do with a push button.
 
Hello EricDIY,

thank you for your response!

Apt-X

I tried "unticking Use Low Power Codec and ticking Apt-X" -->No sound. After unticking Apt-X it works again.

I am now in contact with TinySine, they say that their firmware has no Apt-X, so they removed the Apt-X feature in their shop (AudioB Bluetooth 5.0 Multipoint Audio Receiver Module). They say that it is possible to get Apt-X with a different firmware and cutting one PCB trace. However with that the multi connection features gets lost.

Do you have a TinyShine board or a different 8675 board (what exactly)? Does it have Apt-X AND multi connection?

Buttons and Arduino:
I use a white Apple remote to control a motorized pot, amplifier power and two CSR functions: Pairing mode and switching between different DSP settings (extended bass and evening mode). The speakers themselves have no buttons. I have a lot 5V stuff connected to the Arduino, but the tip with 3,3V is good to know!
 
Last edited:
Thank you very much for your reply ErikDIY. I have made good progress in my sound bar project.
I am using the I2S output for the headphone sound and a mono L + R DAC output for the subwoofer.
The volume of the whole is synchronized, but I would like to independently control the volume of the subwoofer with the user events "Subwoofer volume up and down".
But unfortunately these events do not act :(
Do you have any idea of ​​the problem ?
 
Hello jonnyboniepony,


I also have the same problems with I2S. I also can not connect to the music manager, the board is bricked (only flashing back to the original rom helps).



When I contacted Tinysine regarding the missing Apt-X they sent me one rom for analog+I2S output: Dropbox - CSR8675 TinySine Apt-X without multipoint rom - Simplify your life . If you have a Tinysine board you have to cut a trace (do not know why..). Since I need multipoint I did not try that rom.


Another way would be to use a CSRA64215 board, these often come presetted with I2S (but changing the output works fine (Google Ubersetzer, disable google translate to see all pictures).






@mcsa
I use the user event "Select Next User EQ Bank" to switch between different user PEQ. It works fine! You could define different "bass boosted" user PEQs (max. 6) and switch between them.