Skip to content

Socketcan Setup Raspberry Pi

jakka351 edited this page Nov 4, 2022 · 3 revisions

Socketcan Setup Raspberry Pi/Linux

Using Raspberry Pi interface with a Controller Area Network using SPI or Serial Device

Hardware

  • Raspberry Pi Board
  • SD Card Flashed with a fresh copy of Raspbian
  • Generic mcp2515 can/spi board (or)
  • Raspberry Pi Specific can-bus hat
  • an actual Controller Area Network (CAN)-bus to connect to

Socketcan via SPI

1. Install Can-Utils:
sudo apt install -y can-utils libsocketcan2 libsocketcan-dev
2. Append /boot/config.txt with:
# CAN-BUS Overlay
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
dtparam=spi=on
2. Append /etc/network/interfaces with:
auto can0  
iface can0 inet manual
   pre-up /sbin/ip link set can0 type can bitrate 125000 on restart-ms 100
   up /sbin/ifconfig can0 up txqueuelen 65535
   down /sbin/ifconfig can0 down
auto can1      # Optional
iface can1 inet manual    
   pre-up /sbin/ip link set can1 type can bitrate 500000 triple-sampling on restart-ms 100   
   up /sbin/ifconfig can1 up txqueuelen 500  
   down /sbin/ifconfig can1 down
4. Reboot:
sudo reboot
5a. Check Hardware & Network Status:
dmesg | grep mcp && ifconfig | grep can  
5b. Successful Result:
[    3.139428] mcp251x spi0.1 can0: MCP2515 successfully initialized.    
[    3.150549] mcp251x spi0.0 can1: MCP2515 successfully initialized.    
can0: flags=193<UP,RUNNING,NOARP>  mtu 16   
can1: flags=193<UP,RUNNING,NOARP>  mtu 16  

Socketan via Serial USB Device

1. Install Can-Utils:
sudo apt install -y can-utils libsocketcan2 libsocketcan-dev
2. Append /etc/network/interfaces with:
auto slcan0  
 iface can0 inet manual  
    pre-up /bin/slcand -o -s 500000 /dev/ttyACM0 && sbin/ip link set up slcan0  
    up /sbin/ifconfig slcan0 up      
    down /sbin/ifconfig slcan0 down
Note: to use a different device, like bluetooth or UART, just match the device from /dev and interchange names
3. Reboot & Connect USB or Serial Device :
sudo reboot
4a. Check Hardware & Network Status:
ifconfig | grep can
4b. Successful Result:
slcan0: flags=193<UP,RUNNING,NOARP>  mtu 16

OBDII/ELM327

TBC


Wiring Diagram


g

Clone this wiki locally