12 Sep 2026

Receiving Data From a Link ECU Into Your 8HP Setup

Receiving Data From a Link ECU Into Your 8HP Setup

Getting a Link ECU to feed an 8HP through a TurboLamik TCU means building one receive stream on the Link side and matching it on the TCU side. The manual's current receive stream, TCU standard 7, carries six live engine values and a set of request bits at 50 Hz, and it needs only two CAN identifiers: the base ID and the ID one above it.

What the TCU actually needs

The TCU needs four things: throttle position, brake pedal signal, RPM, and the torque the engine is making. A Link can supply all four over CAN.

RPM and PPS are described in the manual as necessary parameters. MAP is necessary only when the ECU does not send actual engine torque. If the Link does send actual engine torque, MAP is not used. Brake pedal arrives as a request bit in the second frame. Either the Link sends a torque value the TCU trusts, or the TCU calculates torque itself and needs MAP and RPM to do it.

The receive stream: TCU standard 7

The stream is two frames. All multi byte values are most significant byte first.

Base ID

Offset Parameter Unit Scale Type Rate
0 RPM rpm 1 unsigned 16 50 Hz
2 MAP kPa 0.1 unsigned 16 50 Hz
4 PPS per cent 0.1 unsigned 16 50 Hz
6 Program SW P1 to P8 1 unsigned 8 not stated
7 Virtual clutch per cent, 0 to 100 1 unsigned 8 not stated

Base ID plus one

Offset Parameter Unit Scale Type Rate
0 Actual engine torque Nm, signed 1 signed 16 50 Hz
2 Maximum engine torque Nm, signed 1 signed 16 50 Hz
4 Engine coolant temperature 1 C per bit, offset -40 1 unsigned 8 50 Hz
5 bit 0 Upshift request flag 1 bit 50 Hz
5 bit 1 Downshift request flag 1 bit 50 Hz
5 bit 2 Brake pedal activate flag 1 bit 50 Hz
5 bit 3 Idle active flag 1 bit 50 Hz
5 bit 4 Kickdown activate flag 1 bit 50 Hz
5 bit 5 Handbrake flag 1 bit 50 Hz
6 Selector commands 0x00 none, 0x01 P, 0x02 R, 0x04 N, 0x08 D 1 byte 50 Hz

Byte 7 of the second frame, and bits 6 and 7 of byte 5, are unassigned in the manual.

Handing torque over to the TCU

The manual gives an explicit handoff: if the ECU does not calculate engine torque, send 0x8000 (-32768) or 0x7FFF (32767) in the actual engine torque slot, and the TCU activates its internal torque calculation.

So the torque slot is either a real number or a flag. Sending a plausible looking but wrong torque value is worse than sending the handoff code, because the TCU will build its shift strategy on a figure that does not reflect the engine. If you have no torque to send and no MAP over CAN, the fallback is a MAP sensor wired to the TCU.

Building the Link side to match

On the Link side you are configuring a transmit stream with the same layout and the same rates. Match three things:

Item What to match
CAN identifier The base ID the TCU is listening on, plus one above it for the second frame
Rate 50 Hz on the fast values, so the TCU sees RPM and PPS update quickly enough to shift on
Byte order and scaling Multi byte values most significant byte first, MAP and PPS at 0.1 per bit

Byte order matters as much as scaling. If the high and low bytes are swapped, the TCU reads a number that changes when RPM changes, which makes the fault look intermittent rather than structural. Check a known value first: hold a steady throttle and confirm the TCU reports a sane PPS.

The older receive stream

The manual also documents an earlier receive page, TCU standard 6. It is a single 8 byte frame:

Offset Parameter Unit Scale Type
0 RPM rpm 1 unsigned 16
2 MAP kPa 1 unsigned 16
4 TPS (PPS) per cent 0.5 per bit unsigned 8
5 DBW per cent 0.5 per bit unsigned 8
6 Engine torque Nm, signed 1 signed 16

The old stream has no selector commands, no upshift or downshift requests and no coolant temperature, and both MAP and throttle use a coarser scale: 1 kPa per bit and 0.5 per cent per bit against 0.1 for both in the current stream. It does have a dedicated DBW byte, which the current stream does not.

Verifying what the TCU sees

Work through this in order, and do not move on until each step is right:

  1. Confirm the TCU shows engine RPM and it tracks the engine as you rev it.
  2. Confirm PPS moves smoothly from zero to full travel with no jumps.
  3. Confirm MAP reads atmospheric with the engine off and drops under vacuum.
  4. Confirm the torque value reads sensibly, or that the TCU reports the internal calculation is active because you sent the handoff code.

If step one fails, nothing further will help. The manual's frame conflict note applies here too: if the parameters in the TCU reset after you configure the bus, suspect a CAN frame conflict and change the CAN address in the TCU and the ECU.

Frequently asked questions

Is MAP always required? No. If the Link sends actual engine torque, the manual states MAP is not used. If the Link does not send torque, MAP is necessary so the TCU can calculate torque itself.

What do I send if I have no torque figure? Send 0x8000 (-32768) or 0x7FFF (32767) in the actual engine torque slot. That tells the TCU to use its internal torque calculation.

How many CAN identifiers does the receive stream use? Two: the base ID and the base ID plus one. Both frames run at 50 Hz on the live values.

Why does my throttle reading look wrong? Check the scale first: the current stream uses 0.1 per bit for PPS, the older stream used 0.5. Then check that multi byte values are being sent most significant byte first.

Next step

Tell us your Link model, engine and gearbox combination, and we will go through the receive stream with you before you buy parts. Nailing down whether torque comes over CAN or gets calculated in the TCU is the decision that shapes everything else.

Stream definitions and parameter notes in this article are taken from the TurboLamik official manual (manual.turbolamik.eu), TCU standard 7 and Link G4/G5 pages, with ZF published data for the 8HP family.

Comparing controllers? The CanTCU 8HP controller pinout and wiring guide sets out the wiring, harness and fitment side of a CanTCU build.