[BOOT] FIREFIREFIRE 1.2 - bootloader with recovery selection

Search This thread

pokey9000

Senior Member
Apr 17, 2007
767
396
Austin

This is a replacement bootloader so you can get into recovery with just the one power button. It's very simple to use, just turn on the Fire, and when the logo pops up press the power button.

FIREFIREFIRE also makes fastboot easy. For a few seconds on every boot, fastboot is enabled; no idme bootmode or special cable needed. The USB ID is changed to one that's supported by even the oldest fastboots. Unlike the stock, you do not need to use the "-i 0x1949" on every run of fastboot.

Now FIREFIREFIRE can fix your partition tables. "fastboot oem format" will overwrite the partition table with the stock table. You can use this to revert to factory partitioning if you have been messing with parted or the like, or can be used with the USB boot kit (Rekindle) to manually rebuild a totally bricked Fire. Running this command on 1.0 or earlier will fail.

Release notes:
1.2 - MD5: a8c8d702606de8ab7e73b898de50b4b6 u-boot.bin
  • Merge in 6.2->6.2.1 changes: low battery charge safety shutdown, official offsets for NVRAM params
  • The power LED now tells you more stuff: dim slightly while in fastboot / ready to detect recovery button press, bright green again when the boot of standard OS starts, more orangey orange when recovery starts
  • Fix Amazon's broken LED code

1.1 - MD5: 7a4f1a2ff60b13a3534df318f99d813c u-boot.bin
  • Fixed the built-in partitioning to match the partition map on a stock KF
  • Removed USB PID version. Realized this would screw up Windows. VID:pID will always be 18d1:0100 from now on

1.0
  • Fastboot USB VID switched to Google's VID. Once this is installed you don't need to use "-i 0x1949" on every fastboot command
  • USB PID reflects the version. 0x0100 is version 1.0, 0x0402 is 4.2, etc
0.9
  • New logo with "press power button for recovery" message at the bottom
  • Delays ~10 seconds if no button pressed, but pushing the button immediately goes into recovery
  • During the delay, you can connect with fastboot. Works under Linux, but the delay may be too short for Windows

Howto flash
The TWRP installer flashes FFF 1.0 when it's run. For most purposes this is ok, but because TWRP has been orphaned, I can't recommend it as a way to get the latest. By the time you read this, KFU should support flashing FFF, and for Windows users is by far the easiest way.

Howto flash by hand
  • Get into fastboot mode somehow. Having and older FFF from the TWRP installer is a good start. Currently KFU or fbmode is the easiest
  • flash with "fastboot -i 0x1949 flash bootloader u-boot.bin" (take out "-i 0x1949" if FFF is already installed)
  • disable fastboot: "fastboot -i 0x1949 oem idme bootmode 4000"
  • reboot: "fastboot -i 0x1949 reboot"

Howto backup EVERYTHING (on Linux):
(not relevant in this post anymore, but good reference)
  • This will back up all partitions and the hidden NVRAM data. If you ever have to restore from scratch, you can get fastboot to write a new partition table and then fastboot in these backups
  • Need >8GB local free, and adb installed and able to get a shell.
  • Make a new directory to store the dump files and cd into it.
  • Make sure that your KF is running adb as root. As of 6.2.1 this requires running BurritoRoot, then "adb root" on your PC after it completes.
  • Then run in a terminal:
Code:
for F in `seq 1 12`; do adb pull /dev/block/mmcblk0p$F; done
adb shell idme ? > nvram.txt

On a brand new KF, this backup will bzip2 down to ~300MB. Once you start writing to the flash, this will go up even if you delete files due to nonempty free blocks.

github is now up at https://github.com/pokey9000/kf_u-boot
 

Attachments

  • u-boot-firefirefire-1.2.zip
    126.3 KB · Views: 27,625
Last edited:

SikYou

Senior Member
Oct 18, 2010
438
77
So will this still work with 6.2? I'm confused. Anyway, this is awesome! Just what we needed

Sent from my ADR6400L using Tapatalk
 
Last edited:

SikYou

Senior Member
Oct 18, 2010
438
77
I can't remember what the device was doing before the update but now if I try adb commands for recovery, bootloader, and fastboot, it looks like there is some response. I don't actually get in to recovery but it looks like maybe the device is rebooting in to fastboot. I don't have a ton of experience with this but just figured it was worth mentioning.
 

pokey9000

Senior Member
Apr 17, 2007
767
396
Austin
So will this still work with 6.2? I'm confused. Anyway, this is awesome! Just what we needed

Sent from my ADR6400L using Tapatalk

I just need to debug it. For some reason even the u-boot that comes with the 6.2 source drop doesn't respect the new NVRAM layout. This is just a proof of concept since TWRP is still AWOL, so don't worry. I plan to make the button handling a little more robust, including a way to select recovery or fastboot with just the button so you can ditch the Fire ROM altogether.
 

pokey9000

Senior Member
Apr 17, 2007
767
396
Austin
I can't remember what the device was doing before the update but now if I try adb commands for recovery, bootloader, and fastboot, it looks like there is some response. I don't actually get in to recovery but it looks like maybe the device is rebooting in to fastboot. I don't have a ton of experience with this but just figured it was worth mentioning.

I noticed that too. I tried building the u-boot from the 6.2 source drop and it doesn't detect when I set the bootmode either, but the one in the update .bin does.
 

SikYou

Senior Member
Oct 18, 2010
438
77
I just need to debug it. For some reason even the u-boot that comes with the 6.2 source drop doesn't respect the new NVRAM layout. This is just a proof of concept since TWRP is still AWOL, so don't worry. I plan to make the button handling a little more robust, including a way to select recovery or fastboot with just the button so you can ditch the Fire ROM altogether.

Sounds great, looking forward to seeing the finished product.

Sent from my Kindle Fire using Tapatalk
 

SikYou

Senior Member
Oct 18, 2010
438
77
BTW, have you been in touch with agrabren from TWRP? He is the one kinda spearheading the KF TWRP project and I think one of the issues was not having a reliable method for booting to recovery; if that is the case you have obviously done a lot of work towards solving that problem.

Sent from my Kindle Fire using Tapatalk
 

death2all110

Senior Member
Sep 21, 2010
515
295
Illinois
Maybe at some point. I'm just trying to get something that works for now. With one button there isn't much benefit imho other than a message that says "press button now for recovery"
Well fine then! I see how it is. Just shoot everyone down... jk

Great work man!
But that is what I was thinking, It can either normal boot and get shown a brief message like "Press Power Button again to boot in.to recovery." And if you hit the button again it boots recovery.
 
Last edited:

pokey9000

Senior Member
Apr 17, 2007
767
396
Austin
Well fine then! I see how it is. Just shoot everyone down... jk

Great work man!
But that is what I was thinking, It can either normal boot and get shown a brief message like "Press Power Button again to boot in.to recovery." And if you hit the button again it boots recovery.

Thanks

Right now it goes into recovery if you just hold the power button down when turning it on instead of just hitting it quick. I could add a delay and just throw some text at the bottom of the boot logo. Hmm... now that I think about it, how about this:

-Boots up, shows a splash screen with the logo and some text like "hold down power for recovery"
-Listens for fastboot for up to 5 seconds, enough to run fastboot on the commandline real quick
-If it doesn't get a fastboot connection in 5 seconds, it checks the state of the power button
-If the power button is pressed, boot recovery, or else boot normal

Also if anyone has any better logos than what I've got now... Requirements are that most of the screen area must be a single color like the current logo, or the logo won't compress well enough, and must be 600x1024.
 

MrJandD

Member
Nov 22, 2011
44
7
The Shire
Thanks

Right now it goes into recovery if you just hold the power button down when turning it on instead of just hitting it quick. I could add a delay and just throw some text at the bottom of the boot logo. Hmm... now that I think about it, how about this:

-Boots up, shows a splash screen with the logo and some text like "hold down power for recovery"
-Listens for fastboot for up to 5 seconds, enough to run fastboot on the commandline real quick
-If it doesn't get a fastboot connection in 5 seconds, it checks the state of the power button
-If the power button is pressed, boot recovery, or else boot normal

Also if anyone has any better logos than what I've got now... Requirements are that most of the screen area must be a single color like the current logo, or the logo won't compress well enough, and must be 600x1024.

I'd be willing to create a cool boot-logo, how would just a flame in the background and some text saying "FireFireFire Bootloader" on top of it?
 

pokey9000

Senior Member
Apr 17, 2007
767
396
Austin
I'd be willing to create a cool boot-logo, how would just a flame in the background and some text saying "FireFireFire Bootloader" on top of it?

I was actually thinking of something getting away from the name of the bootloader since in the scheme of the user experience it's pretty insignificant. Andy with some flames in the background maybe, or a Nook Tablet on fire (yes, i'm that bitter and petty)
 

pokey9000

Senior Member
Apr 17, 2007
767
396
Austin
I dunno if it's just me but once I read the title FIREFIREFIRE I pictured Beavis and Butthead. One day..

That's exactly what was going on at 1am... I needed to make a splash screen (Amazon doesn't include the stock one in the source, trademark and all that) and I typed the first thing that popped into my head into the editor.
 

MrJandD

Member
Nov 22, 2011
44
7
The Shire
I was actually thinking of something getting away from the name of the bootloader since in the scheme of the user experience it's pretty insignificant. Andy with some flames in the background maybe, or a Nook Tablet on fire (yes, i'm that bitter and petty)

Hard to make a nook tab one color :)

How about the text FireBoot?

Im open to idea's.
 

MrJandD

Member
Nov 22, 2011
44
7
The Shire
First Edition.

How about this?

uLjYc
 

pokey9000

Senior Member
Apr 17, 2007
767
396
Austin
Hard to make a nook tab one color :)

How about the text FireBoot?

Im open to idea's.

It doesn't have to be one color. The image has to be mostly background and the background must be a solid color. It all has to do with RLE compression, like GIF or faxes where black text on a white page compresses down really small. There's only about 8-10k to spare for the boot splash, so we can't just put up a full screen photo of something or smooth gradients.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 24

    This is a replacement bootloader so you can get into recovery with just the one power button. It's very simple to use, just turn on the Fire, and when the logo pops up press the power button.

    FIREFIREFIRE also makes fastboot easy. For a few seconds on every boot, fastboot is enabled; no idme bootmode or special cable needed. The USB ID is changed to one that's supported by even the oldest fastboots. Unlike the stock, you do not need to use the "-i 0x1949" on every run of fastboot.

    Now FIREFIREFIRE can fix your partition tables. "fastboot oem format" will overwrite the partition table with the stock table. You can use this to revert to factory partitioning if you have been messing with parted or the like, or can be used with the USB boot kit (Rekindle) to manually rebuild a totally bricked Fire. Running this command on 1.0 or earlier will fail.

    Release notes:
    1.2 - MD5: a8c8d702606de8ab7e73b898de50b4b6 u-boot.bin
    • Merge in 6.2->6.2.1 changes: low battery charge safety shutdown, official offsets for NVRAM params
    • The power LED now tells you more stuff: dim slightly while in fastboot / ready to detect recovery button press, bright green again when the boot of standard OS starts, more orangey orange when recovery starts
    • Fix Amazon's broken LED code

    1.1 - MD5: 7a4f1a2ff60b13a3534df318f99d813c u-boot.bin
    • Fixed the built-in partitioning to match the partition map on a stock KF
    • Removed USB PID version. Realized this would screw up Windows. VID:pID will always be 18d1:0100 from now on

    1.0
    • Fastboot USB VID switched to Google's VID. Once this is installed you don't need to use "-i 0x1949" on every fastboot command
    • USB PID reflects the version. 0x0100 is version 1.0, 0x0402 is 4.2, etc
    0.9
    • New logo with "press power button for recovery" message at the bottom
    • Delays ~10 seconds if no button pressed, but pushing the button immediately goes into recovery
    • During the delay, you can connect with fastboot. Works under Linux, but the delay may be too short for Windows

    Howto flash
    The TWRP installer flashes FFF 1.0 when it's run. For most purposes this is ok, but because TWRP has been orphaned, I can't recommend it as a way to get the latest. By the time you read this, KFU should support flashing FFF, and for Windows users is by far the easiest way.

    Howto flash by hand
    • Get into fastboot mode somehow. Having and older FFF from the TWRP installer is a good start. Currently KFU or fbmode is the easiest
    • flash with "fastboot -i 0x1949 flash bootloader u-boot.bin" (take out "-i 0x1949" if FFF is already installed)
    • disable fastboot: "fastboot -i 0x1949 oem idme bootmode 4000"
    • reboot: "fastboot -i 0x1949 reboot"

    Howto backup EVERYTHING (on Linux):
    (not relevant in this post anymore, but good reference)
    • This will back up all partitions and the hidden NVRAM data. If you ever have to restore from scratch, you can get fastboot to write a new partition table and then fastboot in these backups
    • Need >8GB local free, and adb installed and able to get a shell.
    • Make a new directory to store the dump files and cd into it.
    • Make sure that your KF is running adb as root. As of 6.2.1 this requires running BurritoRoot, then "adb root" on your PC after it completes.
    • Then run in a terminal:
    Code:
    for F in `seq 1 12`; do adb pull /dev/block/mmcblk0p$F; done
    adb shell idme ? > nvram.txt

    On a brand new KF, this backup will bzip2 down to ~300MB. Once you start writing to the flash, this will go up even if you delete files due to nonempty free blocks.

    github is now up at https://github.com/pokey9000/kf_u-boot
    3
    Yeah, a boring video of the "factory cable" method since the nvram boot mode is broke would be useful :p But awesome that it works.


    There you go.
    2
    Hey pokey9000,
    Is there a way to flash a new splash image to your bootloader with fastboot like we do with some other devices?
    Code:
    fastboot flash splash1 splash1.img
    Id like to have a new image on boot if thats ok. :D
    11i08ip.png

    You need to make a 600x1024 graphic in png, rotate it counterclockwise 90 degrees, then follow this guide to generate an Android compatible RLE. Then put the RLE into the source tree at board/omap4kc1/initlogo.rle and rebuild.

    You have to leave a lot of flat color as gradients, photos, etc make the RLE too big to fit into u-boot.

    Then you'll want to use the usb boot method to test u-boot without flashing, or risk bricking your Fire if you screw up.


    FWIW, that looks almost like my original logo. The whole reason I called it FIREFIREFIRE is that the source doesn't ship with a logo (Amazon copyright or something) and when I made the dummy image to fill the void I just opened up GIMP and made a textbox with the first thing that popped in my head. Then it kind of stuck.
    2
    *bump*

    New FFF that can restore your partition table. See the OP
    2
    nice. i hope u can make a tutorial...

    I'm not sure there's much more for me to add beyond what pokey9000 has posted already.

    make/convert your image
    http://forum.xda-developers.com/showpost.php?p=21262416&postcount=126

    get source code and build it
    http://forum.xda-developers.com/showpost.php?p=21775177&postcount=151

    test u-boot.bin with usbboot
    http://forum.xda-developers.com/show...0&postcount=74

    flash by hand directions in OP
    http://forum.xda-developers.com/showpost.php?p=19837228&postcount=1

    Post here if you get stuck and I'll try to help. Good luck!