• .
  • Willkommen im Forum!
  • Alles beim Alten...
  • Du hast kaum etwas verpasst ;-)
  • Jetzt noch sicherer mit HTTPS
Hallo, Gast! Anmelden Registrieren


Das "Geheimnis" kleiner Bluetooth Lautsprecher CSR
Anbei eine Skizze:

   

Standalone Betrieb geht wie immer. (oberer Teil)

TWS-Betrieb mit Master+Slave ergibt Dropouts am TWS-Slave. Der Sound am TWS-Master ist ohne Aussetzer. Die Idee war nun, dass sich das Problem lösen lässt, dass der TWS-Slave als eigenständiger I2S-Master arbeiten kann und per SRC angebunden wird.
 
Reply
Kann alternativ natürlich auch sein, dass BCLK vom DSP-Board #1 nicht so der Knaller ist - also grenzwertig jitterfrei. In welcher Weise die TWS-Geschichte hierbei reinspielt ist allerdings unklar. (DSP-Board #1 ist ein gekauftes China-PCB, DSP-Board #2 das hier im Forum entwickelte)
 
Reply
(20.09.2019, 07:46 PM)christianw. schrieb: Du spielst eine 48khz Datei ab.
Musste mich erstmal schlau machen und hatte nicht soviel Zeit ...Sorry... jetzt ..ja ... Mit VLC kann man die Abtastrate ändern. 

Allerdings hatte ich Zweifel wofür das gute sein soll .... ich glaube erstmal nicht, dass die abgespielte Datei die Abtastrate bei der Bluetoothverbindung bestimmt.  Schliesslich kann ich mehrere Quellen im PC oder Smartphone gleichzeitig abspielen und die werden gemischt und das Gemisch über eine Bluetoothverbindung übertragen (egal welche Abtastrate die Datei hat). Da findet nach meiner Vorstellung ein Recoding statt, bevor es über Bluetooth weitergeleitet wird. Oder liege ich hier falsch? 

Jedenfalls .... auch das abspielen meiner 48khz Datei führt zu der Ansage "identifies itself as 44100Hz" ...... Noch eine Idee?

P.S.: Das mit Kalimba scheint in Ordnung zu sein. Qnap hat ja wohl CSR geschluckt und da findet man auf der Webseite Hinweise auf Kalimba. Manchmal meint was von Verbindungsproblemen .....das scheint aber nur gelegentlich der Fall zu sein.
 
Reply
Wenn ich von meinem Handy/Tablet streame, wird 44k1 oder 48k nativ ohne Recoding übertragen. Der DSP läuft dann entsprechend mit dieser Bitrate. Es ist vorgesehen, dass für 44k1/48k unterschiedliche Einstellungen im DSP vorgenommen werden können.

> "identifies itself as 44100Hz" < Da passiert ein Recoding auf Quellseite, nicht am Ziel. Wie gesagt, probiere es mal vom Handy/Tablet aus.
 
Reply
Zum SRC aus https://stromrichter.org/showthread.php?...#pid315812

ist zu sagen, dass der einen FIFO Buffer enthält (iwas um 16-24 Samples), er leichte Schwankungen also ausgleichen können sollte.
 
Reply
aha....wie vermutet: logischer Fehler; du hast zwei asynchrone ckls .... der eine ADAU , der master clock, muss natürlich auch den clock(bcl, lrckl) für den anderen ADAU liefern. Dann sollte es astrein laufen.

(ein resync auf den 2. clock mit dem Asrc sollte auch gehen, wenngleich du damit ja nur den Fehler in der "Logik" -wer liefert Referenz-Takt- deckelst. )

so:

   


ps.
ist ein weinig wie im Film "Highlander"  : "Es kann nur EINEN geben..."   Wink

   
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
Zitat:aha....wie vermutet: logischer Fehler; du hast zwei asynchrone ckls .... der eine ADAU , der master clock, muss natürlich auch den clock(bcl, lrckl) für den anderen ADAU liefern. Dann sollte es astrein laufen.

Da vermutest du m.M.n. leider falsch, die beiden DSPs sowie die daran angeschlossenen BT-Module sind räumlich getrennt und in keiner Weise takttechnisch verbunden.

Ein System besteht aus einem DSP+BT-Modul, davon gibt es zwei.

Real ist es so:

1 System (bestehend aus BT-Modul + DSP + Amp) ist im gelben Koffer (Kofferheule) - System 1
1 System (bestehend aus BT-Modul + DSP + Amp) ist im schwarzen Koffer (BikeSoundSystem) - System 2

Standalone:
Streame ich per APT-X (Bluetooth Funk) auf System 1, geht das Signal vom BT-Modul#1 über I2S in den DSP#1 und dann zum Verstärker#1.
Streame ich per APT-X (Bluetooth Funk) auf System 2, geht das Signal vom BT-Modul#2 über I2S in den DSP#2 und dann zum Verstärker#2.

TWS Betrieb (True Wireless Stereo):
Streame ich per APT-X (Bluetooth Funk) auf System 2, geht das Signal vom BT-Modul über I2S in den DSP#2 und dann zum Verstärker#2. Des weiteren wird ein TWS-Link (ebenfalls Funk) zum System 1 aufgemacht, dabei geht das Signal vom BT-Modul#1 über I2S in den DSP#1 und dann zum Verstärker#1.

Eine Synchronisation über den TWS-Link von hinten nach vorne ist nicht vorgesehen. Eigentlich hat das BT-Modul einen eigenen SRC, und kann eingangsseitige Streams auf eine feste Rate takten (resample to xkhz). Daher hätte ich vermutet, dass das für TWS zwingend gemacht wird.

Bei Verwendung des internen DACs des BT-Moduls fällt das wohl nicht auf.
 
Reply
>Da vermutest du m.M.n. leider falsch,
no. wenn deine Zeichnung, speziell die Pfeile , wer an wen die cklock sendet, stimmen, habe ich schon recht.

>die daran angeschlossenen BT-Module sind räumlich getrennt und in keiner Weise takttechnisch verbunden.
eben. DAS ist ja das Problem...sie werkeln vmtl auf dem Takt, den der BT-master vom ADAU bekommt. per TWS dann auch das BT-slave....und beisst sich mit dem takt, den es von "seinem" ADAU bekommt. 

>Eine Synchronisation über den TWS-Link von hinten nach vorne ist nicht vorgesehen. 
eben...daher treffen sich 2 takt-Quellen , was den Puffer irgendwann überlaufen lässt und ein re-sync erzwingt.

>Bei Verwendung des internen DACs des BT-Moduls fällt das wohl nicht auf.
logisch - DER werkelt ja mit dem empfangenen Takt und daher immer synchron.

+ wenn es ohne Verbindung der 2 ADAUs gehen muss-- ist es räumlich weit auseinander ?? (haste nix gesagt)
- dann muss der ADAU am TWS-slave ein "slave" werden, der den clk vom BT-modul bekommt. dann gehts auch . (wenn das BT-modul so umstellen kannst).
btw ich erinnere mich gerade nicht mehr genau, aber der ADAU kann nur slave werden, wenn er auch einen passenden master-clk bekommt - oder?
das wäre dann echt ein Problem - das nur mit einem resampling gelöst werden kann; wobei der resampling chip aber den richtigen master-clk bekommen muss, den von seinem ADAU .
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
Die BT-Module können keinen MCLK bereit stellen.

Räumliche Trennung: 1-50m

Zitat:>die daran angeschlossenen BT-Module sind räumlich getrennt und in keiner Weise takttechnisch verbunden.
eben. DAS ist ja das Problem...sie werkeln vmtl auf dem Takt, den der BT-master vom ADAU bekommt. per TWS dann auch das BT-slave....und beisst sich mit dem takt, den es von "seinem" ADAU bekommt.

Genau, daher hatte ich gedacht, das BT-Modul regelt das passend über seinen internen "SRC". Wobei, soweit ich verstanden habe läuft der BT-Core in dem Teil ja unabhängig vom I2S-Timing..  misstrau

Das Problem sollte also eigentlich per CS8421 SRC gelöst sein. Der TWS-Slave kann dann als I2S-Master in den SRC einblasen (mit dem Takt den er per TWS bekommt) und der ADAU kann sein eigener I2S-Master sein und synchronisiert die Sekundärseite des SRC für die Ausgabe..

Weih

Ungeklärtere Fakt:

Was ist für den TWS-Slave anders als bei Standalone-Betrieb?

Ein beiden Fällen bekommt er einen Audio-Stream gereicht, denn er passend auf einen externen I2S-Takt per PLL "draufmodulieren" muss. Mögliche Antwort, die Schwankungen im Standalone-Mode sind relaxter als bei TWS wo die Streams samplesynchron zu halten sind.

Wozu eigentlich das ganze? Ich streame meine Musik aufs Fahrrad, wo die Bässe stehen und kann den "Henkelmann" als Topteile umher tragen. Das sieht für den aussenstehenden sicher gut aus, wenn nur ein Henkelmann am Start ist, das Bassfundament aber unerklärlich und nicht sichtbar aus dem Busch zugeblasen wird. Heart
 
Reply
>Wozu eigentlich das ganze? Ich streame meine Musik aufs Fahrrad, wo die Bässe stehen und kann den "Henkelmann" als Topteile umher tragen. Das sieht für den aussenstehenden sicher gut aus, wenn nur ein Henkelmann am Start ist, das Bassfundament aber unerklärlich und nicht sichtbar aus dem Busch zugeblasen wird
aaach...  Rolleyes

>Was ist für den TWS-Slave anders als bei Standalone-Betrieb?
ich kann nur raten: die sync - Quelle.
weil: EINER ist der master im System.
bei ollem windoof war es gnadenlos geregelt: der sog. "mixer" mischt mit fixer Frequenz (glaube 48khz) und alles wird gewaltsam auf diese Frequenz "re-sampelt" und alle outputs (DAC, soundkarten) haben sich an diesen Takt zu halten. basta.    (war halt etwas "unfexibel" und nicht dolle in der Klangqualität, das resampling war ja auch nicht gerade "doll". )
glaube, ab XP war es dann fexibel: der mixer werkelt auf der Frequenz der Quelle, also zb eine CD-Datei wird mit 44k1 abgespielt ohne sie zu "vernudeln".
nu...interessant wird es, wenn das Ziel nicht im PC liegt, also zb ein USB-DAC.
da greift jetzt die Definition des entsürechenden Bus-/Transfer-Systems, also hier von USB 1 oder 2 , Audio mit fixem Takt zu senden, also das Ziel muss sich immer nach dem sync des USB-Bus richten (egal, wie schlecht der ist)
auch nicht sooo klasse, daher gabs dann eine "Hi-End"-variante, mit isochronem Transfer. Allerdings deutlich schwieriger zu handeln, bzw zu programmieren, weil jetzt muss erst per "Diskussion" (handshake) geklärt werden, welche caps das Ziel hat, was es möchte und worauf man sich dann einigt. Ist das erfolgreich, sendet der PC Datenpackete nach Anforderung des Ziels, was natürlich auch entsprechend Puffer haben muss, um eine gewisse Zeitverzögerung abzufangen.

ok - bei BT scheint es immer flexibel zu laufen: das Ziel bekommt offenbar Daten nach Anforderung, was bedeutet: der Takt kann im BT-modul erzeugt werden und der stream kommt dann scho passend dazu. (vermutlich, weil sowieso ein handshake bzgl Dekoder caps. usw. erforderlich ist und die Daten sowieso völlig unsynchron, weil als kodierte Pakete, übertragen werden; der "Takt" muss also im Dekoder, dh im BT chip, erzeugt werden und die Daten werden eben nach Bedarf angefordert)
wenn jetzt aber (wie bei dir) ein weiteres BT-Modul dazu kommt, gibts ein Problem: der BT-master macht den Takt (oder bekommt den von aussen und macht seine Anforderungen dann eben sync zu diesem Takt) und der BT-slave muss sich nun fix auf den empfangenen Takt synchronisieren (PLL), weil er kann ja nicht "rückwärts" der ganzen Kette bis zur Quelle vorschreiben, wann er genau das nächste Daten-häppchen möchte. Somit gibt der seine audio Daten mit der empfangenen rate aus...er kann ja nicht anders. macht auch nix, solange es zb auf den internen DAC geht. NUR wenn da jetzt ein anderer Takt von aussen kommt....muss es irgendwie schief gehen.
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
+ "draufmodulieren"   gibts nicht. Modulation gibts bei AM oder FM , nicht bei digitalen Daten-streams.
entweder ein Takt ist sync - oder es wird Daten-Müll.
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
Daher "". Wink

Sprechgesang wird ja auch auf nen Takt "draufmoduliert". (Okay, ist analog) klappe

Btw. Qualcomm/CSR hat das Problem wohl in TWS Plus geschickt gelöst...

https://www.qualcomm.com/solutions/voice...uewireless
 
Reply
>An easy pairing experience with no need to pair individual earbuds. 

offenbar oder möglicherweise...separate Zuordnung der streams, bzw der jeweiligen Daten-pakete , im Gegensatz zum 1:1 senden-empfangen und weiter-senden , was dann ja keine Flexibilität mehr hat , bzgl timing
- falls das mit den BT-Spezifikationen im Einklang ist - was ich bezweifle....
ansonsten:
jo, Qualcomm rocks. auch in meinem China-Handy .....Snapdragon 635 , glaub ich. Die Firma bringt jedenfalls was auf die Reihe.  Cool
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
Trotz intensiver Bemühungen ist zum Thema TWS Timing/Protokoll nichts öffentlich im Netz zu finden..
 
Reply
(24.09.2019, 02:34 PM)christianw. schrieb: Wenn ich von meinem Handy/Tablet streame, wird 44k1 oder 48k nativ ohne Recoding übertragen. Der DSP läuft dann entsprechend mit dieser Bitrate. Es ist vorgesehen, dass für 44k1/48k unterschiedliche Einstellungen im DSP vorgenommen werden können.

> "identifies itself as 44100Hz" < Da passiert ein Recoding auf Quellseite, nicht am Ziel. Wie gesagt, probiere es mal vom Handy/Tablet aus.
Also ich habe immer noch Zweifel. Vorher weisst Du, dass das wirklich in 44k1 oder 48k ankommt, so wie Du möchtest. Und was ist, wenn Du eine mit 96k abspielst? Oder mit einem exotischen Codec ... Dann müsste der Bluetooth Chip passen. Ich glaube immer noch, dass der Rechner beim senden das ganz transcodiert in irgendeinen von Bluetooth gewollten Codec und der möglichen Abtastrate. Aber ist auch egal .... ich bin trotzdem ein bischen weitergekommen und davon wollte ich berichten:

Ich hatte noch einen Verstärker mit CSR8630 im Einsatz. Das Modul sieht genauso aus, wie das CSR8635 Modul und hat auch die entscheidenden Pins an derselben Stelle. Bei dem klappte das problemlos mit dem DSP. Ein bischen hakelig das ganze, aber es geht. Das Ding war auch vergleichsweise viel einfacher konfiguriert (viel weniger Zustände und Übergänge). Mein CSR8635 hat jede Menge Definitionen für den Betrieb als Freisprecheinrichtung ....was er aber mangels Anschlüssen auf dem Board garnicht kann. 


Fazit .... ich mache nix verkehrt, sondern meine CSR8635 Module wollen wirklich nicht. Ich vermute, es gibt irgendwo einen Parameter, der das erstmal blockiert. Deswegen habe ich noch einen anderen Dump für den CSR8635 ausprobiert (einem bei dem DSP Zugriff funktionierte). Obwohl von der gleichen Firma "Sanwu" für den gleichen Chip hat der überhaupt nicht funktioniert. Immerhin konnte ich meinen ursprünglichen und am Anfang gesicherten Dump zurückspielen und es funktioniert wieder wie vorher ....aber weiterhin ohne Zugriff auf den DSP. Mir reicht es jetzt ..... mit meinen zwei CSR8635 geht es halt nicht.



Noch so als Tip ... Man sollte auch mal in den "Konfigurator" reinschauen. Da findet die eigentliche Programmierung des Chips statt. Also das gesamte Verhalten des Chips ( ..... wenn ein Aruf reinkommt, wenn eine Taste gedrückt wird und noch vieles in der Art .... das Chip unterstüzt zum Beispiel auch das Laden von Lipos) das ganze wird als eine Art State-Event Machine programmiert. Schon erstaunlich, was das Ding noch alles könnte, wenn man es nur voll ausnutzen würde und richtig programmiert. 

Die Frima CSR scheint mittlerweile bei Qualcomm "untergekommen" zu sein. Deswegen nehme ich an, dass vergleichbare Module mit der Qualcomm Bezeichnung wenigstens nicht älter sind. Da gibt es zum Beispiel den QCC3008. Hier wäre ein fertiges Board mit dem Chip: https://de.aliexpress.com/item/33055...c00C8lKYt&mp=1 ... und es gibt auch welche von Qualcomm mit internem DSP. Der CSR8635 gehört also eher schon zum alten Eisen .... deswegen ...wenn ich da nochmal Energie investieren will, dann suche ich mir schon vorher Hardware mit dem aktuelleren Chip.


Herzliche Grüsse 
Michael Rupprecht
 
Reply
Servus Michi (hoff das ist einfach mal okay),

also persönliche Erfahrung: "Programmierung" von den QCC300X und CSR86XX ist identisch, sie haben in den neueren Chips zwar Features geändert (BT5, geringerer Stromverbrauch) aber an sich ist praktisch alles andere beim alten. Ich hatte ähnliche Probleme mit den CSR8635 Chips, jedoch hat ein Dump von der 52bluetooth Seite das gefixt (hab ich glaub ich noch irgendwo rumfliegen, bei Bedarf einfach PM). Das Prozedere mit der DSP Programmierung ging auf jeden Fall ohne weitere Probleme.

Sobald der DSP verbunden ist, sollte das Universal Front End statt den roten Linien blaue anzeigen.

Guck da heut Abend noch mal auf meinen CSR8645 (hab ich grad hier und war dem CSR8635 am ähnlichsten) und kann dann noch mal Troubleshooting Tips geben (glaube es hat bei dir mit der Konfiguration zu tun, nicht mit Samplerate oder ähnlichem).

Grüße, mr.hyazinth
 
Reply
Joa meine Boards haben grad auch "mukken" gemacht: neu installieren der CSR Software hat es gelöst. Also: Erst Musik Quelle verbinden -> dann UFE öffnen, Menü "DSP" - Connection wählen, und in jenem den CSR USB-SPI wählen. Der Music Manager sollte bei richtigem Anschluss von alleine auf das aktuelle Profil gehen und alles anzeigen. Alles beim "alten". Zusätzlich kleine Empfehlung, wenn das alles nix hilft Dump aufspielen (wie gesagt PM wenn du nicht auf der China Seite bist) Smile

Achso und nachdem die Verbindung erfolgreich war kannst du im Menü"DSP" den Eintrag "Monitor DSP" anklicken; dadurch siehst du das es geklappt hat.
 
Reply
Die Sache mit dem ASRC (CS8421) scheint grundsätzlich zu funktionieren, nur der 1.8V Pegel vom CSRA64215 ist zu niedrig. Muss also noch ein Levelschiffer dazwischen. Big Grin
 
Reply
Was versuchst du da? Multi-System mit dem CSRA64215? Wie läuft dass denn, beide mono dann oder wie? Ich steh grad bisschen auf dem Schlauch aber wenn das funktioniert wäre das ziemlich praktisch...
 
Reply
(08.10.2019, 08:51 PM)mr.hyazinth schrieb: Ich hatte ähnliche Probleme mit den CSR8635 Chips, jedoch hat ein Dump von der 52bluetooth Seite das gefixt (hab ich glaub ich noch irgendwo rumfliegen, bei Bedarf einfach PM). Das Prozedere mit der DSP Programmierung ging auf jeden Fall ohne weitere Probleme.
Hast PM   .............    Ich bin mir auch relativ sicher, dass es an dem Dump liegt. Ich habe es bei zwei unterschiedlichen CSR8630 ja hingekriegt mit DSP und selbst bei den CSR8635 ging alles ausser DSP. Einen CSR8645 habe ich noch rumliegen .... der kommt auch noch dran ....da muss ich aber erstmal den Lautsprecher vermessen, damit ich weiss was ich im DSP einstellen will. Danke für den support ......hast mich motiviert die Dinger nochmal anzupacken.
 
Reply