Documentation PDF

MUXDLL - Documentation

Document's aim

The aim of this document is to describe the different functions that make up libraries with access to the PCI, USB, Ethernet cards and interfaces of the EXXOTest® «Communication Networks Expertise systems» products range.
Such libraries of software functions enable interfacing with a PC (or Pocket PC) and EXXOTest® cards and interfaces.
The limitations regarding the number of networks that may be connected to the card, depends on the type of card that is used. Such limitations are described in the card's guide.
Using these functions will allow the user to automatically adapt his application to his card's protocol controllers and line interfaces.
All these functions can be found within a dynamic library (DLL), which works with PCs running under 2000, XP, Vista and Seven operating systems or with Pocket PC running under Windows CE/Mobile (ARM Target).

Access libraries



The application communicates with the networks through the various functions provided by the library. These functions are identical regardless of the operating system.
The libraries allow an application to access up to 8 cards simultaneously, as well as all networks resident on them.
The libraries allow several applications to access several different cards. However, they do not allow several applications to share the same card.


The libraries access the cards using a driver. This is the driver that established the link between the bus (USB / PCI ...) and the hardware.
Three driver generations:

  • Windriver: First driver distributed with the EXXOTest MUX cards, it is validated for Windows 2000 to XP operating systems (windrvr.sys)
  • Exxotest_v1.x: Second driver distributed with the EXXOTest MUX cards, it is validated for Windows XP to Seven 32bits operating systems (exxusbw32.sys)
  • Exxotest_v2.x: Driver currently distributed, it is validated for Windows XP to Seven 32 and 64bits operating systems (exxusb32.sys and exxusb64.sys) The driver installation is facilitated by a setup named "Exxotest Driver Kit and Utilities". This prepares the operating system to install the MUX card drivers. For more information, please consult the user manual delivered with the card to be installed.

List of cards accessible by the librarie's functions

All cards / interfaces of the EXXOTest® «Communication NetworksExpertise systems» products range are accessible through the software libraries, which allow an application to remain unchanged and to operate regardless of the material used.

Inputs / Outputs


Pin Name
2 nc
7 K line / LIN 1
10 CAN LS1_L
11 K line / LIN 2
12 LIN / K line 3
13 LIN / K line 4
14 CAN HS2_L
15 L line 1



Pin Name Comments
1 E_ANA/TOR_1 Input (analog or all-or-nothing) 0-32V n°1
2 E_ANA/TOR_2 Input (analog or all-or-nothing) 0-32V n°2
3 E_ANA/TOR_3 Input (analog or all-or-nothing) 0-32V n°3
4 E_ANA/TOR_4 Input (analog or all-or-nothing) 0-32V n°4
5 E_ANA/TOR_5 Input (analog or all-or-nothing) 0-32V n°5
6 E_ANA/TOR_6 Input (analog or all-or-nothing) 0-32V n°6
7 E_ANA/TOR_7 Input (analog or all-or-nothing) 0-32V n°7
8 E_ANA/TOR_8 Input (analog or all-or-nothing) 0-32V n°8
9 GND Ground
10 S_TOR/PWM_1 Output (all-or-nothing or PWM) n°1
11 S_TOR/PWM_2 Output (all-or-nothing or PWM) n°2
12 S_TOR/PWM_3 Output (all-or-nothing or PWM) n°3
13 S_TOR/PWM_4 Output (all-or-nothing or PWM) n°4
14 S_TOR/PWM_5 Output (all-or-nothing or PWM) n°5
15 S_TOR/PWM_6 Output (all-or-nothing or PWM) n°6

DE9 ("CAN 1 / K-LIN 1" --> "CAN 6 / K-LIN 6")

Pin Name Comments
1 E_ANA/TOR_n Input (analog or all-or-nothing) 0-32V n°n
2 CAN_L_n Low CAN of CAN bus n°n
3 GND Ground
4 LIN_n / ISO_K_n LIN or ISO n°n
5 E_WK Input wake enabled transceiver
6 (GND) Optional ground
7 CAN_H_n High / Single wire CAN of CAN bus n°n
8 S_TOR_1 / ISO_L_1 Input (analog or all-or-nothing) n°n

DE9 ("IOIOI, RS232 / RS485")

Pin Name Comments
1 SYNC_IN Synchronized EXT input
2 RxD Receive data
3 TxD Transmit data
4 SYNC_OUT Synchronized EXT output
5 GND Ground
6 RS485_Z RS482 bus (optional)
7 RS485_Y RS482 bus (optional)
8 RS485_A RS482 bus (optional)
9 RS485_B RS482 bus (optional)

Ethernet 10/100

Pin Name Comments
1 TX+ Transmit data +
2 TX- Transmit data -
3 RX+ Receive data +
4 TXCT Transmit center tap
5 TXCT Transmit center tap
6 RX- Receive data -
7 RXCT Receive center tap
8 RXCT Receive center tap


6.00 (new driver) (19-AVR-2010)
  • Add support of Windows 64 bits architecture.
  • Porting Muxdll On visual Studio.
6.01 (new driver) (10-MAY-2010)
  • Add some fonctionnality in driver.
6.02 (new driver) 03/06/2010
  • Send preRelease for some test.
6.03 (new driver) (01-JUL-2010)
  • Add CanReadMsg && CanWriteMsg.
6.04 (new driver) (19-JUL-2010)
  • Powers fonctions Added to the drivers.
  • Add some internals fonctions.
  • Correct a size error on Win2k.
6.05 (new driver) (26-JUL-2010)
  • Improve efficiency in spy mode.
  • On client software crash, unplug device is no longer necessary.
6.06 (new driver) (18-AUG-2010)
  • Correct a memory leak in MuxLoadDLL.
6.07 (new driver) (31-AUG-2010)
  • Correct a bug in MuxGetVersion.
  • Add MuxSetEthernet & MuxGetEthernet functions.
6.08 (new driver) (07-OCT-2010)
  • Add support of CanChangeBaudRate for 6C6L.
6.09 (new driver) (29-OCT-2010)
  • Improve max licence number.
6.10 (new driver) (15-NOV-2010)
  • Add support of 4C4L.
6.11 (new driver) (11-FEB-2011)
  • Correct LIN 2.X management for PCI boards
  • Add additional length byte option for ISO14230 messages less than 64 bytes
  • Add new LIN / ISO speed
6.12 (new driver) (02-MAR-2011)
  • Correct CanconfigBus for the bus load calculation
6.13 (new driver) (12-MAY-2011)
  • Add J1939 protocol.
6.14 (new driver) (07-JUN-2011)
  • Add NwcSetBytePadding function
6.15 (new driver) (25-JUL-2011)
  • Add NMEA2000 support
6.16 (28-OCT-2011)
  • End of support for Exxotest v1.x.x and Jungo v5.2.2 USB drivers
  • Support now Exxotest USB v2.x.x & above, Jungo PCI v6.0.3 (Kernel Plugin v1.2.4, VXD 4.34)
  • Remove cards counting from MuxInit, MuxPciGetCardInfo and MuxUsbGetCardInfo
  • Dynamically load Winsock 2 and IP Helper DLLs at main entry
  • Change MuxEthCountCards and add new function MuxEthGetCardInfo
  • Change MuxOpen & MuxClose for Ethernet cards (wired and wireless), update IP routing table if necessary
  • MuxWifiCountCards & MuxWifiGetCardInfo deprecated : use MuxEthCountCards & MuxEthGetCardInfo instead
  • Minor change in EEPROM initialization routine for PCI boards
  • MuxGetHardwareID function valid only for USB cards
  • CAN error events of same type now signaled only once per ms (PCI boards)
  • Minor change for LIN IFR handling (PCI boards)
  • Correction in length management for ISO 9141 & ISO 14230 protocols (PCI boards)
  • Add new function NMEA0183ConfigUart
6.17 (07-DEC-2011)
  • All USB drivers workable (Exxotest v1.x.x/v2.x.x and Jungo v6.0.3)
  • Dynamically load extern DLLs during execution (only when needed and no more at main entry)
  • Ensure that all allocated resources are freed when DLL is being unloaded
  • Minors corrections in the FlashFileDownload function
  • Add extra informations to LIN events : checksum and protected identifier
  • Add 64 bits version of the MUXDLL library
6.18 (14-DEC-2011)
  • Add version number for Exxotest USB drivers
  • Correct index of the configuration's interface to be registered for USB data transfer
  • Correct a parameter passed to the ETH data transfer function
6.19 (22-JUN-2012)
  • Fix MuxGetBuildNumber function
  • Start migration to Jungo WDU library
  • Minors corrections in the MuxOpen function
  • Support of the opening of non multiplexed Ethernet cards
  • TCP sockets are now placed in non-blocking mode
  • The wCard parameter is now correctly checked in the MuxEthGetCardInfo function
  • Change the handling of CAN periodic frames to correct some minor bugs (PCI boards)
  • Support commands whose response has unknown size
  • Minors changes in FlashGetInformations and FlashFileDownload functions
  • Fix the position numbers in IO events (for edge-triggered inputs)
  • Change the calling convention for all J1939 functions, add J19ChannelParam and correct a memory leak
  • General code cleanup
6.20 (28-JAN-2013)
  • Minor change in FlashGetInformations function
  • Change default timeout value to 5s for wireless ethernet cards
  • Remove counter used for opening and closing USB driver
  • All CAN clock frequencies are now supported for non multiplexed cards
  • MuxPciCountCards, MuxUsbCountCards and MuxEthCountCards are now thread safe again
  • MuxInit will now fail if the card is in the opened state (may be forced by setting MSB of wCard parameter)
  • Changes in MuxEthCountCards function to differentiate between wired and wireless cards
  • Changes in the way of opening and closing ethernet cards
  • Some resources are not freed anymore when MuxClose is called as a result of process termination
6.21 (31-MAY-2013)
  • Add support for a new device
    • USB_MUX_DIAG_V2_LT (USB Device - 1 CAN 1 ISO/LIN)
  • Add new Admin functions :
    • AdminGetLicenceData
    • AdminSetLicenceData
    • AdminReadLicencesData
    • AdminWriteLicencesData
  • Minor changes to AdminReadLicences and AdminWriteLicences functions
  • Add a new function to stop the read thread of Exxotest v2.x.x USB driver (when required)
  • Fix a problem with the initialization of the TX FIFO for ISO 9141 & ISO 14230 protocols
  • Change to MuxEthCountCards: for wireless networks, send several times the counting datagram
6.30 (21-MAY-2014)
  • Update Jungo Windriver to version 8.02 and add 64-bit support for PCI boards
  • Change to AdminWriteLicencesData: accept NULL parameters to enable erase of the last remaining licence data
  • Change to MuxEthCountCards: enhance the processing of received datagrams
  • Unload extern DLLs after execution (MuxOpen, MuxClose and MuxEthCountCards)
  • Minor changes to the formatting of the last error string
  • Remove the keyword 'HANDLE' from the header file and change the definition of '_MUXAPI'
  • J19ChannelSendMsg & J19ChannelSendNMEAFastPacket functions send now variable-length messages
  • Fix a closing issue after opening a J1939 channel
  • Fix a closing issue after opening a PCI card
  • Fix a memory leak when scanning the USB bus fails (Exxotest v1.x.x/v2.x.x drivers)
  • Fix the CARB mode of the Iso14230SendMsg function
6.31 (11-DEC-2014)
  • Fix the alignment of structures for the 32-bit version of the library
  • Fix the handling of a LIN IFR by a 1.x master (PCI boards)
  • Fix the packet reassembly algorithm of the reading thread
6.32 (12-DEC-2014)
  • Fix the return value of MuxGetHardwareID function
6.33 (01-JUL-2015)
  • Change packing alignment value for 64-bit applications
  • Add the location ID information for each item in the USB card list
  • Fix some output parameters in the functions MuxPciGetCardInfo & MuxUsbGetCardInfo
  • Fix dependency problems between the functions MuxPciCountCards, MuxUsbCountCards, MuxEthCountCards & MuxOpen
  • Add the device instance ID to the multistring value returned by the function MuxGetHardwareID
  • ISO15765-2: fix an issue for the parameter N_AE when using mixed addressing
  • ISO15765-2: mixed addressing is now supported for 11 bit CAN identifier
  • ISO15765-2: add a new spy mode working on a per-channel basis
6.34 (02-SEP-2015)
  • Fix an issue when calling the function USBLIB_GetDeviceList more than seven times
  • Update some strings used for the last-error code
6.35 (13-NOV-2015)
  • Fix an issue when mixing multiplexed and non multiplexed USB cards
  • Change the declaration specifier and calling convention for the GNU compiler
6.36 (15-JUN-2016)
  • Fix the value of the wN_Br parameter in the NwcChannelParam function (for ethernet cards)
  • Fix the formatting of some error strings
  • Add some missing J1939 functions
  • Add a new API to the J1939 protocol stack
  • Add the ability to use the ISO L line as a generic output (USB_MUX_DIAG_V2)
  • Change to MuxEthCountCards: support of the opening of multiple emulated cards having the same IP address
  • Change the C standard integer types to fixed-width integer types in order to ease the use of the library with other languages
  • Remove the calling to the PeekMessage function because of an issue with Qt
6.37 (14-OCT-2016)
  • Fix AdminGetLicenceData() to make it work properly with all devices
6.38 (24-OCT-2016)
  • Add USBLIB_GetHardwareID
6.39 (08-FEB-2017)
  • Correct bug in USBLIB_GetHardwareID
6.40 (MAR-2017)
  • Fix exported symbols in MuxDLL.lib
6.50 (20-SEP-2017)
  • Fix exported symbols (MuxUsbGetCardInfo) in MuxDLL.lib
6.51 (22-JAN-2018)
  • Fix AdminGetLicenceData()
6.52 (05-FEB-2018)
6.53 (05-DEC-2018)
  • Fix USBLIB_GetHardwareID() so it returns the same value as MuxGetHardwareID()
  • Add function USBLIB_GetDeviceIDs()
6.54 (05-DEC-2018)
V6.55 (22-JAN-2020)
  • Fix internal bug for USBMaj
V6.56 (26-OCT-2020)
  • Fix unload extern DLLs after execution (MuxOpen, MuxClose)
V6.57 (11-JAN-2021)
V6.58 (18-JUN-2021)
  • NwlChannelAddr: Allow proprietary NAD [0x80-0xFF]