Skip to content

Recovery

Please read the overview page first!


Following documentation describes the process of recovering hardware from brick state with RTE and Dasharo open-source firmware. Following procedure is supported for following models

Vendor Model
Dell OptiPlex 7010 SFF
Dell OptiPlex 7010 DT
Dell OptiPlex 9010 SFF

Step 1: Prepare hardware

  1. To prepare hardware please follow hardware preparation procedure.
  2. Follow instruction in the video to remove heatsink:

Step 2: Find SPI_1, SPI_2/SPI_3

Step 3: Connect SOIC-8 Pomona clip between RTE and target

Connect SOIC-8 Pomona according to MX25L3206E datasheet.

Pomona SOIC clip

RTE J7 Pomona SOIC clip
CS pin 1 (upside)
MISO pin 2 (upside)
GND pin 4 (upside)
VCC (3.3V) pin 5 (downside)
SCLK pin 7 (downside)
MOSI pin 8 (downside)

Numbers 1-4 have to be on one side and numbers 5-8 have to be on the other side of the clip.

Clip up

Clip down

Clip on the SPI_1 chip. Match pin 1 (CS) of the Pomona clip with the first pin of SPI_1 chip, marked with a small dot engraved on the chip.

Clip connected

Step 4: Connect RTE

  1. Connect J2 Orange Pi Zero system debug output
  2. Power the board and confirm it boots
  3. Please note typical convention of USB-UART converter colors is as follows
    • black - GND
    • red - +5V
    • green - TX
    • white - RX
  4. Connect terminal to RTE and read OS version:

    sudo minicom -b 115200 -D /dev/ttyUSB0 -o -C /tmp/minicom.cap
    
    • -b 115200 sets baudrate
    • -D /dev/ttyUSB0 points to USB-UART converter device, it can be different if you already have some devices connected or you use different operating system
    • -o skip initialization
    • -C /tmp/minicom.cap capture serial terminal output, if you will have problems with exercises please post this file
    • Login using following credentials:
    login: root
    password: meta-rte
    

Step 5: Prepare recovery binary

Following procedure assume that you use recovery binary created during backup process. Backup has 12MB, so it have to be split

split -b4M bios_backup_YYYYMMDD.bin

Step 6: Flash 4MB (BIOS) part

echo 1 > /sys/class/gpio/gpio405/value
echo 1 > /sys/class/gpio/gpio406/value
echo 1 > /sys/class/gpio/gpio404/value

xac is third file resulting from the previous binary split, so it contains Dasharo code and data which fits into 4MB and in case of Dell OptiPlex 9010/7010 should be flashed to 4MB SPI.

flashrom -w xac -p linux_spi:dev=/dev/spidev1.0,spispeed=16000 -c "MX25L3205D/MX25L3208D"

(Optional) Step 7: Flash 8MB (ME) part

If a more serious problem occurs, like broken ME, it may be necessary to use your firmware backup and restore content of 8MB chip.

Step 7a: Connect SOIC-16 Pomona clip between RTE and target

Connect SOIC-16 Pomona according to MX25L6406E datasheet.

Pomona SOIC16 clip

RTE J7 Pomona SOIC clip
VCC (3.3V) pin 2 (upside)
CS pin 7 (upside)
MISO pin 8 (upside)
SCLK pin 16 (downside)
MOSI pin 15 (downside)
GND pin 10 (downside)

Numbers 1-8 have to be on one side and numbers 9-16 have to be on the other side of the clip.

Clip up

Clip down

Clip on the SPI_2/SPI_3 chip. Match pin 1 (HOLD#) of the Pomona clip with the first pin of SPI_2/SPI_3 chip, marked with a small dot engraved on the chip.

Clip connected

Step 7b: Flash 8MB (ME) part

echo 1 > /sys/class/gpio/gpio405/value
echo 1 > /sys/class/gpio/gpio406/value
echo 1 > /sys/class/gpio/gpio404/value

Dasharo recovery

Use following procedure if your 4M flash contain Dasharo open-source firmware.

cat > dell_optiplex.layout <<EOF
00000000:00000fff fd
00001000:00004fff gbe
00005000:005fffff me
00600000:007fffff unused
EOF
flashrom -w your_bios_backup.bin -p linux_spi:dev=/dev/spidev1.0,spispeed=16000 -c "MX25L6406E/MX25L6408E" -i fd -i me --layout dell_optiplex.layout

Vendor BIOS recovery

Use following procedure if your 4M flash contain vendor BIOS.

flashrom -w your_bios_backup_8M.bin -p linux_spi:dev=/dev/spidev1.0,spispeed=16000 -c "MX25L6406E/MX25L6408E"