Intel 9260 WiFi on jetson nano / jetbot

Install the latest Image as mentionned in my post:

then follow 7, 8 and 9th step from post #https://devtalk.nvidia.com/default/topic/1050449/jetson-nano/intel-9260-wifi-on-jetson-nano-jetbot/post/5342588/#5342588:

So just:

# Clone and build and install the iwlwifi backport using the instructions from @idcrook in #5:
git clone https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git
cd backport-iwlwifi
make defconfig-iwlwifi-public
make -j4
sudo make install

# Clone the linux-firmware git repo: 
git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

# Copy all iwlwifi-9260* from the linux-firmware repo to /lib/firmware
sudo cp linux-firmware/iwlwifi-9260* /lib/firmware/
sudo reboot

The last tutorial written in page 5 work for me in the SD card from fresh.
My problem is that the first time I did Im using SSD boot, and I installed something wrong.The module work.

My problem is rhat I want joint in the same kernel/modules, realsense, zswap, SSD boot, wifi intel 9260 and I do not know how do it

Well, I just compiled a new kernel with the 9260,realsense,boot in SSD and zswap all together so it works, thank you to the people that shared

Does wifi and bluetooth work?

WiFi is working for me. Bt I did not even try to connect it. Do you want I try as I donā€™t use that.

@fpsychosis

I tried setting up my nano again by downloading the image above (https://developer.download.nvidia.com/assets/embedded/downloads/jetson-nano-sd-card-image/r32.2-2019-07-17/jetson-nano-sd-r32.2-2019-07-16.zip) in macos and then used etcher to create an ssd as the jetson setup instructions describe. After the ubuntu install completes i started at your ā€œso justā€ instructions.

It seems fine until I run the make -j4 instruction and i get the following error:

CC [M] /home/neo/backport-iwlwifi/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.o
/home/neo/backport-iwlwifi/drivers/net/wireless/intel/iwlwifi/mvm/fw.c:1275:12: error: static declaration of ā€˜iwl_mvm_ppag_send_cmdā€™ follows non-static declaration
static int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm)
^~~~~~~~~~~~~~~~~~~~~
In file included from /home/neo/backport-iwlwifi/drivers/net/wireless/intel/iwlwifi/mvm/fw.c:76:0:
/home/neo/backport-iwlwifi/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h:2234:5: note: previous declaration of ā€˜iwl_mvm_ppag_send_cmdā€™ was here
int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm);
^~~~~~~~~~~~~~~~~~~~~
/home/neo/backport-iwlwifi/drivers/net/wireless/intel/iwlwifi/mvm/fw.c:1275:12: warning: ā€˜iwl_mvm_ppag_send_cmdā€™ defined but not used [-Wunused-function]
static int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm)
^~~~~~~~~~~~~~~~~~~~~
/home/neo/backport-iwlwifi/drivers/net/wireless/intel/iwlwifi/mvm/fw.c:1270:12: warning: ā€˜iwl_mvm_get_ppag_tableā€™ defined but not used [-Wunused-function]
static int iwl_mvm_get_ppag_table(struct iwl_mvm *mvm)
^~~~~~~~~~~~~~~~~~~~~~
scripts/Makefile.build:335: recipe for target ā€˜/home/neo/backport-iwlwifi/drivers/net/wireless/intel/iwlwifi/mvm/fw.oā€™ failed
make[9]: *** [/home/neo/backport-iwlwifi/drivers/net/wireless/intel/iwlwifi/mvm/fw.o] Error 1
make[9]: *** Waiting for unfinished jobsā€¦
CC [M] /home/neo/backport-iwlwifi/drivers/net/wireless/intel/iwlwifi/xvt/xvt.o
CC [M] /home/neo/backport-iwlwifi/net/wireless/debugfs.o
CC [M] /home/neo/backport-iwlwifi/drivers/net/wireless/intel/iwlwifi/xvt/user-infc.o
GEN /home/neo/backport-iwlwifi/net/wireless/shipped-certs.c
GEN /home/neo/backport-iwlwifi/net/wireless/extra-certs.c
CC [M] /home/neo/backport-iwlwifi/net/wireless/shipped-certs.o
CC [M] /home/neo/backport-iwlwifi/net/mac80211/tx.o
CC [M] /home/neo/backport-iwlwifi/net/wireless/extra-certs.o
scripts/Makefile.build:649: recipe for target ā€˜/home/neo/backport-iwlwifi/drivers/net/wireless/intel/iwlwifi/mvmā€™ failed

Any ideas?

I beginner, I cant help you in errors.
What I did is just follow the steps of this post. #74

previous that as everytime I need compile, I start the swap file or partition.
To be sure, make swap 3.9Gb and run make -j1

No, fpsychosis, your consolidation helped. I just did a make clean and then added a git checkout release/core46, that you probably did when following a previous thread.

I am now getting 175 Mbps wirelessly. I chose the 9260 because it supports Bluetooth 5 and the 8265 is only 4.2. Iā€™ll have to try it as soon as I get more time.

So just for clarity for a new reader:

  1. Do a fresh install as described in the Nvidia Jetson installations instructions. The image above is now the current one.
  2. Make sure you have a ethernet connection on first bootup to get the OS updates (oops)
  3. git clone kernel/git/iwlwifi/backport-iwlwifi.git - Backport tree for iwlwifi
  4. cd backport-iwlwifi
  5. git checkout release/core46
  6. make defconfig-iwlwifi-public
  7. make -j4
  8. sudo make install

Clone the linux-firmware git repo:

  1. git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

Copy all iwlwifi-9260* from the linux-firmware repo to /lib/firmware

  1. sudo cp linux-firmware/iwlwifi-9260* /lib/firmware/
  2. sudo reboot

Iā€™m very happy you got make it work. If I helped something is great but all credit who found the way and shared it.
Please if you get work BT let me now, I do not think Iā€™m going to use it, but who knows XD.

I follow instructions here and can get 9260 card working on Jetson nano, but only if I first plug in ethernet. If I boot without ethernet cable the wifi doesnā€™t work, but plugging ethernet in and then disconnecting is enough to kick start the wifi then it works without ethernet cable. Anyone have any thoughts on what would cause this? Thanks very much for all the above help too.

Thanks chrisnjackson, this work for my Intel 8265 Wifi card too.

If youā€™re still interested you can rebuild the kernel with this patch.
You might want to build a newer bluez also.
The 9260 works perfectly now. Even got A2dp working on the jetson after too many hours of trying.

diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 8dce1a890078..1c5bb534869b 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -323,6 +323,7 @@ static const struct usb_device_id blacklist_table[] = {
 	{ USB_DEVICE(0x8087, 0x07dc), .driver_info = BTUSB_INTEL },
 	{ USB_DEVICE(0x8087, 0x0a2a), .driver_info = BTUSB_INTEL },
 	{ USB_DEVICE(0x8087, 0x0a2b), .driver_info = BTUSB_INTEL_NEW },
+	{ USB_DEVICE(0x8087, 0x0025), .driver_info = BTUSB_INTEL_NEW },
 	{ USB_DEVICE(0x8087, 0x0aa7), .driver_info = BTUSB_INTEL },
 
 	/* Other Intel Bluetooth devices */
@@ -2029,7 +2030,7 @@ static int btusb_setup_intel_new(struct hci_dev *hdev)
 	 * This check has been put in place to ensure correct forward
 	 * compatibility options when newer hardware variants come along.
 	 */
-	if (ver.hw_variant != 0x0b && ver.hw_variant != 0x0c) {
+	if (ver.hw_variant != 0x0b && ver.hw_variant != 0x0c && ver.hw_variant != 0x12 ) {
 		BT_ERR("%s: Unsupported Intel hardware variant (%u)",
 		       hdev->name, ver.hw_variant);
 		return -EINVAL;

Yeah , precisely now Im interested in get BT to connect a zbox controller.
Sadly too long without use the Nano, and now I forgot some parts how to compile the kernel. I do not remember the folder where is my previous kernel.
Can I just compile this module over the previous one, or I need compile the full kernel. I would like do not need compile all the kernel, as Im not sure if I will remenber how I did to get SSD boot, ZRAM and realsense with CUDA.
Thank by the advice.

you might be able to only rebuild the btusb module.
I rebuilt the whole kernel with the bluetooth core as module to try out some other stuff but it worked out with just the simple change.

where I make that changes?

In menuconfig you switch Network/bluetooth subsystem to ā€œMā€.
have you tried only building the btusb and btintel module?

If youā€™re building for the default kernel you need to set the localversion to ā€œ-tegraā€
and create an empty file called ā€œ.scmversionā€ in the kernel souce path. otherwise the uname will not have the suffix ā€œ-tegraā€ but ā€œ-tegra+ā€ and the modules wonā€™t load.

After applying the patch with git apply patch
you should extract the .config from the jetson, put it in an empty folder where you will build,
run make ARCH=arm64 pathtofolderwith.config olddefconfig
run make ARCH=arm64 pathtofolderwith.config menuconfig or xconfig and change the localversion
create the .scmversion file

make ARCH=arm64 pathtofolderwith.config modules_prepare
make ARCH=arm64 pathtofolderwith.config modules
I have to idea how to only build a single module in treeā€¦
copy over pathtofolderwith.config/drivers/bluetooth/btusb.ko to the correct path on the jetson
something like /lib/modules/uname/kernel/drivers/bluetooth

maybe run depmod
try to modprobe it.
If you did everything right it should just work.
if it gives you some kind of error check modinfo if the vermagic contains the correct uname version string 4.9.140-tegra
if it doesnā€™t, the localversion config is incorrect or you forgot the .scmversion file.

If youā€™re not running the default kernel, adjust the localversion according to your uname -a
rebuilding the whole bluetooth subsystem as a modules should not be necessary.

Thanks a lot by the time you spent in the nice explanation. As Im not a advanced user of linux Iā€™m going to take my time in tey test it. The thing is that I made my own kwrnel with the official one, but with the wifi module of this trheat, the Realsense support, Zram support and SSD boot. It was my frst kernel and worked. Right now with the pass of the months and without use more the Nano or that kind of advanced tasks, now I forgot almost everything, no just how compile the kernel, even were I have the kernel that I compiled to recompile over it, as I need that added functions.
Really I need the Nano now , and worry me that later it doesnā€™t boot.Is sad get a knowledge and foeget it as I did.
Thanks a lot.

Hey guys,

Iā€™ve installed the patch following chrisnjacksonā€™s instructions. The wifi with Intel 9260 works great.

However, there now seems to be a problem when booting up or shutting down. Please look at the image link.

https://imgur.com/BxGpzvK

The most noticeable error is:

iwlwifi 0000:01:00.0: Direct firmware load for iw1-dbg-cfg.ini failed with error -2

Anyone have any ideas on how to fix this?

hi, again with the 9260 fight, I cannot get work the module on Jetpack 4.3, after compile the kernel do not boot. Did somebody get it work on JP 4.3? Thanks, I missed write here XD

Today, I made set up both, the WiFi and the bluetooth on JetPack-4.3(R32.3.1).

Extract kernel_src.tbz2 to a directory.
Entering kernel_src/kernel/kernel-4.9,
I manually edited drivers/bluetooth/btusb.c refer to post.#92 because
line " { USB_DEVICE(0x8087, 0x07dc), .driver_info = BTUSB_INTEL }, " did not exist in the parch.

Probably,
git apply diff.patch(#92).
may solve it.
The WiFi was already patched.

Then,
make tegra_defconfig
make menuconfig
Exit ā€œ.config - Linux/arm64 4.9.140 Kernel Configurationā€ Window
make -j4

sudo make modules_install
sudo cp arch/arm64/boot/Image /boot/Image

Regarding the iwlwifi backport and the linux-firmware, I refered to the following site.
https://www.sfxrescue.com/tutorials/using-an-intel-9260-wireless-card-with-the-nvidia-jetson-nano/

I got some errors during above processes.
Error: ā€œYour display is too small to run Menuconfig!
It must be at least 19 lines by 80 columns.ā€

Need larger size of the terminal window.

Error: curses.h: No such file or directory

sudo apt-get install libncurses5-dev

I could connect internet through WiFi and made pairing headset successfuly. However, I could not hear sound. I think there are still problems on bluetooth.

I hope these help someone.