#!/usr/bin/env bash # this script sets up SITL to be able to attach to real CAN devices # once run, you can configure SITL for CAN just like a real board, with the CAN parameters # # CAN_P1_DRIVER=1 # CAN_D1_PROTOCOL=1 # once running you can also attach uavcan_gui_tool to vcan0 to monitor the CAN bus [ $# -eq 1 ] || { echo "Usage: can_sitl.sh DEVICE" echo "for example can_sitl.sh /dev/serial/by-id/usb-Zubax_Robotics_Zubax_Babel_3700330018514D563935392000000000-if00" exit 1 } DEVPATH="$1" if readlink $DEVPATH > /dev/null; then DEVNAME=$(basename $(readlink $DEVPATH)) else DEVNAME=$(basename $DEVPATH) fi set -e # cleanup from a previous run sudo killall -9 slcand 2> /dev/null || true for m in slcan can-gw vcan can_raw can; do sudo rmmod $m 2> /dev/null || true done sudo modprobe vcan sudo ip link add dev vcan0 type vcan sudo ip link set up vcan0 sudo ip link set vcan0 mtu 72 sudo modprobe slcan sudo modprobe can-gw sudo slcan_attach -f -s8 -o "$DEVPATH" sudo slcand "$DEVNAME" slcan0 sudo ifconfig slcan0 up sudo cangw -A -s vcan0 -d slcan0 -e sudo cangw -A -s slcan0 -d vcan0 -e echo "slcan0 setup" ifconfig slcan0