CSR8675 programming guide w. software and tons of CSR info

Update and a new problem! So I'm still working on getting my JBL Xtreme working. I recently bought a 2nd unit off the bay for parts. I was able to pull the firmware off this 2nd unit and flash it to my original board. The original speaker is now fully functional! Also the "broken" speaker just needed a little adhesive and is also 100% working now.

Problem is that both units now have the same bluetooth MAC address but when I change the bluetooth address in PSTool, the speaker will no longer power on. If I revert it back, it works fine again. Ive tried just changing a digit here and there as well as changing the address back to the one from my original .psr backup but no luck. Do I perhaps need to edit the firmware backup so it has a unique bluetooth address and re-flash? Thanks for any suggestions.
What is the default bluetooth address? It's possible that any random bluetooth address might not work. Try changing address value only in the LSB.
 
What is the default bluetooth address? It's possible that any random bluetooth address might not work. Try changing address value only in the LSB.
Default address of the working module is 004279f1181b. Sorry I'm unsure what the "LSB" is. I see NAP, UAP and LAP. But I've tried changing a couple digits in the LAP.

That said I'm thinking the address is somehow tied to the firmware and there is some sort of check at start up. For example, if I change the "user friendly" name in PSTool, the speaker will not boot. When I change it back, it boots right up.

Here is the working firmware file in case it's helpful. Appreciate the input as always, I feel like I'm so close!
 

Attachments

  • Xtreme2 dump.rar
    3.2 MB · Views: 125
Default address of the working module is 004279f1181b. Sorry I'm unsure what the "LSB" is. I see NAP, UAP and LAP. But I've tried changing a couple digits in the LAP.

That said I'm thinking the address is somehow tied to the firmware and there is some sort of check at start up. For example, if I change the "user friendly" name in PSTool, the speaker will not boot. When I change it back, it boots right up.

Here is the working firmware file in case it's helpful. Appreciate the input as always, I feel like I'm so close!
Yes LAP is the one I meant. If the address is 004279f1181b, just try changing only the last digit (for example, 004279f1181a or 004279f1181c). But if the thing doesn't boot up even if you just change the user friendly name, it probably checks in the firmware for an exact bluetooth name or address. If that is indeed the case I'm not sure what to suggest.
 
Hello I've got a csr8760 board : https://a.aliexpress.com/_mPCNasI
The schematics are available on the above page.
I try to connect a csr spi USB from Aliexpress to that board (4spi terminals + 3.3v + GND) but sptool doesn't detect the chip.
I'm a bit lost and don't know what to try next.
This board has no spi_en pad and both 1.8 and 3.3v out don't provide the expected tensions.
Help please.
 
I now tested BTM5/3 breakout board, it works fine, so KiCAD project and GERBER files are attached.
I tested it with QCC5144 development board from AliExpress with BTM525 and BTM551 modules. It should work with other modules with compatible pinout (i.e. BTM334), but will require modifications for BTM571/371 modules.
 

Attachments

  • qcc5151_gerber.zip
    53.9 KB · Views: 87
  • qcc5151_kicad.7z
    167 KB · Views: 100
@o11111 thank you so much! Thats good news for me, at least some lights on it. Do you have maybe account on https://www.52bluetooth.com/forum.php?mod=viewthread&tid=75933 to download archive from the first post? Here is another light on this link https://www.52bluetooth.com/article-63-1.html .What I not understand is this:

I2C initialization is divided into several steps 2.1, I2C initialization​

  1. Setting PIO is controlled by hardware;
    PioSetMapPins32Bank(bank, mask, 0);
  2. Set PIO function;
    PioSetFunction(pio,func);
  3. Set the PIO direction;
    PioSetDir32Bank(bank, mask, 0);
  4. Set the PIO level;
    PioSet32Bank(bank, mask, mask);
    PioSetStrongBias32Bank(bank, mask, mask);
  5. Set Bitserial mode to I2C;
    bsconfig.mode = BITSERIAL_MODE_I2C_MASTER;
  6. Set Bitserial speed;
    bsconfig.clock_frequency_khz = prox->config->i2c_clock_khz;
  7. Set Bitserial slave address;
    bsconfig.u.i2c_cfg.i2c_address = I2C_ADDRESS;
  8. Call BitserialOpen and return the handle.
    handle = BitserialOpen((bitserial_block_index)BITSERIAL_BLOCK_1, &bsconfig);

And some english sites:
https://programmersought.com/article/51564075414/
https://www.programmersought.com/article/11937042193/
What mean "Setting PIO is controlled by hardware"? How can I set it on hardware level? The more better question is how can I comunicate with bluetooth module at all?
 
Last edited:
download archive from the first post?
There's no archive, only code in text form.
I downloaded the page, see the attachment.
What mean "Setting PIO is controlled by hardware"?
Probably bad translation. Looks like that you will need to use stated functions. I would say it is something about configuring hardware. From documentation:
/**
* \brief Maps PIOs as software or hardware controlled.
* Before using a PIO as a software controlled digital IO a call to this
* function is required. Not mapping the PIO may cause other functions in the
* PIO trap API to return errors and not produce the required behaviour.
* To put a PIO under HW control the app needs to call this function first and
* then PioSetFunction to select the HW functionality needed.
* Please note that there is no default state, all PIOs should be considered
* unmapped and unusable until they are configured by a call to this function.
* \param bank PIO bank number.
* \param mask Each bit in the mask corresponds to a PIO line. Bits set to 1 in this mask will
* be modified. Bits set to 0 in this mask will not be modified.
* \param bits Each bit corresponds to a PIO line. A bit set to 1 will cause a PIO to be
* behave as a software controlled pin. A bit set to 0 will result in the pio
* being marked as controlled by a hardware peripheral.
* \return A 32 bit mask. If any bit in this mask is high then that PIO could not be
* mapped or unmapped; note that no action will have been taken on any PIOs.
*
* \ingroup trapset_core
*/
uint32 PioSetMapPins32Bank(uint16 bank, uint32 mask, uint32 bits);
How can I set it on hardware level?
I think you can just use the code on that page.
The more better question is how can I comunicate with bluetooth module at all?
USB or TRBI (you will need TRBI200 programmer).
 

Attachments

  • qcc51xx_qcc30xx I2C Communication (bitserial)-Qualcomm (CSR) area-I love Bluetooth-52Bluetooth...txt
    664.4 KB · Views: 158
Thats realy questionable how can I implement i2c on an diy device when for this I need TRBI, I'm believing that maybe some diy interfaces might allready exist for this purpose. Even preparing everything to functional state, mean i2c, its again realy questionable where we can obtain i2c registers information. This is probably not an easy task since qc is as always not an user friendly for any development, instead I'm going to forget this, its better idea I think. Anyway thank you so much for nice support!
 
Thats realy questionable how can I implement i2c on an diy device when for this I need TRBI
QCC5125 supports USB programming, you don't need to buy TRBI200 (even though it seems to be faster, price is relatively high even for clone from AliExpress, so not worth it).
where we can obtain i2c registers information.
It doesn't exist. You may use arbitrary values and parse them on QCC5125.
This is probably not an easy task since qc is as always not an user friendly for any development
100 times YES.
instead I'm going to forget this, its better idea I think.
Do you really need I²C? Or UART will be fine as well? FSC-BT1026E module has such functionality, so this is definitely possible to achieve, take a look at documentation here
If UART is fine too and such a module isn't suitable, I would recommend trying QCC5144 (BTM544 module). My project requires some kind of UART control (volume, playback, ...), so I may take part (and help you) in implementing UART control. I am not sure about song name, but looks like it is AVRCP feature, so it should be possible to implement as well.
 
Hey thats great! And pretty easy! Yes track name can be easy retrieved trought @at. Curently I do not getting idea how to connect raspberry pi 4 to the module to obtain software control . I'm looking for module which no need external hardware, and if possible to have software control to kalimba dsp too. @at is trought uart? I would be happier to have i2c since my hardware contain everything in i2c mode so it would be easier for me to have one more i2c device
 
Last edited:
Curently I do not getting idea how to connect raspberry pi 4 to the module to obtain software control.
You will need to connect UART RX and TX pins of QCC5125 to UART of Raspberry Pi. I.e. if you will connect it to 14 and 15 pins of Pi, it would be accessible as /dev/ttyAMA0
I'm looking for module which no need external hardware, and if possible to have software control to kalimba dsp too.
What do you mean by software control to Kalimba DSP? Equalizer or something else?
@at is trought uart?
Yes
I would be happier to have i2c since my hardware contain everything in i2c mode so it would be easier for me to have one more i2c device
I don't think there exists finished QCC5125 product with such functionality. You may use external MCU for translation from I²C to UART or try to write your own firmware for QCC5125.
 
What do you mean by software control to Kalimba DSP? Equalizer or something else?
Yes equalizer!
I don't think there exists finished QCC5125 product with such functionality. You may use external MCU for translation from I²C to UART or try to write your own firmware for QCC5125.
It would be done on pic12fxxx, for example on pic implement @at interpreter and at the same time program pic to become i2c slave device & make my own i2c registers to translate between uart and i2c, thats not a problem for me. The important thing was how to connect to bt

Thank you so much!
 
equalizer
There's Android app for EQ, GAIA Control
It would be done on pic12fxxx, for example on pic implement @at interpreter and at the same time program pic to become i2c slave device & make my own i2c registers to translate between uart and i2c, thats not a problem for me.
Yep, that's great way to solve this.
The important thing was how to connect to bt
If you would use FSC-BT1026E, you can directly use schematic from datasheet.
But if you're going to use BTM525 module, I'd suggest that you don't. QCC5144 software architecture is generally better (also compatible with QCC5171 for LE Audio), it would be much easier to implement. BTM544 is 20$, pretty affordable.
You might also want to consider replaceable Bluetooth module board, so you can use almost any Bluetooth chip.
 
QCC5144 you mentioned is very interesting specialy because of easy and very good documented @at things.
Well, Feasycom has QCC5141 module, this chip is basically the same crystal but with different packaging. But I'm not sure they support AT commands. You may ask them via email.
So either you use their QCC5125 module, which surely does, or hope that QCC5141 module does.
Other solution would be to go for BTM544 module, which is much more widely used across the industry, and implement the necessary features by yourself. If you're going this way, we may cooperate on that, I'd like to have UART control in my project too. It is not the easiest way, but if you want great EQ control, only QCC514x app (QCC5125 only has Android app, QCC514x+ have both Android and iOS) would give it to you.

Do you know which protocol use gaia?
IIRC they are using BLE.
 
Do you know which protocol use gaia?
I don't think I really understand what you meant by "which protocol", but GAIA includes a set of data transfer protocols as well as fixed set of commands sent through this protocol [Eg: the command we want to send from a smartphone to QCC chip has to be wrapped around header and trailer bytes, these are managed by the GAIA library]. As a medium of transfer, the provided GAIA android sample app uses RFCOMM over classical bluetooth for Android, and iphone sample app uses BLE (I think it is called iAP over BLE, but I am not sure of the exact terminology). As with all the sample programs provided by QCC, the GAIA smartphone app does what it says very easily (eg, read QCC chip serial number over GAIA), but it will be very difficult to modify it to do anything else.
 
I don't think I really understand what you meant by "which protocol", but GAIA includes a set of data transfer protocols as well as fixed set of commands sent through this protocol [Eg: the command we want to send from a smartphone to QCC chip has to be wrapped around header and trailer bytes, these are managed by the GAIA library]. As a medium of transfer, the provided GAIA android sample app uses RFCOMM over classical bluetooth for Android, and iphone sample app uses BLE (I think it is called iAP over BLE, but I am not sure of the exact terminology). As with all the sample programs provided by QCC, the GAIA smartphone app does what it says very easily (eg, read QCC chip serial number over GAIA), but it will be very difficult to modify it to do anything else.
In short it seems depend on bluetooth protocol. Thats not what I'm looking for control device remotely. I'm looking for device which use i2c protocol, but I'm ok with uart too. In short, I need to retrieve song name trought (i2c or uart) to display it on lcd, and if possible to get control to eq too. Where I can download GAIA app?
 
Last edited: