Linux-CAN / SocketCAN user space applications
 
 
 
 
Go to file
Oliver Hartkopp 1331c56393 isotptun: fix stringop-truncation warnings
Rework string handling for ioctl() syscalls for netdev name operations.

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2019-08-25 18:20:37 +02:00
cmake CMake first pass (#90) 2018-08-17 09:50:30 +02:00
config/m4 add autotools infrastructure 2010-04-19 12:12:18 +00:00
include/linux cangw: update include files for CAN FD support 2019-08-16 15:26:41 +02:00
.gitignore add jcat 2019-01-04 13:01:11 +01:00
.travis.yml CI: treat gcc warning as errors 2018-09-13 10:38:19 +02:00
Android.mk can-utils: added isotpperf tool for performance measurements 2015-02-04 10:17:38 +01:00
CMakeLists.txt buildsystem: add SCM_TIMESTAMPING_OPT_STATS if not already defined 2019-05-09 14:40:16 +02:00
GNUmakefile.am include: add errqueue.h, net_tstamp.h, netlink.h 2019-05-09 14:36:53 +02:00
Makefile buildsystem: add SCM_TIMESTAMPING_OPT_STATS if not already defined 2019-05-09 14:40:16 +02:00
README.md README: properly annotate codeblocks 2018-08-17 10:02:02 +02:00
asc2log.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
autogen.sh do not use --symlink for autoreconf 2014-07-02 16:03:34 +02:00
bcmserver.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
can-calc-bit-timing.c Relicense GPL-2.0-or-later files to GPL-2.0-only 2019-07-10 14:01:23 +02:00
can-j1939-kickstart.md can-j1939: remove trailing whitespace 2018-01-18 15:00:48 +01:00
can-j1939.md can-j1939: remove obsolete sections from documentation 2018-01-18 15:00:48 +01:00
canbusload.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
candump.c candump: silence format-overflow warning 2019-08-23 19:57:06 +02:00
canfdtest.c Relicense GPL-2.0-or-later files to GPL-2.0-only 2019-07-10 14:01:23 +02:00
canframelen.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
canframelen.h Add SPDX identifiers 2019-06-19 12:24:24 +02:00
cangen.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
cangw.c cangw: add CAN FD support 2019-08-16 15:32:16 +02:00
canlogserver.c fix include to find SIOCGSTAMP with latest kernel 2019-07-14 22:14:10 +02:00
canplayer.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
cansend.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
cansniffer.c fix include to find SIOCGSTAMP with latest kernel 2019-07-14 22:14:10 +02:00
configure.ac buildsystem: add SCM_TIMESTAMPING_OPT_STATS if not already defined 2019-05-09 14:40:16 +02:00
isotpdump.c isotpdump: fix service 0x23 naming according to UDS specification 2019-07-30 22:09:50 +02:00
isotpperf.c fix include to find SIOCGSTAMP with latest kernel 2019-07-14 22:14:10 +02:00
isotprecv.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
isotpsend.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
isotpserver.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
isotpsniffer.c fix include to find SIOCGSTAMP with latest kernel 2019-07-14 22:14:10 +02:00
isotptun.c isotptun: fix stringop-truncation warnings 2019-08-25 18:20:37 +02:00
jacd.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
jcat.c Relicense GPL-2.0-or-later files to GPL-2.0-only 2019-07-10 14:01:23 +02:00
jspy.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
jsr.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
lib.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
lib.h Add SPDX identifiers 2019-06-19 12:24:24 +02:00
libj1939.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
libj1939.h libj1939: add libj1939_parse_canaddr and reuse it by testj1939 2019-01-04 13:00:33 +01:00
log2asc.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
log2long.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
page.theme import sample program & help page 2013-11-20 11:14:44 +01:00
slcan_attach.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
slcand.c Relicense GPL-2.0-or-later files to GPL-2.0-only 2019-07-10 14:01:23 +02:00
slcanpty.c fix include to find SIOCGSTAMP with latest kernel 2019-07-14 22:14:10 +02:00
style.css import sample program & help page 2013-11-20 11:14:44 +01:00
terminal.h Add SPDX identifiers 2019-06-19 12:24:24 +02:00
testj1939.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00

README.md

SocketCAN logo

SocketCAN userspace utilities and tools

This repository contains some userspace utilities for Linux CAN subsystem (aka SocketCAN):

Basic tools to display, record, generate and replay CAN traffic

  • candump : display, filter and log CAN data to files
  • canplayer : replay CAN logfiles
  • cansend : send a single frame
  • cangen : generate (random) CAN traffic
  • cansniffer : display CAN data content differences (just 11bit CAN IDs)

CAN access via IP sockets

  • canlogserver : log CAN frames from a remote/local host
  • bcmserver : interactive BCM configuration (remote/local)
  • socketcand : use RAW/BCM/ISO-TP sockets via TCP/IP sockets

CAN in-kernel gateway configuration

  • cangw : CAN gateway userpace tool for netlink configuration

CAN bus measurement and testing

  • canbusload : calculate and display the CAN busload
  • can-calc-bit-timing : userspace version of in-kernel bitrate calculation
  • canfdtest : Full-duplex test program (DUT and host part)

ISO-TP tools ISO15765-2:2016 for Linux

  • isotpsend : send a single ISO-TP PDU
  • isotprecv : receive ISO-TP PDU(s)
  • isotpsniffer : 'wiretap' ISO-TP PDU(s)
  • isotpdump : 'wiretap' and interpret CAN messages (CAN_RAW)
  • isotpserver : IP server for simple TCP/IP <-> ISO 15765-2 bridging (ASCII HEX)
  • isotpperf : ISO15765-2 protocol performance visualisation
  • isotptun : create a bi-directional IP tunnel on CAN via ISO-TP

Log file converters

  • asc2log : convert ASC logfile to compact CAN frame logfile
  • log2asc : convert compact CAN frame logfile to ASC logfile
  • log2long : convert compact CAN frame representation into user readable

Serial Line Discipline configuration (for slcan driver)

  • slcan_attach : userspace tool for serial line CAN interface configuration
  • slcand : daemon for serial line CAN interface configuration
  • slcanpty : creates a pty for applications using the slcan ASCII protocol

CMake Project Generator

  • Place your build folder anywhere, passing CMake the path. Relative or absolute.
  • Some examples using a build folder under the source tree root:
  • Android : cmake -DCMAKE_TOOLCHAIN_FILE=~/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-21 -DANDROID_ABI=armeabi-v7a .. && make
  • Android Studio : Copy repo under your project's app folder, add add_subdirectory(can-utils) to your CMakeLists.txt file after cmake_minimum_required(). Generating project will build Debug/Release for all supported EABI types. ie. arm64-v8a, armeabi-v7a, x86, x86_64.
  • Raspberry Pi : cmake -DCMAKE_TOOLCHAIN_FILE=~/rpi/tools/build/cmake/rpi.toolchain.cmake .. && make
  • Linux : cmake -GNinja .. && ninja
  • Linux Eclipse Photon (Debug) : CC=clang cmake -G"Eclipse CDT4 - Unix Makefiles" ../can-utils/ -DCMAKE_BUILD_TYPE=Debug -DCMAKE_ECLIPSE_VERSION=4.8.0
  • To override the base installation directory use: CMAKE_INSTALL_PREFIX ie. CC=clang cmake -DCMAKE_INSTALL_PREFIX=./out .. && make install

Additional Information: