Android – NVIDIA Jetson TK1

Note: Since this article was written, NVIDIA has announced official support for Android on Jetson. See the Jetson Android Announcement on the forum. The instructions in this article relied on a repository that has since been removed, and is here only for historical purposes.

There are several commercial products that run Android on the NVIDIA TK1 chip, including NVIDIA’s SHIELD tablet. The TK1 is the basis for the NVIDIA Jetson TK1 Development Kit. While Android is not officially supported on the Jetson by NVIDIA, there have been efforts to port Android to the Jetson TK1 by members of the user community.

The first available Android port, called Jedroid (Android on Jetson), is an effort led by Lucas Dai. Jedroid is currently based around Android 4.4. Here’s a video on how to prepare Jedroid for a bootable SD Card using only the Jetson running L4T 21.2. Looky here:

Background

Linux for Tegra (L4T) is an Ubuntu 14.04 desktop for the Jetson. In the earlier 19.X versions of L4T, the Jetson used the Fastboot boot loader, the recent 21.X versions of L4T use Uboot. When using Fastboot, the machine must indicate exactly where the boot device information is located. In practical terms, that means that in order to run a boot sequence from a SD Card for example, the Jetson must be flashed for that to happen.

Uboot, on the other hand, is more flexible. Uboot follows a boot target sequence similar to that used in a Windows PC. On the Jetson, the sequence is:

  • SD Card
  • Internal Flash Memory
  • USB
  • NFS Client/Server boot
  • DHCP
  • If a properly formatted SD card is in the SD Card reader when the machine boots, the Jetson will boot from that SD card. Note: Uboot is capable of doing other interesting things during the boot cycle, but that discussion is beyond the scope of this post.

    What Uboot allows us to do is to run Android off of a SD card, without having to flash the Jetson. If there is no SD card, then the Jetson will boot normally into L4T (Ubuntu) from the internal flash memory. If you want to get a feel for Android on the Jetson, but aren’t ready for making a full commitment to make the Jetson an Android only machine, the SD card approach is a good way to go.

    Note: You may still flash Jedroid to the internal flash memory from a PC host machine. See jetson.co for more details.

    Preparation

    You will need an Ext4 formatted SD card, preferable empty. In the video, I used a Transcend 64 GB Class 10 Flash Memory Card . People have reported issues with certain SD cards, so take that into account. I would recommend using a fairly large card, certainly one 16GB or larger. Most SD cards are formatted ExFat for cameras and PCs, so you may have to format the card before you begin the installation. Here’s a quick post on how to do that on the Jetson: Format SD Card Ext4 – NVIDIA Jetson TK1. Insert the formatted SD card into the SD card reader, and make sure to unmount the card from the file system.

    Script

    There’s a Gist on Github that can be run as a script to download Jedroid 1.3 and install it on the SD card. Looky here:

    The Jedroid 1.3 image is stored on a Google Drive, for later versions you may want to go to the Google Drive itself and download the image. Here’s the current address for the Google Drive:

    Note: This was not working on 12/1/2016

    https://drive.google.com/folderview?id=0B-lsw7HiSbj8V3A4WjhlSlR6Ujg&usp=sharing

    After you run the script, you should have a SD card that is ready to boot into Android. At this point, simply restart the machine and Android should start up.

    Note: There is one messy bit in the script, in that it creates a mount point for the SD card at /media/ubuntu/jedroidInstall. After the install, you will probably want to delete that entry. You can:

    $ sudo rmdir -r /media/ubuntu/jedroidInstall

    Conclusion

    This is a relatively painless way to get Android to run on the Jetson TK1 without having to make the commitment of flashing the device. Try it out, and go have some fun with it.

    14 Comments

    1. Hello. i’m still rather noob-ish at using linux.

      I ran the Gist script and followed it to ensure there were no errors along the way. It was completed problem-free, but when I restart my Jetson board, it brings me back to Ubuntu. I’m not sure what I did wrong.

      • Two questions. Which version of LT4 are you running? You must be running a version > 21.1.

        The second question, is your SD card in the slot when you boot the machine up?

        • I feel sheepish. I didn’t notice that I had to be running a certain version to do this.

          I can’t find version info as system settings becomes unresponsive after I open it up, but I am pretty certain I should need an update. I haven’t connected it to the internet since I first got the board running.

          The sd card remains in its place at all times, but I will update L4t before I try again.

          • No worries. The board is shipped with a version of L4T 19.x. The newer version (L4T 21.x) uses a different bootloader which allows for the Jetson to boot from the SD card. This in turn allows one to boot straight into Android when the SD card is in the slot, as the newer boot loader looks to boot from the SD card first.

            Good luck!

    2. Hi to all. I am having problems at the cmd $tar jxvf jedroid_v1.31.tar.bz2 -C ~/jedroid_workspace
      The error is:
      ubuntu@tegra-ubuntu:~/Downloads$ tar jxvf jedroid_v1.31.tar.bz2 -C ~/jedroid_workspace
      bzip2: (stdin) is not a bzip2 file.
      tar: Child returned status 2
      tar: Error is not recoverable: exiting now

      Any tip, thanks.
      darm

    Leave a Reply

    Your email address will not be published.


    *