TurboLamik CAN Stream Reference: v1 and v2 Transmit and Receive
There are two generations of TurboLamik CAN stream, and mixing them up is the most common reason a can bus integration does not work. The v1 generation is a single receive frame and a transmit set built around four configurable analogue values plus one status frame. The v2 generation splits the same job across four transmit frames and two receive frames, and moves the values into engineering units with named parameters.
This page collects all four stream definitions in one place so you can map them into any ECU with open CAN settings.
The four stream pages
| Page in the manual | Direction | Generation | Default base ID |
|---|---|---|---|
| TCU stream v1 TX ("send") | TCU to ECU | v1 | H640, configurable |
| TCU stream v1 RX (TCU standard 6) | ECU to TCU | v1 | H600, configurable |
| TCU stream v2 TX | TCU to ECU | v2 | not stated on the page |
| TCU stream v2 RX (TCU standard 7) | ECU to TCU | v2 | not stated on the page |
On the v2 pages the base ID is simply written as BaseTX ID or BaseRX ID. The frames then sit at the base ID, base ID plus one, and so on.
v2 transmit: four frames
All values are most significant byte first. The rate column is straight from the manual.
| Frame | Offset | Name | Unit | Scale | Type | Rate |
|---|---|---|---|---|---|---|
| BaseTX ID | 0 | Gearbox calculated engine torque | Nm | 1 | signed 16 | 100 Hz |
| BaseTX ID | 2 | Target engine torque (torque reduction) | Nm | 1 | signed 16 | 100 Hz |
| BaseTX ID | 4 | Torque reduction | per cent | 0.5 | unsigned 8 | 100 Hz |
| BaseTX ID | 5 bit 0 | Torque reduction flag | flag | bit | bit | 100 Hz |
| BaseTX ID | 5 bit 1 | Blip request | flag | bit | bit | 100 Hz |
| BaseTX ID | 5 bit 2 | T brake activation | flag | bit | bit | 100 Hz |
| BaseTX ID | 5 bit 3 | Launch control activation | flag | bit | bit | 100 Hz |
| BaseTX ID | 5 bit 4 | T brake or launch control activation | flag | bit | bit | 100 Hz |
| BaseTX ID | 5 bit 5 | Burnout activation | flag | bit | bit | 100 Hz |
| BaseTX ID | 5 bit 6 | Gear shift flag | flag | bit | bit | 100 Hz |
| BaseTX ID | 5 bit 7 | unassigned | 100 Hz | |||
| BaseTX ID | 6, 7 | unassigned | 100 Hz | |||
| BaseTX ID+1 | 0 | Current gear | gear | 1 | signed 8 | 40 Hz |
| BaseTX ID+1 | 1 | Target gear | gear | 1 | signed 8 | 40 Hz |
| BaseTX ID+1 | 2 bit 0 | Parking activation | flag | bit | bit | 40 Hz |
| BaseTX ID+1 | 2 bit 1 | Neutral | flag | bit | bit | 40 Hz |
| BaseTX ID+1 | 2 bit 2 | Hand brake activation | flag | bit | bit | 40 Hz |
| BaseTX ID+1 | 2 bit 3 | Foot brake activation | flag | bit | bit | 40 Hz |
| BaseTX ID+1 | 2 bit 4 | Adaptation activation | flag | bit | bit | 40 Hz |
| BaseTX ID+1 | 2 bit 5 | Converter lockup state | flag | bit | bit | 40 Hz |
| BaseTX ID+1 | 2 bit 6 | Gearbox oil fan activate | flag | bit | bit | 40 Hz |
| BaseTX ID+1 | 2 bit 7 | Safe mode activation | flag | bit | bit | 40 Hz |
| BaseTX ID+1 | 3 | unassigned | 40 Hz | |||
| BaseTX ID+1 | 4 | Wheel torque | Nm | 1 | signed 16 | 40 Hz |
| BaseTX ID+2 | 0 | Gearbox program mode | program | 1 | unsigned 8 | 20 Hz |
| BaseTX ID+2 | 1 | Gearbox mode | 1 | unsigned 8 | 20 Hz | |
| BaseTX ID+2 | 2 | Lockup clutch activation | per cent | 0.4 | unsigned 8 | 20 Hz |
| BaseTX ID+2 | 3 | Transmission oil temperature | 1 C per bit | 1 | unsigned 8 | 20 Hz |
| BaseTX ID+2 | 4 | Vehicle speed | km/h | 16 | unsigned 16 | 20 Hz |
| BaseTX ID+2 | 6 | Error code | unsigned 16 | 20 Hz | ||
| BaseTX ID+3 | 0 | Gearbox clutch slip | per cent | 1 | signed 16 | 100 Hz |
| BaseTX ID+3 | 2 | Gearbox converter slip | per cent | 1 | signed 16 | 100 Hz |
| BaseTX ID+3 | 4 | Input shaft speed | rpm | 1 | unsigned 16 | 100 Hz |
| BaseTX ID+3 | 6 | Output shaft speed | rpm | 1 | unsigned 16 | 100 Hz |
Notes that matter when you map these:
- Current gear and target gear encode -2 for parking, -1 for reverse, 0 for neutral and 1 to 8 for forward gears.
- Gearbox program mode encodes 1 for P1 through 8 for P8. Gearbox mode encodes 0 for manual, 1 for automatic and 2 for sport.
- Torque reduction is a percentage: 0x00 is no reduction and 0xC8 is 100 per cent. Use it if your ECU does not use target engine torque.
- Target engine torque sends 0x800 when there is no torque reduction requested, which the manual annotates as 2048 Nm. During a shift it sends the target engine torque.
- Transmission oil temperature has an offset of -40, so 0x00 is -40 C and 0xFF is 215 C.
- Lockup clutch activation uses 0.4 per bit, with 0x00 at 0 per cent and 0xFA at 100 per cent.
- Safe mode activation reads 0 for off and 1 for on.
- The gear shift flag on the first frame is active whenever a gear change is happening, even when torque reduction is not active. That is what you use to detect a shift without inferring it from a torque cut.
v2 receive: two frames
| Frame | Offset | Name | Unit | Scale | Type | Rate |
|---|---|---|---|---|---|---|
| BaseRX ID | 0 | RPM | rpm | 1 | unsigned 16 | 50 Hz |
| BaseRX ID | 2 | MAP | kPa | 0.1 | unsigned 16 | 50 Hz |
| BaseRX ID | 4 | PPS | per cent | 0.1 | unsigned 16 | 50 Hz |
| BaseRX ID | 6 | Program SW | P1 to P8 | 1 | unsigned 8 | not stated |
| BaseRX ID | 7 | Virtual clutch | per cent | 1 | unsigned 8 | not stated |
| BaseRX ID+1 | 0 | Actual engine torque | Nm | 1 | signed 16 | 50 Hz |
| BaseRX ID+1 | 2 | Maximum engine torque | Nm | 1 | signed 16 | 50 Hz |
| BaseRX ID+1 | 4 | Engine coolant temperature | 1 C per bit | 1 | unsigned 8 | 50 Hz |
| BaseRX ID+1 | 5 bit 0 | Upshift request | bit | 50 Hz | ||
| BaseRX ID+1 | 5 bit 1 | Downshift request | bit | 50 Hz | ||
| BaseRX ID+1 | 5 bit 2 | Brake pedal activate | bit | 50 Hz | ||
| BaseRX ID+1 | 5 bit 3 | Idle active | bit | 50 Hz | ||
| BaseRX ID+1 | 5 bit 4 | Kickdown activate | bit | 50 Hz | ||
| BaseRX ID+1 | 5 bit 5 | Handbrake | bit | 50 Hz | ||
| BaseRX ID+1 | 6 | Selector commands | 0x00 none, 0x01 P, 0x02 R, 0x04 N, 0x08 D | byte | 50 Hz |
The manual makes three distinctions on this stream. RPM and PPS are necessary parameters. MAP is necessary only if the ECU does not send actual engine torque; if it does send torque, MAP is not used. The maximum engine torque slot exists but is not used at present, so do not build logic on it.
And the torque 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.
v1 transmit
The v1 transmit pages describe three identifiers. The base ID and the base ID plus one each carry four 16 bit analogue channels, and the values are yours to define in the TCU. Their standard range is 0 to 5000.
| Frame | Offset | Data | Conversion | Range |
|---|---|---|---|---|
| Base ID (default H640) | 0:1 | Value defined in TCU | unsigned, most significant byte first | standard 0 to 5000 |
| Base ID | 2:3 | Value defined in TCU | unsigned, most significant byte first | standard 0 to 5000 |
| Base ID | 4:5 | Value defined in TCU | unsigned, most significant byte first | standard 0 to 5000 |
| Base ID | 6:7 | Value defined in TCU | unsigned, most significant byte first | standard 0 to 5000 |
| Base ID+1 (default H641) | 0:1 to 6:7 | Four more channels | unsigned, most significant byte first | standard 0 to 5000 |
The status sits at base ID plus two:
| Offset | Data | Type | Offset value | Range | Resolution |
|---|---|---|---|---|---|
| 0 | Gear | signed byte | 0 | -1 to 8 | 1 gear per bit |
| 1 | Oil temperature | unsigned byte | -40 | -40 to 215 | 1 C per bit |
| 2 | Program SW | unsigned byte | 0 | 1 to 8 | 1 per bit |
| 3 | Error code | unsigned byte | 0 | 0 to 255 | 1 per bit |
| 4 | FLAGS1 | bitfield | |||
| 5 | FLAGS2 | bitfield | |||
| 6 | Vehicle speed | unsigned byte | 0 | 0 to 510 | 2 km/h per bit |
| 7 | unused |
FLAGS1 and FLAGS2 are what the v2 transmit stream replaced with named parameters. They are still useful because they pack a lot of state into two bytes:
| Byte | Bit | Name | Meaning when set |
|---|---|---|---|
| FLAGS1 | 0 | Torque reduction | active while the transmission is upshifting |
| FLAGS1 | 1 | Safety mode | safety mode is active in the TCU |
| FLAGS1 | 2 | Parking | parking is active |
| FLAGS1 | 3 | Oil fan | oil fan is active |
| FLAGS1 | 4 | T brake | t brake is active |
| FLAGS1 | 5 | Brake solenoid | brake solenoid on |
| FLAGS1 | 6 | Neutral | neutral is active |
| FLAGS1 | 7 | Blip out | blip out is active |
| FLAGS2 | 0 | Automatic mode | automatic mode is active |
| FLAGS2 | 1 | Adaptation activation | adaptation is active |
| FLAGS2 | 2 | Hand brake | hand brake is active |
| FLAGS2 | 3 | Foot brake | foot brake is active |
| FLAGS2 | 4 | Line lock | line lock is active |
v1 receive
| Offset | Data | Conversion | Resolution |
|---|---|---|---|
| 0:1 | RPM | unsigned, most significant byte first | 1 rpm per bit |
| 2:3 | MAP | unsigned, most significant byte first | 1 kPa per bit |
| 4 | TPS (PPS) | unsigned byte, per cent | 0.5 per cent per bit |
| 5 | DBW | unsigned byte, per cent | 0.5 per cent per bit |
| 6:7 | Engine torque | signed, most significant byte first, Nm | 1 Nm per bit |
v1 against v2
| Item | v1 | v2 |
|---|---|---|
| Receive frames | one | two |
| MAP scaling | 1 kPa per bit | 0.1 kPa per bit |
| Throttle scaling | 0.5 per cent per bit, 8 bit | 0.1 per cent per bit, 16 bit |
| DBW channel | dedicated byte | not present in the receive stream |
| Engine torque position | bytes 6:7 of the single frame | offset 0 of the second frame |
| Torque handoff code | not documented | 0x8000 or 0x7FFF to force internal calculation |
| Selector commands | not present | byte 6 of the second frame |
| Shift requests | not present | bits 0 and 1 of byte 5, second frame |
| Coolant temperature | not present | byte 4 of the second frame |
| Transmit frames | three identifiers | four identifiers |
| Transmit rates | not stated on the page | 100 Hz, 40 Hz, 20 Hz and 100 Hz |
| Target engine torque | not present | BaseTX ID, offset 2 |
| Torque reduction percentage | not present | BaseTX ID, offset 4 |
| Shaft speeds and slip | not present | BaseTX ID+3 |
| Wheel torque | not present | BaseTX ID+1, offset 4 |
| Gear encoding | -1 to 8 | -2 parking, -1 reverse, 0 neutral, 1 to 8 |
| Vehicle speed | 8 bit, 2 km/h per bit | 16 bit, scale 16 |
| Analogue value channels | eight across two frames, standard 0 to 5000 | replaced by named engineering parameters |
Two practical consequences fall out of that table. If you have an existing v1 integration and you move to v2, your scale factors change for MAP, throttle and vehicle speed, and your torque register moves to a different frame. If you are starting fresh, build on v2 and treat v1 as legacy.
Frequently asked questions
What is the difference between TCU standard 6 and TCU standard 7? Standard 6 is the v1 receive stream: one frame with RPM, MAP, TPS, DBW and engine torque. Standard 7 is the v2 receive stream: two frames with finer scaling, shift requests and selector commands.
What is the default transmit base ID? The v1 transmit page lists a default of H640 and is configurable. The v2 pages show the base ID as a variable and do not state a default.
How do I detect a gear change on CAN? Use the gear shift flag on the first v2 transmit frame. The manual notes it is active during a change even when torque reduction is not active.
What value means "no torque reduction"? On the first v2 transmit frame, target engine torque sends 0x800, which the manual annotates as 2048 Nm, and the torque reduction percentage sends 0x00.
How do I tell the TCU to use its own torque calculation? Send 0x8000 or 0x7FFF in the actual engine torque slot of the v2 receive stream.
Is vehicle speed different between generations? Yes. v1 uses an 8 bit value at 2 km/h per bit, giving a 0 to 510 range. v2 uses a 16 bit value with a scale of 16.
Next step
If you are mapping one of these streams into an ECU, tell us which generation you are on, which controller is at the other end and what you need on the bus. We will work through the frame plan with you before you buy parts.
Stream definitions, scales and flag assignments in this article are taken from the TurboLamik official manual (manual.turbolamik.eu), TCU stream v1 and v2 transmit and receive pages, with ZF published data for the 8HP family.
