The CANable: a small USB to CAN adapter


The CANable is now available for purchase on the Protofusion store! More information is available on the CANable website.

The CANable is a hardware clone of Eric Evenchick’s CANtact project, an open-hardware USB to CAN adapter compatible with socketcan. I took his design and reworked the hardware to be a bit more suitable for my personal needs, with a screw terminal instead of a DB9 connector and a much smaller PCB.

The design is open-source hardware and the schematic is nearly identical to CANtact except CANable uses the STM32L042’s onboard high speed oscillator, has a micro-USB connector, and has a smaller 3.3v regulator.

Ethan is a computer engineer and open source hardware/software developer from Michigan. He enjoys AVR and linux development, photography, mountain biking, and drinking significant amounts of home-roasted coffee. Find out more at

Tagged with: , , ,
Posted in Projects
22 comments on “The CANable: a small USB to CAN adapter
  1. cbjamo says:

    Nice board! I’d be interested in some, depending on the price each 5-10 units. Has the switch to the internal oscillator caused any problems? or is it stable enough to not matter?

    • It hasn’t caused me any issues so far. I plan on testing at 1M next week and I’ll see how it holds up. The internal 48MHz PLL is trimmed from the USB module so I don’t anticipate having any issues (and, for what it’s worth, USB is more timing-sensitive than CAN). I’ll post something here if I encounter any issues!

  2. Fredrik says:


  3. yue says:

    Could I ask you use which software layout?

    • Yup, the design is in Eagle. CANtact is actually in KiCad and I wanted to fork it using the same cad software, but I haven’t had time to become familiar with KiCad yet!

  4. Hey, i’ve made a mod of you module. I hope this is ok?

    At the FabLab Karlsruhe (Germany) we build an Automation System based on CAN. We use RJ45 for 2 CAN busses and 24V.

    The Mod:

    In the repo are also our CAN Nodes with the same STM M0.

    • David,
      Awesome work! Glad you were able to easily mod my design to meet your needs. What are you controlling with your automation system?

    • Our HW is nearly ready, but the Firmwares are in an early stage.

      The main plan was a Sensor Net. But now it will make much more. Sensors all over the Lab, outside and in all Maschines, Maschine Hour Counter, Maschine Access Control and the Access Control for our Rooms.

      We hope in 1 Year we have reached a Productive Stage 😀

  5. Robert Bahn says:

    Hey Ethan!
    i´m very excited in building my own CANable… I alredy bought the things i have to buy. Have you planned to produce some PCB´s for building it? It would be very find if i could get one. That would be great!
    Kindly regards from Germany
    Robert Bahn

  6. Povilas says:

    How not to burn it. Is there relevant resistors ? Is it Possible to connect RS232 to usb cable to read cars CAN messages. in example light sensor from Mercedes EIS. If I am correct.

  7. Dave says:

    Hi Ethan! Great board, just built my own and works great!
    However, I found an issue running my sw on a tablet.
    First I built my sw, on VS, running on Windows10 i3, all good here.
    I run same sw, on a W10 tablet (Atom) and it gets really laggy and slow.
    Could it be a problem related to the usb, driver? Buffers? The computer performance vs tablet’s? I have to say that processor load is not that high, just banging serial port with data both ways in/out.
    Any suggestions here are more than welcome!

  8. Excelent item. I am evaluating this as a substitute for Peak Systems PCAN-USB (at 1/0 the unit cost).
    Your product is a real winner.

    My test program is a Python 2.7 application.

    For others, a ‘small’ system configuration issue it took a whole day to track down. On an Lubuntu system running on an old Dell D610 I am setting up as a test bed system, the test program would appear to send severeal messages, then just stop. I tracked this to Pyserial write fail. I found a fourm,, where someone had a similar problem with other hardware in the generic CDC-ACM class. Turns out modemmanager was attaching (CDC-ACM communications interface) to the hardware and interfering. Solution, toss modemmanager:

    sudo apt-get –purge remove modemmanager

    Works like a charm.

  9. Dario says:

    Great project, i’m forking it and changing it to a mpci express board, i will share my experience, i like the crystal less design, would you please confirm that you had no issues with 1Mbit networks ? I will swap the transciver to a 3.3v (TI SN65HVD230

  10. liviu says:

    Hi, does this or the original cantact supports can packets with ID of 29bits?

  11. Johnny says:

    Hey Ethan, very cool project, thanks for that.
    I have a little problem. I can completetly track my canbuses via the candump command(standard & extended format).
    But when i try to cansend via the canable it stops working. It only recognizes the messages i sended but not the rest anymore. Bringing the interface down and up again does not work. The only way to get candump working is to disconnect and reconnect the power supply. Do you know what could cause this error?

    • Hey Johnny,

      There was an issue in the firmware that caused that problem. I’ve released a fixed version of the firmware alongside an online updater tool. You can try it out here; let me know if you run into any issues! Note that you must be running Google Chrome to use the online updater. Choose the “slcan” firmware in the dropdown (it should be the default)

      Ethan Zonca

    • Johnny says:

      Thanks for the reply Ethan. Unfortunately the update-site gives me the feedback, that no compatible device could be found. When i plug it in in boot-mode, my device manager recognizes a STM device in DFU mode, which should be correct. Do you know why the updater does not work?
      Greetings Johnny

    • Johnny says:

      Ok meanwhile i fixed the “NotFoundError: No device selected.” by going to “chrome://flags/#enable-experimental-web-platform-features” and enable the usb-backend. this way i could find the stmBootloader and it shows that it is paired. but afteri try to connect i get the “SecurityError: Access denied.”, although i run chrome as an admin.

  12. Burns says:

    Ethan, thanks a million for this board! It worked great for testing with a 5V CAN bus, but now I’m working with a 3.3V bus, and despite TI saying everything is compatible, the CANable does not seem to understand sent messages. Of course, I might have screwed up. Have you had any experience with CANable and 3.3V CAN?

    • Hey! Just saw your comment–sorry for the delayed response. The CANable should work great with a 3v3 bus, I have used it in several applications without issue. I would check the usual suspects: proper bus termination and the canbus bitrate. If you need more detailed help, you can email me directly at

    • Burns says:

      Thanks for the response, Ethan. No worries. I actually finally did get it to work. I think that my problem was actually with slcan and the filters I had set up in the 3.3V device. (I had required a 29-bit ID in the filter, but did not realize that I needed leading zeros in cansend to make it do 29-bits)

      Thanks again for the help…

1 Pings/Trackbacks for "The CANable: a small USB to CAN adapter"
  1. […] For more Details: The CANable: a small USB to CAN adapter […]

Leave a Reply

Your email address will not be published. Required fields are marked *