Sparkfun Can bus shield

I am currenty working on a project where I am supose to receive CAN messages from a gear shifter, I am using a Arduino uno and the sparkfun can bus shield. I am able to send messages but I can not receive them, not any thing that makes sense anyway.
It seems to think a message is ready but when I read it with a “Accept all messages setup” all I get is some random numbers over and over.

The thing is that the messages only get written out as long as the shifter sends data ie. as long as it got power.
If I trie to run in loop back everything works like a charm, but if I go back to normal mode or listen I only receive the message that was last sent while in loopback mode.

Here is the library I am using: http://www.otenko.com/arduino/can_mcp2515_arduino.zip
It is based on the canduino library.

Here is the code I am using to test:

#include <SPI.h>
#include <SoftwareSerial.h>
#include "CAN.h"

#define BUS_SPEED 500
#define RX 1
#define TX 0

int state;

CANClass CAN;

void setup() {           
	Serial.begin(9600);
	CAN.begin();
	CAN.baudConfig(BUS_SPEED);	
	CAN.resetFiltersAndMasks();
        CAN.setMode(LISTEN);
	//CAN.setMaskOrFilter(MASK_0,   0b11111111, 0b11100000, 0b00000000, 0b00000000); 
   	//CAN.setMaskOrFilter(MASK_1,   0b11111111, 0b11100000, 0b00000000, 0b00000000); 
	//CAN.setMaskOrFilter(FILTER_2, 0b10101010, 0b10100000, 0b00000000, 0b00000000);


        //CAN.toggleRxBuffer0Acceptance(false, true);
        
        Serial.println("Init done!");

	delay(1000);
	
	
}



byte length,rx_status,i;
uint32_t frame_id;
byte frame_data[8]; 
byte filter,ext;





void printBuf(byte rx_status, byte length, uint32_t frame_id, byte filter, byte buffer, byte *frame_data, byte ext) {
       
      Serial.print("[Rx] Status:");
      Serial.print(rx_status,HEX);
      
      Serial.print(" Len:");
      Serial.print(length,HEX);
      
      Serial.print(" Frame:");
      Serial.print(frame_id,HEX);

      Serial.print(" EXT?:");
      Serial.print(ext==1,HEX);
       
      Serial.print(" Filter:");
      Serial.print(filter,HEX);

      Serial.print(" Buffer:");
      Serial.print(buffer,HEX);
      
      Serial.print(" Data:[");
      for (int i=0;i<8;i++) {
        if (i>0) Serial.print(" ");
        Serial.print(frame_data[i],HEX);
      }
      Serial.println("]"); 
}

void readRX()
{
      //Serial.println("Reading data");
  
      //clear receive buffers, just in case.
      frame_data[0] = 0x00;
      frame_data[1] = 0x00;
      frame_data[2] = 0x00;
      frame_data[3] = 0x00;
      frame_data[4] = 0x00;
      frame_data[5] = 0x00;
      frame_data[6] = 0x00;
      frame_data[7] = 0x00;
  
      frame_id = 0x0000;
  
      length = 0;
      
      rx_status = CAN.readStatus();

      if (CAN.buffer0DataWaiting()) {
         CAN.readDATA_ff_0(&length,frame_data,&frame_id, &ext, &filter);
         Serial.print("[0] ");
         printBuf(rx_status, length, frame_id, filter, 0, frame_data, ext);
      } 

}

void loop() {
      
      //Serial.println("Sending data");  
  
      frame_data[0] = 0x00;
      frame_data[1] = 0x4;
      frame_data[2] = 0x00;
      frame_data[3] = 0x00;
      frame_data[4] = 0x00;
      frame_data[5] = 0x00;
      frame_data[6] = 0x00;
      frame_data[7] = 0x00;
  
      frame_id = 0x140;
      length = 2;
      
      CAN.load_ff_0(length,&frame_id,frame_data, false);

           

      delay(1000);

      readRX();
}

Thank you in advance.

hello, I am trying to do the same. I mean trying to get messages from CAN BUS. Did you succeeded in your project?