diff --git a/ReadMe.md b/ReadMe.md
index 70e2261da..789477ff0 100644
--- a/ReadMe.md
+++ b/ReadMe.md
@@ -4,14 +4,47 @@
-Welcome to [Flipper Zero](https://flipperzero.one/)'s Firmware repo! Our goal is to create nice and clean code along with good documentation, to make it a pleasure for everyone to work with. This repo will become completely public closer to the device shipping date.
+Welcome to [Flipper Zero](https://flipperzero.one/)'s Firmware repo!
+Our goal is to create nice and clean code along with good documentation, to make it a pleasure for everyone to work with.
+This repo will become completely public closer to the device shipping date.
# Update firmware
-Flipper Zero's firmware consists of two components: Bootloader and main firmware. Bootloader controls firmware update process over USB. You need working bootloader installed before update firmware over USB.
+Flipper Zero's firmware consists of three components:
+
+- Core2 firmware - proprietary componenets by ST: FUS + radio stack.
+- Core1 Bootloader - controls basic hardware initialization and loads firmware
+- Core1 Firmware - HAL + OS + Drivers + Applications
+
+All 3 of them must be flashed in order described.
+
+## With STLink
+
+### Core2 flashing procedures
+
+Prerequisites:
+
+- Linux / MacOs
+- Terminal
+- STM32_Programmer_CLI added to $PATH
+
+One liner: `./flash_core2_ble.sh`
+
+### Core1 Bootloader + Firmware
+
+Prerequisites:
+
+- Linux / MacOs
+- Terminal
+- Arm gcc noneabi
+- openocd
+
+One liner: `./flash_core1_main.sh`
+
+## With USB DFU
1. Download latest [Firmware](https://update.flipperzero.one/full_firmware_latest.bin)
@@ -21,9 +54,9 @@ Flipper Zero's firmware consists of two components: Bootloader and main firmware
- Release `↩ Back`
-1. Run `dfu-util -D firmware.bin -a 0 -s 0x08008000:leave`
+1. Run `dfu-util -D full_firmware_latest.bin -a 0 -s 0x08000000:leave`
-## Build from source
+# Build from source
`docker-compose exec dev make -C firmware TARGET=f4 APP_RELEASE=1 flash` for build and flash dev board (see `applications/applications.mk` for list of applications/examples)
diff --git a/flash_core1_main.sh b/flash_core1_main.sh
new file mode 100755
index 000000000..613bd6ba0
--- /dev/null
+++ b/flash_core1_main.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+set -x -e
+
+rm bootloader/.obj/f*/flash || true
+make -C bootloader -j9 flash
+
+rm firmware/.obj/f*/flash || true
+make -C firmware -j9 APP_RELEASE=1 flash
diff --git a/flash_core2_ble.sh b/flash_core2_ble.sh
new file mode 100755
index 000000000..ff80a295d
--- /dev/null
+++ b/flash_core2_ble.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+set -x -e
+
+COPRO_DIR="lib/STM32CubeWB/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x"
+
+
+STM32_Programmer_CLI -c port=swd -fwupgrade $COPRO_DIR/stm32wb5x_FUS_fw_1_0_2.bin 0x080EC000 || true
+STM32_Programmer_CLI -c port=swd
+
+STM32_Programmer_CLI -c port=swd -fwupgrade $COPRO_DIR/stm32wb5x_FUS_fw.bin 0x080EC000 || true
+STM32_Programmer_CLI -c port=swd
+
+STM32_Programmer_CLI -c port=swd -fwdelete
+
+STM32_Programmer_CLI -c port=swd -fwupgrade $COPRO_DIR/stm32wb5x_BLE_Stack_full_fw.bin 0x080CB000 firstinstall=0
+
+STM32_Programmer_CLI -c port=swd -ob nSWBOOT0=1 nBOOT0=1
+