MKS SKIPR CAN Bus

I’ve compiled klipper for my MKS SKIPR without any problems with these settings


and flashed it onto the mcu.

As shown, the bridged mcu is found during a scan


but my BTT EBB36 connected to the can bus isn’t recognized.
My EBB36 is correctly flashed, cause using it with the BTT U2C it shows up.

Any ideas?

By the way, actually i use an extra usb c cable to wire the onboard MKS Pi with the STM32F407 MCU. Is there a way to get rid of this additional usb cable?

According to

MKS THR36/42 docs

they set can bus speed to 250000 on their devices. Also they have 12Ohm terminal resistance on UTC usb to can device.

[EDIT]
Setting the communication interface to serial pin PA9 (TX) PA10 (RX) and you get rid of the additional usb cable. At this point you cannot define a second slave? “CAN” communication interface. BTW is this a feature request to klipper?

There is a big lack of information from MKS to use CAN.
According to klipper documentation you need a CAN-BUS transceiver.

It looks like that you need a external “usb to can” device to communicate with onboard SKIPR STM MCU and other bus devices :frowning:

Greetings

i flashed my mcu myself with 500000, and if you use the usb canbus emulator, you have to connect to the usb port, it’s not (yet) supported via uart

yeah - i have actually the same problem with SKIPR / CAN / Klipperfirmware and edited my reply.

The onboard STM32F407 has a transceiver, if you look at the schematics.


but the transceiver isn’t connected to the “Pi”, it’s connected to the STM32

So if we want to connect a toolhead board, we are supposed to use this connector (make sense) and makermase said the THR36/42 will connect through it, so this way we should be able to use sth. like the EBB36/42 too.

you are right, in this case the klipper firmware is limited i think - do you think it is an klipper firmware feature request or hardware issue?
I dont know.

I will try it with my setup, but you have to be patient - i have no 4 pin connector for SKIPR - MKS is very economical with material :slight_smile:

Hmmmmm, i think you can call it a feature request, to support can bus interfaces for example attached to the STM32 mcu.

So from what I understand, every board with or without a CAN interface needs a dedicated CAN2USB board to be usable? That kinda sux.
I mean I can eg. flash my SB2040 as a Can2Usb bridge, but then I need a constant USB connection to the Board, the CAN wires aren’t used at all. That’s somewhat not the point of it all.

I bought the SKIPR to not need a dedicated CAN2USB bridge, but it seems all boards have a problem here. Or rather Klipper as it only supports one communication line.

So basically hardware would be capable but software is not ATM, does this sum up the matter correctly?

You’ll need a dedicated USB to CAN board unless you have something like an Octopus (V1.1 or Pro) board with a CAN bus controller on board.

From what i understood from @MLoewe comment there is a transciever onboard connected to the STM, just like with the Octopus boards, is it not?

But i have the same problem as @MLoewe, i can flash the SKIPR in bridge mode, that is initialized correctly, but i cannot find my toolboard(actually tried 2 of them, Fly SB2040 and Fysetc SB Can), both are not showig up in canbus_query.py

I’ve looked at the schematics of the btt octopus pro, it’s the same way as on the skipr.
The transceiver is connected to the stm32.
I’m on vacation until january 10th, so i can’t try it.
But how is the solution on the ocopus?
Any documentation?

1 Like

Hmm, maybe kevin have to fix something in the code to get bridge mode working :thinking:

@koconnor maybe you can look at this issue?

Bridge mode works fine on the Octopus. I’ve used it, and so have have many others. I’ve also used bridge mode on an RP2040. This is much more likely to be a wiring or configuration issue.

Well, then let me describe what I’ve done excatly:

For starters I am using the latest Klipper version (0.11.0-40)

MKS SKIPR
This is the configuration of the MKS SKIPR accordingly to their Wiki:
image

Compiled als flashed, it gets recognized as a CAN node and inserted into the printer.cfg
image
the board gets recognized and is working.

Update: I forgot to mention that I use an external USB cable to connect the STM part to the PI part, because it seems that CAN bridging does not work when using the internal UART connection.

Toolhead:
This is the configuration of the Mellow Fly SB2040 Toolhead board:
image
all settings accordingly to the Wiki page from Mellow: 固件烧录 (klipper.cn)
CAN termination jumper set with 120ohms as required. But after flashing I get no CAN-ID on the Linux:
image
Error on Klipper:

MKS PI
CAN-Settings on the PI:
image

Cable connections:
From the SB2040 the CAN-L and CAN-H


go to the corresponding CAN-L and CAN-H on the SKIPR board:
image
GPIO-Pins set with these diagrams in the configuration files before flashing

So this is all pretty straight forward (well, once you get your head around how everything’s interconnected here), so i belive there is not an configuration error, but i’d love to be proven wrong :smiley:

2 Likes

I’m having a bear of a time even getting my SKIPR flashed with an updated compile of klipper. MKS instructions say just name it mks_skipr.bin and put on SD card and reboot but it doesn’t seem to be accepted. Klippy log comes back with the original v10 firmware in its log whether I reboot with the MCU reset button or completely power cycle it.

I also tried putting it in DFU mode for a direct flash over the USB-C port but that also comes back as an unrecognized device on either the built-in pi or a Windows PC. Starting to wonder if I got a dud here.

I found a 128MB SD card that came with something else and it takes the firmware now. FAT ok, FAT32 not ok :man_facepalming: DFU mode still doesn’t work though, hold BOOT0 button and press RESET and nothing happens until I release BOOT0, then it just boots up normally.

CAN interface showed up and got config updated with uuid so I’m at least as far as you now. Need to get my EBB42 flashed and hooked up and we’ll find out if I end up at the same spot.

What is the connector type on the SKIPR for the CAN bus? The EBB42 uses a Molex Mini-fit (and includes housings and pins in the package!) and these are smaller, Molex Micro-fit maybe?

It’s the same molex connector on the skipr.
I used the molex connector with my btt u2c board.

But be aware, other pinout!

So, has anybody been able to use a CAN toolhead board in CAN mode with the SKIPR? From what I can tell from here and other sources this is not the case, even so people are saying the SKIPR is basically the same as an Octopus from the CAN HW integration…

So why does the Octopus work and the SKIPR not?
I can only get the toolhead to work in USB mode with of course USB cable permanent attached to it. But for that I would have not needed the SKIPR board at all…

I’m getting really frustrated here…

I’m not at home, so i can’t try.
But did you try one of the octopus guides for using the can?
Should work.

Make a usb connection from the pi side to the mcu side, and go with this manual: