I just finished building my Voron 2.4. Everything is connected, and printer is printing fine… but only 20-40 minutes. After some time it reports 'Got error -1 in can write: (105)No buffer space available’. I get this error even if printer just booted and does not perform any job.
Restarting klipper does not help - after restart CAN is still not available. Only power cycle helps
Checked bytes_invalid parameter in the log. Even though sometimes it is not zero, it does not increase over time
There are a few items that do not contradict documentation, but concern me a little bit:
The terminating resistor is not on the cartographer PCB, but rather on SB2209. As per documentation this is OK, as cartographer is considered as spur, but technically the cartographer is the farmost device.
tx_retries value growth over time. Is this a problem?
Are there any ideas what could be wrong in my setup, and how can I localize the problem?
I’m not sure if this is going to be helpful or not, but just to throw this out there for consideration.
Can you remove the ‘cartographer’ component from the setup and operate the printer to see if you still get the error? I am not familiar with this component, and maybe it is in fact key to what you’re doing, but operating with it not present might be illuminating. Just a thought.
-tetra
addendum:
also v4 is out now, and have you updated the firmware on the cartographer?
You have CAN bus issue.
Alas because here is U2C in the middle, there is no info of what exactly is happening.
You can flash it with the klipper, it can help with debugging data, but it will not fix anything.
Otherwise it can be some of the bazillion issues with EBB SB boards.
(and probably is).
Hope that helps a little.
-Timofey
JFYI: CAN will not stop working because of a bit flip, or 2, or even 10.
Alas because here is U2C in the middle, there is no info of what exactly is happening.
You can flash it with the klipper, it can help with debugging data, but it will not fix anything.
What do you mean here? I probably can flash klipper on the U2C board, but what will it prove? U2C is connected by USB, while the issue is related to CAN.
In the meantime I also tried/excluded these:
Used a separate power supply for Raspberry to avoid voltage drop (previously it was powered from Spider board, which provided only 4.8V under load)
Removed cartographer
Replaced SB2209 board with another BTT EBB42 laying around
The point is that right now, only I can say that there is no answer/ack from the EBB (RTO increasing).
Because only EBB exports CAN stats and EBB is dead.
With the setup where:
Klippy process → USB → MCU → CAN BUS → EBB → CAN BUS → Carto
I have no data in between klippy process and EBB.
If there were a Klipper MCU, I would have some information about CANBUS state from the bridge.
That is the main difference.
It may or may not shine light on the issue.
Same about Carto here.
(btw, it should also work fine with the Klipper firmware).
Hmmmm, I reared it. Both MCUs, Carto and EBB lost connection.
So, I guess, it is something in between or your carto is powered from EBB, and lost power from EBB.
Anyway, they both died at the same time here.
We generally need logs if you changed something and it still happens.
Buffer overflow is not the root cause (and not an issue by itself I would say).
Thank you for the idea to flash Klipper as a USB2CAN bridge. With this firmware everything works much more stable. I was running it for 4 hours and it seems there are no major issues. Tomorrow I’ll try to get back the original cable, original EBB board, and the cartographer.
The only concern is ocasionally growing bytes_retransmit value (approx 10 bytes / hour). Shall I care about this? Currently I am testing this on the table using non-twisted cable, so connection quality is not the best. In a normal setup I’ll use a better cable.
Retries are handled, and they are fine by themselves.
In an ideal scenario, there are no retries because there are no losses.
Your log seems to be from an “idle” machine with low transfer rates.
It may happen that this will work and continue to do occasional retries.
It may happen that while printing there will be more traffic to retry, and it will shutdown with TTC, for example, because of too many retries.
You were right. I restored my setup (twisted cable, original EBB board, and the cartographer), and it failed almost right after start. Tried twice - same thing.
However, logs are quite confusing to me: sending data towards EBB looks ok, while number of retries in EBB→host direction increases dramatically over time. This does not hint me what board is working incorrectly Can you help, please?