|
|
| Line 1: |
Line 1: |
| ==Introduction== | | {| class="wikitable" style="width: 100%;" |
| | | |+ |
| With a professional device lineup, telltale information (dashboard indicators) from heavy-duty vehicles can be read remotely to identify a variety of issues. New feature of Diagnostic Trouble Code (DTC) reading will help to narrow down the specific faults happening in vehicles.
| | ! style="width: 20%; border: 1px solid white; border-bottom: 2px solid #0054A6; background: white; color: #0054A6; text-align: center;" |FIRMWARE VERSION |
| | | ! style="width: 20%; border: 1px solid white; border-bottom: 2px solid #0054A6; background: white; color: #0054A6; text-align: center;" |RELEASE DATE |
| With {{{model}}} you can read 2 types of DTC messages based on J1939 protocol:
| | ! style="width: 60%; border: 1px solid white; border-bottom: 2px solid #0054A6; background: white; color: #0054A6; text-align: left;" |CHANGES |
| | | |- |
| *DM1 – Communicates currently present faults
| | | style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: center; vertical-align: center; background: white;" |<span class="mw-headline" id="04.01.00.Rev.08">{{{fw|'''04.02.00.Rev.05'''}}}</span><br /> |
| *DM2 – Reports stored faults
| | | style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: center; vertical-align: center; background: white;" |{{{release_date| 2026-04-02}}} |
| | | | style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" | |
| {{{model}}} is able to read DM codes and pass them to the server in IO element. When active DM1 messages are present on the CAN line, they are broadcast frequently. The {{{model}}} device stores these codes in its internal memory and transmits only newly detected DTC codes.
| | '''New Features:''' |
| | | *'''NEW!''' Added BLE sensor error codes. |
| DM2 messages are not streamed, but instead, they must be requested.
| | *'''NEW!''' GNSS Augmentation and PAP+CHAP GPRS authentication added. |
| | | *'''NEW!''' Added possibility to configure saving/not saving last known coordinate into flash. |
| ==Functionality Description== | | *'''NEW!''' Added PCB Temperature IO. |
| | | *'''NEW!''' Added new GNSS IO - Status Value. |
| This functionality is available from Firmware version '''03.01.02.rev.06''' or higher.
| | '''Improvements:''' |
| | | *Improved CAN Odometer reading and sending. |
| For proper functionality, the device requires ignition to be active. Source of ignition and voltage level can be selected from '''System''' tab.
| | *Improved modem initiation after restart. |
| | | *Improved Manual Geofence handling in low speed. |
| Ignition has to be active for at least 14 sec to start generating the DTC list. If ignition is turned off, the device will clean all DM1 and DM2 codes and functionality will not be working.
| | *Improved restoring coordinates from flash algorithm. |
| | | *Improved ''fwstats'' command response restart section. |
| [[File:DTC_Ignition.png]]
| | *Improved Total Mileage maximum value, which now can be more than 1 million. |
| | | *Improved BLE communication with iOS over GATT. |
| After the device is connected to the Configurator, there will be '''DM1 / DM2''' tab made available. There is a configurable DM1 / DM2 Data source parameter. This parameter selects the CAN source based on which device will parse DM data from. Based on selected data source, device will also call a request for DTCs.
| | *Improved Accelerometer analysis methods. |
| | | *Improved maximum DOUT off duration on idling event. |
| '''Note:''' The functionality is completely separated from the FMS source.
| | *Improved internal file management for faster operation. |
| | | *Improved CAN adapter connection state detection. |
| [[File:DTC Data source selection.png]]
| | *Improved validation for the range of “Distance Since Refuel” values. |
| | | *Improved calculation logic for distance-based parameters. |
| *NONE – Device will not use any CAN as data source
| | *Improved fluctuations in “Distance Since Refuel” readings. |
| *CAN1 – Device will use CAN1 as data source
| | *improved Operator Ban List. |
| *CAN2 – Device will use CAN2 as data source
| | *Improved GNSS Jamming. |
| *BOTH – Device will use CAN1 and CAN2 as data source
| | *Stability improvements. |
| | | '''Resolved issues:''' |
| Bellow '''Data source''' parameters there is a list of configurable IOs
| | *Resolved Trip Odometer on startup showing Total Odometer value. |
| | | *Resolved Func WD no send not working for backup server. |
| [[File:DTC Configurable IOs.png]]
| | *Resolved immobilizer authorization status after restart. |
| | | *Resolved DOUT/DOUT3 control via ignition feature. |
| „DTC DM1“ and “DTC DM2“ shows the last DTC that has been detected. „Active DM1 List“ and „Active DM2 List“ provides a list of all active DTCs for a given source.
| | *Resolved keyword setting over BT for configurator. |
| | | *Resolved issue with GNSS reconfiguration to QZSS. |
| Example of generating DM1 / DM2 list: To register DM1 code, it is required to send a command using (pgn 0xFEFA). Device will first check if such DTC code exist in the system (MCUID and CAN Source has to be unique for each DTC). Otherwise, DTC will be rejected.
| | *Resolved issue with BLE Hidden mode visibility. |
| | | *Resolved program number reset via major FW update. |
| [[File:DTC Configurator outputs.png]]
| | *Resolved [LVCAN] Presence flagging trace spamming in log. |
| | | *Resolved issue with misleading firmware status after update. |
| <span style="color:green;">9D000301:<span style="color:blue;">01:<span style="color:red;">01
| | *Resolved issue when "Beacon Presence" parameter did not show value. |
| *<span style="color:green;">9D000301</span> – DTC in hexadecimal format
| | *Resolved issue with duplicate GSM status update after device restart. |
| *<span style="color:blue;">01</span> – MCU source that reported the DTC
| | '''Fixes:''' |
| *<span style="color:red;">01</span> – Device CAN source used (00 - CAN1, 01 - CAN2)
| | *Fixed reset conditions for Total Odometer calculations. |
| | | *Fixed incorrect handling of “Distance Since Refuel” in non-OBD compliant modes. |
| <span style="color:green;">9D000302:<span style="color:blue;">02:<span style="color:red;">01
| | *Fixed signed integer issue in HV Battery Lifetime Energy data. |
| *<span style="color:green;">9D000302</span> – DTC in hexadecimal format
| | *Fixed modem initialization issue when SIM PIN is required. |
| *<span style="color:blue;">02</span> – MCU source that reported the DTC
| | *Fixed time synchronization issue. |
| *<span style="color:red;">01</span> – Device CAN source used (00 - CAN1, 01 - CAN2)
| | *Fixed NTP ''timesync'' getting stuck. |
| | | *Fixed Abnormal altitude spam when GPS is not stable. |
| Based on configured „Priority“, „Event Only“ and „Operand“ device will add this parameter to record.
| | *Fixed Vehicle speed always being 255. |
| | | *Fixed Advanced beacon names appear incorrectly in configurator. |
| [[File:DTC Terminal logs.png]]
| | *Fixed RFID, BLE RFID IOs operand value. |
| | | *Fixed HV battery parameter unit conversion. |
| To remove one of the DTC from DM1 list, DM2 code (pgn 0xFEFB) is required. Device will check if the sent DTC code exists in the system (MCUID and CAN Source has to be unique for each DTC). If sent DTC does not exist in the system, it will be rejected.
| | *General Fixes |
| | | |- |
| Based on previous example, sending DTC 9D000301 with MCUID 01 on CAN2, device remove this DTC from the system, as the result, this DTC is removed from „Active DM1 List“ and added to the „Active DM2 List“.
| | |} |
| | |
| [[File:DTC Configurator outputs 2.png]]
| |
| | |
| Log example:
| |
| | |
| [[File:DTC Terminal logs 2.png]]
| |
| | |
| That DTCs will be added to record and would be accessible on server. Data on server need to be converted from HEX to ASCII.
| |
| | |
| [[File:DTC Outputs from server.png]]
| |
| | |
| '''39443030303330323A30323A30313B''' -> (after conversion from hex to ANSCII) '''9D000302:02:01'''; | |
| | |
| '''39443030303330313A30313A30313B''' -> (after conversion from hex to ANSCII) '''9D000301:01:01'''; | |
| | |
| ==DM1/DM2 Message Structure==
| |
| | |
| '''DM1''' is a J1939 diagnostic message used to broadcast active faults and warning lamp status. Its structure is split into a header (lamp status) followed by one or more diagnostic trouble codes. Unlike most J1939 messages, DM1 has a variable length: if there are 0–1 active DTCs, it fits in a single CAN frame, while 2 or more DTCs require a multi-frame message with additional DTC entries added. | |
| | |
| [[File:DM1 and DM2 Message Structure.png]]
| |
| | |
| The first 2 bytes form the lamp status header, which is shared across all DTCs. Each lamp uses 2-bit values to indicate status (off/on), along with flash signals defining how the lamp blinks (slow or fast). These signals are interpreted collectively across ECUs, with a central controller typically deciding the final lamp behavior based on the most severe reported condition.
| |
| | |
| Each DTC contains four key components:
| |
| *'''SPN(''Suspect Parameter Number)''''' - Identifies the faulty subsystem. | |
| *'''FMI(''Failure Mode Identifier)''''' - Describes the type of failure. | |
| *'''CM(''SPN Conversion Method)''''' - Indicates the encoding method. | |
| *'''OC(''Occurrence Count)''''' - Counts how often the fault has occurred.
| |
| | |
| These elements provide detailed, structured information about vehicle faults while supporting both standardized and proprietary diagnostics.
| |
| | |
| ==DM1 Lamp Status and Flash Signals==
| |
| | |
| The '''DM1 (Diagnostic Message 1)''' in the '''J1939''' protocol reports active '''Diagnostic Trouble Codes (DTCs)''' and controls vehicle warning indicators. It defines the behavior of the '''Malfunction Indicator Lamp (MIL)''' and other warning lamps, which can be off, on solid, or flashing, depending on the severity and priority of detected faults. Flashing typically signals a more urgent or severe condition, while a solid light indicates an active but less critical issue.
| |
| | |
| The first byte represents the status of four indicator lamps:
| |
| | |
| *'''PL (Protect Lamp)''' - DTC's indicate non-electronic subsystem issue. | |
| *'''AWL(Amber Warning Light)''' - DTC's indicate a non-critical issue that does not warrant stopping the vehicle. | |
| | |
| *'''RSL(Red Stop Lamp)''' - DTC's indicate a critical issue that warrants stopping the vehicle immediately. | |
| | |
| *'''MIL(Malfunction Indicator Lamp)''' - At least one DTC indicates emissions related issue. | |
| | |
| Each lamp is encoded using 2 bits, allowing four possible states: '''off, on, slow flash, and fast flash'''. This compact encoding means all lamp states are conveyed within a single byte, with each pair of bits mapped to a specific lamp in a fixed order. These lamp states directly inform the operator about the severity and urgency of active faults.
| |
| | |
| DM1 encodes warning lamp information in its first 2 bytes, combining both lamp status and flash behavior. Each lamp is represented by two 2-bit fields—one in byte 1 (status) and one in byte 2 (flash).
| |
| | |
| To decode, split each byte into 2-bit segments and map each pair to its corresponding lamp. The final behavior is determined by combining status and flash (e.g., ON + fast flash = rapidly blinking warning).
| |
| | |
| ==Global and Manufacturer SPN Codes==
| |
| | |
| ===Global-Level SPN codes===
| |
| | |
| Standard codes are defined by the SAE J1939 standards and are recognized across all compliant vehicles and equipment. The SPNs for these codes fall within the range of '''1 to 24,324''' representing widely used parameters such as engine speed, coolant temperature, or oil pressure. FMI values are standardized, describing specific failure patterns such as high voltage, circuit open, or out-of-range conditions.
| |
| | |
| Because they are standardized, these codes are universally interpretable by any compliant diagnostic tool without requiring manufacturer-specific references.
| |
| | |
| ===Manufacturer-Level SPN codes===
| |
| | |
| Manufacturer-level or proprietary codes are reserved for OEM-specific faults that are not defined in the J1939 standard. These allow manufacturers to monitor unique components, systems, or operational conditions that are specific to their equipment.
| |
| | |
| The SPNs for proprietary codes typically occupy the high end of the 19-bit field, ranging from '''516,096 to 524,287'''. FMI values may be standard or custom, but the meaning of the SPN is defined by the manufacturer. Accurate interpretation requires access to OEM documentation, as these codes are not universally defined or interpretable.
| |
| | |
| ==Functionality Block Diagram==
| |
| Graphic representation of '''DM1''' and '''DM2''' functionality:
| |
| | |
| [[File:DTC Functionality blok diagram.png]]
| |