

The MKS CANable V2 is a USB-to-CAN interface module designed by MakerBase. It enables seamless communication between a computer and devices on a CAN (Controller Area Network) bus. This compact and versatile device is widely used in applications such as robotics, automotive diagnostics, industrial automation, and IoT systems. Its compatibility with open-source tools and support for multiple CAN protocols make it a popular choice for developers and engineers working with CAN networks.








The following table outlines the key technical details of the MKS CANable V2:
| Specification | Details |
|---|---|
| Microcontroller | STM32F042F6 |
| CAN Protocol Support | CAN 2.0A and CAN 2.0B |
| USB Interface | USB 2.0 (Micro-USB connector) |
| CAN Transceiver | MCP2551 or equivalent |
| Baud Rate | Up to 1 Mbps |
| Power Supply | 5V via USB |
| Operating Temperature | -40°C to 85°C |
| Dimensions | 40mm x 20mm x 10mm |
| Firmware | Compatible with Candlelight firmware and other open-source CAN firmware |
The MKS CANable V2 features a simple pinout for connecting to the CAN bus. The table below describes the pin configuration:
| Pin Name | Description |
|---|---|
| CAN_H | CAN High signal line |
| CAN_L | CAN Low signal line |
| GND | Ground connection |
| 5V | Optional 5V power output for CAN bus |
Connect the CANable V2 to a Computer:
Connect to the CAN Bus:
CAN_H and CAN_L pins of the CANable V2 to the corresponding lines on your CAN bus.GND pin to the ground of the CAN bus for proper signal referencing.Install and Configure Software:
Send and Receive CAN Messages:
candump and cansend commands with SocketCAN.5V pin to supply power (if supported by your setup).The MKS CANable V2 can be used alongside an Arduino UNO to monitor or control a CAN bus. Below is an example of how to send a CAN message using the Arduino IDE and the CANable V2:
// Example: Sending a CAN message using MKS CANable V2 and Arduino UNO
// Ensure the CANable V2 is connected to the CAN bus and the computer
#include <SPI.h>
#include <mcp2515.h> // Include MCP2515 library for CAN communication
MCP2515 mcp2515(10); // Set CS pin to 10 for MCP2515
void setup() {
Serial.begin(115200); // Initialize serial communication
if (mcp2515.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) == CAN_OK) {
Serial.println("MCP2515 Initialized Successfully!");
} else {
Serial.println("Error Initializing MCP2515!");
while (1);
}
mcp2515.setMode(MCP_NORMAL); // Set MCP2515 to normal mode
}
void loop() {
struct can_frame canMsg;
canMsg.can_id = 0x123; // Set CAN ID
canMsg.can_dlc = 2; // Set data length
canMsg.data[0] = 0xAB; // First byte of data
canMsg.data[1] = 0xCD; // Second byte of data
if (mcp2515.sendMessage(&canMsg) == CAN_OK) {
Serial.println("Message Sent Successfully!");
} else {
Serial.println("Error Sending Message!");
}
delay(1000); // Wait 1 second before sending the next message
}
Device Not Recognized by Computer:
No Communication on CAN Bus:
Firmware Issues:
Data Corruption or Errors:
Q: Can I use the MKS CANable V2 with Windows, Linux, and macOS?
A: Yes, the device is compatible with all major operating systems. Use appropriate tools like SocketCAN (Linux) or candleLight (Windows/macOS).
Q: Does the MKS CANable V2 support CAN FD?
A: No, the MKS CANable V2 supports only CAN 2.0A and CAN 2.0B protocols.
Q: How do I update the firmware?
A: Put the device into DFU mode by shorting the BOOT pins and use DFU-util to flash the firmware.
Q: Is the device isolated?
A: No, the MKS CANable V2 does not provide galvanic isolation. Use an external isolator if required.