General information
Beim Reset muss man unterscheiden zwischen „Akku-Reset“ und Reset des „SoH“ (State of Health) sowie des „Ladezyklenzählers“.
Ein Akku-Reset kann nötig werden, wenn der Akku aufgrund eines unerwarteten externen Fehlers in der Stromer-Elektronik (z. B. Kurzschluss) in den Sicherheitsmodus geht. Wenn dies passiert, wird der 48-V-Ausgang des Akkus deaktiviert und der Stromer kann nicht mehr gefahren werden. Der Akku muss über den Händler an die myStromer AG gesendet werden, um die Sicherheitsstellung zurückzusetzen.
Anders liegt der Sachverhalt beim Reset des State of Health (SoH) und des Ladezyklenzählers. Dieser Reset wird bei den Stromer BQ-Akkus nach einer Zellerneuerung (Refit, Refurbishing, Aufbereitung) nötig.
Reset - SoH and charge cycle counter - why?
Nach meinem Wissenstand ist ein SoH- und Ladezyklenreset bei den alten BO-Akkus und den älteren BQ-Akkus (vor 2016) nicht nötig. Das BMS «akzeptiert» die neuen Zellen auch ohne Reset, und die Neukapazität und damit die Neureichweite kann wieder erreicht werden.
Bei Akkus der BQ-Serie ab ca. 2016 funktioniert das nicht mehr. Der Wert des SoH und des Ladezyklenzähler wird auch mit neuen Zellen nicht auf die Werkseinstellung zurückgesetzt. Das BMS rechnet nach wie vor mit dem alten SoH-Wert. Das Resultat ist, dass der Akku nun zwar neue Zellen hat, das BMS aber mit der alten Kapazität rechnet und nur die alte Reichweite gefahren werden kann.
Stromer Akkumodelle- und Lieferanten
Bei den neueren Akkus der BQ-Serie mit 48-V-Nennspannung gibt es zwei Lieferanten, HTE (TD Hitech Energy) und SMP (Simplo Technology Co. Ltd.). They differ externally in the number of screws on the charging base.

Update: Der BQ983-Akku wurde von HTE überarbeitet. Seit ca. Juli 2026 wird die neue Version ausgeliefert. Sie hat einen neuen Akkusockel mit 4-Schrauben und einen neue Firmware. Wie der Akku vom SMP-Akku unterschieden werden kann steht im Kapitel Model range - Technical data and safety instructions.
Intern ist der Unterschied beim Aufbau der Platine zu sehen. Akkus von HTE haben eine gut sichtbare CMOS-Batterie, Simplo kommt ohne diese aus. Weiter werden verschiedene Prozessoren verwendet und bei Simplo scheint ein prozessor-externes EEPROM zu fehlen.


Reset mit Reset-Jumper
Für den DIY ist diese Variante die einfachste. Es ist keine spezielle Software nötig. Der Nachteil ist, dass der Akku geöffnet werden muss. Dazu muss man wissen, wo und wie ein solcher Reset gemacht werden kann.
Die Entwickler eines BMS erleichtern dem Anwender manchmal diese Aufgabe, indem sie einen «Reset-Jumper» auf der Platine anbieten. Das ist z. B. bei den Stromerakkus der BO-Serie der Fall – die Details dazu gibt es here. Bei den BQ-Akkus fehlt dieser bzw. er ist nicht als solcher gekennzeichnet.
Es gibt mehrere Methoden, den verwendeten Microchip und/oder das EEPROM bei einem BQ-Akku zurückzusetzen: Link 1 | Link 2 | Link 3. Der Schlüssel liegt bei der Molex Picoblade 1.25 Steckverbindung «J304» (Pin 4 & 6) auf der Rückseite des BMS. Sie sind zwar nicht als Reset-Jumper bezeichnet, funktionieren aber als solche.

Software reset via the CAN bus
Do I need personal IT skills for the reset?
It works without IT knowledge. The Swiss companies Swissvolts | Bünzli Batteries | upVolt bieten den Reset über den CAN-Bus an. Swissvolts und Bünzli Batteries verwenden dabei eine modifizierte Software auf Basis der Stromer-Diagnosesoftware. upVolt lässt den Service bei Bünzli Batteries machen. Mit der Software können folgende Parameter ausgelesen bzw. zurückgesetzt werden:
- Auslesen: Produktionsdatum, Ladezyklen, State of Health (SoH)
- Programmierung der Ladeendspannung des Akkupacks
- Reset the SoH to 100 % and the charge cycle counter to 0.
- Reset der Sicherheitsstellung (blockierte Batterie) z. B. aufgrund eines Kurzschlusses im 48-V-System
Bei meinem BQ983-Akku konnte ich zusehen. Der Rosenbergerstecker wurde mit dem Akkusockel verbunden und in wenigen Sekunden war der SoH/Ladezyklenzähler auf Werkseinstellung gesetzt. Allerdings konnte das vor Ort nicht kontrolliert werden weil mein Akku 100 % geladen war. Man sagte mir ich solle ein paar km fahren. Das Omni zeigte bei der ersten Fahrt zuerst einen SoC von 74 % an, was dem alten SoH entsprach. Tatsächlich sprang der Wert nach ein paar km Fahrt auf 100 %. Über das Sromer API konnte ich danach den SoH auslesen – er lag wieder bei 100 %!
Reverse Engineering
The two CHIPs are crucial for resetting the SoH and charge cycle counter Microchip PIC18F4685 and the external Microchip EEPROM 24LC256. To explore the «insides,» one must engage in some forensic work.
PCB assembly BQ battery with 3 screws (HTE)
Here I show a circuit board of the BQ battery from HTE (3-screw) and locate the relevant components for a SoH/charge cycle counter reset.

The opening of the Molex connectors ‚J303‘ & ‚J304‘ (picture in the left corner) is on the opposite side of the board.

J304
1- x
2- PGC= Programming Clock Pin
3- PGD= Programming Data Pin
4- GND= Ground (Vss)
5- VDD= Power Supply
6- VPP= Programming Voltage
J303
1- GND= Ground
2- SCL= Serial Clock
3- SDA= Serial Address/Data I/O
4- VDD= Power Supply
They operate the corresponding pins of the Microchip PIC18F4685.

OD dump of the CAN bus
OD stands for Octal Dump and refers to a UNIX command that allows a dump (memory excerpt) in various human-readable formats. This dump is necessary to perform so-called reverse engineering. It serves as a basis for determining which memory segments need to be reset for an SoH/charge cycle counter reset.
Software: With dumpcap can an OD dump be realized and then into Wireshark be analyzed. How this can be done, among other things,. here view. There is more theory here. Various CAN bus adapters also offer all-in-one solutions.
Hardware: Hardware-wise, you need a CAN bus adapter to be able to sniff (eavesdrop on) the bus. See, among others,. 1 | 2 | 3.
Dump of the BQ batteries: Im speedpedelecreview.com-Forum hat der User Jebolisch einen solchen CAN-Bus-Dump für die Akkus BQ983 & 814 von HTE sowie den BQ618/655 von Simplo veröffentlicht und soweit möglich dokumentiert. Ich habe die Datei grafisch etwas aufgehübscht und stelle sie here zur Verfügung. (zum originalen Thread)
Writing and reading an EEPROM
In order to be able to rewrite the decisive memory addresses in which the SoH/charge cycle counter is stored, you need to know how an EEPROM (Electrically Erasable Programmable Read-Only Memory) is read/written. An EEPROM retains its stored data even after the power supply has been switched off. This function is useful for storing critical data that must be retained over power cycles. Examples are configuration settings, calibration values, user settings, storage of the program's critical variables or historical data logs.
Wie ein EEPROM programmiert werden kann ist z. B. here or here described.
Prerequisites
- Python installation: Make sure that Python is installed on your system.
- I2C library: You need a Python library that enables I2C communication. A popular option is
smbus2. - Hardware: The PIC18F4685, the 24LC256 and the corresponding connections must be set up accordingly.
Example for writing and reading
1 import smbus2
2 # Adapt I2C bus and EEPROM address
3 bus = smbus2.SMBus(1) # Change 1 if you are using a different bus
4 address = 0x50 # Change the address if it is different for your EEPROM
5 def write_byte(register, data):
6 "Writes a byte to the specified register address in the EEPROM."
7 bus.write_byte_data(address, register, data)
8 def read_byte(register):
9 "Reads a byte from the specified register address in the EEPROM."
10 return bus.read_byte_data(address, register)
10 # Example for writing and reading
11 write_byte(0x00, 0x55) # Write 0x55 to the address 0x00
12 data = read_byte(0x00) # Read the byte from address 0x00
13 print("Read byte:", data)
Explanation
- Import: The
smbus2-library is imported to enable I2C communication.
- I2C bus and address: The variables
busandaddressare defined to specify the I2C bus and the address of the EEPROM.
- Functions:
write_byteWrites a byte to a specific address in the EEPROM.ead_byteReads a byte from a specific address in the EEPROM.
Further information
Data sheet Microchip PIC18F4685 Data sheet Microchip EEPROM 24LC256
CiA 301 Documentation CiA develops and publishes technical documents. Specifications contain functional requirements and permissions to be implemented in hardware or software. Typical examples are the CANopen CC (classic) application layer (CiA 301) or the CANopen device profile for generic I/O modules (CiA 401 series).
Python Documentation This is the official documentation for Python 3.13.1.
Do you have any feedback? - in the comment field below.