Jetson TK1 Kernel Recompile Guide

Hello I have an Dual Band / Bluetooth mini pcie - Intel 3160. It looks like support for this is left out by the default kernel.
Could someone at NVIDIA please write a guide on how to get a recompiled kernel installed and boot with it?

I was able to create a zImage but unsure of testing as I have not been able to flash by Jetson.

Would also like to look at GSM / 3G / 4G LTE cards as an option in the future for Mobile + Automotive applications with the Jetson, but as such I am limited due to a lack of documentation.


If the necessary drivers can be built as kernel modules, that’s a lot easier than reflashing the kernel. Here’s approximately how I got my usb wifi dongle going. (Take this with a grain of salt as it’s my first time fooling around with kernel sources in about 10 years!)

  1. On the TK1, download and unpack the L4T kernel sources to ~/kernel (or whatever)
  2. zcat /proc/config.gz > ~/kernel/.config
  3. make menuconfig
  4. find the goodies you need and set them to compile as modules...for wifi I think you need cfg80211, mac80211, and the driver for your particular device
  5. make prepare; make modules_prepare
  6. make modules SUBDIRS=net/wireless, make modules SUBDIRS=net/mac80211, make modules SUBDIRS=drivers/net/wireless, and so on for any other relevant subdirectories of the kernel source tree containing modules you need
  7. copy the built .ko files to /lib/modules/$(uname -r)/kernel
  8. depmod -a
  9. apt-get install linux-firmware
  10. add entries for the necessary modules to /etc/modules and reboot

I got bluetooth working this way too (bluetooth, hidp, btusb, and dongle-specific driver). I’ve hit a wall with my TV tuner stick though, which seems to need some stuff in the kernel that can’t be built as modules. So I’d also like to see NVIDIA provide a step-by-step for compiling and installing a kernel (ideally without resetting the whole root FS).

Check this thread for recompiling the kernel:

If you can think of other often needed packages like the “apt-get install linux-firmware”, please let me know and I’ll include them in the post.

So I’ve added the built modules and they are running according to lsmod, but I can’t still seem to get the network adapter appearing as an eth when I check under ifconfig. Were there any special steps after the reboot I might be missing?

For some reason it still does not seem to work - there is an nvm error - I tried 3160, the 6230, and soon will try the 6235

Hi mlin, is it not needed to also edit the Makefile to add the “EXTRAVERSION = -g6a2d13a” in order for the kernel and modules version to match ?

Im buidling a ATH9K module and have downloaded the firmware files.

but the issue i found is the wireless is disabled by switch

rfkill unblock all
rfkill list all

the wireless interface is still blocked

We (NVIDIA) are aware that many devices currently need firmware drivers installed to “/lib/firmware” or building & flashing a custom L4T kernel. We will provide some instructions soon on how to build & flash a custom L4T kernel and will provide many common Wifi & webcam drivers on our Support page soon. But we want to know which drivers are the most desired.

I created a list of drivers at, if you don’t see your driver mentioned then add it to the list or email me (

Thanks for your patience!

Shervin we waitng :) but how to deal with rfkill? Some coped with kernel compilation, but how to get around this problem?

I agree I really need to know how to flash the kernel, I was tempted to just try it but turning my board into a paperweight doesn’t seem terribly fun.

NVIDIA support is terrible… I used a few similar platforms, but there at least was answered questions.

I added some info here:

Flashing the kernel isn’t hard. Prerequisites:

  1. From kernel build, arch/arm/boot/zImage, copy this to your L4T kernel subdirectory (back up the old zImage).
  2. If you have previously upgraded from fastboot to u-boot (such as flashing R19.3 with u-boot option), also copy zImage to your Jetson's /boot directory (and back up old zImage here too).
  3. Make sure your host machine has /dev/loop0...if not, as root run "losetup --find" to create this file temporarily.
  4. Start Jetson with the proper reset button held down and micro-B USB cable connected to host computer.
  5. -k 6 jetson-tk1 mmcblk0p1