PEAK-System

Welcome to the PEAK-System LINUX Website

© 2014 PEAK-System Technik GmbH, Darmstadt, Germany - Last change: 2014-07-23
PEAK-System Website Down Driver Download Down Driver Download History

PCAN-Light for LINUX is the easy to use software interface for CAN hardware by PEAK-System.

The PCAN drivers for LINUX work with Kernel versions 2.4 up to 3.x The complete package is distributed under the GPL.

If you have any questions about the drivers please contact us.

There's a single API (Application Programming Interface) for all CAN interfaces. This simplifies the software development. The drivers are designed to work with CAN hardware by PEAK-System and 100 percent compatible hardware by OEM vendors. Take care when using third-party hardware, since the drivers use special functions.

Supported Hardware

PCAN-USB USB to CAN interface - one CAN channel
PCAN-USB Pro High-speed USB 2.0 interface with galvanic isolation for connecting up to 2 CAN and 2 LIN busses. Please note: Only the CAN device driver is available for Linux.
PCAN-USB Hub All-in-one USB Adapter for Communication through USB, CAN, and RS-232
PCAN-ExpressCard ExpressCard to CAN Interface - one or two CAN channels
PCAN-PC Card PC Card to CAN interface - one or two CAN channels
PCAN-cPCI CompactPCI to CAN interface - two or four CAN channels
PCAN-miniPCI Mini PCI to CAN interface - one or two CAN channels
PCAN-miniPCIe CAN interface for PCI Express Mini - one or two CAN channels
PCAN-PCI Express PCI Express to CAN interface - one, two, or four CAN channels
PCAN-PCI PCI to CAN interface - one or two CAN channels
PCAN-PCI/104-Express PCI/104-Express (PCI) to CAN interface - one or two CAN channels
PCAN-PC/104-Plus PC/104-Plus (PCI) to CAN interface - one or two CAN channels
PCAN-PC/104-Plus Quad Four-Channel CAN Interface for PC/104-Plus with galvanic isolation
PCAN-PC/104 PC/104 to CAN interface - one or two CAN channels
PCAN-ISA ISA to CAN interface - one or two CAN channels
PCAN-Dongle PC Parallel Port to CAN interface - one CAN channel
PCAN-OEM All OEM boards with CAN interfaces by PEAK-System
(DigitalLogic-PC/104 CAN cards, Kontron with CAN on board, etc.)

If you need technical information about the CAN hardware by PEAK-System go to www.peak-system.com.
If you you have any questions, send an e-mail to our LINUX team: linux@peak-system.com


Interested in CANopen® for LINUX?
We support the CANFestival project: http://canfestival.org. CANFestival is an open source CANopen® framework (GPLv2 & LGPLv2) and works with all CAN interfaces by PEAK-System (LINUX/Xenomai/RTAI/WIN32/Cygwin). CANFestival

Credits

We would like to thank our main developers Klaus Hitschler and Stéphane Grosjean for their excellent work! Also many thanks for the Socket CAN support and the feedback from Oliver Hartkopp and Wolfgang Grandegger. The Xenomai implementation (support only driver up to Version 6.2) was done by Edouard Tisserant and Laurent Bessard - thanks for the great job.


License Information

The driver is linked inside the kernel. This doesn't matter since the driver is GPL'd. However, if you like to customize the driver and distribute it then you must publish the source code of this modification. If you only use the driver's services from your user program it is the same situation like using kernel provided services from a user program. (Note that the driver's services are only of use through kernel services). It does not matter, if your user program is open or closed source and what licence, however. To ease access to the driver's services PEAK provides a library 'libpcan.so'. This library is LGPL'd and therefore can be linked to even closed source programs without any consequences. But if you modify the library you have to give back this modification to the community if you distribute the modified library.


Note to "pcan" users (versions >= 7.5) who want to migrate to mainline linux-can drivers

If you are using "pcan" Linux driver versions >= 7.5 and if you want to migrate to a new Linux system to take advantages of the new linux-can drivers that are part of Kernels >= 3.4, you MUST first uninstall the "pcan" driver (you'll need to be root):

$ cd peak-linux-driver-7.x
$ make uninstall

Uninstalling the "pcan" driver can be made before or after the system upgrade. You'll need to reboot your system, to have the linux-can drivers automatically loaded by the next system start.


IMPORTANT Note on Kernel Versions 2.6.25 and Up

The CAN Network subsystem PF_CAN (aka SocketCAN) became part of the Mainline Linux Kernel starting with version 2.6.25. For this reason the PEAK driver automatically compiles with the recommended netdev support, when CONFIG_CAN is set in the Kernel configuration (see NET=AUTO_NETDEV_SUPPORT setting in driver/Makefile). The automatic detection can furthermore be changed with NET=NETDEV_SUPPORT (force netdev) or NET=NO_NETDEV_SUPPORT (force chardev). To compile the PEAK Linux driver with the former (default) PEAK chardev interface, please invoke

make clean; make NET=NO_NETDEV_SUPPORT

See the /proc/pcan print:

chardev:

Kernel 2.6.24.7-92.fc8
===========================

*------------ PEAK-Systems CAN interfaces (www.peak-system.com) -------------
*--------------------------  Release_20080220_n  ----------------------------
*---------------- [mod] [isa] [pci] [dng] [par] [usb] [pcc] -----------------
*--------------------- 1 interfaces @ major 248 found -----------------------
*n -type- ndev --base-- irq --btr- --read-- --write- --irqs-- -errors- status
32    usb -NA- ffffffff 255 0x001c 00000000 00000000 00000000 00000000 0x0000

netdev:

Kernel 2.6.25.4-10.fc8
============================

*------------ PEAK-Systems CAN interfaces (www.peak-system.com) -------------
*--------------------------  Release_20080220_n  ----------------------------
*------------- [mod] [isa] [pci] [dng] [par] [usb] [pcc] [net] --------------
*--------------------- 1 interfaces @ major 248 found -----------------------
*n -type- ndev --base-- irq --btr- --read-- --write- --irqs-- -errors- status
32    usb can0 ffffffff 255 0x001c 00000000 00000000 00000000 00000000 0x0000

Attention!
When using the netdev driver interface, the chardev driver test tools ("cat /dev/pcanXX", "receivetest", "transmittest") will not work correctly. Receiving of messages won't be possible - these tools are only for the chardev driver.



Release Version 7.12

Driver Download Version 7.12 (23.07.2014)
Updates:
  • Moved physically installed processing out of the USB interrupt context
  • Fixed "Kernel NULL pointer dereference" occuring with netdev under high busload
  • chardev applications tasks are now unblocked when waiting for an event on a device that has been unplugged (errno = ENODEV)
  • Reworked a few things to detect the spurious interrupt problem with RT patches kernels in PCI code
  • Added two new module parameters ("irqmaxloop" and "irqmaxrmsg") for a better control how much time should pcan pass in each SJA1000 IRQ handler and how many CAN messages it can read from each rx queue (default values are 1 and 8 resp.)
  • Reworked SJA1000 ISR to save time in case of an error condition
  • Fixed in-tree (cross-)compilation issue by using EXTRA_CFLAGS in driver's Makefile instead of _CFLAGS
  • Fixed an old berlios.de link in the user manual
Download Download 7.12 tar.gz
Download Download Installation Info (PDF)

UpBack to the top


The History - Drivers from the past ...

Driver Download Version 7.11 (05.05.2014)
Updates:
  • Fix reading of Kernel version in driver's Makefile, especially when the version number doesn't match x.y.z strict formats. Now, versions like x.y, x.0y, x.y-name, x.y.0z, x.y.z-name are correctly handled
  • Fix errno handling in pcan-settings.c
  • Update documentation with info about linux-can PEAK-System mainline drivers and fix typos and (old) berlios.de references
Download Download 7.11 tar.gz
Download Download Installation Info (PDF)

Driver Download Version 7.10 (23.01.2014)
Updates:
  • Added support for PCAN-PCI Express OEM board
  • Handle USB error like BUSOFF to force application to restart
  • Handle usb core error in read callback (interrupt context) by properly closing the device instead of ignoring the error
  • Remove "PEAK-Systems" ending "s" to MODULE_DESCRIPTION string
  • Tested with 3.10 kernel
Download Download 7.10 tar.gz
Download Download Installation Info (PDF)

Driver Download Version 7.9 (15.08.2013)
This version ...
  • fixes CAN messages with a faulty DLC value greater than 8, and allows them to be processed correctly
  • fixes devices list management (use of mutex lock)
  • fixes display bug of usb can channel number (read /proc/pcan)
  • improves the way diagnostics are returned
  • includes changes concerning the function "create_proc_read_entry" that is deprecated from Kernel v3.9
  • has been tested with Kernel 3.10
Download Download 7.9 tar.gz
Download Download Installation Info (PDF)

Version 7.8 (31.01.2013)
Updates:
  • Support of future Kernel 3.9 linux-can
  • Include support of Kernel 3.7+ in driver/Makefile (version.h moved)
  • All Makefiles now support the DESTDIR variable
  • Driver "make install" doesn't remove vanilla linux-can driver "peak_pci" from memory anymore on Kernels < 3.4 (bug in "peak_pci" leads to Kernel crash); a request to reboot is shown instead
  • Build date and time added in /proc/pcan display
  • Added forgotten HW_ISA_SJA type when creating and removing nodes (udev didn't see device creation/removing)
  • Always force usb_clear_halt() on CAN BUSOFF for USB CAN interfaces (certain small frames could not be transmitted on the bus)
Download Download 7.8 tar.gz
Download Download Installation Info (PDF)

Version 7.7 (27.07.2012)
Updates:
  • Fixed compilation issues with Linux Kernel versions up to 3.5 (Thanks to Oliver Hartkopp)
  • PCAN-USB/USB Pro: Fixed an "undefined symbol" compilation issue (pr_err()) with (very) old Linux Kernels (2.6.22)
Download Download 7.7 tar.gz
Download Download Installation Info (PDF)

Version 7.6 (24.05.2012)
Updates:
  • Added support for PCAN-miniPCI, PCAN-miniPCIe, PCAN-PCI/104-Express, PCAN-PC/104-Plus, and PCAN-cPCI
  • Removed unused MPCIE_SUPPORT compilation option from Makefile
  • Fixed some compilation issues due to net_ratelimit() usage with old kernels
Download Download 7.6 tar.gz
Download Download Installation Info (PDF)

Version 7.5 (21.03.2012)
Updates:
  • Added support for Kernel v3.x
  • Added support for miniPCIe
  • Fixed wrong usage of /dev/NULL, replaced by /dev/null in driver/Makefile
  • Blacklisted the peak_xxx mainline drivers
  • Adapted usb_reset_endpoint() call to individual kernel versions
  • Fixed potential system crash by changing led timer mechanism to delayed work (PCAN-ExpressCard)
  • Improved endian handling
  • Improved can error handling
  • Handle possible fragmentation of rx messages (PCAN-USB/PCAN-USB Pro)
  • Added support for PCAN-miniPCIe (devid=8) and PCAN-PCI nextgen (devid=3)
  • Fixed potential crash if PCAN-ExpressCard (PCIeC) support is not defined and troubles occur when detecting the SJA1000 controller
  • Fixed potential issue when probing for SJA1000 in PELICAN mode
  • Fixed potential infinite loop waiting for an urb command to be submitted (PCAN-USB/PCAN-USB Pro)
  • Use more accurate time in ms
  • Fixed PCAN-USB FW 2.8 blocking issue
  • Removed cases of potential double BUSOFF transmission (PCAN-USB/PCAN-USB Pro), removed some unuseful delays
  • Added "uninstall" target to Makefiles to properly remove driver from the system
Download Download 7.5 tar.gz
Download Download Installation Info (PDF)

Version 7.4 (13.09.2011)
Update:
  • Removed any references to selecttest in test/Makefile (fixed 7.3 make error)
  • Fixed PCAN-USB Pro frame lost, when odd number of frames sent in between insmod/rmmod cycle (no problem occurs when the driver was not removed)
  • Added cancellation of calibration message on device/driver removing
  • Changed "CAN OFF" messages handling to channel closing rather than on device removing
Download Download 7.4 tar.gz
Download Download Installation Info (PDF)

Version 7.3
Update:
  • Better support of some older kernels (2.6.18 for example).
  • Fix - non - support of pc-card even if PCCARD_SUPPORT is defined on command line but kernel is not configured for
  • Fix PCAN-USB adapters minor regression issue (device number display now back in /proc/pcan irq column)
  • Add support for next Linux kernel 3.0
  • Enforce kernel config checking against I2C_ALGO option at compilation time
Download Download 7.3 tar.gz
Download Download Installation Info (PDF)

Version 7.2
Update:
  • Fixed typo in src/pcan_dongle.c (v7.1) to be able to use the PCAN-Dongle
  • Fixed SJA1000 mutual exclusion in write() functions in certain Low-Speed CPU conditions
  • Support of Linux kernel up to 2.6.38.3
  • Added a new KERNEL_LOCATION detection based on /lib/modules//build for homebrew kernels
Download Download 7.2 tar.gz
Download Download Installation Info (PDF)

Version 7.1
Update:
  • Support of the PCAN-USB and PCAN-USB Pro adapters
  • The message timestamps of the PCAN-USB and PCAN-USB Pro CAN interfaces are used to setup the time of incoming CAN frames up to user applications
  • The driver version is now displayed when /proc/pcan is read
  • Support of Kernel 2.6.37
  • Fixed a problem concerning the PCMCIA adapter support
  • Clearing the message filter list is now available
  • Support of dynamic usb minors allocation (kernel config option)
Download Download 7.1 tar.gz
Download Download Installation Info (PDF)
Driver Patch 7.1.1
  • Correct typo in pcan_dongle.c (Minor instead of Major) which prevented PCAN-Dongle devices to be opened from application
Download Download 7.1.1 Patch

Use the right mouse button and save as ... to download this patch file.

Version 6.24
Update:
  • PCAN-ExpressCards are now supported. On some systems hot plug support will not work correctly (kernel depending). You have to plug the PCAN-ExpressCard card before the boot-up of your computer and you can unplug the card only if power is down or the PCAN driver was unloaded
  • A bug was removed which prevents to use a fixed major number
  • Support for kernel 2.6.35
  • Fixed a problem with PCAN-PC Cards and kernel 2.6.35
  • Added the missing "()" around KERNEL_LOCATION in driver/makefile
Download Download 6.24 tar.gz
Download Download Installation Info (PDF)
Driver Patch
Patch to use the peak-linux driver-6.24 with kernel up to 2.6.37

Usage:
Copy the patch into the peak-linux-driver-6.24 directory

$ cd peak-linux-driver-6.24
$ patch –p0 < peak-linux-driver-6.24.3.patch

Download Download Patch

Use the right mouse button and save as ... to download this patch file.

Version 6.20
Update:
  • Re-inserted a startup waiting time of 10 ms for PCAN-USB, to prevent a blocking of the PCAN-USB device during initialization
  • Added a compiler switch to prevent Makefile preprocessor macros to write unwanted temporary files
Download Download 6.20 tar.gz
Download Download Installation Info (PDF)

Version 6.19
Update:
  • Compiles up to kernel 2.6.34 with support for PCAN-PC Card
  • Searches for the default kernel headers for installed (k)ubuntu, OpenSuSE, and plain vanilla kernels
  • Performance improvement for PCAN-USB with netdev usage
  • Removed a bug in the Makefile which forces a reboot to use udev changes
  • Documentation update, list additional used libraries and how to blacklist the alternative peak-pci driver
  • Added a tool to set a individual device number for PCAN-USB devices
  • Removed the initial delay when starting PCAN-USB
Download Download 6.19 tar.gz
Download Download Installation Info for Version 6.19 (PDF)

Version 6.15
Update:
  • Fixes a problem with the PCAN-USB driver (Baudrate fix)
  • New manual
Download Download 6.15 tar.gz
Download Download Installation Info for Version 6.15 (PDF)

Version 6.13
Update:
  • By preventing accidental back-to-back writes to the command register of the SJA1000 chip in conjunction with multicore processors write stalls were successfully removed
  • "spin_lock..." macros had become harmonized
  • A compilations bug with the XENOMAI flavor was fixed
Download Download 6.13 tar.gz
Download Download Installation Info for Version 6.13 (PDF)

Version 6.11
Update:
  • Optimized for multicore environments
  • Fixed endian problem for netdev sending SFF frames via USB
  • Removed a bug where a write could return -ENODATA even if the write was successful.
  • Renamed pcan_fifo_near_ful() to pcan_fifo_not_ful().
  • Moved the sense of pcan_fifo_empty().
    Now it returns true (!=0) if the FIFO is empty.
  • Minor bug fixes
Download Download 6.11 tar.gz
Download Download Installation Info for Version 6.11 (PDF)

Version 6.9b
Update:
  • Support up to Kernel 2.6.29
  • Added udev support
  • Minor bug fixes
  • Documentation update
Download Download 6.9b tar.gz
Download Download Installation Info for Version 6.9 (PDF)

Version 6.7
Update:
  • Support up to Kernel 2.6.26
  • Automaticly compiling for Socket CAN Support if the Kernel option "CONFIG_CAN" is set (Kernel 2.6.25 or higher)
  • Big Endian Support for PCAN-USB
  • PCAN-Dongle now works again without Parport-Subsystem
  • Remove some compiling warnings while use newer Kernel Versions
  • Remove some compiling warnings while use XENOMAI support
  • Some smaller fix for RTAI-Skin support
Download Download 6.7 tar.gz
Download Download 6.7 rpm
Download Download Installation Info for Version 6.x (PDF)

Version 6.5
Update:
  • Support up to Kernel 2.6.23
  • Add new features in Error Handling
  • Change type of timestamp to support new Kernel functions
  • Splitting of Realtime and non Realtime Code
Download Download 6.5 tar.gz
Download Download 6.5 rpm
Download Download Installation Info for Version 6.x (PDF)

Version 6.4
Update:
  • Support for 4 channel CAN PCI Interface (OEM boards) added
  • Improved resource locking for PCAN-Dongle
  • Improved resource locking for read and write queues (non-RT)
Download Download 6.4 tar.gz
Download Download 6.4 rpm
Download Download Installation Info for Version 6.x (PDF)

Version 6.2
Update:
  • Fixed a bug which raised overrun messages without overruns
  • Compiles now with kernel 2.6.21
  • Added a USB startup delay to compensate long PCAN-USB startup
  • PCAN-PCCARD: removed all mutexes inside soft-Irq context
  • Reworked parts of atomic_** usage
  • PCAN-ISA: mistakable info message changed
  • Improved stability of XENOMAI integration
Download Download 6.2 tar.gz
Download Download 6.2 rpm
Download Download Installation Info for Version 6.x (PDF)

Version 6.0
Update:
  • Since V6.x the PCAN-Linux driver support the Socket-CAN Interface - look at BerliOS Socket CAN for more information.
  • Add Filters for character device driver.
  • Improved and more compatible to MS-Windows PCAN-Light API error handling.
  • Timestamps with resolution down to microseconds.
  • Totally revised manual
Download Download 6.0 tar.gz
Download Download 6.0 rpm
Download Download Installation Info for Version 6.x (PDF)

Version 5.3
Update:
  • From now on, the driver support Kernel Kernel 2.6.18.5
  • Some smaller BugFixes
Download Download 5.3 tar.gz
Download Download Installation Info for Version 5.x (PDF)

Version 5.12
Update:
  • From now on, the driver support Kernel 2.6.19
  • BugFixes:
    • Solved problems in PC CARD driver (2 channel mode, LED state etc.)
    • Some compiler problems with different Linux versions solved (2.4 and PCAN PC CARD)
Download Download 5.12 tar.gz
Download Download Installation Info for Version 5.x (PDF)

Version 5.0
Update:
  • From now on, the complete driver will be distributed under the GPL. The 'obfuscated' code for the USB Interface is removed.
  • The Xenomai RealTime Core was inegrated to the driver (at the moment the PCAN-USB and the PCAN-PCC did not support this feature).
  • A new initialisation parameter was added: "bitrate". from now on it is possible to set the default bitrate of the hardware
  • Some smaller BugFixes
Download Download 5.0 rpm
Download Download 5.0 tar.gz

Version 4.3
Update:
  • Add PCAN-PC Card (PCMCIA)
  • Fixed ISA/PC104 shared interrupt problem
  • Added LINUX_CAN_Write_Timeout()
  • Preparation for kernel 2.6.17
  • Adding support for realtime sharing interrupts tested on Dual Channel PCI card
  • Moved usage of module_param_array() to kernels greater than 2.6.13
  • Removed module_param_array() usage problems for kernel 2.6.8-24-smp
Download Download 4.3 rpm
Download Download 4.3 tar.gz

Version 3.9 to 3.10
Version 3.9 (15.09.2004) Update:
  • Correction for RPM make procedure
  • Fixed Bug for USB while have very high bus load
  • Fixed Bug in "Extended Status" function support Makefile for 2.6.0 <= Kernel Version < 2.6.5
Download Download 3.9 rpm
Download Download 3.9 tar.gz
Version 3.6 (27.07.2004) Update:
  • Fixed "Bad: Scheduling while atomic!" error
  • Add English Documentation to package
Download Download 3.6 rpm
Download Download 3.6 tar.gz
Version 3.5 (18.05.2004) Update: Linux 2.6 Kernel support Download Download 3.5 rpm
Download Download 3.5 tar.gz
Version 3.28 Update:
  • Driver work now with YellowDog-Linux (PowerPC)
  • Remove some warnings while compiling with Kernel-Version 2.4.21 (SuSE-9.0)
  • Öatencie time were reduced
  • Fixed bug in error handling
  • Changed from CVS to Subversion
Download Download 3.28 rpm
Download Download 3.28 tar.gz
Version 3.25 Update:
  • Replaced GFP_KERNEL with GFP_ATOMIC inside some blocking situations
  • Better support for X86_64 Bit Systems
  • Works now with Kernel 2.6.15
Download Download 3.25 rpm
Download Download 3.25 tar.gz
Version 3.21 (20.07.2005) Update:
  • Added option to selective compile for PCAN-PCI, PCAN-ISA, PCAN-Dongle or PCAN-USB
  • Prepared for kernels greater and equal than 2.6.12
  • Addes pci_enable_driver() for kernels greater and equal 2.6.10.
  • Removed concurrency between read_proc_mem() and USB read/write.
Download Download 3.21 rpm
Download Download 3.21 tar.gz
Version 3.17 (14.02.2005) Update:
  • Increased write buffer for hardware revision >= 7 (PCAN-USB)
  • Bug removed when CAN_ERR_QXMTFULL was raised even when no queue was filled (PCAN-USB)
Download Download 3.17 rpm
Download Download 3.17 tar.gz
Version 3.13 (10.12.2004) Update: Fix Bug while reading PCAN-USB Serial number (OEM) Download Download 3.13 rpm
Download Download 3.13 gz
Version 3.12 (06.12.2004) Update:
  • Now conform to kernel 2.6.9 (missing timeout using USB)
  • Workaround for pcan_hw_getSNR() using PCAN-USB
Download Download 3.12 rpm
Download Download 3.12 tar.gz
Version 3.10 (29.10.2004) Update: Kernel-Version 2.6.9 - Parameter 'timeout' missed in 'struct urb' Download Download 3.10 tar.gz

Version 2.8 to 2.12
Version 2.8 (28.05.2003) Update: Add rpm Package Download Download 2.8 rpm
Download Download 2.8 tar.gz
Version 2.6 (18.03.2003) Update: Add rpm Package Download Download 2.6 rpm
Download Download 2.6 tar.gz
Version 2.5 (26.02.2003) Update: Add PCAN-USB Driver - PCAN-Light Download Download 2.5 tar.gz
Version 2.15 (11.03.2004) Update: Fixed bug when using RTR Messages Download Download 2.15 rpm
Download Download 2.15 tar.gz
Version 2.14 (20.11.2003) Update: Fixed wrong handling of USB device enumeration in the shared library Download Download 2.14 rpm
Download Download 2.14 tar.gz
Version 2.13 (29.10.2003) Update: Fixed rpm Package problem with old kernels (<2.4.18) Download Download 2.13 rpm
Download Download 2.13 tar.gz
Version 2.12 (12.08.2003) Update: devfs, kernel-2.5 support, LGPL Download Download 2.12 rpm
Download Download 2.12 tar.gz

Version 1.4 to 1.37
Version 1.4 (01.10.2002) Update: Now work with SUSE 8.x LINUX - PCAN-Light Download Download 1.4 rpm
Download Download 1.4 tar.gz
Version 1.3.7 (01.03.2002) PCAN-Light Download Download 1.37 tar.gz

Up Back to the top