L4T R19.3 upgrade procedure - Tegra Linux Driver Package Development Guide ?

Where could I download this document ?
I would like to know how to upgrade the Nvidia drivers to latest
release whithout reflashing the whole file system.

Best Regards,
Peter Bauer

I am also in the same boat.
I have my Jetson TK1 running with L4T R19.2, but would like to upgrade to R19.3

-koshy george

I’m also interested in this, but could find no references to it anywhere. Closest I found was the driver package release notes. Where was it you found the reference to this guide?

The binaries themselves should be part of the L4T file. On R19.2 it is named Tegra124_Linux_R19.2.0_armhf.tbz2, so probably Tegra124_Linux_R19.3.0_armhf.tbz2 would be the corresponding name. This unpacks to subdirectory Linux_for_Tegra/kernel/, which in turn has the binary drivers in kernel_supplements.tbz2. Normally the apply_binaries.sh script would unpack these into the L4T root filesystem, but you could do this by hand and simply copy (make sure permissions are right) to the correct /lib/modules/uname -r/ “extra” directory each of the *.ko files, then run depmod -a.

I don’t know if any kernel customization would invalidate this. The acid test is to try it. If you use the 19.3 drivers with the 19.3 kernel it shouldn’t matter…just use apply_binaries.sh before flashing. I have a thread up with questions on kernel versioning which is related to this:

It is pretty much a guarantee that removing a configured kernel feature would risk invalidating a module with the kernel, but I was hoping someone had actually flashed the kernel with a new version and could comment on success and what form of feature change they had used. I may just have to try it, but I hate to do so not knowing what others had done and how it worked out before actual flash.

One hint though: If you upgrade the kernel, it will have a new “uname -r” version. The module directory would then change from the existing directory (which is a good thing if the kernel itself has changed version or if the configuration has removed a feature…also ok to keep the version and same module directory if all features added are purely module).

FYI, there are kernel modules which trigger a non-module dependency which is NOT inside of that module…so checking a new module and saving the config probably still requires comparing the new config file to the existing config to find out if a non-module dependency was triggered.

The Release notes file has the upgrade info in it - [url]https://developer.nvidia.com/sites/default/files/akamai/mobile/files/L4T/Tegra_Linux_Driver_Package_Release_Notes_R19.3.pdf[/url]

@steev, we’re missing access to the “Tegra Linux Driver Package Development Guide” mentioned on page 4.

I’m just waiting for instructions on how to safely update to the -gf455cd4 release from 19.2 without having to perform a full flash:

Huh, you’re right - somehow I missed that, I could have sworn I’d seen it somewhere. My apologies

I’m thinking someone forgot to post that PDF to the website!

I mentioned that here:

Basically you just add the “-gf455cd4” to the EXTRAVERSION of the top level Makefile.

We are in the middle of formulating the development guide for rel-19.3.
It will be posted in a couple days.

@rpaliwal: So is there a prefered way for a non destructive software upgrade ?

@peba: right now, I don’t think there is. You can flash kernel separately though and you can copy the rootfs libs from latest release but that will be a little dirty and tricky.

Without official docs, I think it would go something like…

(On the Jetson)

Download https://developer.nvidia.com/sites/default/files/akamai/mobile/files/L4T/Tegra124_Linux_R19.3.0_armhf.tbz2 and put it in the NVIDIA-INSTALLER directory.

Modify installer.sh to point to R19.3.0 instead of R19.2.0

Run installer.sh

Extract Tegra… to /tmp
cd /tmp/Linux_for_Tegra/kernel/
sudo tar -xovf kernel_supplements.tbz2 -C /
sudo cp dtb/* /boot
sudo cp vmlinux.uimg /boot
sudo cp zImage /boot

Remove the files from /tmp/Linux_for_Tegra

Reboot and put the jetson into recovery (hold down force recovery, and reboot, or power off and power on while holding down force recovery)

On the host system…
./flash.sh -k 6 jetson-tk1 mmcblk0p1

Disclaimer: Unless they add some other things to the rootfs that don’t get applied via installer.sh, this should get you up and running non-destructively on the latest L4T. Untested though, just a rough guess of what should have to happen.

I see the NVIDIA Tegra Linux Driver Package Development Guide is now available.

It’s inside the tar at the Documentation link.

I still don’t see an easy way to update to the 19.3 drivers+kernel from the TK1… I guess I’ll have to flash the board.

I am trying to go thru the instructions - but when I run the below command I get “No such script: rfs

$ debootstrap --verbose --no-check-gpg --arch=armhf --variant=minbase --include=ubuntu-minimal,xserver-xorg,xserver-xorg-core,xinit,xterm,alsa-utils,wireless-tools,wpasupplicant,x11-xserver-utils,openssh-client,openssh-server,bzip2,less,iputils-ping,isc-dhcp-client,net-tools,lsb-release,sudo,vim,iw,bluez,gdisk,wget language-pack-en-base,xfonts-base,ntp --components=main,restricted,universe trusty rfs http://ports.ubuntu.com/

@steev I tried your instructions and I think it may have worked - I at least get this

$ cat /etc/nv_tegra_release

R19 (release), REVISION: 3.0, GCID: 4143443, BOARD: ardbeg, EABI: hard, DATE: Wed Jun 18 18:34:47 UTC 2014

I didn’t do the flash.sh stuff yet as I am not sure what RECOVERY MODE is supposed to do. I plug the USB cable into my linux laptop, hold SYS RESET and hit RESET and all I see is a black screen. Is the Jetson’s SD disk supposed to show up as a USB device/drive? If I disconnect power I get the Desktop again

btw it appears the debootstrap command is missing a comma after wget which is causing my error

@jcleave - recovery mode is sitting there waiting for something to come in over usb.

Breaking it out, I’ll explain

./flash.sh -k 6 jetson-tk1 mmcblk0p1

Run the flash.sh script
-k = kernel
6 = partition
jetson-tk1 = board settings to use
mmcblk0p1 = device to use - now, I could have this part incorrect.

So basically we tell it to update the kernel only, rather than a full flash - at least, based on my understanding of the flash.sh output. I found that command somewhere here in the forums though, for people who were just updating the kernel (with their own).

Recovery mode is a special mode where (typically) if you’ve completely bricked the device (for certain definitions of bricked) you can still recover it by rewriting everything that’s on the eMMC. It is the BCT (I think?) and it runs at a lower level than the u-boot bootloader.

The part I was misunderstanding was the flash.sh location. I also wasn’t sure if I had to use a serial cable as indicated in l4t_quick_start_guide.txt

In my mind I thought I had to somehow connect/login to the TK1 over USB while it was in recovery mode and run the flash.sh on it. I didn’t realize I also had to download the Tegra124_Linux_R19.23.0_armhf.tbz2, decompress it and run it on the host machine

Anyway here is my output in case it helps anyone

Thanks steev!!!

mmcblk0p1 is correct. I can verify the command works. If in the kernel compile you change Makefile EXTRAVERSION to the existing EXTRAVERSION in “uname -r”, and add something to it (mine is “-g6a2d13a_1”), you can build a new kernel with all existing configuration PLUS whatever new config you want.

Do a recursive copy (preserving permissions) of /lib/modules/uname -r to the new EXTRAVERSION prior to make modules_install (for me /lib/modules/3.10.24-g6a2d13a_1). Copy your new zImage to replace the L4T zImage (I’m using R19.2, about to change to R19.3) and the above command will update only the kernel while leaving the rest of the system alone.

By changing the EXTRAVERSION in the Makefile it is possible to simply put the original zImage back in place and flash back to the original kernel using the original modules.