Post #21
- Joined
- 31.07.2026
- Messages
- 1
- Reactions
- 0
- Location
- 🇹🇳TNTunisia
The download link has expiredDownload the resource for the v48 battery, both versions (the first and second). That's all I have available.
The download link has expiredDownload the resource for the v48 battery, both versions (the first and second). That's all I have available.
Password,pleaseBin submitted a new resource:
BMW 48V Battery Crash Data Reset & Repair - Clear Crash Data and Reset Your 48V Mild-Hybrid Battery with This Repair Kit.
Read more about this resource...
Password,please
Hello, to resolve the issue with the 48V battery after a collision, you need to reset the crash data in the BMS modmodule.
You can download the necessary files by clicking the download button at the top of this page (Resource). The procedure is generally as follows:
- Connect a programmer (for example, VVDI Multi-Prog or a similar device) to the BMS chip (for example, FS32K148).
- Follow the pin connection diagram provided in the files.
- Limpo/resetado file is written.
Good luck with the repair.
Hello, I read the P-Flash data using the Xhorse Multi-Prog, but the vehicle has been in an accident. What do we need to do to clear the crash data, or do you provide this service?You can download the v48 battery resource (both the first and second versions). These are all the files I have.
Hello, I read the P-Flash data using the Xhorse Multi-Prog, but the vehicle has been in an accident....
Regarding the photos I sent you: one shows the 48V battery, and the other shows the fault code. Yes, the OBD scanner detects "48VBATT," so there is no issue there; when I disconnected the battery, it measured 46V, meaning the battery itself is fine. There is only a crash report. Also, the data sizes are: P-Flash 1536KB, D-Flash 512KB, and EEPROM 4KB, whereas the file you shared is 2052KB. How should I write this? I wrote the data to the CY15B128Q EEPROM and the first error was cleared, but now the motor control unit is reporting a crash data error.I'm glad you successfully read the P-Flash. Based on the binary identifiers, this is an A123-produced BMW 48V battery manufactured in August 2025, with an S32K148 MCU.
Important: The resource download link at the top of this thread contains files for the FS32K148 variant, which has a different MCU. Writing these files directly to your S32K148 battery may render the battery unusable.
What you need to clear the crash data:
Crash flags are stored at specific byte locations in your P-Flash dump. To properly reset the battery, you need to use one of the following methods:
- Byte-level editing: Identify and reset the crash flag bytes while preserving VIN-related data, calibration tables, and security certificates. This requires knowing the complete memory map for your hardware/software version.
- Clean reference file: An unprocessed P-Flash dump from the same hardware/software version that can be written back.
To proceed, I need the following:
- A photo of the battery label showing the complete part number (starting with a number such as 9384477).
- The hardware version / software version, if visible on the label or BMS board
- Please confirm: does the battery still communicate over OBD, or is it completely dead/locked?
Service note: This forum does not provide direct binary file editing services through this reply system. After verifying your exact variant, we will use one of the following options:
- If a map is available for your version, I can guide you regarding the byte locations.
- If you want the editing to be performed as a paid service, contact Bin/admin.
Share a photo of the label, and I will check whether there is a solution for your specific model.
Size gönderdiğim fotoğraflarla ilgili olarak: birinde 48V akü, diğerinde ise arıza kodu görünüyor. E...
97ED768A1117087-1800EA480E000053-C5, SN 0P1-2434-0869-420014902-02, pack date 2024-08-21. So the Aug 19 2025 string in the P-Flash tail is the software build date, not the pack date — this unit is running a later SW level than the pack build.803400 BATT48 — "emergency shutdown in response to crash detection", status permanent/kalıcı. That is exactly the crash latch, not a cell or contactor fault, which matches your 46 V measurement on the pack.0x000000 - 0x17FFFF P-Flash (1536 KB)
0x180000 - 0x1FFFFF D-Flash (512 KB)
0x200000 - 0x200FFF EEPROM (4 KB)
0x17FEF0 of that file should contain an ASCII build date string like yours (Aug 19 2025), and 0x180000 onward should look like D-Flash content. If it doesn't line up, the file is a different layout and you stop there.VehiclePKI-RootCA1, SecureToken-CA2, ID-CA2) and cell calibration. Even if it boots, the pack will not authenticate on the vehicle. For a crash reset you should only be touching the non-volatile data areas, not the whole program flash.0x00 end to end. On S32K148 that 4 KB is FlexRAM emulated EEPROM — with the core halted under JTAG it commonly reads all zeros because the EEPROM emulation never ran. That read is not usable as a backup.0xFF, but the string scan still finds SWE_2 / Jan 9 2023 / 13:33:47 in it, so there is real data in there. On this MCU the D-Flash is partitioned as the EEPROM backup — that is where the crash record almost certainly lives, as record sets, not as a single flag byte.803400 says the crash latch is still held somewhere else, which supports the D-Flash/EEPROM record theory above.803400 is a reaction to a crash signal, and on these cars that signal comes from the airbag/ACSM side over the bus. If the ACSM still has crash data stored, the 48V unit will re-latch as soon as it sees the message again, no matter how clean your BMS is. Check the ACSM for stored crash data before you spend more time on the BMS. After any BMS-side reset, clear fault memory with ignition on, then a full sleep cycle (lock, wait several minutes), then re-read.This is cy15b128q.Thank you for the label and scan screenshots; they cleared up most of the gaps.
What the evidence shows
- Label: A123 Systems 48V Li-Ion Battery G2.0, 20Ah / 0.96 kWh, ECU-UID
97ED768A1117087-1800EA480E000053-C5, SN0P1-2434-0869-420014902-02, packaging date 2024-08-21. SoAug 19 2025the string in the P-Flash queue is the software build date, not the packaging date; this unit is running a software version newer than its packaging date.- DTC
803400BATT48 — "emergency shutdown upon crash detection", status permanent/permanent . This is exactly a crash latch fault, not a battery or contactor fault, and it matches your 46 V measurement at the battery pack.- Your memory dumps: P-Flash 1536 KB, D-Flash 512 KB, EE 4 KB.
Your question about 2052 KB
1536 + 512 + 4 = 2052 KB. This file is almost certainly a combined full dump of the three areas; it is not something to be written as a single block. Split it and write each part to its own area:
Code:0x000000 - 0x17FFFF P-Flash (1536 KB) 0x180000 - 0x1FFFFF D-Flash (512 KB) 0x200000 - 0x200FFF EEPROM (4 KB)
0x17FEF0Before writing anything, verify the split: the file's bytes should contain an ASCII build-date string like yours (Aug 19 2025) and0x180000everything after that should look like D-Flash content. If it does not match, the file has a different layout and you should stop there.
Important warning — this archive was built around the FS32K148 variant. Writing foreign P-Flash to your S32K148 unit means writing someone else's ECU-UID, PKI/vehicle certificates (VehiclePKI-RootCA1,SecureToken-CA2,ID-CA2) and cell calibration. Even if it boots, the pack will not authenticate in the vehicle. For crash reset, you should touch only the persistent data areas, not the entire program flash.
There are two issues with your reads.
- Your EEPROM read
0x00is an end-to-end 4 KB data dump. On the S32K148, this 4 KB is EEPROM emulated by FlexRAM; when the core is halted under JTAG, the EEPROM emulation generally is not running at all, so all data is usually read as zeros. This read cannot be used as a backup.- Your D-Flash is mostly being read
0xFF, but the string scan still finds dataSWE_2 / Jan 9 2023 / 13:33:47inside it, meaning there is real data there. On this MCU, D-Flash is partitioned as an EEPROM backup; the crash record is almost certainly there, not as a single flag byte but as record clusters.
So: reread the D-Flash twice and compare the two files byte by byte. If they match, continue working from the D-Flash, not from the FlexRAM read.
Write about CY15B128Q
The CY15B128Q is an FRAM, and writing the archive's dump to it would have cleared the first fault; that makes sense, but it also means that this pack's own FRAM contents were overwritten with foreign content. If you did not save the original FRAM read, make a note of that. The remaining part says that803400the lock latch is still stored somewhere else, which supports the D-Flash/EEPROMrecord theory above.
The part most people overlook
803400This is a response to a crash signal, and in these vehicles that signal comes from the airbag/ACSM over the bus. If crash data is still stored in the ACSM, your BMS will relock as soon as the 48V unit sees the message again, no matter how clean the BMS is. Check for crash data stored in the ACSM before spending more time on the BMS. After any BMS-side reset, clear the fault memory with the ignition on, then perform a complete sleep cycle (lock it, wait a few minutes) and read it again afterward.
I need the following to go further.
- The exact version of the file you downloaded (the source's v1 or v2 version) and whether its size is exactly 2101248 bytes.
- We are doing a second D-Flash read to verify that the read is stable.
- The status of the ACSM fault memory/crash data obtained from Autel.
- Do you still have the original CY15B128Q file that you read before writing the archive file?
As for the service question: I cannot perform binary file editing through this thread. If you want the file processed directly, please contact Bin/admin.
Bu cy15b128q'dur.
0P12434086942001490202 at 0x3F6D (and the tail of the same string ending at 0x3E8F) matches the label SN 0P1-2434-0869-420014902-02. So whatever you wrote earlier did not overwrite the serial area.00 5c e8 6d 03 1b d7 35 at 0x0029 against fc e7 6d 03 1b d7 35 at 0x0271, and the float-looking group ...73 34 42 / 40 15 2e 64 40 at 0x007A and 0x02B6). That is a classic A/B redundant journal with per-record counters. Live data ends around 0x20BA, then 0xFF fill, with an isolated value 7c 2f c3 at 0x3FE5 that looks like a signature/checksum over a region.We use essential cookies to make this site work, and optional cookies to enhance your experience.