Skip to content
Karl Yamashita edited this page Dec 27, 2019 · 52 revisions

Welcome to the CAN-X wiki!

About Me

This CAN-X is a hobby of mine that i decided to start. Why? Because I've been using IntrepidCS Neo-VI Fire/Fire2 for many years, 15 years to be exact but recently due to job changes, I have not been in possession of a CAN bus analyzer. So I've decided to use hardware that I have lying around and wrote some firmware to turn a development kit into a CAN bus analyzer. I'm still in the process of finishing the software for Windows.

For those who don't know me, i used to work for PAC in Santa Ana, CA. The TR-7 was my very first product I designed for them. I was the one who designed the SWI-X, SWI-RC, OnStar interfaces, etc. I started reverse engineering the CAN bus starting maybe back in 2005. I worked on the Chrysler LSFTCAN and MS CAN bus before going on to GM's SWCAN. My tool of choice which was expensive but cheaper than Vector Tools is the Neo-VI Red/Fire/Fire2 with Vehicle Spy software.

Vehicle Spy 3 is good, but also too cluttered. There are many features that was not needed. But it is a big improvement over Vehicle Spy 2.

Description

CAN-X is a USB to CAN bus analyzer software that works using a couple hardware devices.

CAN-X was meant to be a simple program without all the bells and whistles. It's main purpose was to view data, add description names to the ArbId's. And to transmit a list of messages. I've seen layouts of other programs and i just don't see them being intuitive. This prompted me to design one to be better. Well at least for me. We all have our own preferences, lol.

CAN-X is still in the development stage. It is written in WPF in VS 2017. If there are bugs, please let me know. This version will be basic. A pro version is my next project.

What is working

  • Currently you can receive CAN bus messages. You can Right Click on a specific message to bring up a menu to save to Transmit or Receive Messages in Message Editor.
  • You can add to the Transmit Messages under Message Editor. Then in the Message Monitor you can click the send button. A green round icon will display to indicate where in the messages it was sent.
  • You can save the Project files Transmit and Receive messages in the Message Editor tab.
  • In the Edit Messages for Receive, you can add a description of an ID. When viewing messages the description will show on screen so you can identify that ID was sent on the CAN bus. You can also add notes as well.
  • You can change the baud rate by selecting the drop down menu. The BTR box will be filled with the appropriate CAN_BTR value.
  • You can Save the received messages as a CSV file which you can open in Excel for viewing.

What is being worked on next

  • Filter and masks
  • Listen only mode
  • Issues with Line count, Rx and Tx count when switching between Scroll and Non-Scroll mode.
  • It seems that the CANable device sends back the wrong baud rate value. But sending the baud rate when selecting the dropdown seems to work.
  • AutoTx transmit timing is not accurate. Depending on the rate the messages are being sent, they lag about 40ms ~ 100ms or more.
  • During debugging in Visual Studio the Received messages screen is ok, but when running stand alone the data flashes when lot of data is being received.

USB driver

This project uses this USB driver https://github.com/karlyamashita/HidUsb It's a separate project but CAN-X needs to reference this USB project. Or once your compile it, you can copy the UsbHid.dll to the CAN-X project and reference it instead.

Firmware

The firmware for the hardware can be found here https://github.com/karlyamashita/USB_to_CAN

Testing

I currently don't have access to the Fire2/VSPY3 so I have been using SocketCAN on my Linux Laptop using an inexpensive CAN interface that uses the native can0 network. I'm currently using a Python script to send and receive messages and to make sure the different baud rates work.

Clone this wiki locally