Dual CAN hat dropping frames that other boards pick up

I’m using the dual CAN hat with a Raspberry Pi 3 B+ for a project, and when I compare this hat to the same CAN circuit plugged into a PiCAN2, the Seeed unit is reliably dropping lots of frames from several devices on the network.

I’m using this Seeed unit:

The CANbus is 250kbit (it’s NMEA 2000), and several different devices, from different manufacturers (Yacht Devices sensors and also our Yanmar engine computers, among others) are being completely dropped. It’s not intermittent – not a single frame from those source devices are coming up on a raw CAN dump. When I take the Seeed hat off and stick a pican in place of it, the frames all come through.

I have the 120 ohm resistor disabled since it’s a leaf device. I’ve tried plugging the ground from the n2k network into both the power ground and the can0 ground, but it appears that the two are tied together on the board as they have 0.1 ohm resistance between them, so that predictably didn’t change anything. I’m pretty out of ideas, but it seems like something to do with the 2518 is bad compared to the 2515 for some reason or something? Is there anything else I can try?

Hello, could you please refer to our wiki example to prove that this could be a problem with the CAN-BUS you have. As we cannot tell from your project whether it is a problem with your project code or a defect in the product itself. If you can prove that it is not working properly according to the wiki example we have provided, we can assist you with a replacement or other process.

When I use the same exact project code with a PiCAN2, it shows the frames from the extra sources. It shows MOST data using the Seeed board (19 of 23 senders on my network), so I’m sure the basic example will work fine – it’s something with this board and these specific CAN senders. Maybe it’s not sending enough of a voltage differential for the specific CAN chip you’re using to think it’s frame traffic? Is there any way to tweak parameters for the transceiver or something?

You need to set canbus(FD) shield as traditional mode to compare with PICAN2.

I don’t see anything on the Seeed page about either “traditional” or even anything about "mode"s to change into. I’m using socketcan for all can interactions, so i’m simply opening the can stream and reading frames from it.

@codingparadox any logs or demo code? I met this issue before.

Candump (from the linux can-utils package) shows the problem – it’s just not showing frames from those devices.

Hi I’m facing the same problem, do you have any updates on this issue?

I ended up switching to the PiCAN2, and everything works well there.