Xavier NX devkit M2 Wifi adapter on TX2 Devkit

Hi @WayneWWW ,

On L4T 32.7.1 the Xavier NX Devkit wifi AzureWave adapter that uses 8822ce is not detected on the TX2 Devkit when plugged into the M2 J18 port.

I’ve used configuration option 6 with ODMDATA 0x309000 during flashing of the TX2 Devkit with NVidia Ubuntu 32.7.1 and I don’t see the device with lspci:

./tegraflash.py --bl nvtboot_recovery_cpu.bin --sdram_config P3310_A00_8GB_lpddr4_A02_l4t.cfg --odmdata 0x3090000 --applet mb1_recovery_prod.bin  --cmd "flash; reboot"  --cfg flash.xml --chip 0x18 --misc_config tegra186-mb1-bct-misc-si-l4t.cfg --pinmux_config tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg --pmic_config tegra186-mb1-bct-pmic-quill-p3310-1000-c04.cfg --pmc_config tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg --prod_config tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg --scr_config minimal_scr.cfg --scr_cold_boot_config mobile_scr.cfg --br_cmd_config tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg --dev_params emmc.cfg  --bins "mb2_bootloader nvtboot_recovery.bin; mts_preboot preboot_d15_prod_cr.bin; mts_bootpack mce_mts_d15_prod_cr.bin; bpmp_fw bpmp.bin; bpmp_fw_dtb tegra186-a02-bpmp-quill-p3310-1000-c04-00-te770d-ucm2.dtb; tlk tos-trusty.img; eks eks.img; bootloader_dtb tegra186-quill-p3310-1000-c03-00-base.dtb"   
saving flash command in /home/acoh/Downloads/32.7.1/Linux_for_Tegra/bootloader/flashcmd.txt

on the TX2 I see:

test@linux:~$ dmesg | grep -i pci
[    0.000000]     PCI I/O : 0xffffffbefee00000 - 0xffffffbeffe00000   (    16 MB)
[    0.476946] iommu: Adding device 10003000.pcie-controller to group 50
[    0.476961] arm-smmu: forcing sodev map for 10003000.pcie-controller
[    0.644813] PCI: CLS 0 bytes, default 64
[    0.992093] tegra-pcie 10003000.pcie-controller: 4x1, 1x1 configuration
[    0.993068] tegra-pcie 10003000.pcie-controller: PCIE: Enable power rails
[    0.993416] tegra-pcie 10003000.pcie-controller: probing port 0, using 4 lanes
[    0.995970] tegra-pcie 10003000.pcie-controller: probing port 2, using 1 lanes
[    1.082403] ixgbe: Intel(R) 10 Gigabit PCI Express Network Driver - version 4.4.0-k
[    1.096437] ehci-pci: EHCI PCI platform driver
[    1.096473] ohci-pci: OHCI PCI platform driver
[    1.417957] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[    1.823992] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[    2.229957] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[    2.231976] tegra-pcie 10003000.pcie-controller: link 0 down, ignoring
[    2.637993] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    3.053998] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    3.471443] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    3.473845] tegra-pcie 10003000.pcie-controller: link 2 down, ignoring
[    3.676563] tegra-pcie 10003000.pcie-controller: PCIE: no end points detected
[    3.677013] tegra-pcie 10003000.pcie-controller: PCIE: Disable power rails
test@linux:~$ lsusb 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 13d3:3549 IMC Networks 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
ata/linux:/boot$ ls -l /sys/firmware/devicetree/base/chosen/plugin-manager/odm- 
total 0
-r--r--r-- 1 root root 4 Sep 15 12:03 android-build
-r--r--r-- 1 root root 4 Sep 15 12:03 disable-pmic-wdt
-r--r--r-- 1 root root 4 Sep 15 12:03 disable-sdmmc-hwcq
-r--r--r-- 1 root root 4 Sep 15 12:03 disable-tegra-wdt
-r--r--r-- 1 root root 4 Sep 15 12:03 enable-debug-console
-r--r--r-- 1 root root 4 Sep 15 12:03 enable-denver-wdt
-r--r--r-- 1 root root 4 Sep 15 12:03 enable-pcie-on-uphy-lane2
-r--r--r-- 1 root root 4 Sep 15 12:03 enable-pcie-on-uphy-lane4
-r--r--r-- 1 root root 4 Sep 15 12:03 enable-sata-on-uphy-lane5
-r--r--r-- 1 root root 4 Sep 15 12:03 enable-xusb-on-uphy-lane0
-r--r--r-- 1 root root 4 Sep 15 12:03 enable-xusb-on-uphy-lane1
-r--r--r-- 1 root root 9 Sep 15 12:03 name
-r--r--r-- 1 root root 4 Sep 15 12:03 no-battery
-r--r--r-- 1 root root 4 Sep 15 12:03 normal-flashed

Do I need to change the device-tree apart from ODMDATA and if yes, could you please let me know how exactly the device-tree changes should look like for 32.7.1 or even better, for 32.7.2?

Thank you

Just to clarify, the Wifi chip that came with the Xavier NX Devkit is AW-CB375NF.

Hi, any news from the BSP team on this, could they help with a patch to make the Xavier NX module work on the TX2 Devkit? Thank you

What is the exact thing you are doing here?

A NX module plugged on TX2 devkit? Why???

Hi @WayneWWW, our users would like to use the AW-CB375NF Wifi Module, that is also found on the Xavier NX Devkit, with the Jetson TX2 Devkit. Not the Xavier module, only that M.2 WiFi chip. However, it is not present on the PCI bus, i.e lspci does not find it when the board is flashed with Configuration Option 6. Please see my first message in this post for all details. I believe the DTB needs to be modified, apart from ODMDATA and was wondering if you can provide the dtb patch if that’s the case.

Thank you

You need to change the pcie lane in device tree too.

You shouldn’t see 4x1,1x1 setting but 2,1,1 setting.
https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3261/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/adaptation_and_bringup_tx2.html

[    0.992093] tegra-pcie 10003000.pcie-controller: 4x1, 1x1 configuration
[    0.993068] tegra-pcie 10003000.pcie-controller: PCIE: Enable power rails
[    0.993416] tegra-pcie 10003000.pcie-controller: probing port 0, using 4 lanes
[    0.995970] tegra-pcie 10003000.pcie-controller: probing port 2, using 1 lanes

@WayneWWW I’ve decompiled the dtb using dtc -I dtb -O dts egra186-quill-p3310-1000-c03-00-base.dtb -o 32_7_1.dts, then modified
pcie-controller@10003000 and fragment-500-pcie-config

like this:

diff --git a/32_7_1.dts b/32_7_1.dts
index bec799b..60cbe5b 100644
--- a/32_7_1.dts
+++ b/32_7_1.dts
@@ -10888,7 +10888,7 @@
                        #address-cells = <0x03>;
                        #size-cells = <0x02>;
                        ranges;
-                       nvidia,num-lanes = <0x04>;
+                       nvidia,num-lanes = <0x02>;
                        nvidia,afi-ctl-offset = <0x110>;
                        nvidia,disable-aspm-states = <0x0f>;
                        nvidia,disable-clock-request;
@@ -10902,7 +10902,7 @@
                        #address-cells = <0x03>;
                        #size-cells = <0x02>;
                        ranges;
-                       nvidia,num-lanes = <0x00>;
+                       nvidia,num-lanes = <0x01>;
                        nvidia,afi-ctl-offset = <0x118>;
                        nvidia,disable-aspm-states = <0x0f>;
                };
@@ -13388,11 +13388,11 @@
                                _overlay_ {
 
                                        pci@1,0 {
-                                               nvidia,num-lanes = <0x04>;
+                                               nvidia,num-lanes = <0x02>;
                                        };
 
                                        pci@2,0 {
-                                               nvidia,num-lanes = <0x00>;
+                                               nvidia,num-lanes = <0x01>;
                                        };
 
                                        pci@3,0 {

then re-compiled and specified the dtb in extlinux.conf using FDT.

Now I have both ODMDATA set to 0x309000 as well as the override fragments, and the kernel logs print:

test@localhost:~$ dmesg  | grep pci
[    0.398582] node /plugin-manager/fragment-500-pcie-config match with board >=3310-1000-5000-1001-D020-0001-D020-0000-D02
[    0.399342] node /plugin-manager/fragment-500-e3325-pcie match with board >=3310-1000-5000-1001-D020-0001-D020-0000-D02
[    0.484807] iommu: Adding device 10003000.pcie-controller to group 50
[    0.484822] arm-smmu: forcing sodev map for 10003000.pcie-controller
[    0.947247] tegra-pcie 10003000.pcie-controller: 2x1, 1x1, 1x1 configuration
[    0.948229] tegra-pcie 10003000.pcie-controller: PCIE: Enable power rails
[    0.948581] tegra-pcie 10003000.pcie-controller: probing port 0, using 2 lanes
[    0.951095] tegra-pcie 10003000.pcie-controller: probing port 2, using 1 lanes
[    1.048141] ehci-pci: EHCI PCI platform driver
[    1.048176] ohci-pci: OHCI PCI platform driver
[    1.380636] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[    1.788411] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[    2.197663] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[    2.199786] tegra-pcie 10003000.pcie-controller: link 0 down, ignoring
[    2.603393] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    3.021663] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    3.429688] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    3.431717] tegra-pcie 10003000.pcie-controller: link 2 down, ignoring
[    3.635139] tegra-pcie 10003000.pcie-controller: PCIE: no end points detected
[    3.635418] tegra-pcie 10003000.pcie-controller: PCIE: Disable power rails
test@localhost:~$ dmesg | grep xusb
[    0.399032] node /plugin-manager/fragment-500-xusb-config match with board >=3310-1000-5000-1001-D020-0001-D020-0000-D02
[    0.938221] tegra-xusb-padctl 3520000.xusb_padctl: VBUS over-current detection enabled
[    1.053180] tegra-xusb 3530000.xhci: USB2 port 0 has OTG_CAP
[    1.054823] tegra-xusb 3530000.xhci: extcon 0: ffffffc1eac56800 id
[    1.057175] tegra-xusb 3530000.xhci: Firmware timestamp: 2020-07-06 13:39:28 UTC, Version: 55.18 release
[    1.081965] tegra-xusb 3530000.xhci: xHCI Host Controller
[    1.081980] tegra-xusb 3530000.xhci: new USB bus registered, assigned bus number 1
[    1.082685] tegra-xusb 3530000.xhci: hcc params 0x0184fd25 hci version 0x100 quirks 0x00050810
[    1.082713] tegra-xusb 3530000.xhci: irq 71, io mem 0x03530000
[    1.083533] tegra-xusb 3530000.xhci: xHCI Host Controller
[    1.083540] tegra-xusb 3530000.xhci: new USB bus registered, assigned bus number 2
[    1.084505] tegra-xusb 3530000.xhci: Upgrade port 0 to USB3.0
[    1.084510] tegra-xusb 3530000.xhci: Upgrade port 1 to USB3.0
[    1.417636] usb 1-3: new full-speed USB device number 2 using tegra-xusb

But the the WiFi adapter is still not present on the pci bus:

test@localhost:~$ lspci 
test@localhost:~$ 
test@localhost:~$ ls /sys/class/pci_bus/
test@localhost:~$ 

The usb bluetooth chip on the AW-CB375NF mounted on M.2 J18 port was and still is detected, but the pci wifi one not:

test@localhost:~$ lsusb 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 13d3:3549 IMC Networks  <---
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

What other device-tree changes are needed apart from the ones I listed above?

Thank you

@WayneWWW I’ve also switched pci@2,0 status from disabled to okay but the WiFi device is still not detected:

test@localhost:~$ dmesg  | grep pci 
[    0.399209] node /plugin-manager/fragment-500-pcie-config match with board >=3310-1000-5000-1001-D020-0001-D020-0000-D02
[    0.399982] node /plugin-manager/fragment-500-e3325-pcie match with board >=3310-1000-5000-1001-D020-0001-D020-0000-D02
[    0.484960] iommu: Adding device 10003000.pcie-controller to group 50
[    0.484975] arm-smmu: forcing sodev map for 10003000.pcie-controller
[    1.045132] tegra-pcie 10003000.pcie-controller: 2x1, 1x1, 1x1 configuration
[    1.046095] tegra-pcie 10003000.pcie-controller: PCIE: Enable power rails
[    1.046435] tegra-pcie 10003000.pcie-controller: probing port 0, using 2 lanes
[    1.048850] tegra-pcie 10003000.pcie-controller: probing port 1, using 1 lanes
[    1.051049] tegra-pcie 10003000.pcie-controller: probing port 2, using 1 lanes
[    1.147987] ehci-pci: EHCI PCI platform driver
[    1.148022] ohci-pci: OHCI PCI platform driver
[    1.477491] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[    1.881067] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[    2.299521] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[    2.301497] tegra-pcie 10003000.pcie-controller: link 0 down, ignoring
[    2.703482] tegra-pcie 10003000.pcie-controller: link 1 down, retrying
[    3.116905] tegra-pcie 10003000.pcie-controller: link 1 down, retrying
[    3.521088] tegra-pcie 10003000.pcie-controller: link 1 down, retrying
[    3.523127] tegra-pcie 10003000.pcie-controller: link 1 down, ignoring
[    3.903803] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    4.275506] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    4.689479] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    4.691525] tegra-pcie 10003000.pcie-controller: link 2 down, ignoring
[    5.001877] tegra-pcie 10003000.pcie-controller: PCIE: no end points detected
[    5.002187] tegra-pcie 10003000.pcie-controller: PCIE: Disable power rails
test@localhost:~$ lspci

Hi,

Sorry that I just had time to read what you are doing carefully.

Why are you using configuration #6 when you said you are using devkit?

I’ve used configuration option 6 with ODMDATA 0x309000 during flashing of the TX2 Devkit with NVidia Ubuntu 32.7.1 and I don’t see the device with lspci:

This does not make sense. If you just want to disable the M.2 key E slot on TX2 devkit, then just use config #1 ODMDATA. And read the document I posted.

What you are doing (using config #6) is wrong. Devkit only supports config 1 and 2.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.