Fault Codes

The device continuously monitors its own configuration, its inputs and outputs, and the CAN buses it is attached to. When something is wrong it raises a fault — a structured record that can be read back with the configuration software or the data logger.

This page documents every fault the firmware can currently raise, what triggers it, and what to check when you see one.

Step-by-step diagnostic procedures for the precisely-defined codes are on the companion page: Fault diagnostics.

Related pages: CAN bus diagnostics, Configuration concepts, Common IO settings, Working with the CAN bus.

How a fault is structured

Every fault is reported as five fields plus an optional parameter list:

Field Meaning
Type Severity: Warning or Fault
Mode How the fault is currently latched — see Fault modes
Category Which subsystem raised it — see Categories
Fault ID The specific problem, unique within its category
Component ID Which input, output, pin, map, CAN channel or frame is affected

The Component ID is the most useful field for diagnosis — the Fault ID tells you what kind of problem occurred, the Component ID tells you where. Its meaning depends on the fault and is listed for every code in the tables below.

Fault IDs are shown in hexadecimal throughout this page, matching the configuration software display. The first digit of the Fault ID corresponds to its category, so a code is unambiguous on its own.

Fault modes

Mode Value Meaning
Intermittent 1 The condition has just been detected and has not yet persisted long enough to be confirmed
Continuous 2 The condition has been present continuously and is confirmed
Inactive 6 The condition was present earlier but is no longer active — a stored, historical fault

Monitored signals use a debounce before a fault is confirmed: the fault appears first as Intermittent, and is promoted to Continuous only if the condition is still present some time later. A brief glitch therefore shows up as Intermittent and never escalates.

The debounce period depends on the subsystem. Input watchdog and sensor supply faults escalate after roughly 200 processing cycles. CAN entity frame timeouts count missed frames instead, and escalate once more than six consecutive frame periods have been missed.

Configuration faults skip the debounce entirely — they are raised directly as Continuous, because a configuration is either valid or it is not.

Active and inactive faults

When a monitored condition clears, the fault is not deleted. It is moved to Inactive so the event remains visible after the fact — this is what lets you find an intermittent wiring problem that was present during a drive but is gone by the time the vehicle is on the bench.

The configuration software reports the two counts separately, as Faults active/inactive.

Fault lifecycle

flowchart LR OK[No fault] -->|condition detected| INT[Intermittent] INT -->|condition persists| CONT[Continuous] INT -->|condition disappears| INACT[Inactive] CONT -->|condition disappears| INACT[Inactive] INACT -->|condition returns| CONT INACT -->|Clear faults| OK CONT -->|Clear faults| OK

A fault is identified by the combination of Category + Fault ID + Component ID. Raising the same combination twice does not create a second entry — the existing entry is updated. Two different inputs failing the same way therefore produce two separate faults, which is what you want when tracing a harness problem.

Important operational notes

  • Faults are held in RAM and are lost on power-down. They are not written to non-volatile memory, so a fault list must be read while the device is still powered from the session you are diagnosing. Cycling the ignition clears the list.
  • The fault table holds 32 entries. Once 32 distinct faults are present, further faults are discarded until the table is cleared. A badly broken configuration can fill the table on its own during startup and mask later run-time faults — fix configuration faults first, then re-check.
  • Clearing removes everything, both active and inactive entries. Active conditions are re-raised on the next processing cycle, so after a clear, any fault that comes straight back is a live problem.

Reading and clearing faults

Both PC applications read faults over the same device link:

  • Configuration software — the Faults view polls the device roughly five times per second while it is open and shows Type, Category, Fault ID, Component ID and Mode, plus a description. Clear faults empties the table.
  • Data logger — shows the same list as severity-coded cards, with a Read and a Clear all action.

Neither application resolves a fault code without this page: the description column is populated from a lookup table that is currently empty, so codes are displayed numerically. Use the tables below to interpret them.

Fault categories

Category Value Raised by When
Configuration 1 Configuration and calibration parsing At startup, when the configuration is loaded
Input watchdog 2 Input monitoring Continuously, while running
Output watchdog 3 Output drivers Continuously, while running
System 4 Device supplies and stored data At startup and continuously
CAN entity 32 CAN presets / ECU integrations At startup and continuously
CAN bus 33 CAN controllers Continuously, while running

Categories 17 (dual-clutch controller) and 18 (transmission) are defined in the protocol but are not raised by the current firmware — see Reserved codes.

Category 1 — Configuration faults

Configuration faults mean a requested element could not be applied. They are always Continuous. The affected element is not created — an input that failed to configure produces no value, and an output that failed to configure does not drive anything.

Most of these are raised once, while the configuration is being parsed at startup. The exception is the map tuner group (0x0035, 0x0036, 0x0039), which is raised at run time when the tuning tool requests a cell or variant that does not exist in the map — those appear while you are editing, not at startup.

These are the faults to resolve first: everything downstream depends on the configuration being valid.

Inputs

Code Name Component ID Meaning and what to check
0x0003 Input ID duplication Input ID Two inputs are configured with the same ID. Only the first is created. Give each input a unique ID.
0x0004 Input unknown type Input type value The configuration requests an input type this firmware does not implement. Usually a configuration built for a newer firmware — update the device.
0x0005 Multiple frequency inputs on a single pin Pin number More than one frequency input is assigned to the same physical pin. Only one is possible per pin.
0x0006 Frequency input does not exist Pin number A frequency input was requested on a pin that has no frequency-capable hardware. Check the pinout.
0x00A0 RBC input has zero inputs 0 A reflected-binary-code input is configured with no source inputs. Assign its bit sources.
0x00A1 RBC input has an unset source 0 One of the RBC bit sources refers to an input that does not exist — often an input that itself failed to configure.
0x00B0 Timed input has an invalid source 0 The source input of a timed input does not exist.
0x00C0 Compare input has an invalid source 0 One of the two inputs being compared does not exist.
0x00D0 Divide input has an invalid source 0 The numerator or denominator input does not exist.
0x00D1 Divide input has an unrecognised operation 0 The maths input's operation is not one the firmware implements. Firmware 2.1 and later; before that an unhandled operation registered nothing instead of faulting.
0x00E0 Map input has an invalid source 0 The input feeding a map input does not exist.
0x00E1 Map input has an invalid map size 0 The referenced map has no usable axis data.
0x00F0 Mux input selector is unset 0 A multiplexer input has no selector input assigned.
0x00F1 Mux input source is unset Source index The multiplexer source at this index does not exist.
0x0015 Data logger channel duplication Logger channel Two data logger channels share the same ID. Only the first is recorded.

When the Component ID is 0, the fault does not identify which element failed — check every input of that type in the configuration.

Outputs

Code Name Component ID Meaning and what to check
0x0013 Output ID duplication Output ID Two outputs share the same ID. Only the first is created.
0x0014 Multiple outputs on a single pin Pin number More than one output is assigned to the same physical pin.
0x001F Output unknown type Output type value The configuration requests an output type this firmware does not implement. Update the device firmware.
0x0081 Power output does not exist Pin number A power (solenoid) output was requested on a pin that has no power stage. Check the pinout.
0x0082 Analog output does not exist Pin number An analog output was requested on a pin without a DAC.
0x0083 Digital output does not exist Output number A digital output was requested on a pin that cannot drive one.
0x04D4 PWM output channels exhausted Pin number More PWM outputs were requested than the output driver provides. Reduce the number of PWM outputs.

Unassigned mandatory elements

The transmission drivers check their mandatory inputs, outputs and maps when the configuration is applied, and raise these when one is missing. This is the most common fault on a first install — the driver refuses to run and the transmission will not engage a gear.

Code Name Component ID Meaning and what to check
0x0001 Input not set Input ID A mandatory input is unassigned. The Component ID identifies which one.
0x0002 Input ID out of range Input ID The configuration refers to an input index the device does not have.
0x0011 Output not set Output ID A mandatory output is unassigned. Thirteen outputs are mandatory on the OEM gateways — see the configuration pages.
0x0012 Output ID out of range Output ID The configuration refers to an output index the device does not have.
0x0031 Map not set Map ID A mandatory map is unassigned.
0x0032 Map ID out of range Map ID The configuration refers to a map index that does not exist.
0x0041 Parameter not set Parameter ID A required numeric parameter is zero or negative. Raised by the OEM gateways for diff ratio (ID 401) and wheel diameter (ID 402). This one is a warning — the transmission still runs, but the speed conversion is skipped and road speed degrades. See Vehicle & wheel speed.

The mandatory sets differ per driver, and vehicle speed is mandatory on the PDK gateway but not on the 8HP one: 8HP · PDK.

Calibration

Calibration faults mean the device's stored calibration does not match the configuration being loaded — usually a configuration built for a different hardware variant.

Code Name Component ID Meaning and what to check
0x0021 Invalid ADC calibration Calibration index The analog input calibration entry is missing or out of range.
0x0022 Invalid DAC calibration Calibration index The analog output calibration entry is missing or out of range.
0x0023 Invalid digital input calibration Calibration index The digital input calibration entry is missing or out of range.
0x0024 Invalid digital output calibration Calibration index The digital output calibration entry is missing or out of range.
0x0025 Invalid PWM output calibration Calibration index The PWM output calibration entry is missing or out of range.

If several of these appear together, the device is running a configuration intended for different hardware. Verify the device variant before continuing.

Maps and map tuners

Code Name Component ID Meaning and what to check
0x0033 Map ID duplication Map ID Two maps share the same ID. Only the first is created.
0x0034 Map tuner ID duplication Map tuner ID Two map tuners share the same ID.
0x0035 Map tuner label index out of range Map tuner ID The tuner references a label position that does not exist in the map.
0x0036 Map tuner index out of range Map tuner ID The tuner references a cell outside the map's dimensions.
0x0037 Map X axis not monotonic Map ID X-axis breakpoints are not strictly increasing. Interpolation requires a rising axis — correct the axis values.
0x0038 Map Y axis not monotonic Map ID Y-axis breakpoints are not strictly increasing.
0x0039 Map tuner variant not found Map tuner ID The tuner refers to a map variant that is not present in the configuration.

See Scaling and maps for axis requirements.

CAN configuration

These faults mean a CAN element could not be attached to a bus. The usual root cause is a single mistake: a frame, input, output or preset assigned to a CAN channel that is not enabled in the configuration. Enable the bus, or move the element to a configured one.

Code Name Component ID Meaning and what to check
0x0051 CAN input on an unconfigured bus CAN channel An input is assigned to a CAN channel that is not enabled.
0x0053 CAN preset on an unconfigured bus Handler index A CAN preset/entity is assigned to a channel that is not enabled.
0x0054 Multiple presets on a single bus Handler index More than one CAN preset is assigned to the same bus. Only one preset may own a bus.
0x0055 Standard input frame on an unconfigured bus Handler index An 11-bit receive frame is assigned to a channel that is not enabled.
0x0056 Extended input frame on an unconfigured bus Handler index A 29-bit receive frame is assigned to a channel that is not enabled.
0x0057 Standard output frame on an unconfigured bus Handler index An 11-bit transmit frame is assigned to a channel that is not enabled.
0x0058 Extended output frame on an unconfigured bus Handler index A 29-bit transmit frame is assigned to a channel that is not enabled.
0x0059 Failed to add standard input frame CAN channel The controller rejected an 11-bit receive filter — typically more receive frames than the controller has filter slots.
0x005A Failed to add extended input frame CAN channel The controller rejected a 29-bit receive filter, for the same reason.
0x005B Failed to create CAN input CAN channel A CAN input could not be created on this channel.
0x005C Wrong handler for frame count Handler index Internal inconsistency between a preset and the frames assigned to it — usually a corrupted or partially updated configuration. Re-upload it.
0x005D Failed to configure input frame CAN frame ID A receive frame could not be configured. The Component ID is the CAN identifier of the frame concerned.
0x005E Wrong CAN bus ID CAN channel The configuration references a CAN channel number this hardware does not have.
0x005F Invalid CAN handler Handler index A CAN element references a preset that does not exist.

Category 2 — Input watchdog faults

The input watchdog checks configured inputs against their expected range while the device is running, and reports the input by ID. It is inhibited while the ignition input is low or the battery voltage is below 8 V, so cranking does not generate spurious faults.

Every fault in this category carries the Input ID as its Component ID — for an analog or frequency input. A CAN bus input can also have a fault window, and its faults land in this category too, but the identifier they carry is not set from the configuration, so it does not point back at the channel. Identify those from the fault window you configured and what the datalogger was showing.

Code Name Applies to Trigger and what to check
0x0101 ADC value lower than expected Analog inputs The value is below the configured fault minimum. Check the sensor and its ground path.
0x0102 ADC value higher than expected Analog inputs The value is above the configured fault maximum. Check the sensor and its supply.
0x0103 ADC short to ground Analog inputs The reading is at the very bottom of the range — a shorted signal wire or a failed sensor.
0x0104 ADC short to 5 V Analog inputs The reading is at the very top of the range, above the configured maximum — signal shorted to the sensor supply.
0x0111 Frequency input voltage below limit Frequency inputs The DC voltage on the input pin — not the frequency — is below the configured fault voltage low limit. Check the sensor type, the pull-up/pull-down setting, and the sensor supply.
0x0112 Frequency input voltage above limit Frequency inputs The DC voltage on the input pin is above the configured fault voltage high limit.
0x0113 Frequency input short to ground Frequency inputs The input pin voltage is pinned at the bottom of its range.
0x0114 Frequency input short to 5 V Frequency inputs The input pin voltage is pinned at the top of its range.

The four frequency codes monitor the DC voltage on the input pin, not the measured frequency — a frequency value that is simply wrong raises nothing. The distinction between an out of range fault (0x0101, 0x0102, 0x0111, 0x0112) and a short fault (0x0103, 0x0104, 0x0113, 0x0114) is how far the reading is from the valid band. A short fault is raised when the value is pinned at a supply rail, which points at the harness rather than at the sensor's calibration. Out-of-range limits come from the fault minimum and maximum you set on the input — see Common IO settings.

Category 3 — Output watchdog faults

Output faults are detected by the current-controlled and voltage-controlled output drivers. The Component ID is the output pin number.

Code Name Trigger and what to check
0x0203 Output resistance out of specification The measured load resistance is outside the expected window for this output. A partially shorted or wrong-specification solenoid, or corroded connections adding resistance.
0x0204 Output open circuit The driver commanded the output fully on during adaptation and measured essentially no current. The load is disconnected — check the connector, the wire, and the solenoid winding.

Both are detected during the output adaptation phase that runs after ignition-on, and resistance monitoring is only performed when it has been enabled for that output.

Category 4 — System faults

System faults concern the device itself rather than the configuration. All are raised with Component ID 0.

Sensor supply

Code Name Trigger and what to check
0x0301 5 V sensor supply out of specification The 5 V sensor supply has sagged below roughly 4.64 V. Usually an overloaded supply — too many sensors, or one sensor drawing excessive current.
0x0302 5 V sensor supply short to ground The 5 V sensor supply has collapsed below roughly 0.05 V. A dead short on the sensor supply wire.

While either fault is active, input range checking is suspended — with a bad reference every analog reading would be wrong, so the input watchdog would otherwise raise a fault on every sensor at once. Fix the supply first; input faults can only be assessed once it is back in range.

Stored data

Code Name Trigger and what to check
0x03F1 No calibration data The device has no valid calibration. Startup halts here — the device raises this fault and stops, so no configuration is loaded and nothing runs. The device must be re-calibrated.
0x03F2 No configuration data No valid configuration is stored. Upload a configuration.
0x03F3 No adaptation data Both the main and backup adaptation copies failed their checksum. Adaptation restarts from defaults; expect the first drive cycle to relearn.
0x03F4 Adaptation backup resynchronised The backup copy did not match the main copy and has been rewritten automatically. Self-healing — no action required.
0x03F5 Adaptation checksum notice Raised on devices with no backup segment whenever adaptation data is present. Due to an inverted check it fires when the checksum is valid, so it does not indicate a problem — see diagnostics.

0x03F3 is informational after a firmware update or a first power-up. If it returns on every start, the storage is failing or power is being removed before the device finishes writing.

Category 32 — CAN entity faults

A CAN entity (or preset) is a packaged integration with a specific ECU or transmission — it knows which frames to expect and which to send. These faults report problems with that traffic. See Working with the CAN bus.

Code Name Component ID Trigger and what to check
0x2001 Missing frame Frame index within the preset An expected frame has not arrived within its timeout. The most common CAN fault in service: the sending ECU is off, on a different bus, at a different baud rate, or not transmitting that frame.
0x2002 Wrong frame CAN identifier, or frame index A frame arrived but its contents did not match what the preset expects — wrong length, or wrong ECU variant. Check that the selected preset matches the actual ECU.
0x2005 Failed to create entity Internal element index The preset could not allocate the frames it needs, usually because the bus already has other elements consuming its filter slots. Reduce the number of separately configured frames on that bus.

For 0x2001, the Component ID is the preset's own frame index, not the CAN identifier — which frame that is depends on the preset in use. Confirm with a CAN analyzer which expected frame is absent; see CAN bus diagnostics.

Category 33 — CAN bus faults

These come directly from the CAN controller's error state, and describe the physical bus rather than the message content. The Component ID is the CAN channel number.

Code Name Meaning
0x2101 Bus off The controller has exceeded its error limit and removed itself from the bus. Nothing is transmitted or received on that channel until it recovers.
0x2103 Protocol warning The error counters have crossed the warning threshold — errors are accumulating but the bus is still operating.
0x2104 Error passive The error counters have crossed the passive threshold. The controller can still communicate but no longer signals errors actively. This is a late warning before bus-off.
0x2105 Stuff error Bit-stuffing violation — noise, or a baud rate mismatch.
0x2106 Form error A frame's fixed-format field was malformed.
0x2107 Acknowledge error A transmitted frame was not acknowledged by any other node. Very often this means the device is alone on the bus, or the other node is silent.
0x2108 Bit 1 error A recessive bit was transmitted but read back as dominant — commonly a short to ground or a stuck-dominant node.
0x2109 Bit 0 error A dominant bit was transmitted but read back as recessive — commonly an open circuit or missing termination.
0x210A CRC error A received frame failed its checksum.
0x210B CAN controller startup failed The CAN controller did not initialise. This is a hardware or wiring-level failure of the controller itself, not a bus condition.

For 0x210B, the Component ID is encoded as (0x100 × channel) + stage, where the stage indicates how far initialisation progressed. Report the raw value when raising a support request.

The practical order of interpretation is: 0x2107 first, since a bus with no acknowledging node produces it constantly and cascades into the others; then 0x2101/0x2104, which indicate the bus has already degraded; then the individual bit and frame errors, which point at wiring and termination. Each error type maps to a physical cause in CAN bus diagnostics.

Quick reference — first checks by category

You see Look at
Any Category 1 code The configuration itself. Fix these before diagnosing anything else — the affected element does not exist at run time.
Category 2 on one input That input's harness and sensor.
Category 2 on many inputs at once The 5 V sensor supply — check for 0x0301/0x0302 first.
Category 3 The output's load: connector, wire, and solenoid.
Category 4 0x03Fx Stored data. Re-upload configuration or re-calibrate.
Category 32 Whether the other ECU is present and transmitting, and whether the correct preset is selected.
Category 33 Physical bus: termination, wiring, baud rate, and whether a second node exists to acknowledge.

Reserved codes

The following codes are defined in the device protocol but are not raised by the current firmware. They are listed so that the numbering is documented and so a code seen in a protocol capture can be identified. Seeing one of these in the field is not expected.

Category Codes Intended meaning
1 — Configuration 0x0052 CAN output on an unconfigured bus
1 — Configuration 0x0071, 0x0072 Controller failed to decode its configuration / failed to be created
2 — Input watchdog 0x0105, 0x0115 Analog and frequency input short to 12 V
3 — Output watchdog 0x0201, 0x0202, 0x0205, 0x0206 Output short to ground, short to 12 V, possible backfeed, overcurrent protection
4 — System 0x0311, 0x0312 Supply voltage too low / too high
17 — Dual-clutch controller 0x10010x10F0 Shift fork travel, synchronisation, and gear adaptation faults
18 — Transmission 0x1101, 0x1102, 0x11100x1112 Gear ratio and tailshaft speed plausibility faults
32 — CAN entity 0x2003, 0x2004 Frame received too slowly / too quickly
33 — CAN bus 0x2102 Protocol exception

Output short-circuit conditions (0x0201, 0x0202) are still protected against in hardware — the driver's protection acts whether or not a fault code is raised. What is absent is the diagnostic report, not the protection.

Limitations of the current implementation

Known constraints, so that fault data is not over-interpreted:

  • Faults are not stored across power cycles. Read them in the same power session in which the problem occurred.
  • The table is limited to 32 entries, after which new faults are silently dropped.
  • No timestamps or occurrence counts. A fault records that a condition occurred, not when or how often.
  • Additional parameters are not transmitted. The protocol reserves a parameter list for measured values, but the device does not currently send one; only the five identification fields are available.
  • Inactive faults are not distinguished per occurrence. A condition that comes and goes repeatedly appears as one entry in its most recent state.