From 56a50ae34ef68255b2235f71b574f1ddf40615cb Mon Sep 17 00:00:00 2001 From: Bassam Husain Date: Mon, 19 Jun 2023 00:27:08 -0400 Subject: [PATCH] Many adjustments to the firmware section. --- README.md | 46 ++++++++++++++++++------------- misc/skr-mini/README.md | 28 ------------------- misc/skr-mini/klipper-USART2.bin | Bin 19868 -> 0 bytes 3 files changed, 27 insertions(+), 47 deletions(-) delete mode 100644 misc/skr-mini/README.md delete mode 100644 misc/skr-mini/klipper-USART2.bin diff --git a/README.md b/README.md index 3582234..6870828 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,6 @@ I am creating these files for my personal use and cannot be held responsible for - [Installation Instructions](#installation-instructions) - [Electronic Wiring](#electronic-wiring) - [⚠️ Important Note About Stepper Motor Current](#important-note-about-stepper-motor-current) - - [Download Firmware](#download-firmware) - [Flash Firmware](#flash-firmware) - [Download Klipper Configuration](#download-klipper-configuration) - [Initial Steps](#initial-steps) @@ -41,31 +40,42 @@ For the SKR-Mini-E3-V3.0, the `run_current` for x, y, z stepper motors has been 💡 Although stepper motors can withstand upwards of 125C, they should at the most get hot to the touch (~55C), not _very hot_. -### Download Firmware +### Flash Firmware -💡 The firmware files are located in `misc/skr-mini`. -💡 Be sure to download the `raw` files. Find out more about this [here](https://stackoverflow.com/questions/4604663/download-single-files-from-github); check the answer with the highest score. +💡 _If you have already flashed klipper onto your motherboard in the past, you can skip this step._ -Download [klipper-USB.bin](./misc/skr-mini/klipper-USB.bin) compiled by BTT. +Please note: -Or you can download [klipper-v0.11.0-198-g33b18fd6-latest-UNTESTED.bin](./misc/skr-mini/klipper-v0.11.0-198-g33b18fd6-latest-UNTESTED.bin) that I compiled, however, it is **untested**. +- The firmware file **must** be named `firmware.bin`. +- The firmware files are located in `misc/skr-mini`. +- Many users have reported having issues flashing Klipper using the Sovol microSD card. -#### Alternatively, find instructions on how to build the firmware yourself [here](https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3/tree/master/firmware/V3.0/Klipper#build-firmware-image). +#### Select Your Firmware + +- `klipper-USB.bin` compiled by BTT. +- `klipper-v0.11.0-198-g33b18fd6-latest-UNTESTED.bin` that I compiled, however, it is **untested**. + +##### Build Your Own + +Find instructions on how to build the firmware yourself [here](https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3/tree/master/firmware/V3.0/Klipper#build-firmware-image). ls output -### Flash Firmware +#### 1. Prepare the microSD Card for Flashing with These Parameters -⚠️ Make sure the microSD card has been prepared using the instructions found [here](https://github.com/bassamanator/Sovol-SV06-firmware#1-prepare-the-microsd-card-for-flashing-with-these-parameters). +- Size: `16GB` maximum. +- File system: `FAT32`. +- Allocation unit size: `4096 bytes`. +- Must not contain any files _except_ the firmware file. -1. Rename whatever firmware file you're using to `firmware.bin`. ⚠️ If the file is not renamed, the bootloader will not be updated properly. -2. Copy `firmware.bin` to the root directory of the microSD card. -3. Power off the printer. -4. Insert the microSD card. -5. Power on the printer. -6. After a few seconds, the skr-mini-E3-V3.0 should be flashed, but wait a full minute just to be sure. -7. You can confirm that the flash was successful, by running `ls -l /dev/serial/by-id/` or `ls -l /dev/serial/by-path/`. If the flash was successful, you'll see something like the following: - ls output +#### 2. Flashing Procedure + +1. Disconnect any USB cables that might be connected to the motherboard. +2. Copy `firmware.bin` to the microSD card. +3. Make sure the printer is off. +4. Insert the microSD card into printer. +5. Turn on the printer and wait a minute (usually takes 10 seconds). +6. Turn off the printer and remove the microSD. ### Download Klipper Configuration @@ -122,12 +132,10 @@ This repository contains many files and folders. Some are _necessary_ for this K ├── misc ❌ │ ├── M503-output.yml │ ├── skr-mini -│ │ ├── klipper-USART2.bin │ │ ├── klipper-USB.bin │ │ ├── klipper-v0.11.0-198-g33b18fd6-latest-UNTESTED.bin │ │ ├── ls-output.png │ │ ├── menuconfig.png -│ │ ├── README.md │ │ └── skr-mini-e3-v3.0-v1678580296384.png │ ├── sv06-buildPlate.png │ ├── SV06-buildPlate.stl diff --git a/misc/skr-mini/README.md b/misc/skr-mini/README.md deleted file mode 100644 index 61bd059..0000000 --- a/misc/skr-mini/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Klipper Firmware - -## Firmware Precompiled by BIGTREETECH -- [firmware-USB.bin](./firmware-USB.bin). Connect the SKR-Mini to the Raspberry Pi via USB connection. -- [firmware-USART2.bin](./firmware-USART2.bin). Use TFT port USART2 to communicate with raspberry pi. Connect the UART-TX of raspberry pi with the USART-RX2 of motherboard and connect the UART-RX of raspberry pi with the USART-TX2 of motherboard directly to communicate normally. - -Alternatively, find instructions on how to build the firmware yourself [here](https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3/tree/master/firmware/V3.0/Klipper#build-firmware-image). - -## Flash Firmware - -1. Rename `firmware-USB.bin` or `firmware-USART2.bin` to `firmware.bin`. -Important: If the file is not renamed, the bootloader will not be updated properly. -2. Copy `firmware.bin` to the root directory of the microSD card (make sure the card is in FAT32 format). -3. Power off the SKR-mini-E3-V3.0. -4. Insert the microSD card. -5. Power on the SKR-mini-E3-V3.0. -6. After a few seconds, the SKR-mini-E3-V3.0 should be flashed. -7. You can confirm that the flash was successful, by running ls /dev/serial/by-id. If the flash was successful, you'll see something like the following: -skr-mini-e3-v3.0 installation instructions - -# Electronic Wiring - -skr-mini-e3-v3.0 installation instructions - -# Sources - -- https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3/tree/master/firmware/V3.0/Klipper#how-to-use-klipper-on-skr-mini-e3-v30 -- https://forum.sovol3d.com/t/sv06-mit-skr-e3-mini-v3/1189/24 diff --git a/misc/skr-mini/klipper-USART2.bin b/misc/skr-mini/klipper-USART2.bin deleted file mode 100644 index bcdaa1bfd214041840bb24294be6ca36b8ada9f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19868 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 V;WGa1gK@&60GCbu_23qx{{uv5SRnua