NvFlash

nvflash is a utility provided by Nvidia for flashing Tegra devices. Nvflash runs on a host PC and communicates with the Tegra system (the AC100 in our case) through a dedicated USB port (the mini USB port on the AC100).

nvflash is distributed by nvidia as a binary only. Sources are not available and the communication protocol in not publicly documented.

Installing nvflash

From the nvidia tegra developper site

nvflash is distributed as part of the Linux4Tegra Development kit. available here: http://developer.nvidia.com/tegra-250-tango-development-kits

The following commands will install nvflash in ~/tools/ldk/bootloader folder:

$ mkdir ~/tools/
$ wget http://developer.download.nvidia.com/assets/mobile/files/tegra-linux-12.alpha.1.0.tar.gz
$ tar xf tegra-linux-12.alpha.1.0.tar.gz 

Two files are useful:

  • ~/tools/ldk/bootloader/nvflash: the nvflash utility itself
  • ~/tools/ldk/bootloader/harmony/fastboot.bin, a simple bootloader which is downloaded on the Tegra CPU to manage further communication with nvflash

In order to be able to run nvflash as a normal user, you need to install an udev rule file:

$ sudo -i
$ cat > /etc/udev/rules.d/60-nvflash.rules <<END
# nvflash support for Nvidia Tegra systems attached to USB
SUBSYSTEM=="usb", ATTR{idVendor}=="0955", ATTR{idProduct}=="7820", MODE="0660", GROUP="plugdev"
END

This last step is optional, but without doing it you will have to run nvflash as root.

Debian/Ubuntu Package

Without any clear usage and redistribution license, nvflash cannot be distributed as a standard package. An installer package is available from here: http://share.grandou.net/debian/nvflash

Here is how to install it:

$ cd /tmp
$ wget http://share.grandou.net/debian/nvflash/nvflash_20110628-2_all.deb 
$ sudo dpkg -i nvflash_20110628-2_all.deb

nvflash is installed in /usr/bin/nvflash, and so can be run directly from your shell The bootloader is installed here: /usr/lib/nvflash/bootloader.bin

The package takes care of installing an udev rules, allowing you to run nvflash as a normal user.

nvflash setup

  1. Powerdown your AC100
  2. Connect the USB cable between your AC100 and the host PC
  3. press CTRL and ESC keys, and while maintaining them pressed, powerup your AC100
  4. the AC100 power white LED should light on, the screen remains switched off
  5. download the bootloader into the CPU RAM, on your host PC, type:
$ nvflash --bl /usr/lib/nvflash/fastboot.bin --sync

Note: adapt the command with real path of your fastboot.bin

Now the AC100 is ready to accept commands from nvflash

nvflash commands

Write the image <filename> partition <N> of your AC100:

$ nvflash -r --download <N> <filename>

Read the partition <N> from the AC100 to the file <filename>:

$ nvflash -r --read <N> <filename>

For a complete description of nvflash commands:

$ nvflash --help
Log In