Yoga END key scam.How downgrade BIOS using DOS/WINFLASH?! =(
Posted: Mon Oct 06, 2014 6:13 pm
Hi everyone!
The BIOS version for the Thinkpad Yoga starting with version 1.15 have the END and INSERT keys behavior switched, which makes the laptop completely useless for technology work, as you need to press down FN when you hit the END/INSERT key in order for it to get END behavior, which is what you always want when doing technology work such as programming.
Just to make the problem super-clear: As a tech user, you have FnLock always on, because this is how you make the F1..F12 keys deliver without needing to push FN. With FnLock on, you also used to get END key behavior when pushing the END/INSERT button, without pushing FN. As of BIOS 1.15, pushing the END/INSERT key gives you INSERT behavior, so you need to push FN to get END behavior, and now since a tech user wants to press END some thousands of times every day, this is a big deal - and it breaks compatibility with all earlier Thinkpad keyboard layouts, that have always had a straight END key. INSERT, on the other hand, I use rarely, if ever. Gah. -
Lenovo hinted they'll reverse this behavior update in a future BIOS release, see: https://forums.lenovo.com/t5/ThinkPad-E ... 526/page/2
Until then however - if they bother ever fixing it, of course - every Thinkpad Yoga owner needs to take care not to upgrade to a BIOS >= version 1.15!!
Unfortunately, I was unaware of this scam, and upgraded to 1.18 which is the newest version right now.
Following this, I have desperately wanted to downgrade.
Using the 1.14 BIOS' EXE to downgrade: Failed.
When attempting to use the 1.14 BIOS EXE file http://download.lenovo.com/ibmdl/pub/pc ... uj09ww.exe for downgrading, it fails with the message: "Bios image file does not match this system. The utility process has not completed." So no luck!
It bundles the two BIOS flash files, however there are no instructions available for how to use the attached WinFlash64 program. So no luck there too!
Using the 1.14 BIOS' ISO to downgrade: Failed.
There is however an ISO Bottable CD distribution of the same BIOS, at http://download.lenovo.com/ibmdl/pub/pc ... uj09ww.iso .
The Internet is full of advice for how to actually use these Thinkpad BIOS ISO files - and this is where things get Seriously complicated.
So apparently, these ISO files can only be used out of the box in a built-in dock station CD reader, not even a Lenovo external USB CD would work - at least this is how it was with the X61 model back in the days, http://forums.lenovo.com/t5/X-Series-Th ... td-p/19222 , only God knows how it is now, however, I don't have any external CD driver at hand but need to use a USB stick to boot the ISO from.
The ISO, as I understand it, is in an El Torito bootable ISO format but with an MBR on it for being written to a harddrive (?!?!?) and therefore needs to undergo a special extraction process to get the ISO in the way we use to handle ISO:s. At least you can see this from that the Lenovo-supplied ISO file can't be read using an ordinary ISO reading program, but you only get errors and failures that way.
Using the 1.14 BIOS' ISO in extracted form to downgrade: Failed.
http://positon.org/lenovo-thinkpad-bios ... ux-and-usb among other pages tell you how to extract the actual ISO from within the Lenovo-special-format ISO.
wget http://userpages.uni-koblenz.de/~krienk ... eteltorito
chmod +x geteltorito
wget http://download.lenovo.com/ibmdl/pub/pc ... uj09ww.iso
./geteltorito -o bios114.iso gruj09us.iso
..and you have a bios114.img file that's a good ISO.
Now, how do you put this on an USB memory stick?
Using the 1.14 BIOS' ISO in extracted form and using a WIN 98 boot medium: Failed.
Well, as it turns out ( http://ubuntuforums.org/showthread.php?t=817897 ), you need to burn a suggested Windows 98 start disk to the USB drive, and then manually copy in the BIOS114.ISO content into the USB stick manually.
(This is because the BIOS114.ISO file (nor GRUJ09US.ISO) can be booted from an USB disk by itself, as per the article posted above that says that only a now nonexistent built-in CD drive would work, em. Anyhow when I tried boothing from these two ISO:s to an USB memory card using the program "USB Image Tool" (Windows), I did not get it to boot, and when trying to boot the ISO file directly as a simulated CD in VirtualBox, I just got something like a "Lenovo" text and then asked me to reboot.)
E.g. download the win98usb.tar file as suggested and
tar xf win98usb.tar
dd if=win98usb.img of=/dev/[YOUR USB DRIVE'S NAME HERE E.G. sdb] conv=notrunc
mount /dev/[YOUR USB DRIVE'S NAME HERE E.G. sdb] /mnt
I tried copying in BIOS114.ISO's containing files into the USB drive, running BIOS114.ISO's supplied COMMAND.COM gives you a menu system with 3 options, which are Info, "Update System Program" (i.e. update the BIOS!) and change machine number. I tried option 2, it asks me Are you sure? Y/N and i hit Y, and it fails with:
"The system program file was not found on the CD".
Using the 1.14 BIOS' ISO in extracted form and using a WIN 98 boot medium and using virtual CD simulation: Failed.
So, I figure this should be because it looks for the first CD plugged in, and indeed this start disk. So, I copied in BIOS114.ISO raw onto the USB disk, and then made a fake CD drive by getting the SHSUCDX suite from adoxa.altervista.org/shsucdx (sources at https://github.com/adoxa/shsucd ).
The commands to make it go are
SHSUCDHD /F:..\BIOS114.ISO
SHSUCDX /D:SHSU-CDH
(The filename here must be upper-caps, otherwise shsucdhd doesn't find it.)
Using the 1.14 BIOS' ISO in extracted form and using a WIN 98 boot medium and using virtual CD simulation and with a repackaged ISO: Failed.
This showed that the BIOS114.ISO file was not actually well formatted, so I needed to take my Linux box and remake the ISO file i.e.
mount bios114.iso /mnt
genisofs -o bios114_new.iso /mnt/*
..and even this way I get the same error message i.e. "The system program file was not found on the CD"!!
Also, trigging Lenovo's update can be done by directly running the program UPDTFLSH.EXE , that's the program that asks you the Y/N error and shows the error box.
Last, the ISO bundles a file lcreflsh.bat that just does flash2.exe /u , and when running it, it fails with an error 81, after having done "scanning the environment" and actually said "Flashing...".
Gah.
What must work: Using DOSFLASH or WINFLASH64 directly. But how?
BIOS114.ISO bundles the DOSFLASH program. And, there are some instructions on the Internet for how to use this program. And, the BIOS files are in the files B0ET18WW\$0AB0000.FL1 and GQET34WW\$0AGQ000.FL1 .
So then question is just, how can you use DOSFLASH or WINFLASH64 to perform this flashing the right way?
Your suggestions would be warmly appreciated, in order to make this a real laptop again!
(Meanwhile, desperate Windows users may use http://software-files-a.cnet.com/s/soft ... _setup.exe / http://download.cnet.com/Key-Remapper/3 ... 08576.html to remap END and INSERT with each others.)
Thank you!
The BIOS version for the Thinkpad Yoga starting with version 1.15 have the END and INSERT keys behavior switched, which makes the laptop completely useless for technology work, as you need to press down FN when you hit the END/INSERT key in order for it to get END behavior, which is what you always want when doing technology work such as programming.
Just to make the problem super-clear: As a tech user, you have FnLock always on, because this is how you make the F1..F12 keys deliver without needing to push FN. With FnLock on, you also used to get END key behavior when pushing the END/INSERT button, without pushing FN. As of BIOS 1.15, pushing the END/INSERT key gives you INSERT behavior, so you need to push FN to get END behavior, and now since a tech user wants to press END some thousands of times every day, this is a big deal - and it breaks compatibility with all earlier Thinkpad keyboard layouts, that have always had a straight END key. INSERT, on the other hand, I use rarely, if ever. Gah. -
Lenovo hinted they'll reverse this behavior update in a future BIOS release, see: https://forums.lenovo.com/t5/ThinkPad-E ... 526/page/2
Until then however - if they bother ever fixing it, of course - every Thinkpad Yoga owner needs to take care not to upgrade to a BIOS >= version 1.15!!
Unfortunately, I was unaware of this scam, and upgraded to 1.18 which is the newest version right now.
Following this, I have desperately wanted to downgrade.
Using the 1.14 BIOS' EXE to downgrade: Failed.
When attempting to use the 1.14 BIOS EXE file http://download.lenovo.com/ibmdl/pub/pc ... uj09ww.exe for downgrading, it fails with the message: "Bios image file does not match this system. The utility process has not completed." So no luck!
It bundles the two BIOS flash files, however there are no instructions available for how to use the attached WinFlash64 program. So no luck there too!
Using the 1.14 BIOS' ISO to downgrade: Failed.
There is however an ISO Bottable CD distribution of the same BIOS, at http://download.lenovo.com/ibmdl/pub/pc ... uj09ww.iso .
The Internet is full of advice for how to actually use these Thinkpad BIOS ISO files - and this is where things get Seriously complicated.
So apparently, these ISO files can only be used out of the box in a built-in dock station CD reader, not even a Lenovo external USB CD would work - at least this is how it was with the X61 model back in the days, http://forums.lenovo.com/t5/X-Series-Th ... td-p/19222 , only God knows how it is now, however, I don't have any external CD driver at hand but need to use a USB stick to boot the ISO from.
The ISO, as I understand it, is in an El Torito bootable ISO format but with an MBR on it for being written to a harddrive (?!?!?) and therefore needs to undergo a special extraction process to get the ISO in the way we use to handle ISO:s. At least you can see this from that the Lenovo-supplied ISO file can't be read using an ordinary ISO reading program, but you only get errors and failures that way.
Using the 1.14 BIOS' ISO in extracted form to downgrade: Failed.
http://positon.org/lenovo-thinkpad-bios ... ux-and-usb among other pages tell you how to extract the actual ISO from within the Lenovo-special-format ISO.
wget http://userpages.uni-koblenz.de/~krienk ... eteltorito
chmod +x geteltorito
wget http://download.lenovo.com/ibmdl/pub/pc ... uj09ww.iso
./geteltorito -o bios114.iso gruj09us.iso
..and you have a bios114.img file that's a good ISO.
Now, how do you put this on an USB memory stick?
Using the 1.14 BIOS' ISO in extracted form and using a WIN 98 boot medium: Failed.
Well, as it turns out ( http://ubuntuforums.org/showthread.php?t=817897 ), you need to burn a suggested Windows 98 start disk to the USB drive, and then manually copy in the BIOS114.ISO content into the USB stick manually.
(This is because the BIOS114.ISO file (nor GRUJ09US.ISO) can be booted from an USB disk by itself, as per the article posted above that says that only a now nonexistent built-in CD drive would work, em. Anyhow when I tried boothing from these two ISO:s to an USB memory card using the program "USB Image Tool" (Windows), I did not get it to boot, and when trying to boot the ISO file directly as a simulated CD in VirtualBox, I just got something like a "Lenovo" text and then asked me to reboot.)
E.g. download the win98usb.tar file as suggested and
tar xf win98usb.tar
dd if=win98usb.img of=/dev/[YOUR USB DRIVE'S NAME HERE E.G. sdb] conv=notrunc
mount /dev/[YOUR USB DRIVE'S NAME HERE E.G. sdb] /mnt
I tried copying in BIOS114.ISO's containing files into the USB drive, running BIOS114.ISO's supplied COMMAND.COM gives you a menu system with 3 options, which are Info, "Update System Program" (i.e. update the BIOS!) and change machine number. I tried option 2, it asks me Are you sure? Y/N and i hit Y, and it fails with:
"The system program file was not found on the CD".
Using the 1.14 BIOS' ISO in extracted form and using a WIN 98 boot medium and using virtual CD simulation: Failed.
So, I figure this should be because it looks for the first CD plugged in, and indeed this start disk. So, I copied in BIOS114.ISO raw onto the USB disk, and then made a fake CD drive by getting the SHSUCDX suite from adoxa.altervista.org/shsucdx (sources at https://github.com/adoxa/shsucd ).
The commands to make it go are
SHSUCDHD /F:..\BIOS114.ISO
SHSUCDX /D:SHSU-CDH
(The filename here must be upper-caps, otherwise shsucdhd doesn't find it.)
Using the 1.14 BIOS' ISO in extracted form and using a WIN 98 boot medium and using virtual CD simulation and with a repackaged ISO: Failed.
This showed that the BIOS114.ISO file was not actually well formatted, so I needed to take my Linux box and remake the ISO file i.e.
mount bios114.iso /mnt
genisofs -o bios114_new.iso /mnt/*
..and even this way I get the same error message i.e. "The system program file was not found on the CD"!!
Also, trigging Lenovo's update can be done by directly running the program UPDTFLSH.EXE , that's the program that asks you the Y/N error and shows the error box.
Last, the ISO bundles a file lcreflsh.bat that just does flash2.exe /u , and when running it, it fails with an error 81, after having done "scanning the environment" and actually said "Flashing...".
Gah.
What must work: Using DOSFLASH or WINFLASH64 directly. But how?
BIOS114.ISO bundles the DOSFLASH program. And, there are some instructions on the Internet for how to use this program. And, the BIOS files are in the files B0ET18WW\$0AB0000.FL1 and GQET34WW\$0AGQ000.FL1 .
So then question is just, how can you use DOSFLASH or WINFLASH64 to perform this flashing the right way?
Your suggestions would be warmly appreciated, in order to make this a real laptop again!
(Meanwhile, desperate Windows users may use http://software-files-a.cnet.com/s/soft ... _setup.exe / http://download.cnet.com/Key-Remapper/3 ... 08576.html to remap END and INSERT with each others.)
Thank you!