Project

General

Profile

Controllers » History » Version 1

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

1 1 Adam Klama
# Controllers
2
3
A **controller** is the transmission control strategy that runs on the device (in
4
the schema it is called a **driver**). It turns engine and chassis
5
[inputs](Configuring_Inputs) into the signals a transmission needs, and exposes
6
transmission state back through [outputs](Configuring_Outputs) and
7
[CAN presets](Working_with_the_CAN_Bus#can-presets). Read
8
[Configuration Concepts](Configuration_Concepts) first — it explains where a
9
controller sits in the signal flow.
10
11
Each controller is selected for the device and then **calibrated** through its own
12
set of parameters and [maps/tables](Scaling_and_Maps). The pages below document
13
one controller per page.
14
15
## Driver catalogue
16
17
The configuration app offers these controllers. Which ones are available depends
18
on the **device type** (serial-number prefix): a **CANbus Gateway** (`CGW…`) and an
19
**IOcan** (`IOC…`) run the gateway and emulation drivers; a **GCU** (`GCU…`) runs
20
the standalone transmission drivers.
21
22
| Controller (driver) | Runs on | Role | Page |
23
|---|---|---|---|
24
| **8HP OEM Gateway** (Gateway BMW OEM) | CANbus Gateway, IOcan | Engine emulation to a factory BMW / ZF **8HPxx** TCU | [8HP OEM Gateway](8HP_OEM_Gateway) |
25
| **OEM PDK Gateway** (Gateway PDK OEM) | CANbus Gateway, IOcan | Engine emulation to a factory Porsche **PDK / 7DT45** TCU | [OEM PDK Gateway](OEM_PDK_Gateway) |
26
| Shifter emulator | CANbus Gateway, IOcan | Emulates an OEM gear selector (GWS) | _planned_ |
27
| Passthrough | CANbus Gateway, IOcan, GCU | Forwards frames between CAN buses | _planned_ |
28
| GCU DCT / DL800 / PDK / DQ250 / DQ500 / TR9080 / Getrag 6DCT470 / ZF 8HPxx | GCU | Standalone transmission control (drives the gearbox directly) | _planned_ |
29
30
> The **GCU PDK** driver controls the 7DT45 gearbox hardware directly (clutch and
31
> line-pressure solenoids, gear actuators) and is **not** the same thing as the
32
> *OEM PDK Gateway*, which talks to the car's factory PDK controller. See
33
> [OEM PDK Gateway](OEM_PDK_Gateway#related).
34
35
## OEM gateway drivers
36
37
The **8HP OEM Gateway** and **OEM PDK Gateway** are the same kind of driver: an
38
**OEM gateway**. They let you keep the **factory transmission controller (TCU)**
39
and run it behind a standalone/aftermarket ECU. The TCU still does the gear
40
shifting; the gateway gives it the engine picture it expects.
41
42
```
43
Aftermarket ECU ─inputs→  OEM Gateway driver  ─CAN preset→  Factory TCU
44
   (RPM, TPS,             (emulates the engine,            (8HP / PDK
45
    torque, …)             reports gear state)              mechatronics)
46
Outputs / dash  ←─────────  gear, mode, speed  ←───────────  TCU state
47
```
48
49
What the gateway driver does:
50
51
- **Emulates the engine** towards the TCU — most importantly **engine torque**, plus
52
  RPM, throttle/pedal, MAP, temperatures and chassis signals. Factory TCUs schedule
53
  shifts and set clutch/line pressure from the torque signal, which aftermarket ECUs
54
  rarely broadcast in the OEM format.
55
- **Reports transmission state** back to the rest of the car — current/next gear,
56
  gearbox mode, ratios, shaft speeds, temperature, vehicle speed, reverse light.
57
- **Handles clutchless shifts** with the [DBW Modifier](#dbw-modifier) (torque cut on
58
  upshift, blip on downshift).
59
60
The on-wire conversation with the TCU is implemented by a **transmission-emulation
61
[CAN preset](Working_with_the_CAN_Bus#can-presets)** (one per platform/generation),
62
which you pair with the driver — they are listed on each driver page.
63
64
### Engine torque estimation
65
66
Because the torque signal matters so much, the driver can obtain it several ways.
67
The **Torque calculation method** parameter selects one; the tables it needs are
68
filled on the driver page.
69
70
| Method | How torque is produced | Tables it uses |
71
|---|---|---|
72
| **Torque Tables** | Looked up directly from measured engine data | Engine-torque tables (TPS·RPM, MAP·RPM) |
73
| **External Inputs** | Taken straight from ECU torque inputs | none (uses the torque inputs) |
74
| **Internal Calculation** | Air-model from displacement, MAP, VE | VE tables + engine parameters |
75
| **Fuel Calculation / v2** | From injector flow and fuel energy | Injector + fuel tables |
76
| **Fuel Only / Air Only** | Single-path variants of the above | the matching subset |
77
78
Drag maps (engine-speed / throttle / MAP) and the lambda-efficiency map correct the
79
estimate for engine braking and mixture. Not every method needs every table — fill
80
the ones for the method you choose.
81
82
### DBW Modifier
83
84
The **DBW (drive-by-wire) Modifier** produces clean, fast shifts without lifting by
85
momentarily overriding the electronic throttle / pedal request:
86
87
- **Cut** (upshift) — pulls the request **down** to unload the driveline, then ramps
88
  it back. Calibrated by *limit position* and *ramp-in / ramp-out* time tables.
89
- **Blip** (downshift) — pushes the request **up** to match revs, then ramps back.
90
  Calibrated by *target position*, *time*, and *ramp-in / ramp-out* time tables.
91
92
The cut/blip tables are indexed by gear and by load (torque) or rev-match need
93
(ΔRPM), so the override is sized to the shift. See each driver page for the exact
94
axes.
95
96
### Fuel / injector model
97
98
When torque is derived from fuelling, the driver models each injector set
99
(**primary** and optional **secondary**) with injector size, nominal pressure and a
100
**dead-time** table, plus **fuel density**, **stoichiometric AFR** and **fuel
101
energy** tables so flex-fuel and temperature are accounted for.
102
103
## How the reference tables are written
104
105
Each driver page lists its **inputs**, **outputs**, **parameters** and
106
**calibration tables (maps)**. Names, units, ranges and defaults are taken from the
107
driver's UI definition in `config-studio-data/controllers/*.json`; the on-wire
108
fields and tags come from the matching `*.proto` message. Map axes, scaling and
109
interpolation follow [Scaling and Maps](Scaling_and_Maps).
110
111
## Related
112
113
- [Configuration Concepts](Configuration_Concepts) — controllers in the signal flow
114
- [Working with the CAN Bus](Working_with_the_CAN_Bus) — CAN presets and networks
115
- [Scaling and Maps](Scaling_and_Maps) — how maps/tables are entered and interpolated
116
- [Supported transmissions](Supported_transmissions)