ZF 8HP — Configuration

Requires firmware 2.0.1 or laterwhy.

An 8HP behind IOcan is configured with the BMW OEM Gateway controller (app name Gateway BMW OEM). The factory TCU keeps doing the shifting; the controller gives it the engine torque and other engine signals it expects, and reports gear state back to the car.

flowchart LR ECU["Aftermarket ECU<br>(RPM, TPS, torque, …)"] -->|inputs| GW["BMW OEM Gateway<br>(emulates the engine,<br>reports gear state)"] GW -->|CAN preset| TCU["Factory 8HP TCU<br>(mechatronics)"] TCU -->|TCU state| GW GW -->|"gear, mode, speed"| OUT["Outputs / dash"]

This page summarizes the setup workflow. The full field and table reference is in the BMW OEM Gateway controller reference; the shared concepts (signal flow, controllers, CAN presets) are described in Configuration Concepts.

Prerequisites

  • A factory 8HP TCU on the transmission, powered and woken by IOcan (see Wiring).
  • The transmission's CAN networks wired to IOcan.
  • Engine signals available to the device — from the ECU over CAN or on physical pins — at minimum engine RPM and a torque source.
  • For paddle or selector control, an OEM or emulated shifter.

Setup workflow

  1. Add the BMW OEM Gateway controller to the configuration.
  2. Add a CAN bus for the transmission and pair the matching transmission-emulation preset for your platform and generation:

    Platform PT-CAN PT-CAN2
    F-series 8HP, Gen 1 BMW 8HP PT_CAN Fxx Gen1 BMW 8HP PT_CAN2 Fxx Gen1
    F-series 8HP, Gen 2 BMW 8HP PT_CAN Fxx Gen2 BMW 8HP PT_CAN2 Fxx Gen2
    G-series 8HP, Gen 2 BMW 8HP PT_CAN Gxx Gen2 BMW 8HP PT_CAN2 Gxx Gen2
    G-series 8HP, Gen 3 BMW 8HP PT_CAN Gxx Gen3 BMW 8HP PT_CAN2 Gxx Gen3
  3. Assign the engine inputs: RPM, throttle and pedal position, manifold pressure, coolant/oil temperature and the brake switch are mandatory — missing mandatory signals → the controller faults and the transmission will not run. Add the optional signals you have (torque, vehicle speed, ignition, …).

  4. Choose a torque calculation method and provide what it needs (see Engine torque estimation):

    Method How torque is produced
    ECU Reported Torque Taken straight from the ECU's torque broadcast
    Fuel + Air (arbitrated) From injector pulse width, cross-checked against an air model
    Air Model Air-mass model from manifold pressure and VE tables

    These are the three methods supported by this controller — other selections shown in the app are not implemented for it.

  5. Assign the mandatory outputs. Thirteen of them are checked at startup and fault if unassigned, exactly like the mandatory inputs:

    Output Output
    Cut request Input shaft speed
    Blip request Output shaft speed
    Current gear Gear ratio
    Current gear (Park) Torque converter slip
    Next gear Transmission temperature
    Gearbox mode Engine torque
    Reverse light

    Assign all thirteen even if nothing in your build consumes them yet — an output can be routed to a CAN object you simply do not read. Vehicle speed and transmission wakeup are not mandatory outputs; route them if you need them.

Torque management during shifts

During a shift the factory TCU requests a torque cut (upshift) or a throttle blip (downshift). The gateway relays these on the Cut request and Blip request outputs — route them to your ECU and configure it to act on them. The ECU executes the cut/blip; see Shift torque management.

Troubleshooting

  • Transmission won't engage / faults at start — a mandatory input or output is unassigned; the fault entry names the missing item.
  • Harsh or lazy shifts — the TCU is getting a poor engine torque value; verify a supported torque method is selected and its inputs/maps are alive.
  • Shifts but no rev-match / driveline shock on manual downshifts — the ECU is not acting on the cut/blip request outputs.
  • Wrong road speed — check diff ratio and wheel diameter parameters and the vehicle-speed input scaling (see Vehicle & wheel speed).
  • TCU keeps sleeping — assign the ignition input and route the transmission wakeup output.