BootloaderThis is a featured page


Accessing the bootloader?


To work with the bootloader, you need to boot the AC100 into recovery mode and install the apropriate driver from the NVIDIA OS support packs.
To boot into the recovery mode, hold down the CTRL + ESC/back keys and power on the device.
You can find further information on the recovery mode and the drivers to install in the Recovery Mode section.

When in recovery mode, you can download the partitions of the internal memory card. To get the partition layout, type

nvflash -w --getpartitiontable ptable.txt --bl <bootloader> --go

<bootloader> is, depending on the OS support pack version, a file called fastboot.bin in the current directory, or a file
called fastboot.stock.bin in the ../prebuild directory. In fact, this does not flash anything, but loads a server program to
memory, which is able to understand the more complex commands submitted by nvflash.

You should see something like this if you don't execute any command (like --getpartitiontable):

# nvflash --bl fastboot.bin --go -w
Nvflash started
rcm version 0X20001
System Information:
chip name: t20
chip id: 0x20 major: 1 minor: 2
chip sku: 0x8
chip uid: 0x1700618442a160d7
macrovision: disabled
hdcp: enabled
sbk burned: false
dk burned: false
boot device: emmc
operating mode: 3
device config strap: 0
device config fuse: 0
sdram config strap: 0

odm data: 0x3b2d8011
downloading bootloader -- load address: 0x108000 entry point: 0x108000
sending file: fastboot.bin
| 931920/931920 bytes sent
fastboot.bin sent successfully
waiting for bootloader to initialize
bootloader downloaded successfully

From now on, you can talk to the bootloader by just submitting commands like

nvflash -r --getpartitiontable ptable.txt

(note the -r instead of -w).

There is more dangerous command called --odmdata. It is some kind of fingerprint of the hardware and
enabled/disables certain hardware configuations. For example, the ODM 0x3b2d8011 data causes the HDMI port
to be used for bootloader display. The following comes up (after a period with no input):

Entering NvFlash recovery mode / Nv3p Server
Android ota recovery
Checking for RCK.. press <Enter>in 5 sec to enter RCK
OS will cold boot in 10 seconds if no input is detected
Press <Enter> to select, Arrow key (Left, Right) for selection move
Cold-booting Linux
Unable to query partition UBN

A white Android Robot in a green square next to a USB symbol are displayed after the Andoid OTA recovery, and flashes on and off during the "OS Cold Boot" 10 seconds counting down. As of now, there doesn't seem to be any way to interrupt this sequence (at least with the commands fed above) as nothing is displayed on over the USB connection about the Nv3P Server, and the keyboard on the AC100 itself is unresponsive.

If there is no kernel to boot in partition 6 (boot partiion), the fastboot protocol will be started. See this post for details on erasing, backing up and booting a kernel: kenel+boot

Following the kernel+boot procedure, the HDMI output display will show the following:

Entering NvFlash recovery mode / Nv3p Server
Checking for Android OTA recovery
Checking for RCK.. press <Enter>in 5 sec to enter RCK
Starting Fastboot USB download protocol

At which point a kernel can be loaded and booted.

WARNING! The odmdata specified above is just guessed and may propably brick the device (but don't panic). There
is a way to get it going again. Until now, don't use it. The original value seems to be 0x800C0075 (and 0x802C0075 with HDMI output),
but that's not tested yet....

ODMDATA


Some info regarding odmdata extracted from tegra_devkit_custopt.h (from kernel at git://nv-tegra.nvida.com)

Bits:NibleNameDescriptionRemarks and properties for 0x800C0075
00-070x75PERSONALITY0x00 - DEFAULT
"Voyager", emmc, no trace
0x01 - ULPI = baseband
0x05 - ULPI = UART1
"Voyager", emmc, trace
0x11 - ULPI = baseband
0x15 - ULPI = UART1
"Voyager", nand, no trace
0x75 - Voyager, NAND
"Whisthler", stand-alone
0xC1 - KB=13x1, TRACE, GMI=A/D NOR
0xC3 - KB=16x8, NO TRACE, GMI=NAND
"Voyager", USB2-ULPI (no UART)
0x71
0x75: Voyager, NAND, "Whisthler", stand-alone
08-100x00TRANSPORT0 - DEFAULT
1 - NONE
2 - UART
3 - USB
4 - ETHERNET

0: DEFAULT




0: DEFAULT


0: DEFAULT




0: DEFAULT, EMBEDDED
11-12ETHERNET0 - DEFAULT
1 - SPI
13-14RIL0 - DEFAULT
1 - EMP RAINBOW
2 - EMP RAINBOW_ULPI
3 - IFX
15-17CONSOLE_OPTION0 - DEFAULT, EMBEDDED
1 - NONE
2 - DCC
3 - UART
18-190x3CONSOLE0 - DEFAULT, UART-A
1 - UART-B
2 - UART-C
3 - UART-D
4 - UART-E
3 (upper 2 bits of 0x0C): UART-D
20-220x0DISPLAY0 - DEFAULT, EMBEDDED
1 - NULL
2 - HDMI
3 - CRT

0: DEFAULT, EMBEDDED
23DHCP0 - DEFAULT
1 - ENABLE
0: DEFAULT
24-270x0CARVEOUT RAM0 - DEFAULT
1 - Memory 1
2 - Memory 2
3 - Memory 3
4 - Memory 4
5 - Memory 5
6 - Memory 6
7 - Memory 7
8 - Memory 8 (32 MB)
0: DEFAULT
28-300x0MEMORY0 - DEFAULT
1 - 256 MB
2 - 512 MB
3 - 1 GB
0: DEFAULT
310x1LPSTATE0 - LP0
1 - LP1
1: LP stands for "low power" => "on"?




No user avatar
EgonAlter
Latest page update: made by EgonAlter , Oct 10 2010, 1:46 PM EDT (about this update About This Update EgonAlter Edited by EgonAlter

5 words deleted

view changes

- complete history)
More Info: links to this page
Started By Thread Subject Replies Last Post
ggrandou kernel boot 2 Sep 27 2010, 3:52 AM EDT by ggrandou
Thread started: Sep 24 2010, 7:58 AM EDT  Watch
I managed to boot a custom kernel. but I didn't go further yet (lack of time...).

The point is to put the bootloader in interactive fastboot mode, allowing to download a kernel throught the USB slave port. It goes automatically in fastboot if there is no kernel to boot on the boot partition.

So, here is a quick howto, starting from a clean ac100, using tools from linux4tegra distribution

> start in Recovery mode (
> the USB port comes as 0955:7820

HOST $ nvflash --bl fastboot.stock.bin --go

> backup the kernel partition

HOST $ nvflash --resume --read 6 part06.img

> Erase the kernel partition

HOST $ nvflash --resume --format_partition 6

> the system goes automatically to fastboot mode
> it will goes here too if you power off/on your machine with an empty kernel partition
> the USB port comes as 0955:7000

> load a kernel and start it
HOST $ fastboot boot zImage

> you can pass custom parameters to the kernel
HOST $ fastboot boot -c <cmdline params> zImage

> load back the android kernel partition and start it
HOST $ fastboot boot part06.img

> flash a kernel (and a ramdisk)
HOST $ fastboot flash:raw boot zImage <init.img>

> flash back the original android partition to restore your system:
HOST $ fastboot flash:raw part06.img

Caution: there might be some typo in the above commands, I didn't test them while copying them to this post...

5  out of 6 found this valuable. Do you?    
Show Last Reply
pleufke nvflash 4 Sep 23 2010, 3:30 PM EDT by lhl
Thread started: Sep 21 2010, 10:54 AM EDT  Watch
Wow, Foxmeister, brave man!
This is some good news. I can imagine your heartbeat during the flashing ;-)

Any idea why it hasn't printed any info about the partitioning?
Do you find this valuable?    
Show Last Reply
bantolph nvflash from Ubuntu 10.04 4 Sep 23 2010, 4:07 AM EDT by Foxmeister
Thread started: Sep 22 2010, 3:53 AM EDT  Watch
I too took the plunge and ran the nvflash utility, but this time from ubuntu and received the following:

root@zoidberg:/home/copek/Desktop/Downloads/linux4tegra/nvflash# LD_LIBRARY_PATH=. ./nvflash -w --getpartitiontable ptable.txt --bl ../nvflash/fastboot.bin
Nvflash started
rcm version 0X20001
System Information:
chip name: t20
chip id: 0x20 major: 1 minor: 2
chip sku: 0x8
chip uid: 0x1700618442a160d7
macrovision: disabled
hdcp: enabled
sbk burned: false
dk burned: false
boot device: emmc
operating mode: 3
device config strap: 1
device config fuse: 0
sdram config strap: 1

downloading bootloader -- load address: 0x108000 entry point: 0x108000
sending file: ../nvflash/fastboot.bin
| 931920/931920 bytes sent
../nvflash/fastboot.bin sent successfully
waiting for bootloader to initialize
bootloader downloaded successfully
Succesfully updated partition table information to ptable.txt

The contents of ptable.txt are readble, but too big to post here. The device booted back into the stock Android with no problems afterwards.

2  out of 2 found this valuable. Do you?    
Show Last Reply
JarringlyNormal kexec 4 Aug 18 2011, 8:36 AM EDT by louigi600
Thread started: Oct 13 2010, 6:51 PM EDT  Watch
I was thinking that a kexec-based system (such as http://www.solemnwarning.net/kexec-loader/ ) would be a useful addition. Once a bootimg has been created containing a kexec-enabled kernel and an initrd with kexec-utils installed, I could then boot with any other kernel/initrd/commandline without having to link up the USB connection and download with nvflash every time.

But now that I've compiled a working kernel with CONFIG_KEXEC=y, and booted into the initrd where I have bin/kexec installed, I still can't use it to boot into another kernel. When I run kexec -e -f, I get a message about stopping the CPU, then the display blanks and the machine switches itself off.

Has anyone else tried this yet?
Do you find this valuable?    
Show Last Reply
zedrok uboot on ac100 0 May 18 2011, 8:19 AM EDT by zedrok
Thread started: May 18 2011, 8:19 AM EDT  Watch
...does anyone have successfully installed uboot on the dynabook?
if so, can you please describe the procedure to install it?
thanks a lot.
2  out of 2 found this valuable. Do you?    
ggrandou boot img read/write 2 Oct 7 2010, 3:41 AM EDT by ggrandou
Thread started: Oct 3 2010, 10:58 AM EDT  Watch
Here is a little C code to manipulate partition images. You can:

# unpack a partition:
$ ./unpack_bootimg part05.img
kernel size = 2153760
kernel addr = 10008000
ramdisk size = 421004
ramdisk addr = 11000000
second size = 0
second addr = 10f00000
tags addr = 10000100
page_size = 2048
name =
cmdline =
id = 4ed00528 cb58acc7 f259f0eb 97d77baf e5bb19fd 00000000 00000000 00000000
extracting kernel in zImage
extracting ramdisk in initrd.img

# modifying a partition, updating the kernel and ramdisk
$ ./make_bootimg part05.img zImage initrd.img
kernel size = 2153760
kernel addr = 10008000
ramdisk size = 421004
ramdisk addr = 11000000
second size = 0
second addr = 10f00000
tags addr = 10000100
page_size = 2048
name =
cmdline =
id = 4ed00528 cb58acc7 f259f0eb 97d77baf e5bb19fd 00000000 00000000 00000000
kernel size = 2153760
ramdisk size = 421004

# updating the boot cmdline:
$ ./make_bootimg part05.img -c "mem=448M@0M nvmem=64M@448M vmalloc=320M video=tegrafb console=ttyS0,115200n8 usbcore.old_scheme_first=1 tegraboot=sdmmc tegrapart=recovery:700:a00:800,boot:1100:1000:800,mbr:2100:200:800,system:2300:25800:800,cache:27b00:32000:800,misc:59b00:400:800,userdata:5a000:9a600:800"

2  out of 2 found this valuable. Do you?    
Show Last Reply
Showing 3 of 3 featured threads and the last 3 of 6 threads for this page - view all
Unknown File bootimg.tar.gz (Unknown File - 2k)
posted by ggrandou   Oct 3 2010, 11:02 AM EDT
tools to manipulate boot partition images

Related Content

  (what's this?Related ContentThanks to keyword tags, links to related pages and threads are added to the bottom of your pages. Up to 15 links are shown, determined by matching tags and by how recently the content was updated; keeping the most current at the top. Share your feedback on Wetpaint Central.)