| Close |
|
This firmware is ranked under the Top Ten in the embedded category on oosmetrics.
|
|
|
![]() |
| Show Full Size |
![]() |
| Show Full Size |
![]() |
| Show Full Size |
|
|
|
| 19F50C02: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F (FDF, BRS) |
| Firmware | Payload | Transferred over USB | Efficiency |
|---|---|---|---|
| Legacy Official Slcan | 21 byte | Payload x 2 + 2 = 44 byte | 21 / 44 = 48 % |
| ElmüSoft Slcan 2.5 | 21 byte | Payload x 2 + 2 = 44 byte | 21 / 44 = 48 % |
| Legacy Official Candlelight | 21 byte | CAN FD not implemented | 0 % |
| ElmüSoft Candlelight 2.5 | 21 byte | Payload + 2 = 23 byte | 21 / 23 = 91 % |
| USB Full Speed Transfer |
![]() |
| Show Full Size |
|
String ID: 0xEE, Signature: "MSFT100", VendorCode: 0x20
Interface: 0, Version: 1.00, MS Compatible ID: "USB\MS_COMP_WINUSB"
Interface: 1, Version: 1.00, MS Compatible ID: "USB\MS_COMP_WINUSB"
Interface: 0, Property: "DeviceInterfaceGUIDs", Type: MultiString, Data: "{c15b4308-04d3-11e6-b3ea-6057189e6443}\0\0"
Interface: 1, Property: "DeviceInterfaceGUIDs", Type: MultiString, Data: "{c25b4308-04d3-11e6-b3ea-6057189e6443}\0\0"
|
|
String ID: 0xEE, Signature: "MSFT100", VendorCode: 0x20
Interface: 0, Version: 1.00, MS Compatible ID: "USB\MS_COMP_WINUSB"
Interface: 1, Version: 1.00, MS Compatible ID: "USB\MS_COMP_WINUSB"
Interface: 0, Property: "DeviceInterfaceGUIDs", Type: MultiString, Data: "{c15b4308-04d3-11e6-b3ea-6057189e6443}\0\0"
Interface: 1, Error requesting MS OS Extended Properties descriptor.
The device has a buggy firmware. The driver for the firmware update (DFU) interface cannot be installed automatically.
|
c15b4308-04d3-11e6-b3ea-6057189e6443 it will not be found.
| Driver Registry Correction |
![]() |
| Show Full Size |
|
|
| File Name | Adapters | Quartz | Clock | Channels | LED Pins | USB Speed | BOOT0 |
|---|---|---|---|---|---|---|---|
| STM32G431-Slcan2.5-Multiboard.dfu | MKS Makerbase DSD Tech, Walfront |
None | 160 MHz | Single | A0,A15 | Full Speed 12 MBit |
Bad |
| STM32G431-Candlelight2.5-Multiboard.dfu | |||||||
| STM32G431-Slcan2.5-OpenlightLabs.dfu | Openlight Labs | None | 160 MHz | Single | B11,A15 | Full Speed 12 MBit |
Bad |
| STM32G431-Candlelight2.5-OpenlightLabs.dfu | |||||||
| STM32G431-Slcan2.5-Jhoinrch.dfu | Jhoinrch RH02 Plus Jhoinrch RH02 Elite |
25 MHz since 2026 |
160 MHz | Single | A0,A15 | Full Speed 12 MBit |
OK |
| STM32G431-Candlelight2.5-Jhoinrch.dfu | |||||||
| STM32G431-Slcan2.5-OleksiiSolo.dfu | Oleksii Solo | 8 MHz | 160 MHz | Single | A5,A6 | Full Speed 12 MBit |
Worst |
| STM32G431-Candlelight2.5-OleksiiSolo.dfu | |||||||
| STM32G431-Slcan2.5-WeActSudioV2.dfu | WeActSudio USB2CANFD v2 |
16 MHz | 160 MHz | Single | A1,A0 | Full Speed 12 MBit |
OK |
| STM32G431-Candlelight2.5-WeActSudioV2.dfu | |||||||
| STM32G0B1-Slcan2.5-WeActSudioV1.dfu | WeActSudio USB2CANFD v1 |
16 MHz | 60 MHz | Single | A1,A0 | Full Speed 12 MBit |
OK |
| STM32G0B1-Candlelight2.5-WeActSudioV1.dfu | |||||||
| STM32G473-Slcan2.5-OleksiiDual.dfu | Oleksii Dual | 8 MHz | 160 MHz | Dual | A5,A6 A3,A4 |
Full Speed 12 MBit |
Worst |
| STM32G473-Candlelight2.5-OleksiiDual.dfu |
|
The HUD ECU Hacker Firmware Programmer can flash any STM32 processor, also in older CANable 1.0 adapters.
Flashing the CANable is no risk. The processor has a hard-coded bootloader that cannot be destroyed.
When after connecting the USB cable the LED's are not blinking alternatingly, the firmware is not working.
This may happen after uploading the wrong firmware. In this case you can simply flash it again.
Therefore it is recommended to backup the stock firmware to disk before flashing.
With the button 'Download' you can store the current firmware into a DFU file.
This allows you to always revert the adapter to it's factory default.
|
| LED's | Meaning | LED's | Meaning |
|---|---|---|---|
![]() | The adapter is ready and closed. | ![]() | 1.) The adapter is open: No CAN bus traffic.
2.) The adapter is in Firmware Update mode.
3.) The USB bus is suspended in sleep mode. |
1.) The adapter is open: RX CAN bus traffic.
2.) The adapter is closed: USB command received. |
The adapter is blocked after a severe error
buffer overflow or bus off. |
||
| The adapter is open: TX CAN bus traffic. | 1.) After Power-On both LED's flash alternatingly.
2.) Also when you click the button 'Identify'. |
||
| The adapter is open: RX+TX CAN bus traffic. | |||
|
|
|
|
Send always 8 data bytes
If you send classic packets with less than 8 bytes they are padded to 8 bytes,
while CAN FD packets are always padded to the next possible data length.
Show all packets on the bus
This checkbox turns off all filters and also the combobox "ID Length" is ignored.
No matter if you selected '11 Bit' or '29 Bit', you will see all packets on the bus.
Automatic Retransmission if no ACK received
If this checkbox is On the processor tries to send a packet until it is achnowledged.
After trying it 128 times in vain the processor goes into error state Bus Passive.
If the checkbox is Off the processor sends the packet in One shot mode.
If the packet is not acknowledged the processor does not send it again.
Show sent packets in Trace if ACK received
When a packet was acknowledeged you see the 'echo' of the Tx packet in olive color.
You see the exact timestamp when the packet has been acknowledged.
If the packet is not acknowledged you will not see any echo and the Tx LED does not flash.
This allows you to verify that a packet has been sent and received successfully.
The CANable 2.5 firmware is the first firmware where this is implemented correctly.
The legacy Slcan firmware did not implement this feature.
The legacy Candlelight firmware showed a fake echo, also for not acknowledged packets.
Suppress repeating identical CAN bus packets
CAN bus traffic is often very repetitive.
Here you can hide all packets that have already been shown with the same ID and data bytes.
You see each unique packet only once.
|
| Nominal: 500k baud, 87.5%; Data: 2M baud, 75.0%; Perfect match: Yes |
|
|
|
21:20:14.788Send Packet
21:20:14.78818EEFF01: 01 02 03 04 05 06 07 08 <—— this packet was sent successfully
21:20:14.79018EEFF01: 01 02 03 04 05 06 07 08 <—— this is the Tx echo
21:20:18.119Send Packet <—— send with auto-retransmission ON
21:20:18.11914A90022: 01 02 03 04 05 06 07 08 <—— this packet was not acknowledged
21:20:18.120Bus Active, Tx Errors: 8 <—— first error immediately
21:20:18.220Bus Passive, No ACK received, Tx Errors: 128 <—— second error after 100 ms
21:20:18.738Send Packet
21:20:18.73814A90022: 01 02 03 04 05 06 07 08 <—— this packet was not acknowledged
21:20:21.216Bus Passive, No ACK received, Tx Errors: 128
21:20:24.212Bus Passive, No ACK received, Tx Errors: 128 <—— same error repeated every 3 seconds
21:20:27.208Bus Passive, No ACK received, Tx Errors: 128
|
|
22:21:24.187Send Packet
22:21:24.187170AA3CB: 01 02 03 04 05 06 07 08
22:21:24.623Bus Passive, Bit stuffing error, Tx Errors: 128, Rx Errors: 8 <—— corruption while sending
22:21:27.618Bus Passive, Recessive bit error, Tx Errors: 128, Rx Errors: 8
22:21:30.367Bus Off, Frame format error, Tx Errors: 248, Rx Errors: 127 <—— corrupt packet received
|
|
Bus Passive, Tx Timeout, No ACK received, Tx Errors: 128
|
![]() |
| Show Full Size |
can0, can1,... individually.
kHostFrameLegacy.channel.Setup.wValue.| CAN channel | Control Requests | Packets via ElmüSoft | Packets via Legacy |
|---|---|---|---|
| 1 | Setup.wValue = 0 | USB interface 0 Endpoints 81 (IN), 02 (OUT) | USB interface 0 kHostFrameLegacy.channel = 0 |
| 2 | Setup.wValue = 1 | USB interface 2 Endpoints 83 (IN), 04 (OUT) | USB interface 0 kHostFrameLegacy.channel = 1 |
| 3 | Setup.wValue = 2 | USB interface 3 Endpoints 85 (IN), 06 (OUT) | USB interface 0 kHostFrameLegacy.channel = 2 |
| Sector | Start Address | End Address | Size | Content |
|---|---|---|---|---|
| 0 | 0x08000000 | 0x080007FF | 2kB | Firmware 35 kB |
| etc... | ||||
| 17 | 0x08008800 | 0x08008FFF | 2kB | |
| 18 | 0x08009000 | 0x080097FF | 2kB | unused empty |
| etc... | ||||
| 59 | 0x0801D800 | 0x0801DFFF | 2kB | |
| 60 | 0x0801E000 | 0x0801E7FF | 2kB | User Data Segment 03 |
| 61 | 0x0801E800 | 0x0801EFFF | 2kB | User Data Segment 02 |
| 62 | 0x0801F000 | 0x0801F7FF | 2kB | User Data Segment 01 |
| 63 | 0x0801F800 | 0x0801FFFF | 2kB | User Data Segment 00 |
|
23:32:21.06919858A01: 0C 00 00 00 F0 18 51 0E (FDF, BRS)
23:32:21.073Measured transceiver chip delay: 131 ns
23:32:21.07319858A01: 0C 00 00 00 F0 18 51 0E (FDF, BRS)
|
ttyACM device on Linux.
| Command | Condition | Version | Meaning | Comment |
|---|---|---|---|---|
| "A1\r" | Closed | legacy | Enable Auto Retransmission | Retransmit packets until they are acknowledged |
| "A0\r" | Closed | legacy | Disable Auto Retransmission | Enable one shot mode |
| "C\r" | Open/Closed | legacy | Close the adapter | Shut down CAN connection, reset to default settings |
| "L7\r" | Open/Closed | 100 | Enable bus load reports every 700 ms |
L1: Report interval= 100 ms, L50: Interval= 5 seconds
Valid range of interval: 0 ... 100 (max 10 seconds)
|
| "L0\r" | Open/Closed | 100 | Disable bus load reports | |
| "O\r" | Closed | legacy | Open adapter | Connect to CAN bus with the mode set by M0 / M1 |
| "ON\r" | Closed | 100 | Open in normal mode | Ignore settings with M0 / M1 |
| "OS\r" | Closed | 100 | Open in silent mode | Ignore settings with M0 / M1 |
| "OI\r" | Closed | 100 | Open in internal loopback mode | Ignore settings with M0 / M1 |
| "OE\r" | Closed | 100 | Open in external loopback mode | Ignore settings with M0 / M1 |
| "V\r" | Open/Closed | legacy | Return detailed info: Version/Board/MCU/Limits | Returns seven key/value pairs. See Version Info |
| Set Modes | Condition | Version | Meaning | Comment |
| "M1\r" | Closed | legacy | Enable silent mode | The next command "O\r" will open in bus monitoring mode |
| "M0\r" | Closed | legacy | Disable silent mode | The next command "O\r" will open in normal mode |
| "MA\r" | Closed | 100 | Enable Auto Retransmission mode (same as A1) | Retransmit packets until they are acknowledged |
| "Ma\r" | Closed | 100 | Disable Auto Retransmission mode (same as A0) | Enable one-shot mode |
| "MD\r" | Open/Closed | 100 | Enable Debug Messages | Firmware sends string messages to the host |
| "Md\r" | Open/Closed | 100 | Disable Debug Messages | Do not send debug messages |
| "ME\r" | Open/Closed | 100 | Enable CAN Error reports | CAN errors are sent to the host |
| "Me\r" | Open/Closed | 100 | Disable CAN Error reports | CAN error reporting is off (deprecated!) |
| "MF\r" | Open/Closed | 100 | Enable advanced Feedback mode | Detailed error feedback is sent (see next table) |
| "Mf\r" | Open/Closed | 100 | Enable legacy Feedback mode | Legacy Feedback is sent (CR / BEL) |
| "MI\r" | Open/Closed | 100 | Enable Identify mode | The Rx/Tx LED's start blinking |
| "Mi\r" | Open/Closed | 100 | Disable Identify mode | The Rx/Tx LED's stop blinking |
| "MM\r" | Open/Closed | 100 | Enable Tx echo report marker | Report all successfully sent packets with a marker |
| "Mm\r" | Open/Closed | 100 | Disable Tx echo report marker | No Tx Echo report (also Tx marker = 00 sends no echo) |
| "MR\r" | Open/Closed | 100 | Enable 120 Ω Termination Resistor | Supported only by few boards |
| "Mr\r" | Open/Closed | 100 | Disable 120 Ω Termination Resistor | |
| "MS\r" | Open/Closed | 100 | Enable ESI report | Report the ESI flag of received CAN FD messages |
| "Ms\r" | Open/Closed | 100 | Disable ESI report | No ESI report |
| "MDEFMS\r" | Open/Closed | 100 | Enable Debug, Error, Feedback, Echo, ESI reports | You can set all modes at once in one command |
| Set Baudrates | Condition | Version | Meaning | Comment |
| "S0\r" | Closed | legacy | Set nominal baudrate 10 kbaud | Samplepoint 75% |
| "S1\r" | Closed | legacy | Set nominal baudrate 20 kbaud | Samplepoint 75% |
| "S2\r" | Closed | legacy | Set nominal baudrate 50 kbaud | Samplepoint 75% |
| "S3\r" | Closed | legacy | Set nominal baudrate 100 kbaud | Samplepoint 75% |
| "S4\r" | Closed | legacy | Set nominal baudrate 125 kbaud | Samplepoint 75% |
| "S5\r" | Closed | legacy | Set nominal baudrate 250 kbaud | Samplepoint 75% |
| "S6\r" | Closed | legacy | Set nominal baudrate 500 kbaud | Samplepoint 75% |
| "S7\r" | Closed | legacy | Set nominal baudrate 800 kbaud | Samplepoint 75% (may not be precise) |
| "S8\r" | Closed | legacy | Set nominal baudrate 1 Mbaud | Samplepoint 75% |
| "S9\r" | Closed | legacy | Set nominal baudrate 83.333 kbaud | Samplepoint 75% |
| "SA\r" | Closed | 103 | Set nominal baudrate 75 kbaud | Samplepoint 75% (may not be precise) |
| "SB\r" | Closed | 103 | Set nominal baudrate 62.5 kbaud | Samplepoint 75% |
| "SC\r" | Closed | 103 | Set nominal baudrate 33.333 kbaud | Samplepoint 75% |
| "SD\r" | Closed | 103 | Set nominal baudrate 5 kbaud | Samplepoint 75% |
| "Y0\r" | Closed | 100 | Set CAN FD data baudrate 500 kbaud | Samplepoint 75% deprecated |
| "Y1\r" | Closed | 100 | Set CAN FD data baudrate 1 Mbaud | Samplepoint 75% deprecated |
| "Y2\r" | Closed | legacy | Set CAN FD data baudrate 2 Mbaud | Samplepoint 75% deprecated |
| "Y4\r" | Closed | 100 | Set CAN FD data baudrate 4 Mbaud | Samplepoint 75% deprecated |
| "Y5\r" | Closed | legacy | Set CAN FD data baudrate 5 Mbaud | Samplepoint 75% deprecated |
| "Y8\r" | Closed | 100 | Set CAN FD data baudrate 8 Mbaud | Samplepoint 50% (75% does not work) deprecated |
| "s4,69,10,7\r" | Closed | 100 | Set nominal bitrate: Prescaler=4, Seg1=69, Seg2=10, Synchr. Jump Width=7 | Set 500 kbaud, Samplepoint 87.5% See Samplepoint |
| "y4,9,10,7\r" | Closed | 100 | Set data bitrate: Prescaler=4, Seg1=9, Seg2=10, Synchr. Jump Width=7 | Set 2 Mbaud, Samplepoint 50% See Samplepoint |
| Host Filters | Condition | Version | Meaning | Comment |
| "F7E8,7FF\r" | Closed | 100 | Host mask filter for only one ID: 7E8 (11 bit) |
You can set up to 8 mask filters separated by semicolons.
11 bit and 29 bit filters can be mixed.
|
| "F18DA00F1,1FFF00FF\r" | Closed | 100 | Host mask filter for 256 IDs: 18DAXXF1 (29 bit) | |
| "F7E0,7F0;720,7F0;730,7F0\r" | Closed | 100 | 3 host filters for 16 IDs each: 7EX, 72X and 73X | |
| "f\r" | Closed | 100 | Clear all host filters | Remove all host filters |
| Bridge Filters | Condition | Version | Meaning | Comment |
| "F:P0A=7E0,7F0>1\r" | Open/Closed | 104 | Set Pass filter Nº 0x0A = forward to channel 1 | Forward CAN ID's 7E0 ... 7EF |
| "F:B12=7E5,7FF>1\r" | Open/Closed | 104 | Set Block filter Nº 0x12 = block on channel 1 | Block CAN ID 7E5 |
| "f:07\r" | Open/Closed | 104 | Clear filter Nº 0x07 (Pass or Block) | Remove current filter at index 7 |
| "f:FF\r" | Open/Closed | 104 | Clear all bridge filters | Turn off bridge mode |
| Special Commands | Condition | Version | Meaning | Comment |
| "*Boot0:Off\r" | Closed | 100 | Disable pin BOOT0 of STM32G4xx processors | See Hardware Misdesign |
| "*Boot0:?\r" | Open/Closed | 100 | Request status of pin BOOT0 | returns "+1\r" if enabled or "+0\r" if disabled |
| "*DFU\r" | Open/Closed | 100 | Enable pin BOOT0 and enter DFU mode | If feedback = FBK_ResetRequired: Reconnect USB cable! |
| "*Flash:XX=Data\r" | Open/Closed | 102 | Writes data to flash memory user segment XX | "*Flash:00=48656C6C6F\r" writes "Hello" to segment 0 |
| "*Flash:XX?\r" | Open/Closed | 102 | Reads data from flash memory user segment XX | "*Flash:00?\r" returns "+48656C6C6F\r" |
| Transmit Packets | Condition | Version | Meaning | Comment |
| "txxxxxxxxx\r" | Open | legacy | Send classic packet with 11 bit ID | Bits: None See Slcan Packets |
| "Txxxxxxxxx\r" | Open | legacy | Send classic packet with 29 bit ID | Bits: IDE |
| "rxxxxxxxxx\r" | Open | legacy | Send Remote Transmission Request with 11 bit ID | Bits: RTR |
| "Rxxxxxxxxx\r" | Open | legacy | Send Remote Transmission Request with 29 bit ID | Bits: RTR + IDE |
| "dxxxxxxxxx\r" | Open | legacy | Send CAN FD packet, 11 bit, no baudrate switch | Bits: FDF |
| "Dxxxxxxxxx\r" | Open | legacy | Send CAN FD packet, 29 bit, no baudrate switch | Bits: FDF + IDE |
| "bxxxxxxxxx\r" | Open | legacy | Send CAN FD packet, 11 bit with baudrate switch | Bits: FDF + BRS |
| "Bxxxxxxxxx\r" | Open | legacy | Send CAN FD packet, 29 bit with baudrate switch | Bits: FDF + BRS + IDE |
| CAN Channel | Condition | Version | Meaning | Comment |
| "command\r" | ---- | legacy | Destination is CAN channel 1 | All adapters |
| "&command\r" | ---- | 101 | Destination is CAN channel 2 | Only for multi-channel adapters |
| "$command\r" | ---- | 101 | Destination is CAN channel 3 | Only for multi-channel adapters |
S and Y for CAN FD. They do not allow to chose the correct sameplpoint.s and y.MF the firmware operates in legacy feedback mode.| Legacy Feedback | Version | Meaning | Comment |
|---|---|---|---|
| "\r" (CR character) | 105 | The command has executed successfully | Sent if advanced feedback mode is OFF |
| "\x07" (BEL character) | 105 | The command has failed | Sent if advanced feedback mode is OFF |
| Advanced Feedback | Version | Meaning | Comment |
| "#\r" | 100 | The command has executed successfully | Requires advanced feedback mode (MF) |
| "#1\r" | 100 | The command is invalid | Requires advanced feedback mode (MF) |
| "#2\r" | 100 | A parameter of the command is invalid | Requires advanced feedback mode (MF) |
| "#3\r" | 100 | The command reqires the adapter to be open | Requires advanced feedback mode (MF) |
| "#4\r" | 100 | The command reqires the adapter to be closed | Requires advanced feedback mode (MF) |
| "#5\r" | 100 | The HAL from ST Microelectronics reported an error | Requires advanced feedback mode (MF) |
| "#6\r" | 100 | The feature is not supported by the board / not implemented | Requires advanced feedback mode (MF) |
| "#7\r" | 100 | The CAN Tx Buffer is full (no ACK received, 67 packets waiting) | Requires advanced feedback mode (MF) |
| "#8\r" | 100 | CAN bus is off (a severe CAN error has occurred) | Requires advanced feedback mode (MF) |
| "#9\r" | 100 | Sending packets is not possible in silent mode | Requires advanced feedback mode (MF) |
| "#:\r" | 100 | The required baudrate has not been set | Requires advanced feedback mode (MF) |
| "#;\r" | 100 | Programming the Option Bytes in flash memory failed | Requires advanced feedback mode (MF) |
| "#<\r" | 100 | Please reconnect the USB cable, a hardware reset is required | Requires advanced feedback mode (MF) |
| "#=\r" | 102 | A parameter is outside the valid range | Requires advanced feedback mode (MF) |
| Response | Version | Meaning | Comment |
| "+Text\r" | 100 | The firmware sends a plain text response to a command | Used by commands "*Boot0:?\r" and "V\r" |
| "+Hex Data\r" | 102 | The firmware sends a hex byte response to a command | Used by command "*Flash:XX?\r" |
| Event | Version | Meaning | Comment |
| ">Message\r" | 100 | The firmware sends a debug message (plain text) | Requires Debug Messages to be enabled |
| "Exxxxxxxx\r" | 100 | The firmware reports the CAN Error Status. See Slcan Errors | Requires CAN Error Reports to be enabled |
| "L27\r" | 100 | The firmware has calculated a bus load of 27%. If the bus load is zero, no report is sent. | Requires Bus Load Reports to be enabled |
| "M3C\r" | 100 | The firmware reports the Tx echo marker 0x3C. See Slcan Packets | Requires Tx Echo Report markers to be enabled |
| Rx Packets | Version | Meaning | Comment |
| "txxxxxxxxx\r" | legacy | Received classic packet with 11 bit ID | Bits: None See Slcan Packets |
| "Txxxxxxxxx\r" | legacy | Received classic packet with 29 bit ID | Bits: IDE |
| "rxxxxxxxxx\r" | legacy | Received Remote Transmission Request with 11 bit ID | Bits: RTR |
| "Rxxxxxxxxx\r" | legacy | Received Remote Transmission Request with 29 bit ID | Bits: RTR + IDE |
| "dxxxxxxxxx\r" | legacy | Received CAN FD packet, 11 bit, no baudrate switch | Bits: FDF |
| "Dxxxxxxxxx\r" | legacy | Received CAN FD packet, 29 bit, no baudrate switch | Bits: FDF + IDE |
| "bxxxxxxxxx\r" | legacy | Received CAN FD packet, 11 bit with baudrate switch | Bits: FDF + BRS |
| "Bxxxxxxxxx\r" | legacy | Received CAN FD packet, 29 bit with baudrate switch | Bits: FDF + BRS + IDE |
| CAN Channel | Version | Meaning | Comment |
| "response\r" | legacy | Origin is CAN channel 1 | All adapters |
| "&response\r" | 101 | Origin is CAN channel 2 | Only for multi-channel adapters |
| "$response\r" | 101 | Origin is CAN channel 3 | Only for multi-channel adapters |
|
+Board: Multiboard\t
MCU: STM32G431\t
DevID: 1128\t
Firmware: 2427156\t
Slcan: 103\t
Clock: 160\t
Channels: 1\t
Quartz: No\t
Limits: 512,256,128,128,32,32,16,16\t
HAL: 1.2.5\t
Serial: 206249E3946306550\r
|
| Key | Value | Version | Comment |
|---|---|---|---|
| Board | Multiboard | 100 |
This defines for which board the firmware was compiled.
It may not match the real hardware if the user has uploaded the wrong firmware.
|
| MCU | STM32G431 | 100 |
This defines for which processor the firmware was compiled.
It may not match the real processor if the user has uploaded the wrong firmware.
|
| DevID | 1128 | 100 |
This is the "Device ID" of the real processor. Convert 1128 to hex and you get 0x468.
Each processor serie is identified by a unique "Device ID".
In the Reference Manual from ST Microelectronics you find these identifiers:
0x468 = Category 2 devices (STM32G431, STM32G441)
0x469 = Category 3 devices (STM32G471, STM32G473, STM32G474, STM32G483, STM32G484)
0x479 = Category 4 devices (STM32G491, STM32G4A1) |
| Firmware | 2427156 | 100 |
The legacy firmware has returned completely meaningless version numbers like "ba6b1dd".
Here you get a version number that indicates the date when the firmware was created.
Convert to hex and you get the BCD version 0x250914, which means 14th september of 2025. |
| Slcan | 103 | 100 |
This is the version of the Slcan module that you see in the tables above in column 'Version'.
Use the Slcan Version to detect which features are available in the firmware. |
| Clock | 160 | 100 |
The CAN clock is 160 MHz
You need this value to calculate Baudrate and Samplepoint |
| Channels | 1 | 101 |
The count of CAN channels (always 1, if not a multi-channel board). |
| Quartz | No | 101 |
'Yes' if the board has a quartz and the correct firmware has been uploaded.
'No' if the board has no quartz or the wrong firmware has been uploaded.
If the board has no quartz, the processor's RC oscillator with only 1% precision is used. |
| Limits | 512,256,128,128, 32,32,16,16 | 100 |
These 8 values are the upper limits for the bitrate commands 's' and 'y'.
Each processor has different limits for Prescaler, Segment1, Segment2 and Synchr. Jump Width.
Nominal baudrate: max Prescaler= 512, max Seg1 = 256, max Seg2= 128, max SJW = 128
FD Data baudrate: max Prescaler= 32, max Seg1 = 32, max Seg2= 16, max SJW = 16
You need these values to calculate Baudrate and Samplepoint |
| HAL | 1.2.5 | 103 |
The version of the HAL (Hardware Abstraction Layer) that the firmware uses. |
| Serial | 206249E3946306550 | 102 |
The serial number of the processor. STM guarantees that this is unique. |
| Direction | Packet | Slcan | Comment |
|---|---|---|---|
| Both | 18AABBCC: 11 22 33 44 55 | "T18AABBCC51122334455\r" | Classic, 29 bit ID |
| Both | 7E0: 11 22 33 44 55 66 77 88 99 AA BB CC | "d7E09112233445566778899AABBCC\r" | CAN FD, 11 bit, FDF |
| Receive | 7E0: 11 22 33 44 55 66 77 88 | "b7E081122334455667788S\r" | FDF, BRS, ESI |
| Transmit | 7E0: 11 22 33 44 55 66 | "t7E061122334455663F\r" | Marker = 3F (00 = no echo) |
| Both | 101: AA BB CC DD EE FF | "t1016AABBCCDDEEFF\r" | CAN channel 1 |
| Both | 101: AA BB CC DD EE FF | "&t1016AABBCCDDEEFF\r" | CAN channel 2 |
| Both | 101: AA BB CC DD EE FF | "$t1016AABBCCDDEEFF\r" | CAN channel 3 |
|
Tx: "t7E061122334455663F\r" <—— send packet with marker 3F
Rx: "#\r" <—— receive command feedback (Success)
Rx: "M3F\r" <—— receive echo marker 3F
|
| Digit | Meaning | Value |
|---|---|---|
| 1 | Bus Status |
'0' = Bus Active
'1' = Warning Level
'2' = Bus Passive
'3' = Bus Off
|
| 2 | Last Protocol Error |
'0' = None
'1' = Bit stuffing error
'2' = Frame format error
'3' = No ACK received
'4' = Recessive bit error
'5' = Dominant bit error
'6' = CRC error
|
| 3 + 4 | Firmware Error Flags |
0x00 = None
0x01 = Rx Failed
0x02 = Tx Failed
0x04 = CAN Tx buffer overflow
0x08 = USB IN buffer overflow
0x10 = Tx Timeout
Multiple flags may be combined
|
| 5 + 6 | Tx Error Count | 0 ... 255 errors |
| 7 + 8 | Rx Error Count | 0 ... 255 errors |
|
Here you see the initialization sequence sent manually to the adapter.
Use the RS232 Terminal in HUD ECU Hacker.
The baudrate that you enter to open the COM port is irrelevant.
The port runs always with maximum USB speed (12 MBit).
|
can0, can1,...
GS_DevFlagTimestamp the demo switches to firmware timestamps generated in the adapter.DFU_Detach to interface 1 (DFU) enables boot mode.DFU_GetStatus to check if execution was successful.DfuState_AppIdle the adapter will enter boot mode 300 ms later.DfuState_AppDetach you must show a message to the user to reconnect the USB cable.
TARGET_BOARDTARGET_MCUQUARTZ_FREQU and adapt system.c
sudo apt install build-essential gcc-arm-none-eabimake -s -f Make_G431_Candle_Multiboard
make.exe and mmkdir.exebin.D:\MakeSTM32 you must add D:\MakeSTM32\bin to the PATH variable:
Y0, Report error when sending FD packet in classic mode.S and Y. Fix of legacy Candlelight packet size.S to use samplepoint 75% instead of 87.5% which is more robust.eBoardFlags.ELM_DevFlagSendUsbBlobs.
High Quality Software from ElmüSoft |
| Desktop Organizer & Event Calendar
My program PTBSync (in english + deutsch) has an event calendar / scheduler with lots of features, calculates the holidays of 70 countries, can display multiple gadgets on the desktop (current weather, birthdays, moon phase, menstruation calendar, world clocks,...) pins notes on the desktop, replaces the primitive Windows trayclock and adds a detailed tooltip, synchronizes with an atomic clock, and much more. |
| ECU Scanner, ECU Hacker, ECU Tuner for motorbikes, cars, trucks, vessels
connects to ECU's (Engine Control Units) from motorbikes, cars and trucks, shows parameters, clears DTC's, has tuning for a Delphi ECU, has an ECU emulator, can analyze the CAN bus using cheap adapters, supports many protocols, has a sniffer and manual data injection for K-Line and CAN Bus, allows you to write your own macro scripts that communicate over K-Line and CAN Bus. |
| Oscilloscope Waveform Logicanalyzer
displays oscilloscope waveforms and has A/D converters, noise suppression, precise time measurement, logic analyzer with decoders for UART, SPI, I²C, CAN bus (also CAN FD) and chip-specific decoders. Can split half-duplex communication. Transfers signals over USB (SCPI) from the oscilloscope to the computer and remote controls the oscilloscope. It is open-source and you can extend it with new features. |
| Subtitle Tuner
calculates the display duration of the subtitles based on the count of characters in the text. This avoids that badly created subtitles disappear before you could read them. Can remove deaf texts, lyrics, italic/bold. Can resynchronize a subtile to a movie with different framerate or change the subtitle offset. |
| Secure Doorlock with RFID Cards
is a project with an RFID antenna and a Teensy processor that opens a door with Mifare Desfire cards or NFC smartphones. The RFID cards or smartphone passwords of up to 64 users can be stored in the flash memory. It is extremely secure because it uses strong encryption. A big battery assures that the door can be opened during a power failure. |
| Remote Control your Computer with Infrared
An infrared receiver and a Teensy processor allow to remote control the music player on your computer with any old remote control that you have from a TV, amplifier, DVD player, SAT tuner or whatever. The Teensy simulates a keyboard and sends keystrokes to the music player. |
| 3D Render and Editor Control in C#
A .NET control that can be easily implemented into System.Windows.Forms applications to display 3D graphs. The user can move and rotate the graph with the mouse and edit single points. Many display modes are available: 3D surface, 3D shapes, 3D lines, 3D objects, also animated 3D objects. |
| CAN FD adapter - CANable 2.5 Firmware Update - Candlelight & Slcan
I wrote two completely new firmwares for the CANable adapter with the STM32G431 processor (for example from MKS Makerbase). The official Slcan firmware has several issues and the official Candlelight firmware is complete crap. I fixed a ton of bugs and added several new features. HUD ECU Hacker fully supports these new features and comes with a firmware updater. |
| USB HID Touchscreen
A Teensy processor emulates keyboard, mouse and touchscreen at the same time to remote control a computer for automation purposes. |