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:
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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# 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 | |
cd ~/Downloads | |
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 | |
md5sum jedroid_v1.31.tar.bz2 | |
# Untar | |
mkdir ~/jedroid_workspace | |
tar jxvf jedroid_v1.31.tar.bz2 -C ~/jedroid_workspace | |
cd ~/jedroid_workspace/jedroid | |
# Copy Jedroid to the SD Card | |
sudo cp -r sdimage/* /media/ubuntu/jedroidInstall | |
cd /media/ubuntu/jedroidInstall/boot | |
# 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
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.
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!
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
Hi darm,
I know they’ve been having issues with the server over the last couple of weeks. It could be a variety of reasons it doesn’t work. Another place to ask this question is on the Jetson forum: https://devtalk.nvidia.com/default/topic/767885/embedded-systems/android-on-jetson-tk1/
More people will see it, including the author of the package.
Thanks 🙂
According with another forum wget no longer works with google drive , because we must be logged in .
And yes you right, looks like the link itself has an issue, and also the others links available at the http://jetson.co/wiki/main_page/android-on-jeston
There is an other place available , where I can download jedroid? Please 🙂
Thanks
Hi darm,
Thank you for the information.
Unfortunately I am not the author of the Jedroid package and don’t distribute it myself.
You can try to go to the forum and post to the Jedroid thread that you can’t access the file, or that the link is broken. You could also try contacting lucasdai privately. Good luck!
Thanks … I had post but I did not received any replay…
I will try lucasdai , again thanks for your quick replay .
darm
the google drive link is down ?
Since this article was written, NVIDIA announced official support for Android. See: https://devtalk.nvidia.com/default/topic/878820/jetson-tk1/android-l-update-to-jetson-tk1/1
I want to install the latest Android on TX2.
I want to know if it is possible.
Please ask Jetson TX2 questions like this on the NVIDIA Jetson TX2 forum: https://devtalk.nvidia.com/default/board/188/jetson-tx2/