| 3 | | https://www.dell.com/support/kbdoc/en-us/000132041/understanding-beep-codes-on-a-dell-notebook-pc#inspiron-laptop |
| | 3 | = The Problem = |
| | 4 | I have got a Dell Inspiron 17 3721 laptop which does not turn-on anymore. Only a single beep error code, nothing on the screen. Beep code 1 means: "Motherboard: BIOS ROM Failure". |
| | 5 | |
| | 6 | [[Image(dell_inspirion_beep_codes.png)]] |
| | 7 | Source: https://www.dell.com/support/kbdoc/en-us/000132041/understanding-beep-codes-on-a-dell-notebook-pc#inspiron-laptop |
| | 8 | |
| | 9 | |
| | 10 | = The Idea = |
| | 11 | |
| | 12 | A corrupt BIOS ROM, how-to repair? The BIOS chips are SPI based EEPROMs of type SOIC8, which are most likely became corrupted somehow. [https://bios-fix.com/index.php?threads/dell-inspiron-3721-bios-schematic-boardview.38189/ Looking around at bios-fix.com] there are two chips which needs to be flashed. |
| | 13 | |
| | 14 | Digging through my pile of hardware a have a buspirate v3 which I could use to re-program the BIOS chips. |
| | 15 | |
| | 16 | * I need to be able to access the chips. The [https://downloads.dell.com/Manuals/all-products/esuprt_laptop/esuprt_inspiron_laptop/inspiron-17-3721_Owner%27s%20Manual_en-us.pdf Owner manual] is a good source for opening the laptop. |
| | 17 | * De-soldering the BIOS. |
| | 18 | * A SOIC8 test clip is required with good quality cables. [http://www.dangerousprototypes.com/docs/Flashing_a_BIOS_chip_with_Bus_Pirate#SOIC8_test_clip The guide at dangerousprototypes.com] will help me make one. |
| | 19 | * Flashrom software on Windows using MSYS2, using [https://www.flashrom.org/dev_guide/building_from_source.html#windows build from source guide at flashrom.org]. |
| | 20 | * I need up2date firmware on the buspirate to program the chip, using: |
| | 21 | * [https://maidavale.org/blog/flashing-the-bus-pirate/] |
| | 22 | * [https://dangerousprototypes.com/docs/Bus_Pirate#Firmware_upgrades] |
| | 23 | * tooling found at [https://github.com/therealdreg/buzzpirat] |
| | 24 | * Next I need to flash the chips, using a little inspiration from: |
| | 25 | * [https://www.nsideattacklogic.de/en/dumping-spi-flash-memory-of-embedded-devices-2/] |
| | 26 | * [https://winraid.level1techs.com/t/guide-flash-bios-with-ch341a-programmer/32948/56] |
| | 27 | * [http://www.dangerousprototypes.com/docs/Flashing_a_BIOS_chip_with_Bus_Pirate] |
| | 28 | * [https://kean.com.au/oshw/WR703N/teardown/] |
| | 29 | |
| | 30 | |
| | 31 | |
| | 32 | = The Implementation = |
| | 33 | |
| | 34 | == BIOS ROM images == |
| | 35 | First challenge find the BIOS ROMs which I could flash on the chips. I have tried to extract them from the official BIOS download page [https://www.dell.com/support/home/en-us/drivers/driversdetails?driverid=70h05 Dell Inspiron 3721 System BIOS - A14, 3721A14.exe] how-ever I was not able to extract the required files. I found at older version at [https://support.halabtech.com/index.php?a=downloads&b=file&id=775322 halabtech.com - Dell Inspiron 17 3721 A12 Bios Files.zip] which I will use and later update to the A14 version. |
| | 36 | |
| | 37 | == Get both BIOS chips == |
| | 38 | Dis-assemble laptop using Owner Manual and de-solder BIOS chips located at UH2 (EN25QH16) and UH6 (EN25Q32B). |
| | 39 | [[Image(UH2.jpg, 120px)]] [[Image(UH2.jpg, 120px)]] |
| | 40 | |
| | 41 | |
| | 42 | == Compiling flashrom for Windows == |
| | 43 | ``` |
| | 44 | # Install using https://www.msys2.org and load the UCRT64 environment https://www.msys2.org/docs/environments/ |
| | 45 | $ pacman -Syu |
| | 46 | $ pacman -Sy mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-meson mingw-w64-ucrt-x86_64-ninja mingw-w64-ucrt-x86_64-pkg-config mingw-w64-ucrt-x86_64-python-sphinx mingw-w64-ucrt-x86_64-cmocka mingw-w64-ucrt-x86_64-libusb mingw-w64-ucrt-x86_64-libftdi mingw-w64-ucrt-x86_64-libjaylink |
| | 47 | $ pacman -S base-devel binutils git pactoys cc libusb meson pkg-config |
| | 48 | # <restart MSYS2> |
| | 49 | $ git clone https://github.com/flashrom/flashrom.git |
| | 50 | 10 git clone https://github.com/flashrom/flashrom.git |
| | 51 | 11 cd flashrom/ |
| | 52 | 13 meson setup builddir |
| | 53 | 14 meson compile -C builddir |
| | 54 | |
| | 55 | ``` |
| | 56 | |
| | 57 | == Updating BusPirate == |
| | 58 | ``` |
| | 59 | $ git clone https://github.com/therealdreg/buzzpirat.git |
| | 60 | $ cd buzzpirat/bin |
| | 61 | # Ensure jumper between PGD and PGC before powering-on BusPirate |
| | 62 | $ ./buzzloader/pirate-loader.exe --dev=COM4 --hex=./oldfirm/BPv3-bootloader-upgrade-v4xtov4.5_Sep-2020_USBEprom.hex --verbose |
| | 63 | # 'Error updating firmware :(' is expected and 'normal' behaviour. |
| | 64 | $ ./buzzloader/pirate-loader.exe --dev=COM4 --hex=./stablefirm/bpv3comp/BPCOMPBZ-firmware-v7.1.12.hex |
| | 65 | # 'Error updating firmware :(' is expected and 'normal' behaviour. |
| | 66 | |
| | 67 | # FYI: plink.exe is part of Putty CLI, download at https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html |
| | 68 | $ plink.exe -serial COM4 -sercfg 115200,8,2,1,n |
| | 69 | # Press 'i' + 'Enter' to check for new firmware version |
| | 70 | |
| | 71 | ``` |
| | 72 | |
| | 73 | == Flashing de-soldered chips == |
| | 74 | ``` |
| | 75 | # In MYS2 UCRT64 environment |
| | 76 | $ cd flashrom |
| | 77 | |
| | 78 | # Connect EN25QH16 chip to SOIC8 test-clip |
| | 79 | $ ./builddir/flashrom.exe --programmer buspirate_spi:dev=COM4 -w 2MB\ \ EC\ \ .BIN --progress |
| | 80 | |
| | 81 | # Connect EN25Q32 chip to SOIC8 test-clip |
| | 82 | $ ./builddir/flashrom.exe --programmer buspirate_spi:dev=COM4 -w 4MB\ BIOS.BIN --progress |
| | 83 | |
| | 84 | |
| | 85 | |
| | 86 | = The Result = |