What is OpenCAN?

OpenCAN is a software platform for interacting with various Controller Area Network (CAN or CANbus) devices. It provides an abstract C++ interface that can be used to control CAN devices. Support for specific devices can be written as plugins, and then loaded through a simple API call. Each component is cross-platform, enabling the efficient development of CAN software on Windows, Linux and Mac OS X.  And you are free to use and extend it according to the GNU Lesser General Public License (LGPL).

New version 0.8 to be released in July or early August 2014 with more features and support for more CAN devices.


Simplifies adding CAN support to software
Add new CAN devices without changing application code or recompiling
Write one set of code for multiple devices and/or OSes
Reduces maintenance time and cost
Enables backward and forward compatibility with CAN devices and APIs
OpenCAN is LGPL so you can use free and proprietary CAN drivers together


Supports Windows, Linux and Mac OS X
Light-weight and simple API encapsulation
API documentation using Doxygen
Device support can be compiled in or as dynamically-loaded plugins
Includes plugins for LinCAN and PCAN devices


Testbench, included in the OpenCAN distribution, is a GUI for monitoring and sending messages on a CAN network and is written with the OpenCAN API.


OpenCAN v0.7 source code: OpenCAN-0.7.tar.gz


Qt 4.6+ (
   The library only requires the QtCore component
   Testbench requires the QtGui component
CAN device with installed driver (support for LinCAN and PCAN devices included)
Windows XP/Vista/7, Linux or Mac OS X (32/64-bit)


OpenCAN is near production-ready. No issues are known to exist in the OpenCAN API core and plugins. Issues may remain in Testbench, but no major issues are known to exist. Unless critical, API changes will only be in the form of additions.

Current tasks are to:
  Fix any major issues that may come up
  Increase the flexibility of the binary compatibility between plugins
  Add more plugins to support more devices
  Possible feature additions to Testbench


OpenCAN is distributed under the GNU Lesser General Public License (LGPL) version 2.1.

Testbench is distributed under the GNU General Public License (GPL) version 3.0.

History Summary

09132011 v0.7 Added runtime support for switching between CAN 2.0b extended and standard
Autonomous message polling now completely empties the receive queue every poll
Fixed Windows PCAN plugin continually sending CAN messages
Fixed a compiler warning when using MingW on Windows
02162011 v0.6 Improved drawing speed of Testbench receive windows
Fixed Testbench crash when no plugins are loaded
Fixed PEAK PCAN plugin not setting baud rate in Windows
Fixed PEAK PCAN plugin connect status in Windows
Clarified plugin loading and added troubleshooting tips
02012011 v0.5 Improved support for multiple devices
Improved plugin and device information
Added support for changing baud rate in Testbench receive windows
Improved string processing efficiency by using Qt fast string concat
Testbench UI polish
Updated documentation and added compile documentation
08302010 v0.4 Added support for providing device and plugin info
Testbench UI overhaul and filter received messages
07292010 v0.3 Added support for user-friendly device descriptions
Small increase in performance from a change of data structures
07162010 v0.2 Removed delay in startup of PEAK PCAN Linux device to prevent crash on device startup (crash fixed in PEAK driver v6.20)
06182010 v0.1 Initial release