MCP2515 not working even in loopback mode

Hello! Been working with a single mcp2515 module board for a while and now I wanted to connect one more mcp2515 (to access both high speed & low speed can buses), so ordered another one from ebay, now tried to connect it and I had a headache when setting up two boards on a single arduino uno board. Old one mcp2515 board was used for high speed bus, it works, new board for low speed, this doesn't work, it's not receiving messages. Swapped cs pins, old board works with low speed bus, new board doesn't work with high speed. Measured continuity on the board with multimeter, no problems, soldered good. Now I tried simplest program to send and receive message in loopback mode and it's not receiving messages. This is the code:

#include <SPI.h>
#include <mcp2515.h>

MCP2515 mcp(7);
can_frame send, recv;
void interrrrupt();

void setup()
{
    // Begin serial & spi
    Serial.begin(115200);
    SPI.begin();

    // Init mcp
    mcp.reset();
    mcp.setBitrate(CAN_250KBPS, MCP_8MHZ);
    mcp.setLoopbackMode();

    // Check for errors
    if(mcp.checkError()){
        Serial.println("mcp initialization failed, halting!");
        while(1);
    }

    // Init can frames
    send.can_dlc = 8;
    send.can_id = 0x81224433;
    send.data[0] = 0x12;
    send.data[1] = 0x23;
    send.data[2] = 0x34;
    send.data[3] = 0x45;
    send.data[4] = 0x56;
    send.data[5] = 0x67;
    send.data[6] = 0x78;
    send.data[7] = 0x89;
    recv.can_dlc = 8;

    Serial.println("Ready!");
}

uint32_t nextSend = 0;

void loop()
{
    // Send message
    uint32_t now = millis();
    if(now > nextSend){
        mcp.sendMessage(&send);
        nextSend = now + 1000;
        Serial.println("Message sent!");
    }

    // Read messages
    if(mcp.readMessage(&recv) == MCP2515::ERROR_OK){
        Serial.print("Received message: 0x");
        Serial.print(recv.can_dlc, HEX);
        Serial.println(", data:");

        for(int i=0; i<8; i++){
            Serial.print(recv.data[i], HEX);
            Serial.print(" ");
        }
        Serial.println();
    }
}

Tried changing cs pin, still nothing. Also tried interrupt based reading, interrupt function is never called. So there's couple question left, is that mcp2515 board with a defect? Is there anything else I can try, or just order another board?

Post links to high resolution photos showing the top, bottom and side/angle views of the problematic PCB. Make sure the component leads and silkscreen are in focus.

With a magnifying glass search for solder blobs and bridges that shouldn't be there. If you are using a Niren style board it is common to see manufacturing defects.

Check the return codes from all the 'mcp.' commands in setup.

There's only 3 commands in setup function and all of them returns ERROR_OK. I suppose mcp2515 itself is responding to the commands, but maybe tja1050 is not communicating with mcp2515, since I can't receive messages (maybe it can't even send, didn't tested yet). I don't have very strong magnifying glass, but I took a look and couldn't see any blobs or bridges. Here are the photos:

https://i.postimg.cc/htRQBhvM/IMG-20200530-215811.jpg
https://i.postimg.cc/q7ktNY83/IMG-20200530-220006.jpg
https://i.postimg.cc/xCZqF1Bv/IMG-20200530-220027-1.jpg
https://i.postimg.cc/zvR3m119/IMG-20200530-220112-1.jpg
https://i.postimg.cc/t4dZCyVb/IMG-20200530-220416.jpg
https://i.postimg.cc/zf0yKjjP/IMG-20200530-220430.jpg
https://i.postimg.cc/DZ08gXpf/IMG-20200530-220442.jpg

I checked continuity again with multimeter and all pins are connected to where they should be, they are not shorted neither to gnd nor +5v (those pins which shouldn't be directly connected to gnd or +5v) and none of the pins are shorted to neighbor pins.

Okay so I tried to send ping pong messages between boards. Good board receives perfectly good messages from faulty one. Faulty board receives messages with id 0x0 and data 0x0 and even though message is sent every one second, faulty board receives messages in random intervals, 1-3 messages per second.