Relnotes
Relnotes
Release notes for the WDM based CAN driver supporting Windows 7/8/10/11 (32-/64-Bit) and
Windows Server 2008/2012 (32-/64-Bit). The driver releases are organized as packages. A package
contains the driver itself, driver related libraries and files for the driver configuration. The package
release version is coupled with the version of the device driver. A detailed list which hardware is
supported by a WDM driver and a table which files get installed with a driver package can be found at
the end of this document.
** Microsoft ended the support to allow in-house cross-signing of device driver code. For
this reason it is no longer possible for esd to release new or updated device drivers for
Windows 7, Windows 8 and Windows 8.1 based systems starting with driver package V2.8.0
!
Revision History
Summarized below are the the improvements, changes and fixes between different package releases in
reverse chronological order. If a change affects a complete driver family the family name according to
the table above is used to refer to the hardware. Changes which are considered to be very important
are highlighted.
USB3: Added missing support for ESI indication in received CAN FD messages (Requires FW >=
V1.2.3) and own transmitted CAN FD messages (Requires FW >= V1.2.4).
USB3: Added support for global DAR mode (requires FW >= 1.2.4).
USB3: Fixed invalid busload indication for CAN FD communication (requires FW >= 1.2.7).
USB3: Fixed invalid values of baudrate change event data if only the nominal bitrate for CAN CC
communication is set with canSetBaudrateX() (requires FW >= 1.2.8).
USB3: Fixed possible internal race condition that a configuration request with canIdAdd() to
receive CAN 2.0B (EFF) IDs is turned into a request to receive CAN 2.0A (SFF) ID 0.
USB3: Fixed driver invalidates bitrate details if only the nominal bitrate for CAN CC
communication is set in argument of canSetBaudrateX().
All drivers/devices: Fixed IOCTL_CAN_GET_INFO does not return correct NTCAN library
version.
All drivers/devices: The yet unsupported 'msg_lost' field of CAN messages received in Rx
Object Mode now contains a revolving counter which gets increased each time the object is
updated.
USB3: Fixed communication with hardware failed on return from a low power state.
USB3: Fixed configuration of a classical CAN bit rate fails with canSetBaudrateX() if the
configuration mode is bitrate table index or direct CAN controller register configuration.
All drivers/devices: Bitrate calculation algorithm completely rewritten according to CiA 601-3.
All drivers/devices: Return transceiver type and number of open handles with
IOCTL_CAN_GET_INFO.
USB2: Fixed rare occurrence of frame duplications observed on Windows 10 for high CAN bus
loads.
C360: Release digitally signed with a SHA2 (EV) code signing certificate in accordance with the
updated signing policy for Windows 10 device driver.
C360: Support for canSendT()/canWriteT() API to transmit CAN frames (without Timestamped Tx
support).
C360: Fixed situation where a CAN message might get an 'old' timestamp.
C360: Fixed possible system freeze closing last open handle for a CAN port if the Smart
Disconnect mode is enabled.
Driver Package 2.7.0
Release date: 2020-01-20
All drivers/devices: All kernel mode driver are now attestation signed by Microsoft.
All drivers/devices: All device driver binaries are digitally signed with a SHA2 (EV) code signing
certificate in accordance with the updated signing policy for Windows 10 device driver. As a
consequence Windows XP and Windows Vista which got no update for SHA2 kernel mode code
driver signing are no longer supported from this device driver release on.
All drivers/devices: Support for CMSG_X (only for Classical CAN messages).
All drivers/devices: All internal memory is allocated from the NX Non-Paged Pool areas to
increase system security and prevent problems with tools as the Microsoft Device Guard
Readiness Tool.
USB2: Fixed issue that configuring a bit rate fails after booting Windows 8 and later versions via
the 'Fast Startup' if the bit rate which should be configured is identical to the bit rate before the
'Shutdown'.
Support for new devices: CPCI-CAN/402 added to the C402 driver family (x86/x64).
C331: Configuring the bit rate 800 KBit/s via the esd bit rate table index now returns with an error
as this results in 5 KBit/s for all released FW versions. Configuring 800 KBit/s can still be archived
by setting the bit rate numerically or as BTR values.
C400: Fixed a regression introduced with driver package 2.6.7 that a bitrate was configured
correctly if defined as BTR value with enabled pre-scaler but was indicated twice as high with the
bitrate details IOCTL.
C400/C402: Internal CAN message dispatcher made more interruptible to prevent overruns in
case of very high busload situations.
C400/C402: Fixed a regression introduced with driver package 2.6.5 which caused a BSOD if the
driver failed to create a named device object. The latter could happen if the assigned base net did
not overlap with a logical net number of another CAN device but the 2nd, 3rd, ... logical net
number did.
USB2: Fix possible BSOD during shutdown if the initial internal version request is not replied by
the device.
USB2: Detect custom specific device and disable FW BTR address translation if necessary.
CAN-CBX-AIR2 and CAN-AIR/2: Hardware specific configuration tool installed implicitly with the
device driver and can be opened via the Settings tab of the CAN devices property sheet.
Support for new devices: CAN-PCI/402 and CPCIserial-CAN/402 added to the C402 driver
family (x86/x64).
All drivers/devices: Extended the indication of error situations in the event log during startup.
C400/C402: Fixed issues where timestamps are not be applied correctly to CAN messages and
events in error situations.
C400/C402: Fixed a regression introduced in driver package 2.6.6 that the CAN driver aborted a
failed Tx I/O request if the CAN controller is in error passive state.
C400/C402: Fixed 64-bit version of NTCAN library could not be used on Windows XP x64
because of a missing symbol.
C400/C402/C405: Extended the indication of error situations in the event log during startup.
USB2: Fixed possible BSOD during PnP manager driver stop request if aborting internal IRPs
partially failed which may lead to an IRP completion after driver unload.
Configuration: Improved UI of device manager settings dialog and the adaption to a configured
UI theme.
Configuration: Added support for a driver/system settings expert dialog to configure the thread
priority of the CAN message handler, decrease the system tick period and enable driver trace
messages.
Configuration: Added support to start the event viewer with a driver specific filtered view by
double-click on a fail reason code. transmit CAN frames (without Timestamped Tx support).
C400: Implicit CAN clock divider in BTR pre-scaler removed. This change is handled internally
backward compatible for exiting applications.
C405: Includes new firmware which supports HW revisions with 405GPr and 405GP.
C405: Removed support for implicit bootloader update introduced with driver package 2.5.0
(Driver V3.7.3). If you still have a CAN-PCI/405 hardware with a bootloader which requires an
update you have to install and start once a driver before this release.
USB2: Fixed possible BSOD if Windows changes in a power saving mode and CAN handle are
still open.
Configuration: The Settings tab of the CAN devices property sheet in the device manager is
extended to indicate the driver type (WDM/WDF), an optional 2nd firmware version and number of
CAN ports.
Configuration: If the Settings tab of the CAN devices property sheet is clicked a required
firmware update is indicated with a modal dialog and and a heading in larger font size.
Configuration: If the Settings tab of the CAN devices errors during startup are indicated in the
heading in addition to generate an event log entry.
C200, C331, USB2: Support for canSendT()/canWriteT() API to transmit CAN frames (without
Timestped Tx support).
C200, C331, USB2: Support for canSendT()/canWriteT() API to transmit CAN frames (without
Timestped Tx support).
C200, C331, USB2: Fixed possible system freeze closing last open handle for a CAN port if the
Smart Disconnect mode is enabled.
C200, C331: Interrupt affinity configuration via CAN control panel ignored as this caused problems
in many hardware configurations since Windows XP SP3 if not set to 'Any'.
C400, C402, C405: Fixed calling canWrite() while previous Tx jobs with canSend() on the same
handle are pending returned with error instead of queuing the new Tx jobs and block until all Tx
jobs are completed.
C400, C402: Fixed very rare cases of problems handling bus error situations.
C402: Fixed MSI not working on some systems (depending on assigned memory address).
USB2: Fixed upper 32-bit of 64-bit bus statistic timestamp always set to 0.
C400: Fixed possibility that the CAN ports are assigned arbitrary logical net numbers after a
reboot until the base net number is configured once via the Settings tab of the CAN devices
property sheet in the device manager.
C402: Change from PIO to busmaster DMA which drastically reduces system CPU load (Requires
FW 0.0.28 or later).
Support for new devices: New CAN driver family C402 for CAN-PCIe/402 (x86/x64).
C331: Fixed sporadic malfunction caused by the C compiler with Intel® Sandy-Bridge based Xeon
CPUs on Windows x64.
C400: Support for high precision timed transmission (feature Timestamped Tx).
C400: Support to configure timestamp sample point to Start of Frame (SOF) or default End of
Frame (EOF).
C400: Fixed possible BSOD if the first of more than one CAN device in the same system is
disabled in device manager.
C405: Fixed rare occurrence of non monotonic timestamps for interaction frames in case of very
high CAN busload.
USB2: Fixed 32-Bit libraries are not installed properly on Windows x64.
Configuration: The Settings tab of the CAN devices property sheet in the device manager is
extended to indicate the device capability Timestamped Tx and PXI Support.
Configuration: The Settings tab of the CAN devices property sheet in the device manager is
extended to choose between SOF or EOF as timestamp sample point (Only supported by C400
family).
Support for new devices: CAN-USB/Micro added to USB2 driver family (x86/x64).
All drivers/devices: Fixed Local Echo capability not indicated in feature flags.
USB2: Fixed BSOD for Autobaud in combination with Listen Only mode.
Configuration: The Settings tab of the CAN devices property sheet in the device manager is
extended to indicate the device capability Local Echo and Error Injection.
C200: Fixed possible BSOD on Windows 64-Bit versions if Listen Only mode is enabled.
C405: Fixed CAN bus error handling might stall Tx engine in rare cases.
Support for new devices: New CAN driver family C400 for CAN-PCI/400, CAN-PCIe/400, CPCI-
CAN/400 and PMC-CAN/400 (x86/x64) with ESDACC core V00.25.
C200: Support for extended CAN bus diagnostic functionality and events.
C200: CAN bus error events are created on IRQ level so they get the correct timestamp in relation
to CAN bus messages.
USB2: Support for extended CAN bus diagnostic functionality and events (Requires FW >= 1.1.0).
C405: Added missing main event long message available for other devices.
All drivers/devices: The very first event log message after driver installation no longer uses
"Unknown" for the device name.
Installation: The 32-bit driver packages are distributed with the same code signing policy as the
64-bit versions.
Installation: Copy CAN class related property sheet page provider with driver update.
Configuration: The Settings tab of the CAN devices property sheet in the device manager is
extended to show CAN controller type and clock instead of bus type.
Configuration: The Settings tab of the CAN devices property sheet in the device manager
disables HW/FW/Driver version if device is disabled instead of using the last requested values.
All drivers/devices: All drivers ready for Windows 7 (32-bit and 64-bit version).
USB2: Error recovery for stalled pipes as a result of USB communication errors.
Installation: All PCI driver gets installed with CPU affinity set to 'Any'.
C405: Improved autobaud detection performance which can now be combined with Listen Only
mode (Driver Rev. 3.9.0).
C405: Fixed aborting pending read/write requests via canIoctl() always fails (Driver Rev. 3.9.0).
C405: Fixed several issues concerning the auto RTR support (Driver Rev. 3.9.0).
C405: Fixed driver never returns from canClose() under certain conditions (Driver Rev. 3.9.0).
C405: Fixed inopportune timeout in canSend() which might result in lost messages for low bitrates
(Driver Rev. 3.9.0).
C405: Fixed loading/unloading driver could freeze system (Driver Rev. 3.9.1).
Driver Package 2.5.3
Release date: 2008-11-10
All drivers/devices: Fixed bug that a firmware update might fail if not performed on the logical
base net.
C331: Fixed further situation where a CAN message might get an 'old' timestamp.
All drivers/devices: Support for Smart Suspend mode to prevent a change of system power state
if the CAN device is in use.
C405: Added support for counters in scheduled CAN frames (Driver Rev. 3.8.0).
C405: Fixed driver might hang in close for handles in scheduling mode (Driver Rev. 3.8.0).
C405: Fixed serial number shows up as N/A on PCI405B4 variants (Driver Rev. 3.8.1).
C405: Fixed firmware signals readiness to early, so that host driver load could fail with Error 10 in
device manager. (Driver Rev. 3.8.1).
C405: Fixed system crash with BSOD, if DMA Buffer crosses a 16 MB aligned address (Driver
Rev. 3.8.1).
C200, C331, C360: Added support to configure the CPU affinity of the interrupt handler to either a
single CPU (default) or to run on an arbitrary free CPU. Please refer to the installation manual for
the impact of these options.
C200: Added support for bit rate change event with 8 data bytes.
C200: Fixed minimal chance that a received CAN message is discarded during recovery from a
CAN controller error state.
C331: Fixed situation where a CAN message might get an 'old' timestamp.
USB2: Support for auto-baudrate detection and baudrate change events with 8 bytes (Requires
FW >= 1.0.04).
USB2: Fixed problems returning from a system suspend to disk or RAM (Requires FW >= 1.0.04).
Configuration: The layout of the Settings tab of the CAN devices property sheet in the device
manager is changed.
Configuration: The Settings tab of the CAN devices property sheet in the device manager is
extended to indicate the new device capability Scheduling.
Configuration: The Settings tab of the CAN devices property sheet in the device manager is
extended to configure the CPU affinity of the interrupt handler for CAN hardware which supports
software generated timestamps.
Configuration: The Settings tab of the CAN devices property sheet in the device manager is
extended to enable/disable the Smart Suspend feature.
Configuration: The Settings tab of the CAN devices property sheet in the device manager now
implements context sensitive help for the various settings.
Configuration: Fixed that the 64-bit NTCAN library wasn't present in the list box of libraries which
gets installed with the device driver on the Settings tab of the CAN devices property sheet.
All drivers/devices: Improved error information in event log in case of driver initialization
problems.
All drivers/devices: Support for baudrate change event with 4 data bytes.
CAN-PCI104/200: Fixed bug driver start failed with invalid hardware revision if EEPROM is
programmed with default factory data.
USB2: Fixed bug IDs are disabled on device if first application disables an ID.
USB1: Resetting device is repeated if first reset failed during driver startup.
C405: Fixed initial start is marked as failed in device manager because arbitrary node number is
assigned.
Installation: Every driver gets an own INF file for 32- and 64-bit installations as otherwise
Windows Vista doesn't install the driver if any of the driver files which are listed in the common INF
file are missing.
Support for new devices: CAN-PCIe/200 and CAN-PCI104/200 added to C200 driver family.
Support for new devices: New CAN driver family USB2 for CAN-USB/2.
All drivers: Support for Windows Vista (32-bit and 64-bit version).
All drivers: All drivers, libraries and executables of the driver package are digitally signed by esd
electronic system design gmbh using Microsoft Authenticode technology so the end user can
verify at any time the publisher and the code integrity of these files. In addition the complete 64-bit
driver package complies with the kernel-mode code signing requirements of the x64-based
versions of Windows Vista.
All drivers/devices: Support for capturing timestamp of incoming CAN message. If timestamping
isn't supported by the CAN hardware the CAN message is timestamped by the interrupt handler in
software.
All drivers/devices: Support to abort blocked receive/transmit operations without forcing a close
handle operation. To distinguish both situations an aborted operation returns with
NTCAN_OPERATION_ABORTED and a closed handle with
NTCAN_HANDLE_FORCED_CLOSE.
All drivers/devices: CAN messages received in object mode are marked again invalid, as soon
as the data isn't updated any more.
C200, USB1, USB2: Support for Listen Only mode where the CAN controller is receiving CAN
messages but stays passive on the bus.
C200, USB1, USB2: Support for Smart Disconnect mode where the CAN controller becomes
passive on the bus as soon as the last handle is closed.
C331: Reduced occurrence of retries on PCI bus in case of high CAN bus load.
C405: Major change because of implicit update to new bootloader on PCI405 board which
improves latency returning hardware timestamp.
All drivers/devices: The Version tab of the driver's property sheet now lists all CAN devices
which are supported by the driver.
Installation: Using separate installer files canesd32.inf and canesd64.inf for 32-bit and 64-bit
Windows versions instead of common canesd2k.inf. 64-bit driver package is signed.
Installation: Adapted all device display names in cases they differ from the names printed in
catalog.
Configuration: The Settings tab of the CAN devices property sheet in the device manager is
extended to indicate the new device capabilities Timestamp, Listen Olny and Smart Disconnect as
well as the timestamp frequency and type.
All drivers/devices: Initial support for Windows XP x64 Edition and Windows Serve03 x64 with
64-bit driver and device manager support and libraries supporting 32-bit and 64-bit applications.
C200: Fixed several issues with CAN messages with DLC is > 8.
USB1: Fixed event log pollution during FW update introduced with previous release.
Support for new devices: New CAN driver family C405 for CAN-PCI/405.
USB1: Fixed bug with stalled Tx operations with firmware >= 0.C.44. The issue is indicated in the
system event log.
C200, C331 and C360: Initial release as WDM driver with Plug'n'Play, Power Management and
WMI support.
All drivers/devices: Updating firmware is only possible if no other handle is open and opening
handle while updating firmware isn't possible any more.
All drivers/devices: Handle situations where host PC overruns CAN device FIFO with
canIdAdd(), canIdDelete() and canClose().
All drivers/devices: Support to return number of available receive messages in receive FIFO.
C200: Support for new bit rate table indices for 800 KBit/s, 1,6 MBit/s and 83,3 KBit/s.
C331: Fixed several issues restoring device context after returning from lower power state.
USB1: Support for new bit rate table indices for 800 KBit/s, 1,6 MBit/s and 83,3 KBit/s for firmware
revision >= 0.C.49
USB1: Fixed bug with stalled Tx operations with firmware < 0.C.44.
Installation: DeviceNet support library (dnet.dll) no longer installed with driver as all driver related
dependencies are removed.
Configuration: Fixed Settings tab of the CAN devices property sheet is also displayed in the class
property sheet with junk data.
Configuration: Libraries which aren't present on the system are no longer displayed.
Support for new devices: New CAN driver family USB1 for CAN-USB/Mini as WDM driver with
Plug'n'Play, Power Management and WMI support.
C200, C331 and CAN360: Initial release of these driver families with Windows NT based driver.
Configuration: Configured via Settings tab of a CAN devices property sheet in the device
manager.
CAN-PCI/200
CAN-PCI/266
CPCI-CAN/200 c200.sys
C200
CAN-PCIe/200 c200a.sys
CAN-PCI104/200
PMC-CAN/266
CAN-PCI/331
c331.sys
C331 CPCI-CAN/331
c331a.sys
PMC-CAN/331
CAN-PCI/360 c331.sys
C360
CPCI-CAN/360 c331a.sys
CAN-PCI/400
CPCI-CAN/400 c400k.sys
C400
CAN-PCIe/400 c400ak.sys
PMC-CAN/400
CAN-PCIe/402
CAN-PCI/402
CAN-PCIe/402-Mini
CPCI-CAN/402
CPCIserial-CAN/402-2
CAN-PCIe/402-FD c402k.sys
C402
CAN-PCI/402-FD c402ak.sys
PMC-CAN/402-4-FD
XMC-CAN/402-4-FD
CAN-PCIe/402-Mini-FD
CPCI-CAN/402-FD
CPCIserial-CAN/402-4-FD
pci405.sys
C405 CAN-PCI/405
pci405a.sys
usb331.sys
USB1 CAN-USB/Mini
usb331a.sys
CAN-USB/2
CAN-USB/Micro usb2292.sys
USB2
CAN-AIR/2 usb2292a.sys
CAN-CBX-AIR/2
usb3fd.sys
USB3 CAN-USB/3-FD
usb3fda.sys
Package content
The tables below are an overview which version of the binaries is distributed in a released driver
package. As driver packages for the different CAN driver families are not released at the same time it is
possible that a package with a newer release date contains a newer version of a library. In that case the
version is written in the table below as x.y.[a|b] to indicate that one package was released with version
x.y.a and another package with x.y.b of the library. A package might also be re-released with the
unchanged device driver and just updated libraries.
Package/
2.7.0 2.7.1 2.8.0 2.8.1 2.8.2 2.8.3 Description
File
NTCAN
ntcan.dll 5.0.6 5.0.6 5.0.7 5.0.8 5.1.1 5.1.4
library(32-/64-bit)
Property Sheet
canui32.dll 1.6.4 1.6.4 1.6.5 1.6.5 1.6.8 1.6.9
(32-bit)
CANopen SDO
calcan32.dll 2.6.11 2.6.11 2.6.11 2.6.11 2.6.13 2.7.5
Support (32-Bit)
Property Sheet
canui64.dll 1.6.4 1.6.4 1.6.5 1.6.5 1.6.8 1.6.9
(64-bit)
CANopen SDO
calcan64.dll 2.6.11 2.6.11 2.6.11 2.6.11 2.6.13 2.7.5
Support (64-Bit)
Driver Package 2.6.x
Package/ File 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.6.6 2.6.7 2.6.8 2.6.9
usb331.sys - - - 2.6.4 - - - - -
ntcan.dll 4.4.1 4.6.0 4.6.0 4.7.[0/1] 4.8.1 4.8.x 4.8.7 4.8.[7/8] 4.8.8
canui32.dll 1.4.2 1.4.2 1.4.3 1.4.3 1.4.4 1.4.4 1.5.x 1.6.0 1.6.0
calcan32.dll 2.5.5 2.5.7 2.5.7 2.6.x 2.6.2 2.6.2 2.6.3 2.6.3 2.6.3
canui64.dll 1.4.2 1.4.2 1.4.3 1.4.3 1.4.4 1.4.4 1.5.x 1.6.0 1.6.0
calcan64.dll 2.5.5 2.5.7 2.5.7 2.6.x 2.6.2 2.6.2 2.6.3 2.6.3 2.6.3
Driver Package 2.5.x
pci405.sys - - - - -
usb2292.sys - - 4.0.3 - - -
pci405a.sys - - - 3.6.2 - -
Known Issues
All 3.x driver and the CAN-USB/Mini driver do not support any system sleep mode. Since Windows
Vista a driver can no longer prevent the change to a low power mode by itself so the system
administrator has to make sure that the system is configured in a way which prevent such a power
state. For the same reason it is necessary to disable the Hybrid Shutdown which was introduced with
Windows 8.