This page documents the output configuration. The device supports the following outputs:


The decoding rules are defined by the provided CANmod.gps DBC file


The raw IMU output generates a lot of data. Consider disabling the output if not used (the IMU measurements are used internally to improve the position estimate regardless).

Trigger method

All output signals can be configured to either push (default) or poll using the trigger configuration field (set for each individual output signal).


Using the push trigger, an output signal is automatically transmitted on the bus with a constant period time. The base period time (specific for each signal, e.g. 100 ms), corresponds to the maximum push frequency for a signal. The period can be extended (the frequency reduced) using scaler field.


An output signal has a base output period of 100 ms (10 Hz). To obtain a 1000 ms (1 Hz) output period, the scaler value is set to 10.

\[p_\texttt{SCALED} = \texttt{scaler} * p_\texttt{BASE} = 10 * 100 = 1000 \texttt{ ms}\]


Using the poll trigger, an output signal is only transmitted on the bus when specifically requested to. An output signal is polled (requested) by transmitting a CAN-bus Remote-Transmission-Request (RTR) frame using CAN-bus ID configured for the specific output signal.


When creating the RTC frame, it is important to use the ID-format (standard or extended) matching the configuration. The DLC (data length) can be set to any value.


An output signal is configured with CAN-bus ID 1. The trigger is set to poll. Below trace illustrates how RTR frames are used to trigger response DT frames.

1 RTR 0001 Tx
2 DT  0001 Rx 99 99 99 99
3 RTR 0001 Tx
4 DT  0001 Rx 99 99 99 99
5 RTR 0001 Tx
6 DT  0001 Rx 99 99 99 99
7 RTR 0001 Tx
8 DT  0001 Rx 99 99 99 99

Signal encoding description file (dbc file)

The decoding rules described in dbc file format can be downloaded below:


The DBC file is configured to match the default output IDs. If the output IDs are changed in the configuration, the DBC file needs to be updated accordingly.


Related signals are packed in the same CAN-bus frame. All signals use an encoding method similar to what is used in SAE J1939-71:

  • Intel byte order (multi byte values are stored least significant byte first)

  • Values are encoded as unsigned integers which are then offset and scaled

By using encoding based on scaled and offset unsigned integers, the raw signal values can be decoded to physical values using a simple linear transformation:

\[y_{\texttt{PHY}} = a x_{\texttt{RAW}} + b,\]


  • \(y_{\texttt{PHY}}\): The signal physical value

  • \(x_{\texttt{RAW}}\): The signal raw value

  • \(a\): The signal scaling factor

  • \(b\): The signal offset

Above transformation can be described by *.dbc files[1].


Placing byte 0 to the right makes it easy to interpret Intel order data