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:
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:
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.
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.
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:
|# Install Jedroid 1.3 on SD card|
|# Assumes a blank Ext4 formatted SD card is in the card reader|
|# The SD Card is not mounted|
|sudo mkdir /media/ubuntu/jedroidInstall|
|sudo mount -t ext4 /dev/mmcblk1p1 /media/ubuntu/jedroidInstall|
|# Get Jedroid 1.3 from Google Drives|
|wget -O jedroid_v1.31.tar.bz2 https://googledrive.com/host/0B-lsw7HiSbj8cHJNTmF2RUV6RVE|
|wget -O jedroid_v1.31.tar.bz2.md5sum https://googledrive.com/host/0B-lsw7HiSbj8T2xFdjZFY0VadXM|
|tar jxvf jedroid_v1.31.tar.bz2 -C ~/jedroid_workspace|
|# Copy Jedroid to the SD Card|
|sudo cp -r sdimage/* /media/ubuntu/jedroidInstall|
|# Modify Jedroid to boot from the SD card|
|sudo mkdir extlinux|
|sudo cp extlinux.conf extlinux|
|sudo sed -i 's/LINUX zImage/LINUX \/boot\/zImage/' extlinux/extlinux.conf|
|sudo sed -i 's/FDT tegra124-pm375.dtb/FDT \/boot\/tegra124-pm375.dtb/' extlinux/extlinux.conf|
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
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
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.