E9x 3-Series B48/B58 + ZF 8HP: B48 and B58 are related, not interchangeable
What the record says
BMW training material identifies B58, B48, and B38 as a modular family and distinguishes DME 8.6 for B58 from DME 8.4 for B48. Later B58TU material documents major variant changes including 350-bar injection, split cooling, heat-management changes, and a single-part chain. That supports a family relationship, not parts interchangeability. The E9x source capture records the original B58 donor-family context from the 2016 340i press material as bounded context only; it does not establish a complete donor package or swap compatibility.
The community record shows B48 surfacing as a distinct, thinner E9x query branch. A B48 decision is not a cheaper version of a B58 decision; it is a different branch with its own DME, fuel, and packaging evidence.
What you can use today
Record the engine code, donor VIN or application, production era, DME family, fuel system, cooling strategy, and emissions market on every configuration card. Keep B48 and B58 records separate.
A practical builder checklist
E9x 3-Series remains research content, not a customer manual or a fitment promise.
The E9x B48/B58 + ZF 8HP planning reference takes this research into a build-ready record system: donor and 8HP identity cards, controller-first decisions, measurement records, commissioning logs, and the full as-built record. See the E9x guide →
Before you buy anything — the compatibility checklist
The free B48/B58 compatibility checklist: what the donor must come with, what the 8HP adds, and the measurements that decide whether your exact chassis is a build or a different problem entirely.
FAQ
Can I use the same parts and process for B48 and B58?
Not automatically. The engines are related but have distinct DME, fuel, cooling, and packaging evidence.
Does a B58 source also answer a B48 build?
No. Source scope statements are configuration-specific; verify on the exact build.
What should I do next?
Record the exact engine branch and evidence first. If a field is blank, treat it as a stop signal.