Flash Einsy USB Bootloader - Prutsium/3D-Druckerplausch-Klipper GitHub Wiki
CAUTION! YOU CAN BREAK YOUR PRINTER WHEN FOLLOWING THIS TUTORIAL OR DOING ANYTHING WRONG!! This tutorial is for information only and we accept no liability.
Thanks to Chris Warkocki for his tutorial, which we use as a reference.
We will set up things a bit simpler - by only using a Raspberry Pi, which you need anyway for using Klipper.
If you want to program the Einsy Board using an USBasp, just visit Chris' page, mentioned above.
What's the problem?
The serial connection of the Prusa Einsy Boards is too slow at factory defaults, to allow high Baud rates which Klipper needs, to send its commands. To make it usable at higher printing speeds, an other firmware has to be flashed onto the Einsy Board.
HowTo
Software
Install a Debian-based Linux on your Raspberry Pi - for example FluiddPi, which is our recommendation for Klipper.
Open a SSH connection to your Raspberry and trigger a sudo apt update
and sudo apt upgrade -y
to get the most current packages. Afterwards install the required packages: sudo apt install avrdude gcc-avr make -y
(See following manual)
Reboot the Raspberry and edit the /etc/avrdude.conf
, for further reference see this manual.
E.g. use sudo nano /etc/avrdude.conf
and look for a section containing linuxgpio
. Edit the lines as following:
programmer
id = "pi_1";
desc = "Use the Linux sysfs interface to bitbang GPIO lines";
type = "linuxgpio";
reset = 12;
sck = 24;
mosi = 23;
miso = 18;
;
(Don't forget to uncomment the mentioned lines)
With this change, you created a pi_1
programmer, to be used when programming the USB interface of the Einsy Board.
Now shutdown your raspberry pi and remove power from both - Raspberry and Prusa printer.
Hardware
For correct wiring, we use a modified version of this tutorial. Please take a look at the pictures for further reference as well as the Raspberry GPIO documentation.
Einsy PIN | Einsy Location | Raspberry PIN | Description |
---|---|---|---|
1 | Upper Left | GPIO #18 | MISO |
2 | Upper Right | 5V | VCC |
3 | Centre Left | GPIO #24 | SCK |
4 | Centre Right | GPIO #23 | MOSI |
5 | Lower Left | GPIO #12 | Reset |
6 | Lower Right | GND | GND |
Triple-check the wiring. You can break your printer here. Be careful!
Flashing
If you are sure about the wiring, power up your Raspberry. NOT your Prusa printer!
Backup the current firmware: sudo avrdude -p m32u2 -F -c pi_1 -U flash:r:firmware_backup.hex:i -U eeprom:r:eeprom.hex:i -U lfuse:r:lowfuse:h -U hfuse:r:highfuse:h -U efuse:r:exfuse:h -U lock:r:lockfuse:h
Set the fuse: sudo avrdude -p m32u2 -F -c pi_1 -U hfuse:w:0xD1:m
Download the new firmware: wget https://raw.githubusercontent.com/PrusaOwners/mk3-32u2-firmware/master/hex_files/DFU-hoodserial-combined-PrusaMK3-32u2.hex
Flash the new firmware: sudo avrdude -p m32u2 -F -c pi_1 -U flash:w:DFU-hoodserial-combined-PrusaMK3-32u2.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m
(If you get verify or fuse errors on executing the last one, try power cycling your Raspberry, and try again with setting the fuse. Don't overwrite your backup.)
Tada
Congratulations! The USB connection of your Prusa printer can now handle a higher Baud.