Overview
The SKR Pro v1.2 is a STM32F407VGT6 based board.
There are a number of steps that can be done to limit this issue.
1. Keep the wires between the controller and the Pi short
2. Use either a ribbon cable, or if using jumper wires then use ribbon-style jumper wire strips with the individual conductors separate only at the ends
3. Use multiple ground connections between the two
4. Beware of ground loops. Problems are likely if more than one of the the PSU supplying the controller, the PSU supplying the Pi, and any other equipment that the Pi is connected to (other than via Ethernet) has its signal ground connected to the mains ground in the 3-pin plug that supplies the power. RPi PSUs are usually not grounded. ATX PSUs always are. Meanwell-style PSUs have a ground connection, but it is up to you whether you link mains ground to PSU negative output.
In short, these disconnects may happen to you or they may not. If they happen and you are unable to fix them, then the only remaining options are track down the noise by changing components one by one or switch to using WiFi rather than an SBC.
For STM32 based boards, there is little gain from using an SBC at this current time, especially as ESP32 is now available.
Firmware File
Choose the correct corresponding firmware (firmware-stm32f4-sbc.bin) from 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.
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 Pro v1.2
Connecting the SBC to the SKR Pro v1.2
The pinout for the SKR Pro v1.2 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 Pro v1.2. Please ensure that your cables are no longer than 30cm although they should ideally be as short as possible.
SBC Pin | SKR Pro v1.2 | 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 | PF_12 | 100R |
20/GND | GND | None |
Prepare the SD Card
All the SD card on the SKR Pro v1.2 needs is the board.txt file with the following contents.
//Config for SKR Pro v1.2
board = biquskrpro_1.1
sbc.TfrReadyPin = PF_12
heat.tempSensePins = { PF_6, PF_3, PF_4, PF_5 }
leds.diagnostic =
Drivers
Although the original method of having the firmware detect the drivers is still supported, as we have now added TMC2240 support, there is now a new method.
The following line should be added (obviously with the array entries matching your drivers and their locations):
stepper.numSmartDrivers = X
stepper.DriverType = {Tmc2208, Tmc2240, tmc2209, tmc5160, stepdir}
For the number of smart drivers, if you have the following installed (tmc2209, none, tm5160, stepdir, tmc2209) then numSmartDrivers needs to be set to 5 not to 3. Basically it means how many entries there are in the driver types array. Entries after that number get set to 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
If using TMC2240 or TMC5160 drivers, you also need to add the correct spi channel:
stepper.spiChannel = 2
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
Smart Drivers
If using TMC5160 or TMC22XX drivers (where 22XX is either the TMC2208, TMC2209, TMC2225 or TMC2226), the following line must also be added to the board.txt file
stepper.numSmartDrivers = X
Where X is the number of drivers fitted in total.
TMC5160 SPI Drivers
If using TMC5160 drivers, the following lines must also be added to the board.txt file.
stepper.num5160Drivers = X
stepper.spiChannel = 2
Where X is the number of TMC5160 drivers fitted.
The drivers must be grouped together with the installed TMC5160s first. They can have gaps between each driver and/or driver type. So, if you have say 3 TMC5160s and 1 TMC22XX and 1 other driver, the 5160s should installed first (e.g. in slots 0, 1 and 2 or slots 0, 3 and 4), the TMC22XX in a slot after the 5160 and the remaining driver last. You can use RRF to assign any of those slots to an axis/extruder.
Sensorless Homing
Follow the instructions as found here
Board.txt Location
Place the board.txt file in a directory called “sys” on the SD card and install the SD card in the SKR Pro v1.2.
Finally…
Turn it all on and you should be good to go.
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.
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.
Errors
Please report any disconnects on either the forum or discord.
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.
- Connect via ssh
- At a command prompt type
sudo raspi-config
-
Select “System Options” -> Hostname-> “OK”-> and set the new printername/hostname.
- 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.