Project

General

Profile

8HP OEM Gateway » History » Version 1

Adam Klama, 06/21/2026 06:44 PM

1 1 Adam Klama
# 8HP OEM Gateway
2
3
## Overview
4
The **8HP OEM Gateway** (app name *Gateway BMW OEM*) is a controller that lets you
5
keep a **factory BMW / ZF 8HPxx automatic** and its original **TCU (mechatronics)**
6
while the engine is run by a standalone / aftermarket ECU. The TCU keeps doing the
7
shifting; the gateway gives it the **engine torque** and other engine signals it
8
expects, and reports gear state back to the car.
9
10
Use it when you have swapped the engine management (or the whole engine) but want to
11
retain the OEM 8HP behaviour, shift quality and diagnostics. It runs on a **CANbus
12
Gateway** (`CGW…`) or **IOcan** (`IOC…`) device. For the standalone alternative that
13
drives an 8HP without its TCU, see the GCU `ZF 8HPxx` driver.
14
15
> This is an **OEM gateway** driver. Read
16
> [Controllers → OEM gateway drivers](Controllers#oem-gateway-drivers) for the
17
> shared concepts (engine-torque estimation, DBW Modifier, fuel model) — this page
18
> covers the 8HP specifics and the full field/table reference.
19
20
## Supported transmissions
21
ZF **8HP45 / 8HP50 / 8HP70 / 8HP90** and related variants as fitted to BMW F- and
22
G-series, plus **Alpina** calibrations. The correct **generation** is selected by
23
the paired CAN preset (see [CAN presets](#can-presets-to-pair)). See
24
[8HPxx](8HPxx) and [Supported transmissions](Supported_transmissions).
25
26
## Prerequisites & hardware
27
- A **factory 8HP TCU** on the transmission, powered and woken (the gateway drives
28
  **Transmission wakeup**).
29
- The transmission's drive CAN wired to a [CAN bus](Working_with_the_CAN_Bus) on the
30
  device. The 8HP TCU lives on **PT-CAN** or **PT-CAN2** depending on platform — pick
31
  the matching preset.
32
- Engine signals available to the device (from the ECU over CAN, or on physical
33
  pins) — at minimum engine **RPM** and a **torque** source; see [Inputs](#inputs).
34
- For paddle/selector control, an OEM or emulated shifter — see the
35
  [BMW F-Series GWS pinout](BMW_F_Series_Gear_Selector_Switch_(GWS)_Pinout).
36
37
Wiring references: [8HPxx connections](8HPxx_connections),
38
[BMW F30 Gateway connection guide](BMW_F30_Gateway_connection_guide),
39
[CAN Gateway Pinout](CAN_Gateway_Pinout), [OBD Pinout](OBD_Pinout).
40
41
## Add it in the app
42
1. On a CANbus Gateway / IOcan configuration, add the **8HP OEM Gateway** controller.
43
2. Add a [CAN bus](Working_with_the_CAN_Bus) for the transmission and pair the
44
   matching **transmission-emulation preset** ([list below](#can-presets-to-pair)).
45
3. Assign the engine **[inputs](#inputs)** (RPM, throttle/pedal, MAP, temperatures,
46
   and a torque source).
47
4. Choose a **[Torque calculation method](#parameters)** and fill the
48
   **[tables](#calibration-tables-maps)** it needs.
49
5. Route the **[outputs](#outputs)** you need (gear display, reverse light, vehicle
50
   speed, torque-management handshake) to CAN or pins.
51
52
## Inputs
53
Assign each signal to a source ([CAN object](CAN_Object_Input),
54
[CAN frame](CAN_Bus_Input), or a pin). Mandatory signals missing → the controller
55
faults and the transmission will not run; optional signals fall back to an internal
56
value (see [Configuration Concepts](Configuration_Concepts#inputs)).
57
58
### Engine parameters
59
| Signal | Unit | Notes |
60
|---|---|---|
61
| **Engine RPM** | 1/min | Mandatory. |
62
| **Throttle position** | % | 0–100. |
63
| **Pedal position** | % | 0–100. |
64
| **Manifold pressure** | kPa | For air-model torque. |
65
| **Atmospheric pressure** | kPa | Barometric reference. |
66
| **Coolant temperature** | °C | |
67
| **Oil temperature** | °C | |
68
| **Lambda** | λ | Mixture correction for torque. |
69
70
### Engine torque
71
Used directly by the **External Inputs** method and as a sanity reference for the
72
others.
73
74
| Signal | Unit | Notes |
75
|---|---|---|
76
| **No intervention** | Nm | Driver-demanded torque before traction/stability cuts. |
77
| **Intervention** | Nm | Actual torque after intervention. |
78
| **Max** | Nm | Upper limit reported to the TCU. |
79
| **Min** | Nm | Lower limit. |
80
| **Loses** | Nm | Friction / accessory losses. |
81
82
### Chassis signals
83
| Signal | Unit | Notes |
84
|---|---|---|
85
| **Brake switch** | on/off | Needed for park/drive interlocks. |
86
| **Brake pressure** | — | Optional analogue brake input. |
87
| **Vehicle speed** | km/h | Or derived from the wheel speeds below. |
88
| ↳ Front left / right | km/h | Per-wheel speed. |
89
| ↳ Rear left / right | km/h | Per-wheel speed. |
90
| **KL15 / Ignition** | on/off | Wake / ignition state. |
91
| **Drive Mode** | enum | Comfort / Sport / etc. drive-mode select. |
92
93
## Outputs
94
Outputs do nothing until routed to a CAN message or a pin and driven by this
95
controller (see [Configuring Outputs](Configuring_Outputs)). Each can feed several
96
consumers at once via a [splitter output](Splitter_Output).
97
98
### Torque management (handshake to the ECU)
99
| Signal | Notes |
100
|---|---|
101
| **Engine torque** | Torque the TCU is requesting/expects. |
102
| **Cut request** | Torque-cut request during an upshift. |
103
| **Blip request** | Throttle-blip request during a downshift. |
104
105
### Transmission parameters
106
| Signal | Unit | Notes |
107
|---|---|---|
108
| **Current gear** | gear | |
109
| **Current gear / park** | gear | Includes P. |
110
| **Next gear** | gear | Target gear during a shift. |
111
| **Gearbox mode** | enum | R / P / N / D / M. |
112
| **TCC slip** | 1/min | Torque-converter clutch slip. |
113
| **Gear ratio** | :1 | Active ratio. |
114
| **Turbine speed** | 1/min | Input-shaft speed. |
115
| **Tailshaft speed** | 1/min | Output-shaft speed. |
116
| **Transmission temperature** | °C | |
117
| **Vehicle speed** | km/h | |
118
| **Wheel RPM** | 1/min | |
119
| **Reverse light** | on/off | |
120
| **Transmission wakeup** | on/off | Keeps the TCU awake. |
121
122
## Parameters
123
124
### Engine torque calculation
125
| Parameter | Meaning | Unit | Range | Default |
126
|---|---|---|---|---|
127
| **Torque calculation method** | How engine torque is produced — see [methods](Controllers#engine-torque-estimation) | enum | Torque Tables · External Inputs · Internal Calculation · Fuel Calculation · Fuel Calculation v2 · Fuel Only Calculation · Air only calculation | Torque Tables |
128
| **Idle RPM** | Expected idle speed | RPM | 0–20000 | 800 |
129
| **Rev limiter** | Engine rev limit | RPM | 0–20000 | 6500 |
130
| **Cylinder count** | Number of cylinders | — | 1–20 | 6 |
131
| **Displacement** | Engine displacement | cm³ | 1–20000 | 3000 |
132
| **Compression ratio** | Geometric compression | :1 | 1–20 | 10.0 |
133
| **Throttle diameter** | Throttle-body bore | mm | 1–20000 | 90 |
134
| **Maximum MAP value** | Full-scale manifold pressure | kPa | 1–2000 | 300 |
135
136
### Primary injector / Secondary injector
137
The secondary set is optional (staged/auxiliary injection) and has the same fields.
138
139
| Parameter | Meaning | Unit | Range | Default |
140
|---|---|---|---|---|
141
| **Fuel type** | Fuel selection | enum | Gasoline · Flex Fuel · Ethanol 100 · Ethanol 85 · Methanol · Diesel · User defined | Gasoline |
142
| **Injector pulse width** | Live injection-time input | — | — | — |
143
| **Injector size** | Static flow | cm³/min | 1–20000 | 600 |
144
| **Nominal injector pressure** | Rating pressure | kPa | 1–200000 | 350 |
145
| **Deadtime mode** | Source of injector dead time | enum | Do not use · Input · User defined | Do not use |
146
| **Deadtime input** | Live dead-time input | — | — | — |
147
| **Fuel pressure** | Live fuel-pressure input | — | — | — |
148
| **Fuel temperature** | Live fuel-temperature input | — | — | — |
149
| **Flex Fuel** | Live ethanol-content input | — | — | — |
150
151
### Speed calculation
152
| Parameter | Meaning | Unit | Range | Default |
153
|---|---|---|---|---|
154
| **Diff ratio** | Final-drive ratio | :1 | 1–20 | 2.7 |
155
| **Wheel diameter** | Rolling diameter | mm | 1–20000 | 640 |
156
157
### DBW Modifier
158
Clutchless-shift throttle override — see [concept](Controllers#dbw-modifier).
159
160
| Parameter | Meaning | Unit | Range | Default |
161
|---|---|---|---|---|
162
| **Mode** | Enable the modifier | enum | No DBW Modifier · DBW Modifier | No DBW Modifier |
163
| **PPS A in / B in** | Raw pedal-sensor inputs | — | — | — |
164
| **PPS A out / B out** | Modified pedal outputs to the throttle | — | — | — |
165
| **Cut time limit** | Max duration of an upshift cut | ms | 1–20000 | 200 |
166
| **Blip time limit** | Max duration of a downshift blip | ms | 1–20000 | 200 |
167
168
## Calibration tables (maps)
169
All tables are entered and interpolated as described in
170
[Scaling and Maps](Scaling_and_Maps). Fill only the tables required by your
171
**Torque calculation method** plus the DBW tables if the modifier is enabled.
172
173
### DBW Modifier — Cut (upshift)
174
Axes: **Gear × Torque**.
175
176
| Table | Calibrates |
177
|---|---|
178
| **Limit pos** | Pedal/throttle target during the cut |
179
| **Ramp in time** | How fast the cut is applied |
180
| **Ramp out time** | How fast torque is restored |
181
182
### DBW Modifier — Blip (downshift)
183
Axes: **Gear × ΔRPM** (rev-match need).
184
185
| Table | Calibrates |
186
|---|---|
187
| **Target pos** | Pedal/throttle target for the blip |
188
| **Ramp in time** | How fast the blip is applied |
189
| **Ramp out time** | How fast it is removed |
190
| **Time** | Blip hold duration |
191
192
### Torque tables (method: *Torque Tables*)
193
| Table | Calibrates | Axes |
194
|---|---|---|
195
| **Engine torque TPS-RPM** | Torque from throttle and RPM | TPS × RPM |
196
| **Engine torque MAP-RPM** | Torque from manifold pressure and RPM | MAP × RPM |
197
198
### VE tables (method: *Internal / Air* calculation)
199
| Table | Calibrates | Axes |
200
|---|---|---|
201
| **VE Speed-Density** | Volumetric efficiency vs load and RPM | MAP × RPM |
202
| **VE Alpha-N** | Volumetric efficiency vs throttle and RPM | TPS × RPM |
203
| **VE Blending** | Blend between Speed-Density and Alpha-N | MAP (1D) |
204
205
### Drag / efficiency maps
206
Correct the estimate for engine braking and mixture (1-row maps).
207
208
| Table | Calibrates | Axis |
209
|---|---|---|
210
| **Engine speed drag map** | Engine-braking torque vs RPM | RPM |
211
| **Throttle drag map** | Drag correction vs throttle | TPS |
212
| **Manifold pressure drag map** | Drag correction vs MAP | MAP |
213
| **Lambda efficiency** | Torque efficiency vs lambda | λ |
214
215
### Injector / fuel tables (methods: *Fuel* calculation)
216
The primary and secondary injectors each have the same four tables.
217
218
| Table | Calibrates | Axes |
219
|---|---|---|
220
| **Deadtime** | Injector dead time | Voltage × Fuel pressure |
221
| **Fuel density** | Density vs ethanol and temperature | Flex fuel × Temperature |
222
| **Stochiometric AFR** | Stoich AFR vs ethanol | Flex fuel (1D) |
223
| **Fuel energy** | Energy content vs ethanol | Flex fuel (1D) |
224
225
## CAN presets to pair
226
Pair the driver with the **transmission-emulation preset** for your platform and
227
generation (Transmission Emulation category). The preset implements the on-wire 8HP
228
protocol on the chosen bus; the driver provides the signals.
229
230
| Platform | PT-CAN | PT-CAN2 |
231
|---|---|---|
232
| **F-series 8HP, Gen 1** | BMW 8HP PT_CAN Fxx Gen1 | BMW 8HP PT_CAN2 Fxx Gen1 |
233
| **F-series 8HP, Gen 2** | BMW 8HP PT_CAN Fxx Gen2 | BMW 8HP PT_CAN2 Fxx Gen2 |
234
| **G-series 8HP, Gen 2** | BMW 8HP PT_CAN Gxx Gen2 | BMW 8HP PT_CAN2 Gxx Gen2 |
235
| **G-series 8HP, Gen 3** | BMW 8HP PT_CAN Gxx Gen3 | BMW 8HP PT_CAN2 Gxx Gen3 |
236
237
Also available: **BMW PT_CAN Forwarder** and **BMW ISO TP Gateway** (diagnostic/
238
bridging). BMW **DKG** (dual-clutch) uses the same gateway with the *DKG* presets and
239
is documented with the DCT drivers.
240
241
## Example — engine-swapped F30 with an aftermarket ECU
242
1. Add the **8HP OEM Gateway** on a CANbus Gateway; add a CAN bus on **PT-CAN** and
243
   pair **BMW 8HP PT_CAN Fxx Gen1**.
244
2. Map **Engine RPM**, **Throttle**, **Pedal**, **MAP**, **Coolant/Oil temp** from
245
   the ECU's CAN stream via [CAN Object Inputs](CAN_Object_Input).
246
3. Set **Torque calculation method = Torque Tables**; fill **Engine torque TPS-RPM**
247
   from the engine's torque data. Set **Cylinder count**, **Displacement**, **Rev
248
   limiter**.
249
4. Set **Diff ratio** and **Wheel diameter** so **Vehicle speed** reads correctly.
250
5. Enable the **DBW Modifier**, wire **PPS A/B in** from the pedal and **PPS A/B out**
251
   to the throttle, and fill the **Cut** and **Blip** tables.
252
6. Route **Current gear**, **Gearbox mode** and **Reverse light** to the cluster/CAN.
253
254
## Troubleshooting
255
- **Transmission won't engage / faults at start:** a mandatory input (RPM or a torque
256
  source) is unassigned — check [input rules](Configuration_Concepts#inputs).
257
- **Harsh or lazy shifts:** the TCU is getting a poor **engine torque** value — verify
258
  the torque method and its tables; cross-check against the torque inputs.
259
- **Shifts but no rev-match / driveline shock on manual shifts:** enable and calibrate
260
  the **DBW Modifier** Cut/Blip tables.
261
- **Wrong road speed:** check **Diff ratio** and **Wheel diameter**.
262
- **TCU keeps sleeping:** route and drive **Transmission wakeup**.
263
264
## Related
265
- [Controllers](Controllers) — driver catalogue and shared OEM-gateway concepts
266
- [OEM PDK Gateway](OEM_PDK_Gateway) — the same driver family for Porsche PDK
267
- [8HPxx](8HPxx) · [8HPxx connections](8HPxx_connections) ·
268
  [Supported transmissions](Supported_transmissions)
269
- [Working with the CAN Bus](Working_with_the_CAN_Bus) ·
270
  [Scaling and Maps](Scaling_and_Maps)