With the advent of Linux for Tegra (L4T) version 21.3 many of the issues that were exhibited in the 19.X release have been addressed. Installing the Grinch Kernel on L4T 21.3 increases the capabilities of the Jetson by adding support for a wide variety of external peripherals, addressing some of the still outstanding issues, and enabling different configuration parameters.
WARNING: You must have a version of L4T 21.X installed before adding the Grinch Kernel for 21.X described here. That means that you must have flashed the Jetson board to install a new OS before Grinch Kernel 21.X installation.
Here’s a video on what to expect during the install. Looky here:
Background
In an earlier post, Installing Grinch LinuxForTegra (L4T) on NVIDIA Jetson TK1, we discussed some of the issues with the earlier 19.X release. Several things have changed since that time, including the replacement of fastboot with uboot for the boot loader sequence. This means that it is easier to change the kernel on a flashed Jetson.
The way that USB 3.0 gets enabled is different also, and is simply changed by modifying /boot/extlinux/extlinux.conf. Here’s a blog entry on how to Enable USB 3.0.
These changes make it much easier to modify things on the Jetson side, rather than having to configure kernels and flash them from another Ubuntu host.
Many people, especially those coming from desktop platforms, wonder why the Jetson lacks initial support for a wide variety of external peripherals when removed from the box. The reason is that the Jetson is an embedded development kit, which means its main initial intent was to help developers build devices that include the Tegra K1 chip. If you think about it from that perspective, it wouldn’t make much sense to have extra drivers and cruft installed that a device doesn’t use. For example, if you were building a phone, it doesn’t make sense to have drivers for 20 different wireless cards that the phone doesn’t contain.
However, the Jetson is also powerful enough to be a general purpose desktop computer. Desktop computer users have certain expectations, including being able to add devices and drivers, or have support for common devices available. Fortunately the Jetson community, led by user Santyago built a new Linux kernel named Grinch which includes a lot of the features to which most desktop users are accustomed.
You can get more information about the Grinch Kernel for L4T 21.3 on the NVIDIA Jetson forum. The entry includes a list of changes and supported devices, and is also the place to get support for the Grinch Kernel.
Installation
There are detailed installation instructions on the Jetson forum. I’ve bundled those instructions into a little shell script which is available on the JetsonHacks Github account. Installation is straightforward. You will need to have ‘git’ installed. Git can be installed with the command:
$ sudo apt-get install git
To install the Grinch Kernel:
$ git clone https://github.com/jetsonhacks/installGrinch.git
$ cd installGrinch
$ ./installGrinch.sh
You will need to enter your password after the kernel files have finished downloading. After installation is complete, reboot your Jetson.
Note: The script does a simple ‘wget‘ to get the files from the server. Some people may have issues with firewalls and such. The script does not handle those cases, so you will have to modify the script or manually download the required files.
Note: There is also a file called “installGrinchNoDownload.sh” which is useful for the times when you either must manually download the kernel files, or if you have previously downloaded the kernel files, and only want to copy them to the correct place. The script expects the kernel files to be in the same directory where it is located.
After installation, you may delete the ‘installGrinch‘ folder if desired. It is useful to make a backup of the folder before deletion, so that you can install the Grinch again on a fresh flash without having to download the files again.