Nick: Giraldus117 E-mail: giraldus1@yahoo.com Board: Giraldus117 Contents: Hardware required: - A broken HP system (ours is a HP ENVY 23-d113a TouchSmart All-in-One Desktop PC) - Arduino Uno R3 (I used a Freetronics Eleven R3) - Jumper leads to attach to the Arduino and SPI header like these - A working PC Software: - Ubuntu Linux latest - VirtualBox - Download the latest BIOS for your PC by googling HP drivers and your PC model (eg. v8.17 for me) and after double clicking the exe, find the extracted .ROM file (usually under c:\SWSetup\ )and copy to a USB Steps: 1. On working system, install Ubuntu through VirtualBox using this guide BUT also install USB drivers where it says not to! 2. Close Ubuntu down and go to the USB settings in VirtualBox 3. Connect the Arduino via USB 3. Check Enable USB Controller, select the speed of your USB port (1.0,2.0 or 3.0) and Add a new USB filter for the connected Arduino 4. Start Ubuntu 5. To get the necessary software (flashrom, frser-duino) required for flashing the new bios, press the top icon on the taskbar, type "Terminal" and click the Terminal icon 6. Type "sudo apt-get install flashrom gcc-avr binutils-avr gdb-avr avr-libc avrdude git" without quotations and press enter 7. Type "git clone --recursive git://github.com/urjaman/frser-duino" without quotations and press enter 8. Type "ls -l /dev/ttyACM*" (without quotation marks, press enter) to check your Arduino is connected 9. Type "sudo usermod -a -G dialout " to add yourself to the dialout group 10. Reboot/logout from Ubuntu 11. When restarted or logged back in, open up Terminal again 12. Type "cd frser-duino" (without quotes/press enter) 13. Type "make u2 && make flash-u2" (as above) to write the program to your Arduino and close terminal once complete 14. On your HP, unplug power cord and remove the backplate 15. Remove the casing above where the memory/CMOS battery and jumpers sit 16. Remove your CMOS battery and place it to the side 17. Use a screwdriver to remove the 5 screws holding the metal casing above the motherboard and remove casing 18. Locate the ROM_RECOVERY header. It looks like this: original.png 19. Remove the jumper connecting SPI_CS# and SPI_CS# and put it aside 20. If there's a jumper directly above the ROM_RECOVERY header, shift it to the right hand pins (closest to the SPI_CS# headers). Not sure what this does, but it worked for me. 21. The fun stuff. Connecting the Arduino. First, unplug the Arduino USB 22. Connect the arduino and ROM_RECOVERY SPI header: Connect Arduino Pin 10 --> the BOTTOM SPI_CS# (ie. NOT the one next to SPI_MOSI) Connect Arduino Pin 11 --> SPI_MOSI Connect Arduino Pin 12 --> SPI_MISO Connect Arduino Pin 13 --> SPI_CLK Connect Arduino GND --> GND Connect Arduino 5V* --> 3VSB *Originally I tried connecting Arduino 3.3V --> 3VSB, however erasing/writing to the BIOS would fail every single time. As soon as I switched to 5V as a last ditch effort, it worked for me. YMMV. 23. Plug your Arduino back into the working PC 24. To create a copy of your old BIOS file, open Terminal and type "flashrom -p serprog:dev=/dev/ttyACM0:115200 -r old.ROM" 25. If all is correct, you should see your BIOS chip detected (my Spansion S25FL064K was detected as a Winbond W25Q64.V) and the process will start. sit tight until it's complete. 26. To write the latest HP BIOS, copy the *.ROM file downloaded and extracted onto the working PC to the Home folder in Ubuntu and rename to "new.ROM" 27. In Terminal, type "flashrom -p serprog:dev=/dev/ttyACM0:115200 -w new.ROM" 28. Bite nails for 15-20 mins 29. Wait for the verification to complete - the lights on my Arduino stopped flashing during verification so I actually pulled the USB out here. Probably don't do that - only if you have to. 30. Unplug the Arduino from USB and ROM_RECOVERY headers. Put jumper back over SPI_CS# headers and move other jumper back to left hand side. 31. Reinsert CMOS battery 32. Plug power back in and press ON button 33. System should start and then restart quickly. Let it do it's thing. 34. CELEBRATE! 35. When booted into windows, update BIOS the official way (run the exe file) 36. Leave system on for around 30-60 minutes. I used these excellent resources in order of usefulness: - http://systats.or8.net/hpspi/ - http://tomvanveen.eu/flashing-bios-chip-arduino/ - http://www.informaticanapoli.it/hp-envy-23-touchsmart-non-si-accende/ And of course a massive thanks to PhoenixForce who kickstarted the whole idea. Good luck! If you have any questions, feel free to post them here.