Skip to content

Flash Einsy USB Bootloader

Dennis edited this page Aug 6, 2021 · 2 revisions

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.

Clone this wiki locally