Skip to content

Releases

BMW Unified Database v1.2.0

Choose a tag to compare

@gediz gediz released this 04 Oct 03:48

Adds engine codes and fixes a set of data-quality problems found in a full review. Built from commit 3d4f33e; rebuilds byte-identically with Node v22.20.0 (see docs/BUILD.md).

New

  • Engine codes (ecu_engine, 242 rows on 198 ECUs). Taken from BMW's own ECU names, with the routing name as a fallback, and searchable through ecu_alias (alias_type = 'engine', for example N54 or M57TUE). v_ecu gains an engines column.

Fixed

  • Removed the remaining personal names and department codes. The build now fails if any come back.

  • 358 stub ECUs were named with a 2-letter WinKFP code (for example QY). They now carry the ECU type.

  • ECU families: 153 diesel ECUs moved into DDE and about 140 engine ECUs into DME. Group files no longer get a family. About 370 junk families are gone.

  • Chassis:

    • 11 wrong E39 links removed.
    • Chassis are now merged from every routing row, and MINI R5x/R6x codes are recognised.
    • Installed-ECU lists for E46, E52, E53 and R50 come from each car's own SP-DATEN files (+379 rows).
    • E31, E32 and E34 option codes added (+1,031 rows), and K1X option codes are tagged.
  • English fault text:

    • Removed 1,563 German texts that were labelled as English.
    • Removed text attached from the wrong table.
    • Cut two EnglishEcu tables (dxc_90, dsc_89) whose text had shifted onto other codes.

    16,430 fault rows now carry English.

  • Freeze-frame scaling: decimal-comma and exponent values are kept, and the older UWF_A/UWF_B layouts are mapped. About 54k scaling values that were missing are now filled.

  • 302 fault texts that were stored as a number now hold their real text.

  • diag_address now has at least two hex digits (0x07), so all OBDb signals match an ECU.

  • ecu_alias has no duplicates. v_ecu picks routing rows deterministically. Whole numbers in text columns no longer read 12.0.

  • Docs: counts updated, the Wikibooks VIN source is credited (CC BY-SA), and the cookbook queries are fixed.

Licensing note

Three layers now carry obligations when you redistribute the whole file:

  • obd_signal (CC-BY-SA-4.0)
  • the vin_wmi rows with source = 'wikibooks' (CC BY-SA)
  • fdl_code (GPL-3.0)

See CREDITS.md.

Verify

grep bmw.sqlite.gz SHA256SUMS | sha256sum -c

bmw.sqlite SHA256: db586d1dab5625239345203d3149d9f26a2480c6e958991e44b2026aa5fc9b47

BMW Unified Database v1.1.0

Choose a tag to compare

@gediz gediz released this 04 Oct 02:37

F/G-series coding coverage, and a database you can rebuild byte-for-byte from scratch.

What's new

  • F/G-series coding: fdl_code grows from 100 to 2,674 coding labels (363 G-series, 95 CAFDs), from the full community FDL cheat set in packetpilot/bmw-f (GPL-3.0). chassis_family now distinguishes F, G, I and RR, and series/comment are populated. All other tables are unchanged from v1.0.0.
  • Reproducible build: build.mjs now runs every parser against the 8 pinned sources, then checks the result against the committed build-manifest.json. See docs/BUILD.md.

Assets

  • bmw.sqlite.gz: the database, gzipped (130 MB; 655 MB uncompressed).
  • json.tar.gz: the JSON mirror (one file per ECU plus indexes, ~13 MB).
  • SHA256SUMS: checksums for every asset.

Download and verify

curl -L -O https://github.com/gediz/bmw-unified-db/releases/latest/download/bmw.sqlite.gz
curl -L -O https://github.com/gediz/bmw-unified-db/releases/latest/download/SHA256SUMS
grep bmw.sqlite.gz SHA256SUMS | sha256sum -c
gunzip bmw.sqlite.gz

Uncompressed bmw.sqlite SHA256: 88bd7a0ae2fc73d662efebe81b60b5ece0f37ae79696e9ec45ec48c3831751c6.

Rebuild it yourself

nvm use                                  # Node v22.20.0
node fetch-sources.mjs                   # ~1.8 GB
node --experimental-sqlite build.mjs     # ends with "Byte-identical to build-manifest.json"

Reference data, not a substitute for verified BMW data when writing to a car. The new FDL labels are community-curated, so treat them as a guide. Not affiliated with BMW AG; affected data removed on request.

BMW Unified Database v1.0.0

Choose a tag to compare

@gediz gediz released this 24 Jun 23:53

First release of the BMW Unified Database.

One SQLite database that aggregates BMW ECU diagnostics, fault codes, coding, part numbers, live data, and CAN signals for 2,466 modules, joined by a single ECU key.

Assets

  • bmw.sqlite.gz — the database, gzipped (130 MB; 654 MB uncompressed).
  • json.tar.gz — the JSON mirror (one file per ECU plus indexes, ~13 MB).
  • SHA256SUMS — checksums for every asset.

Download and verify

curl -L -O https://github.com/gediz/bmw-unified-db/releases/latest/download/bmw.sqlite.gz
curl -L -O https://github.com/gediz/bmw-unified-db/releases/latest/download/SHA256SUMS
grep bmw.sqlite.gz SHA256SUMS | sha256sum -c
gunzip bmw.sqlite.gz

Uncompressed bmw.sqlite SHA256: 48c7c060536d93ce6d6838ef632f33f7c733ec62aced3e4e2bccf6f971109cb0. The build is deterministic; build.mjs reproduces this byte-for-byte from the pinned sources.

Contents

46 tables and 8 views: diagnostics (jobs, results, tables), full fault dictionaries, the chassis-wide coding catalog, routing, hardware part numbers, INPA and OBDb live data, CAN messages and signals, VIN decode, and ISO 14229 DID names. See the README and SCHEMA.md.

Reference data, not a substitute for verified BMW data when writing to a car. Car-relevant data only. Not affiliated with BMW AG; affected data removed on request.