neděle 13. března 2016

How to upgrade BIOS on Lenovo Ideapad if you have Linux OS?

Why?

I have some problems with suspending of the system. CPU frequency is lowered from 3 GHz to 1.3 GHz and next time to 600 MHz after each wakeup. Maybe it is a problem of the operating system, but on another machine (Dell) with the same system it's alright.
EDIT: updating BIOS did not help.
EDIT2: updating Kubuntu to current 16.10 helped. ;-)

What?

  • Notebook Lenovo Ideapad Y510P
  • Kubuntu Linux 15.10 64bit
  • any USB stick (or SDHC card, etc.)

What does not work?

The root of the problem is that the new BIOS version is distributed only in EXE file. It is some installer with another installer inside and it is an 32bit Windows application.
So you need some 32 bit Windows and minimal supported Windows is Windows 7. I thought okay, it is ugly, but I will download some Trial from Microsoft, I will burn the ISO to the USB or DVD and use it's console to start the EXE.
It wasn't so simple ...
  • burned ISO does not boot - I have tried Win7 32b, Win10 32b and 64b.
  • following any instructions with dd failed - USB does not boot
  • Startup Disk Creator failed - does not work at all, I have selected ISO file but it was not shown in GUI.
  • UNetbootin failed - successfuly created bootable disk, but it could not boot.

Results

  • downloaded about 12 GB data from the internet.
  • registered on Microsoft's web ("sorry, Microsoft, but I don't want your system, I only need to run this 5 MB exe file - only once!")
  • maybe 20 times deleted and recreated the file system on three USB discs.
  • maybe 100 reboots of two notebooks used for this.
  • maybe 12 hours of work that made me crazy :D
  • and ... SUCCESS! :D

Howto

  1. Download BIOS
  2. Download any 32 bit Microsoft Windows (or some Live CD?)
  3. Start gparted
    1. Select the USB that you will use
    2. Delete all partitions or create new Partition table
    3. Create new NTFS partition (any other would not boot!) and give it some pretty name.
    4. Apply changes
    5. Set attributes to the partition (boot)
    6. Exit gparted.
  4. Start UNetbootin from the command line to prevent bug - if you would start from the menu, you could not select the NTFS partitions:
    1. sudo unetbootin installtype=USB targetdrive=/dev/sd[c][n]
    2. Select the downloaded ISO, click OK and wait ...
  5. Mount the USB disk
  6. Copy the downloaded BIOS exe to the root directory
  7. Unmount and reboot
  8. Hit F12 and start the Windows system installer
    1. I can't remember exactly but you need to get to the windows command line.
    2. Type c: and hit enter, now you are in the root directory of the USB partition.
    3. Type dir, then type the name of the exe file and hit the ENTER.
    4. Follow instructions of the BIOS installer. 
  9. Happyend? ... Maybe ... it took me two days ;-)

Sources

The best source that helped me is this answer on AskUbuntu: http://askubuntu.com/a/252910/160422


Fail 17 - 64 bit version of Windows

Success - bios updater started on Win installer 10 32bit

BIOS update in progress

Finally done.