Intel 8265ngw causing "wifi is disabled by hardware switch"

We are looking to connect to a high band 5 GHz channel using our TX2 development board and determined that we need an external Intel 8265ngw wifi module to get this functionality.

So far we have changed ODMDATA=0x1090000 to ODMDATA=0x90000 in kernel and have got the card to show up however rfkill shows that wifi is hardware blocked.

Please let me know what we should try to get this card working. The card is known working on Jetson Nano and Jetson Xavier.

dmesg gives the following errors:

[ 5.482399] iwlwifi 0000:01:00.0: enabling device (0000 -> 0002)
[ 5.491804] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-26.ucode failed with error -2
[ 5.501144] iwlwifi 0000:01:00.0: Falling back to user helper
[ 7.359545] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-25.ucode failed with error -2
[ 7.359547] iwlwifi 0000:01:00.0: Falling back to user helper
[ 7.755576] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-24.ucode failed with error -2
[ 7.755578] iwlwifi 0000:01:00.0: Falling back to user helper
[ 7.768539] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-23.ucode failed with error -2
[ 7.768541] iwlwifi 0000:01:00.0: Falling back to user helper
[ 7.781642] iwlwifi 0000:01:00.0: loaded firmware version 22.391740.0 op_mode iwlmvm
[ 8.214225] iwlwifi 0000:01:00.0: Detected Intel® Dual Band Wireless AC 8265, REV=0x230
[ 8.216604] iwlwifi 0000:01:00.0: L1 Enabled - LTR Enabled
[ 8.217136] iwlwifi 0000:01:00.0: L1 Enabled - LTR Enabled
[ 8.272391] ieee80211 phy1: Selected rate control algorithm ‘iwl-mvm-rs’
[ 8.273103] thermal thermal_zone8: Registering thermal zone thermal_zone8 for type iwlwifi

rkill list all:
0: bluedroid_pm: Bluetooth
Soft blocked: no
Hard blocked: no
1: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
2: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
3: brcmfmac-wifi: Wireless LAN
Soft blocked: no
Hard blocked: no
4: phy1: Wireless LAN
Soft blocked: no
Hard blocked: yes
5: hci1: Bluetooth
Soft blocked: no
Hard blocked: no

Hi,

This is a known issue. We notice the driver tries to disable the hw by “wiphy_rfkill_set_hw_state”.

Is there a known solution to this?

Hi max.newberry,

Not yet. We will share the solution once there is one.

Please apply below patch to make wifi work on M.2 connector

Path $TOP/hardware/nvidia/platform/t18x/common/kernel-dts

diff --git a/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-a00-plugin-manager.dtsi b/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-a00-plugin-manager.dtsi
index 90f53bf..f69058c 100644
--- a/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-a00-plugin-manager.dtsi
+++ b/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-a00-plugin-manager.dtsi
@@ -302,6 +302,14 @@
                                        };
                                };
                        };
+                       override@3 {
+                               target = <&{/fixed-regulators}>;
+                               _overlay_ {
+                                       regulator@17 {
+                                               enable-active-high;
+                                       };
+                               };
+                       };
                };
 
                fragment-e3320-dp {

I have applied this patch and it does not work still

Hi max,

Could you share your steps of updating dtb?

Yes, as a beginner, I am using this script to help with editing the kernel: https://github.com/jetsonhacks/buildJetsonTX2Kernel

So on my TX2, I run the script ./getKernelSources.sh to download sources for the kernel. Once it is downloaded, I then navigate to $TOP/hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-plugin-manager/ and edit the file: tegra186-quill-p3310-1000-a00-plugin-manager.dtsi.

I add the patch additional override and then save the file. I am 100% confident that I added the additional override correctly and correctly formatter.

I go back to the git and run ./makeKernel.sh and then ./copyImage.sh. I then reboot.

Hi max,

This github project is not an official tool. The script only updates image.
What you are modifying is the dts file and it would be compiled to a dtb file. It is not same as kernel image.

Please follow our development guide to build new dtb.
https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fkernel_custom.html%23

Put the corresponding dtb file to Linux_for_Tegra/kernel/dtb and then re-flash your board.

Thanks for your continued help. I will report back soon.