Can Bus Reader for car

Howdy! This is my first post so bear with me if its bad. I’m working on a canbus gauge for my 1988 rx7. Right now I’m testing this on my 2009 328i. I’m using an arduino uno and the seeedstuido Serial CAN-BUS Module. I have the unit hooked up to my car and started using a couple different test codes. Right now the furtest I could get was the program kicking back “Starting Can Failed”.

// Copyright (c) Sandeep Mistry. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

#include <CAN.h>

void setup() {
  while (!Serial);

  Serial.println("CAN Receiver");

  // start the CAN bus at 500 kbps
  if (!CAN.begin(500E3)) {
    Serial.println("Starting CAN failed!");
    while (1);

void loop() {
  // try to parse packet
  int packetSize = CAN.parsePacket();

  if (packetSize) {
    // received a packet
    Serial.print("Received ");

    if (CAN.packetExtended()) {
      Serial.print("extended ");

    if (CAN.packetRtr()) {
      // Remote transmission request, packet contains no data
      Serial.print("RTR ");

    Serial.print("packet with id 0x");
    Serial.print(CAN.packetId(), HEX);

    if (CAN.packetRtr()) {
      Serial.print(" and requested length ");
    } else {
      Serial.print(" and length ");

      // only print packet data for non-RTR packets
      while (CAN.available()) {


I’m using this walk through

I tried using the code above but I’m unsure how to connect the can controller using this code.

I tried this code too which I like more because it shows what pins need to be connected. Though this program just spits trash into the serial monitor.

// unsigned char recv(unsigned long *id, uchar *buf);
#include <Serial_CAN_Module.h>
#include <SoftwareSerial.h>

Serial_CAN can;

#define can_tx  2           // tx of serial can module connect to D2
#define can_rx  3           // rx of serial can module connect to D3

void setup()
    can.begin(can_tx, can_rx, 10400);      // tx, rx

unsigned long id = 0;
unsigned char dta[8];

// send(unsigned long id, byte ext, byte rtrBit, byte len, const byte *buf);
void loop()
    if(can.recv(&id, dta))
        Serial.print("GET DATA FROM ID: ");
        for(int i=0; i<8; i++)
            Serial.print(dta[i], HEX);


Please note: On some vehicle makes, CAN Bus information is available on the OBD-II connector as you are expecting. However, that this is not the case on all CAN bus equipped vehicles. When CAN bus is not available on the OBD connector, it may be required to tap directly into the vehicle wiring loom. This will probably void any warranty associated with that bus. Please check the manufacturer's data or other reputable source to be sure it is available on your vehicle. I would guess that the CAN being the same on both vehicles is like my two cozens Slim and None.
This information can be acquired from: OBD2 Explained - A Simple Intro (2021)

I'll give it a try on my standalone haltech ecu. That has dedicated can high and low wires.