diff --git a/README.md b/README.md
index 6870828..54f3bc4 100644
--- a/README.md
+++ b/README.md
@@ -15,19 +15,65 @@ I am creating these files for my personal use and cannot be held responsible for
## Outline
-- [Installation Instructions](#installation-instructions)
+- [Features](#features)
+- [Stay Up-to-Date](#stay-up-to-date)
+- [Preface](#preface)
+- [Installation Steps](#installation-steps)
+ - [Before You Begin](#before-you-begin)
- [Electronic Wiring](#electronic-wiring)
- [⚠️ Important Note About Stepper Motor Current](#important-note-about-stepper-motor-current)
- [Flash Firmware](#flash-firmware)
- [Download Klipper Configuration](#download-klipper-configuration)
- [Initial Steps](#initial-steps)
+ 1. [Adjust Configuration with MCU Path](#adjust-configuration-with-mcu-path)
+ 2. [Configure Your Printer](#configure-your-printer)
+- [Adjust Your Slicer](#adjust-your-slicer)
- [Directory Structure](#directory-structure)
- [Support Me](#support-me)
+- [FAQ](#faq)
- [Useful Resources](#useful-resources)
- [Sovol Official Links](#sovol-official-links)
- [Sources](#sources)
-## Installation Instructions
+## Features
+
+- 💥 This Klipper configuration is an _endpoint_, meaning that it contains **everything** that you could possibly need in order to have an excellent Klipper experience! 💥
+- ~~Filament runout sensor usage implemented.~~ Remains to be implemented on the Skr-mini-e3-v3.0.
+- Minimum configuration settings for Mainsail/Fluiddpi to work.
+- SuperSlicer config bundle that contains the printer configuration, as well as what are considered by many to be the best print settings available for any FDM printer ([Ellis' SuperSlicer Profiles](https://github.com/AndrewEllis93/Ellis-SuperSlicer-Profiles)). Find the differences between the different print setting profiles [here](https://github.com/AndrewEllis93/Ellis-SuperSlicer-Profiles/tree/master/SuperSlicer). But basically, the 45 degree profile places the seam at the back.
+- Bed model and texture to use in SuperSlicer/PrusaSlicer.
+- Macros
+ - **Improved** mechanical gantry calibration/`G34` macro that provides the user audio feedback, and time to check the calibration.
+ - Misc macros: `PRINT_START`, `CANCEL_PRINT`, `PRINT_END`, `PAUSE`, `RESUME`.
+ - Parking macros (parks the printhead at various locations): `PARKFRONT`, `PARKFRONTLOW`, `PARKREAR`, `PARKCENTER`, `PARKBED`.
+ - Load/unload filament macros.
+ - Purge line macro.
+
+## Stay Up-to-Date
+
+Watch for releases and updates.
+
+
+
+## Preface
+
+Although I've made switching over to Klipper as easy as is possible, it can still be a challenge for some, especially considering that most of you have likely never used GNU+Linux. Save yourself the frustration, and fully read all documentation found on this page. Also note that Klipper is not a _must_, and is not for everyone. You can stick with Marlin, and have a fine 3D printing experience.
+
+## Installation Steps
+
+### Before You Begin
+
+- Read this documentation _fully!_
+- Make sure your printer is in good physical condition, because print and travel speeds will be _a lot faster_ than they were before. Consider yourself warned.
+- Follow the steps in order.
+- If an error was reported at a step, do no proceed to the next step.
+- It is assumed that you are connected to your host Raspberry Pi (or other host device) via SSH, and that your printer motherboard is connected to the host via a data USB cable. Note that most of the micro USB cables that you find at home are _unlikely_ to be data cables, and it's not possible to tell just by looking.
+- It is also assumed that the username on the host device is `pi`. If that is not the case, you will have to manually edit `moonraker.conf` and `cfgs/misc-macros.cfg` and change any mentions of `/home/pi` to `/home/yourUserName`.
+- Klipper _must_ be installed on the host Raspberry Pi for everything to work. Easiest is to use a [~~FluiddPI~~](https://docs.fluidd.xyz/installation/fluiddpi#download) (⚠️ `FluiddPI` is not under active maintenance) or [MainsailOS](https://github.com/mainsail-crew/mainsail/releases/latest) image. Alternatively, you can install `Fluidd` or `Mainsail` via [KIAUH](https://github.com/th33xitus/kiauh).
+- Robert Redford's performance in _Spy Game (2001)_ was superb!
+- It is assumed that there is one instance of Klipper installed. If you have multiple instances of Klipper installed, via `KIAUH` for example, then this guide is not for you. You can still use all the configs of course, but the steps in this guide will likely not work for you.
+- Your question has probably been answered already, but if it hasn't, please post in the [Discussion](https://github.com/bassamanator/Sovol-SV06-firmware/discussions) section.
+- I would recommend searching for the word `NOTE` in this repository. There are roughly half a dozen short points amongst the various files that you should be aware of if you're using this configuration.
### Electronic Wiring
@@ -97,7 +143,84 @@ You can choose _either_ of the 2 following methods.
## Initial Steps
-Once you've cloned or downloaded the configuration, please follow instructions found in [Initial Steps](https://github.com/bassamanator/Sovol-SV06-firmware#initial-steps).
+### Adjust Configuration with MCU Path
+
+1. Find what port the `mcu` (printer motherboard) is connected to via `ls -l /dev/serial/by-id/` or `ls -l /dev/serial/by-path/`.
+ 1. The output will be something along the lines of
+ `lrwxrwxrwx 13 root root 22 Apr 11:10 usb-1a86_USB2.0-Serial-if00-port0 -> ../../ttyUSB0`.
+ 2. `usb-1a86_USB2.0-Serial-if00-port0` is the relevant part.
+ 3. Therefore, the full path to your `mcu` is either `/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0` or `/dev/serial/by-path/usb-1a86_USB2.0-Serial-if00-port0`, depending on the command you used to find the `mcu`.
+2. Adjust the `[mcu]` section in `printer.cfg` accordingly.
+ This is just an _example_ `mcu` section:
+
+ ```
+ [mcu]
+ serial: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
+ restart_method: command
+ ```
+
+3. Do a `FIRMWARE_RESTART`.
+
+If you've done everything correctly, you should see no errors or warnings in your Mainsail/Fluidd dashboard.
+
+### Configure Your Printer
+
+❗☠️ **Your finger should be on the power switch for most of these steps** ☠️❗
+
+❗☠️ **Power off if there is a collision/problem** ☠️❗
+
+💡 I recommend no filament be loaded for any of these steps.
+
+💡 Find explanations for gcode commands at [https://marlinfw.org/](https://marlinfw.org/) and [https://www.klipper3d.org/](https://www.klipper3d.org/G-Codes.html).
+
+You will be pasting/typing these commands into the Mainsail/Fluidd console.
+
+1. `G28`
+ 1. Check to see if `X` and `Y` max positions (`G90`, `G1 X223 F3000`, `G1 Y223 F3000`) can be reached, and adjust `position_max`, if necessary. You can probably go all the way up to `225` for `X` and `Y` both, however, I would not recommend it.
+2. Do a `G34`; mechanical gantry calibration. After the controlled collision against the beam at the top, there will be a 10 second pause for you to verify that both sides of the gantry are pressed up against the `stoppers` at the top. You will hear a succession of beeps.
+ 1. Figure out your `Z` `position_max` by baby stepping your way up to the beam. The range is 250 to 261 from what I've seen, could be even higher for you. Adjust `position_max`, if necessary. I can go all the way to 258, however, I would not print anything higher than 257.
+3. PID tune the bed, but first move the printhead to the center. Ideally, all PID tuning should occur at the temperatures that you print most at.
+ 1. `G28`
+ 2. `G90`
+ 3. `G1 X111 Y111 Z40 F6000`
+ 4. `PID_CALIBRATE HEATER=heater_bed TARGET=70`
+ 5. `SAVE_CONFIG` (once completed)
+4. PID tune the extruder while part cooling fan runs at 25%.
+ 1. `G28`
+ 2. `G90`
+ 3. `G1 X111 Y111 Z10 F6000`
+ 4. `M106 S64`
+ 5. `PID_CALIBRATE HEATER=extruder TARGET=245`
+ 6. `SAVE_CONFIG` (once completed)
+5. Adjust `z_offset`. Make sure your nozzle if very clean. Do the [Paper test](https://www.klipper3d.org/Bed_Level.html?h=probe_calibrate#the-paper-test).
+ 1. `SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET=60`
+ 2. `SET_HEATER_TEMPERATURE HEATER=extruder TARGET=180`
+ 3. Proceed to next steps after both temperatures have been reached.
+ 4. `G28`
+ 5. `PROBE_CALIBRATE`
+ 6. `SAVE_CONFIG` (once completed)
+6. Create a bed mesh.
+ 1. `SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET=60`
+ 2. `SET_HEATER_TEMPERATURE HEATER=extruder TARGET=180`
+ 3. Proceed to next steps after both temperatures have been reached.
+ 4. `G28`
+ 5. `BED_MESH_CALIBRATE`
+ 6. `SAVE_CONFIG` (once completed)
+
+If you've made it here, then your printer has been Klipperized, and is ready to print!
+
+But first, adjust your slicer.
+
+## Adjust Your Slicer
+
+You need to adjust the start and end gcode in your slicer. The relevant macros are `PRINT_START` and `PRINT_END`. Find instructions [here](https://ellis3dp.com/Print-Tuning-Guide/articles/passing_slicer_variables.html#slicer-start-g-code).
+
+If you would like to print a purge line before your print starts, at the end of your start gcode, on a new line add `PURGE_LINE`. Here's an example:
+
+```
+PRINT_START BED=[first_layer_bed_temperature] HOTEND={first_layer_temperature[initial_extruder]+extruder_temperature_offset[initial_extruder]} CHAMBER=[chamber_temperature]
+PURGE_LINE
+```
## Directory Structure
@@ -153,6 +276,83 @@ Please ⭐ star ⭐ this repository!
If you found my work useful, please consider buying me a [
](https://ko-fi.com/bassamanator).
+## FAQ
+
+##### How do I import a SuperSlicer configuration bundle (`SuperSlicer_config_bundle.ini`) into SuperSlicer?
+
+Please see [this discussion](https://github.com/bassamanator/Sovol-SV06-firmware/discussions/13).
+
+##### How do I print using SuperSlicer?
+
+Please see [this discussion](https://github.com/bassamanator/Sovol-SV06-firmware/discussions/14).
+
+##### When does beeping occur?
+
+The printer will beep upon:
+
+- Filament runout.
+- Filament change/`M600`.
+- Upon `PRINT_END`.
+- `MECHANICAL_GANTRY_CALIBRATION`/`G34`.
+
+##### How do I disable beeping?
+
+Make the following changes according to your needs. All beeping will be disabled _except_ during gantry calibration.
+
+| File | `cfgs/misc-macros.cfg` |
+| --------------- | -------------------------- |
+| Section | `[gcode_macro _globals]` |
+| Variable | `variable_beeping_enabled` |
+| Disable beeping | `0` |
+| Enable beeping | `1` |
+
+##### I want to use a filament sensor. How do I set it up?
+
+You can find information about the physical setup [here](https://github.com/bassamanator/everything-sovol-sv06#filament-sensor).
+
+##### I have a simple filament sensor connected. How do I enable/disable it?
+
+Make the following changes according to your needs.
+
+| File | `cfgs/misc-macros.cfg` |
+| -------------- | ---------------------------------- |
+| Section | `[gcode_macro _globals]` |
+| Variable | `variable_filament_sensor_enabled` |
+| Disable sensor | `0` |
+| Enable sensor | `1` |
+
+##### My filament runout sensor works, but I just started a print without any filament loaded. What gives?
+
+A simple runout sensor can only detect a change in state. So, if you start a print without filament loaded, the printer will not know that there is no filament loaded. You should test your sensor by having filament loaded, starting a print, then cutting the filament. The expected behaviour is that the print will pause, and as long as you have beeping enabled, you will hear 3 annoying beeps.
+
+##### What happens when I put in `M600`/colour change at a certain layer?
+
+1. The printer will beep 3 times (not annoyingly).
+2. Printing will stop.
+3. The printhead will park itself front center.
+4. The hotend will turn off, but the bed will remain hot.
+
+##### What happens when I pause a print?
+
+Same behaviour as `M600`/colour change _except_ there won't be any beeping.
+
+##### What happens when filament runs out?
+
+_If_ you have a working filament sensor, the same behaviour as `M600`/colour change will occur _except_ the beeps will be fairly annoying.
+
+##### How do I resume a print after a colour change or filament runout?
+
+⚠️ _Do not disable the stepper motors during this process!_
+
+The printhead is now parked front center waiting for you to insert filament. You will:
+
+1. Heat up the hotend to the desired temperature.
+ - Use your Klipper dashboard.
+2. Purge (push) some filament through the nozzle.
+ - Use your Klipper dashboard, and extrude maybe 50mm (for a colour change you probably want to extrude more).
+ - OR, you can push some filament by hand _making sure to first disengage the extruder's spring loaded arm_.
+3. Hit resume in your Klipper dashboard.
+
## Useful Resources
- [Everything Sovol SV06](https://github.com/bassamanator/everything-sovol-sv06)