@Denys-Makogon said in How to fix device firmware with a microSD card:

What a miracle! Once I followed the steps from USB storage device recovery Omega 2+ started to boot:
...
It took about 8 minutes to make the device functional. A Miracle! The key takeaway here is that tutorials are always incomplete, especially those ones about the recovery from a "brick-like" mode. If you’d ask if that is possible to restore Omega 2+ from a microSD — yes, you can.

Sorry I'm afraid you are wrong.

Omega2+ (v0.2.0 b190) Onion Omega2 UBoot Version: 4.3.0.3

____ _ ____ / __ \___ (_)__ ___ / __ \__ _ ___ ___ ____ _ / /_/ / _ \/ / _ \/ _ \ / /_/ / ' \/ -_) _ `/ _ `/ \____/_//_/_/\___/_//_/ \____/_/_/_/\__/\_, /\_,_/ W H A T W I L L Y O U I N V E N T ? /___/" Board: Onion Omega2 APSoC DRAM: 128 MB relocate_code Pointer at: 87f60000 flash manufacture id: c2, device id 20 19 find flash: MX25L25635E ============================================ Onion Omega2 UBoot Version: 4.3.0.3 -------------------------------------------- ASIC 7628_MP (Port5<->None) DRAM component: 1024 Mbits DDR, width 16 DRAM bus: 16 bit Total memory: 128 MBytes Flash component: SPI Flash Date:Oct 18 2016 Time:17:29:05 ============================================ icache: sets:512, ways:4, linesz:32 ,total:65536 dcache: sets:256, ways:4, linesz:32 ,total:32768 CPU freq = 575 MHZ Estimated memory size = 128 Mbytes Resetting MT7628 PHY. Initializing MT7688 GPIO system. ************************************** * Hold Reset button for more options * ************************************** You have 40 seconds left to select a menu option... Please select option: [ Enter ]: Boot Omega2. [ 0 ]: Start Web recovery mode. [ 1 ]: Start command line mode. [ 2 ]: Flash firmware from USB storage. Option [2] selected. System Load Linux then write to Flash via USB Storage. Looking for a USB Storage. If suitable image is found on USB Storage writing to Flash will be attempted. U-Boot will look for a FAT file system. (Re)start USB... LOW LEVEL INIT USB0: Scanning bus 0 for devices... New Device 0 usb_control_msg: request: 0x6, requesttype: 0x80 value 0x100 index 0x0 length 0x8 usb_control_msg: status = success? INSIDE USB INIT INSIDE USB INIT: Device responded. set address 1 usb_control_msg: request: 0x5, requesttype: 0x0 value 0x1 index 0x0 length 0x0 usb_control_msg: status = success? usb_control_msg: request: 0x6, requesttype: 0x80 value 0x100 index 0x0 length 0x12 usb_control_msg: status = success? usb_control_msg: request: 0x6, requesttype: 0x80 value 0x200 index 0x0 length 0x9 usb_control_msg: status = success? usb_control_msg: request: 0x6, requesttype: 0x80 value 0x200 index 0x0 length 0x19 usb_control_msg: status = success? get_conf_no 0 Result 25, wLength 25 if 0, ep 0 ##EP epmaxpacketin[1] = 2 set configuration 1 usb_control_msg: request: 0x9, requesttype: 0x0 value 0x1 index 0x0 length 0x0 usb_control_msg: status = success? new device strings: Mfr=0, Product=1, SerialNumber=0 usb_control_msg: request: 0x6, requesttype: 0x80 value 0x300 index 0x0 length 0xFF usb_control_msg: status = success? USB device number 1 default language ID 0x409 usb_control_msg: request: 0x6, requesttype: 0x80 value 0x301 index 0x409 length 0xFF usb_control_msg: status = success? Manufacturer Product OHCI Root Hub SerialNumber Device is a hub? usb_control_msg: request: 0x6, requesttype: 0xA0 value 0x2900 index 0x0 length 0x4 usb_control_msg: status = success? usb_control_msg: request: 0x6, requesttype: 0xA0 value 0x2900 index 0x0 length 0x9 usb_control_msg: status = success? usb_control_msg: request: 0x0, requesttype: 0xA0 value 0x0 index 0x0 length 0x4 usb_control_msg: status = success? usb_control_msg: request: 0x1, requesttype: 0x23 value 0x8 index 0x1 length 0x0 usb_control_msg: status = success? usb_control_msg: request: 0x0, requesttype: 0xA3 value 0x0 index 0x1 length 0x4 usb_control_msg: status = success? usb_control_msg: request: 0x3, requesttype: 0x23 value 0x8 index 0x1 length 0x0 usb_control_msg: status = success? usb_control_msg: request: 0x0, requesttype: 0xA3 value 0x0 index 0x1 length 0x4 usb_control_msg: status = success? usb_control_msg: request: 0x0, requesttype: 0xA3 value 0x0 index 0x1 length 0x4 usb_control_msg: status = success? usb_control_msg: request: 0x1, requesttype: 0x23 value 0x10 index 0x1 length 0x0 usb_control_msg: status = success? usb_control_msg: request: 0x3, requesttype: 0x23 value 0x4 index 0x1 length 0x0 usb_control_msg: status = success? usb_control_msg: request: 0x0, requesttype: 0xA3 value 0x0 index 0x1 length 0x4 usb_control_msg: status = success? cannot reset port 1!? 1 USB Device(s) found scan end Scanning bus for storage devices... ================================================= 1: Hub, USB Revision 1.10 - OHCI Root Hub - Class: Hub - PacketSize: 8 Configurations: 1 - Vendor: 0x0000 Product 0x0000 Version 0.0 USB_STORAGE: 0 Storage Device(s) found No USB Storage found. No F/W upgrade from USB Storage will be attempted.

The essence of the above log:

Option [2] selected.
System Load Linux then write to Flash via USB Storage.
Looking for a USB Storage.
If suitable image is found on USB Storage writing to Flash will be attempted.

USB_STORAGE: 0 Storage Device(s) found
No USB Storage found. No F/W upgrade from USB Storage will be attempted.

After this message your Omega2+ performed a normal boot.
I think you did not rewrite the flash at all.
Probably your kernel was not corrupted or you could fix it fully accidentally... ;-)

So if you’d ask if that is possible to restore Omega 2+ from a microSD — no, you can't — at least not with this method.