BMS gauge controller bq2060a - Reset SEAL-bit

Hallo iedereen,

Wie weet en wil de informatie delen hoe het SEAL-bit van een BMS gauge controller bq2060a kan worden gereset middels het sturen van welke commando's naar de bq2060a via I2C?
(Met de nadruk op de bq2060a variant, niet de bq2060).

Alle info is welkom, alvast dank.

Pagina 47, onderaan bij Pack Options:

https://www.ti.com/lit/ds/symlink/bq2060a.pdf?ts=1685974791511&ref…

Of wat jij wil wel kan, vraag ik me af: volgens mij is het de bedoeling dat er alleen I2C gesproken wordt met de aangesloten EEPROM: de BQ2060A stopt zijn controlefuncties namelijk zodra de EEPROM verbonden wordt.

SMBus of HDQ is waarschijnlijk de mogelijkheid om tijdens z'n controle-werk met 'm te praten.

EDIT: Ik vond ook nog dit:
https://e2e.ti.com/support/power-management-group/power-management/f/p…

[Bericht gewijzigd door weardguy op maandag 5 juni 2023 16:40:31 (15%)

http://www.m-voorloop.nl --- Ik? Welnee! Ik zit nog lang niet achter de germaniums.

Dank voor de info, deze info kwam ik ook al tegen. In de thread-link wordt gesproken over een algemene commando unseal code maar uit de thread werd me niet duidelijk of deze code wel werkt omdat schijnbaar de benodigde commando's anders kunnen zijn voor verschillende bqxxxx types (een beetje een verwarrende thread).

Het is mogelijk om via de bq2060a met de aangesloten eeprom over I2C (SMBus) te kunnen communiceren maar daarvoor moet het SEAL-bit in de bq2060a niet gezet zijn.

De enige optie die ik momenteel zie is om het SEAL-bit in de eeprom te wissen en de bq2060a een power down / power-up te geven maar daarvoor moet de eeprom worden losgesoldeerd en met een programmer worden verbonden.

Mijn voorkeur zou zijn om het SEAL-bit via I2C (SMBus) te kunnen resetten, of middels een andere truck (hidden commando's) via I2C (SMbus), zodat dat de bq2060a toegang verschaft tot de aangesloten eeprom en dat daarmee de eeprom inhoud makkelijker benaderbaar is.

Voor zover ik kan zien heb je dan een kip-ei probleem....

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 5 juni 2023 17:28:53 schreef Bobosje:
Dank voor de info, deze info kwam ik ook al tegen. In de thread-link wordt gesproken over een algemene commando unseal code maar uit de thread werd me niet duidelijk of deze code wel werkt omdat schijnbaar de benodigde commando's anders kunnen zijn voor verschillende bqxxxx types (een beetje een verwarrende thread).

Dat is niet verwarrend, maar gewoon zoals die dingen werken: ook mijn BQ20Z65's hebben een unsealcommando, maar de waarde die je moet schrijven, weet alleen de fabrikant van het accupack. Die moest ik dus kraken via BE2works via (overduidelijk) undocumented features: wat handmatig/geautomatiseerd op de gangbare manier waarschijnlijk maanden, zo niet jaren zou kosten, doet BE2works in een halve minuut.

Dat je geen goede handleiding vind van alle commando's en registers en dat je ook geen instructies over unsealen vind, is vaak een teken dat een dergelijk IC niet bedoeld is voor consumenten, maar door fabrikanten ingezet wordt met hun eigen software/controllers er nog aan verbonden.

Ergo: je moet de code weten.
Ik heb net even in mijn versie van BE2works gekeken, die kan de BQ2060A helaas niet aan, de nieuwere versie wel. Maar dat is nogal een uitgave.

Op 5 juni 2023 17:28:53 schreef Bobosje:
Het is mogelijk om via de bq2060a met de aangesloten eeprom over I2C (SMBus) te kunnen communiceren maar daarvoor moet het SEAL-bit in de bq2060a niet gezet zijn.

Zoals ik het datablad lees is dat dus niet mogelijk: je kunt met de BQ2060A praten als de EEPROM NIET verbonden is per SMBus en de BQ2060A stopt al z'n controlefuncties zodra er een I2C-verbinding met de EEPROM opgezet wordt, waarbij er enkel en alleen met de EEPROM gecommuniceerd wordt.

Maar het belangrijkste hier is unsealed/sealed zijn van de BQ2060A en dat moet je weten.
Zelfs in BE2works-topics kom ik 'm maar sporadisch tegen, dus ik denk dat dit echt een OEM-IC is, niet bedoeld voor consumenten.

Op 5 juni 2023 17:28:53 schreef Bobosje:
De enige optie die ik momenteel zie is om het SEAL-bit in de eeprom te wissen en de bq2060a een power down / power-up te geven maar daarvoor moet de eeprom worden losgesoldeerd en met een programmer worden verbonden.

Het is naar mijn mening wat verwarrend, maar zoals ik het lees, is het EEPROM zelf niet vergrendeld, maar wordt dat zo gedaan door de BQ2060A. Díe moet je unsealen. Het zou ook raar zijn als dat andersom zou zijn, omdat het EEPROM door de BQ2060A 'beheerd' wordt. Dan heb je een volledig unsealed BQ-chip, waar je dus elk commando - toegestaan via de extended SBS specificaties - naar toe mag sturen, waardoor je dus ook de beveiliging omzeilt.

Je moet de BQ-chip unsealen, maar grote kans dat het EEPROM daar aan meewerkt en de chip weer sealed als je alleen de BQ unsealed, omdat de geheugenlocaties voorzien moeten zijn van een voor de BQ begrijpelijke structuur.

Wat je kan proberen als unsealkey (naar ManufacturerAccess schrijven):
1404 7236

Dit is de standaard unsealkey van een BQ20Z65. Ergens moet ik nog wat administratie hebben, maar die kan ik zo snel niet vinden.

Je kunt (je weet maar nooit) altijd proberen deze PFkey die standaard in de BQ20Z65's zitten, in te voeren:
7326 1217

Verder heeft men het er op de BE2works site over dat de EEPROM altijd los uitgelezen moet worden. Maar omdat ik zelf nog niet aan de hand heb gehad, kan ik daar ook niets meer over vertellen.

http://www.m-voorloop.nl --- Ik? Welnee! Ik zit nog lang niet achter de germaniums.

Dank voor je uitgebreide info.

Volgens de datasheet op pagina 23 zou via ManufacturerAccess() het sturen van commando code "0x0606 Program EEPROM" het mogelijk zijn om de I2C (SMBus) door te verbinden met de I2C bus van de EEPROM om zo de EEPROM van buiten uit (via de bq2060a I2C (SMBus)) te kunnen uitlezen en/of te kunnen schrijven (de bq2060a stopt daarbij tijdelijk de monitoring activiteiten en hervat deze weer wanneer "battery address 0x16" over de I2C (SMBus) bus wordt gestuurd.)
Maar ik heb geen idee of dit commando "0x0606 Program EEPROM" nog wel werkt wanneer het "0x062b SEAL" commando alreeds verstuurd is.
Misschien dat tools als BE2works het commando "0x0606 Program EEPROM" ook gewoon gebruiken om de EEPROM te kunnen lezen / schrijven om zodoende het SEAL-bit te resetten, maar dat weet ik helaas niet.

Van wat ik heb begrepen uit andere topics is dat het SEAL-bit in de bq2060a een copy is van het SEAL-bit in de EEPROM en dat de bq2060a bij een power-down / power-up cycle dit SEAL-bit uit de EEPROM leest en in het interne RAM copieert (NB. De bq2060a copieert meer data uit de EEPROM naar het interne RAM bij een power cycle).
Als men het SEAL-bit in de EEPROM reset (bv. middels een externe programmer) dan is de bq2060a na een power-down / power-up cycle automatisch UNSEALED, als ik de gevonden info hieromtrent goed interpreteer tenminste.

Voor wat betreft je unseal codes...
- In welke notering versturen over I2C? In ASCII, Decimaal, BCD, Hex of anders?
- Wanneer de codes niet mochten kloppen of werken bestaat dan de kans op een 'bricked' (nog verder van huis) bq2060a?

Ik zat te bedenken dat je de EEPROM zou kunnen uitlezen als je de bq2060a in reset zou kunnen houden, maar ik zie niet direct een reset pin, en als je de voeding zou onderbreken, heb je het probleem dat je via de I2C lijnen en de ESD diodes alsnog die bq2060a aan het voeden bent.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

De EEPROM 'in circuit' proberen uit te lezen of te schrijven met een externe programmer lijkt me, o.a. om de redenen die je aangeeft, ook niet zo'n goed idee.

Een laatste optie zou zijn om het geheel spanningsloos te maken en de EEPROM pinnen Vcc, SDA en SCL los te koppelen van de print en deze samen met GND te verbinden met een externe programmer om zo de EEPROM uit te kunnen lezen of om er naar toe te kunnen schrijven.

Het liefst verkies ik de I2C communicatie route via de bq2060a naar de EEPROM, daarmee is de EEPROM altijd en makkelijker van buitenaf benaderbaar.

Op 5 juni 2023 19:49:29 schreef Bobosje:
Hoe bedoel je?

Nou, je kan niet bij de eeprom om het seal bitje terug te zetten omdat het seal bitje gezet is.

Ik heb wat door het datasheet zitten bladeren. Ik denk dat de chip zelf geen storage heeft.

Dat zou betekenen dat het seal bitje aanpassen in de eeprom voldoende is om weer toegang te krijgen.

Ik zou denken dat je de eeprom wel "in circuit" kan aanspreken. De I2C bus mogen masters en slaves alleen maar laag-trekken als er iets gebeurt. Dus als de BQ niet dingen aan het doen is, dan kan je de eeprom gewoon aanspreken en het bitje aanpassen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Arco

Special Member

Ik heb het verder niet bekeken, maar kan het hier niet mee?: https://www.ti.com/tool/BQSTUDIO#downloads

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 6 juni 2023 08:06:33 schreef rew:
[...]Nou, je kan niet bij de eeprom om het seal bitje terug te zetten omdat het seal bitje gezet is.

Ik heb wat door het datasheet zitten bladeren. Ik denk dat de chip zelf geen storage heeft.

Dat zou betekenen dat het seal bitje aanpassen in de eeprom voldoende is om weer toegang te krijgen.

Ik zou denken dat je de eeprom wel "in circuit" kan aanspreken. De I2C bus mogen masters en slaves alleen maar laag-trekken als er iets gebeurt. Dus als de BQ niet dingen aan het doen is, dan kan je de eeprom gewoon aanspreken en het bitje aanpassen.

Inderdaad mogelijk, maar indien twee masters nagenoeg tegelijk gaan communiceren over de I2C bus dan moeten beide masters wel in staat zijn (en een volledige implementatie van de I2C spec hebben) om te detecteren wie van beide masters er op dat moment de I2C bus wint en wie de I2C bus verliest en de I2C communicatie moet stoppen.
Ik denk dat programmers niet aan de volledige I2C spec (hoeven te) voldoen omdat programmers er van uitgaan zelf en alleen de master op de I2C bus (in de programmeervoet) te zijn.
Je zult maar net de pech hebben dat een master (de bq2060a) de EEPROM wil gaan schrijven en er op dat moment een andere master (de externe programmer) doorheen begint te praten met mogelijk EEPROM data corruptie tot gevolg.

Op 6 juni 2023 08:17:59 schreef Arco:
Ik heb het verder niet bekeken, maar kan het hier niet mee?: https://www.ti.com/tool/BQSTUDIO#downloads

Ben bang van niet...

"Older products such as bq20xxx and bq30xxx are not supported in bqStudio."

Op 6 juni 2023 13:33:06 schreef Bobosje:
[...]

Inderdaad mogelijk, maar indien twee masters nagenoeg tegelijk gaan communiceren

Ja, je moet natuurlijk wel eerst even KIJKEN op de bus hoe dat er uit ziet.

Wat ik in ieder geval niet verwacht is dat de BQ chip 100x per seconde een transactie doet. Als dat "schrijf huidige ontladings waarde naar eeprom" zou zijn, dan is die eeprom eerder op dan de aangesloten accu. En de handleiding heeft het over "RAM VALUES", dus ze zullen de meeste dignen in RAM hebben. Zelfs bij 1x per seconde een "stand van zaken" naar de eeprom schrijven kan een eeprom binnen "behapbare tijd" verslijten. (behapbaar = niet acceptabel voor een fabrikant als TI). Maar met "1s tussenpozes" kan je gewoon je arduino die je programmeert om dit "even" te doen, om te wachten totdat ie de BQ ziet langskomen en als die klaar is snel even "z'n ding" te doen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Ik denk dat je daar wel gelijk in hebt dat de bq2060a niet continu de EEPROM doet updaten om vroegtijdige slijtage van de EEPROM te voorkomen.

Het aansluiten van een externe programmer op de EEPROM I2C bus is eigenlijk niet wat ik zou willen doen omdat daarvoor de ingewanden van de betreffende accu uit elkaar gehaald moeten worden om bij de BMS print te kunnen komen.
De I2C (SMBus) aansluitingen SCL, SDA en GND van de bq2060a zijn beschikbaar op de Power-Connector op de betreffende accu behuizing (5 pins connector). Als ik met deze I2C (SMBus) toegang tot de EEPROM zou kunnen krijgen dan zou dat geweldig zijn.

Ik zou graag willen weten of een tool zoals BE2Works het SEAL-bitje weet te wissen of te omzeilen via de bq2060a I2C (SMBus) en zich daarmee toegang weet te verschaffen tot de EEPROM...

De BEDOELING is dat het de chip locked zodat precies wat jij wil niet meer kan. Het is mogelijk dat er een bug in de chip zit waardoor het toch kan, maar je kan er donder op zeggen dat een paar slimme gasten bij TI geprobeerd hebben om dat te voorkomen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Ik begrijp de bedoeling helemaal maar waarom niet door een achterdeur naar binnen als die er wel zou zijn?

Misschien heb je er wat aan (of niet :) )
Heb daar ooit eens mee gestoeid maar verder als uitlezen van een accu ben ik niet gekomen (geen zin meer)

https://github.com/otofoto/Reset-BQ20xx

Gr.F_S

@F_S,

Dank voor je hulp.
Helaas is het (of niet :))
Het tool moet rechtstreeks verbonden worden met de EEPROM I2C bus (niet via de SMBus) en de BMS moet daarbij eerst spanningsloos worden gemaakt...