How to connect to an SKR v2.0 via SBC

Overview

The SKR v2.0 is a STM32F407VGT6 based board.

Firmware File

Teamgloomy now generate per board firmware files. The correct file to use for this board is firmware_skr2_f4.bin.
The firmware release includes both SBC and WiFi modes in one. There are 3 methods available to get the board into SBC mode. These are:

1. There is no SD card detected in the board.
2. There is no board.txt on the SD card.
3. There is an entry sbc.loadConfig=true in the board.txt file on the SD card.

These instructions use option 1.

The latest firmware files can be found here

Remember to rename it to firmware.bin. Put it in the root of a FAT32 formatted SD card. The maximum size supported card is 32GB.
Load the SD card into the board and power it up (either using USB or 12/24v). Leave it for 1 minute or so and then power the board down. Check the SD card, and if firmware.bin has changed to firmware.cur, then your board has been flashed correctly and an SD card is not required in the mainboard any more.

SBC

Connecting a Single Board Computer, such as a raspberry pi 3B/3B+/4.

Prepare the Raspberry Pi

Follow the instructions detailed here.

BOM

  • 5 x 100R resistor
  • jumpers or other ways of connecting to the SKR v2.0

Connecting the SBC to the SKR v2.0

The pinout for the SKR v2.0 can be found here and the schematic for the Duet 3 for reference can be found here. The raspberry pi GPIO pinout can be found here.

The table below shows the pins required on the SBC and what they are connected to on the SKR v2.0. Please ensure that your cables are no longer than 30cm although they should ideally be as short as possible.

SBC Pin SKR v2.0 Resistor Value
23/BCM11/SPI0 Clk PB_13 100R
21/BCM9/SPI0 Miso PB_14 100R
19/BCM10/SPI0 Mosi PB_15 100R
24/BCM8/SPIO CE0 PB_12 100R
22/BCM25 PC_14 100R
20/GND GND None

Prepare the SD Card

Remember, there are 3 methods available to get the board into SBC mode. These are:

1. There is no SD card detected in the board.
2. There is no board.txt on the SD card.
3. There is an entry sbc.loadConfig=true in the board.txt file on the SD card.

This instruction will assume option 1. If any changes to the stock board.txt settings (shown below) are required, these can be made to a board.txt file on the SBC itself. These are then loaded during the startup process. Therefore, an SD card is not required.
The preset configurables are listed below for reference.

board=skr2_f4
board.longName="BTT SKR2 Rev B STM32F4"
sdcard.internal.type=2
SPI0.pins={A.5,A.6,A.7}
SPI1.pins={B.13,B.14,B.15}
SPI2.pins={NoPin,NoPin,NoPin}
SPI3.pins={E.15,A.14,E.14}
SPI4.pins={C.5,B.1,B.0}
SPI5.pins={E.10,NoPin,B.1}
stepper.powerEnablePin=C.13
stepper.enablePins={E.3,D.6,D.1,C.7,D.13}
stepper.stepPins={E.2,D.5,A.15,D.15,D.11}
stepper.directionPins={E.1,D.4,A.8,D.14,D.10}
stepper.numSmartDrivers=5
stepper.TmcUartPins={E.0,D.3,D.0,C.6,D.12}
stepper.spiChannel=3
power.VInDetectPin=NoPin
sbc.TfrReadyPin=C.14
sbc.csPin=B.12
sbc.spiChannel=1
wifi.espDataReadyPin=B.10
wifi.TfrReadyPin=B.11
wifi.espResetPin=C.14
wifi.serialRxTxPins={D.9, D.8}
heat.tempSensePins={A.1,A.2,A.3}

Booting

Turn it all on and, assuming you have followed the steps correctly, the board will boot correctly.

You can either navigate to duet3.local or find the IP address of the rasberry pi using your router. If you don’t have access to that, use something like Fing to scan your network.

Errors

Please report any disconnects on either the forum or discord.

Editing board.txt

These changes made to board.txt should be made to the board.txt file on the SBC (through DWC) in the system folder (where config.g can be found). If there is no board.txt present, it can be created using DWC.

Drivers

The following line should be added (obviously with the array entries matching your drivers and their locations):

stepper.DriverType = {Tmc2208, Tmc2240, tmc2209, tmc5160, stepdir}

The DriverType array allows for any driver to be used in any slot so there is no order requirement like the previous detection method. The array must also include an entry for each driver slot up to the last one thats populated.
The following list of entries are valid:

none
stepdir
tmc2208
tmc2209
tmc2660
tmc5160
tmc2240

The entry for stepper.numSmartDrivers is preset in the firmware for the number of drivers your board can handle. The number of drivers only needs to be changed if you are adding more drivers using something such as the BTT EXP MOT.

TMC2240 Driver Temperature

TMC2240 drivers support reporting their own temperature, rather than just hot and very hot like the other TMC drivers. To utilise this, add the following line to your config.g

M308 S11 Y"drivers"

This will return the highest temperature reading from any of the drivers, 2240s will return the actual temperature, other drivers will return 0, 100 or 150 (as before).

If you want to know the temperature of a particular driver you need to add the following line (as well as the above):

M308 S12 Y"drivertemp" p"S11.X"

Where x is the driver number that matches the driver number used by M569

Sensorless Homing

Follow the instructions as found here

Uploading your config

Once you’ve connected to the raspberry pi through your router, start to customise your config.g file etc or upload the outputted zip file from the Configurator to the pi using the system tab of DWC.

Changing the SBC hostname

This is an optional step if you only have a single duet3 on your network. It is required if you have more than one SBC configured RRF setup (as each setup on a network needs a unique host name) or you just want to change the name from the default “duet3”.

The name of the printer is its hostname on the network, you will need to connect to the SBC over SSH in order to run the Raspberry Pi configuration utility and change the hostname.

  1. Connect via ssh
  2. At a command prompt type
    sudo raspi-config
    
  3. Select “System Options” -> Hostname-> “OK”-> and set the new printername/hostname.

  4. Select “Finish” and reboot.

Once up and running

You will need to PID tune your tools and your bed. Please be aware that bed tuning may take up to an hour and tool tuning normally takes around 15 minutes. If it takes longer, that is also fine as up to 30 cycles may be ran.

To tune the bed, run the following command, changing the temperature (the S value) if a different tuning temperature is required.

M303 H0 S60

To tune each tool, run the following command, changing the temperature (the S value) if a different tuning temperature is required. This proceedure will activate the part cooling fans during the final phase of the tuning process so their effect is taken into account. If your printer has more than one tool, make sure each one of them is tuned.

M303 T0 S220

Once the tuning is complete, either copy the M307 command into the heater definitions or send M500, ensuring you have M501 at the end of your config.g.
If the tuning fails at the end, carry on saving the values as in most cases the outputted values still work correctly.
If the values still result in a heater fault, please refer to this wiki page for information about how to adjust the values manually.

Tags: