Roaming problems on NVIDIA Jetson TX2

Manuel Wagesreither ManWag at FastMail.FM
Tue Jun 15 05:14:14 PDT 2021


Hello all,

I'm working on a project which is using wpa_supplicant 2.9 with NetworkManager 1.22.10 on a NVIDIA Jetson TX2 system-on-module using a CYW4354=BCM4354. The GNU/Linux distribution is a custom one created with Yocto; the kernel used is 4.9.140-l4t-r32.4+g3924d6fccfbf provided by NVIDIA.

I observed the following behaviour:
1. The error message `Failed to enable signal strength monitoring` shows up in our logs.
2. When roaming to a access point with a similar SSID, roaming works. (WebRTC video stream stutters but doesn't break.)
3. When roaming to an access point with a different SSID, the "Dongle Host Driver" (which is a kernel module I guess?) restarts.

I would kindly ask if you have advice, hints or other information which could help me to track down these issues. Please note that I'm no a WiFi specialist by any means. I assume you came across many issues, so perhaps something rings a bell for you.


The following section is with respect to bullet point 1.:

I set the `-d` option for wpa_supplicant and got the following log output:
```
wlan0: CTRL-EVENT-CONNECTED - Connection to 86:5a:1c:02:2c:b3 completed [id=0 id_str=]
nl80211: Set wlan0 operstate 0->1 (UP)
netlink: Operstate: ifindex=7 linkmode=-1 (no change), operstate=6 (IF_OPER_UP)
bgscan simple: Signal strength threshold -70  Short bgscan interval 30  Long bgscan interval 86400
nl80211: Signal monitor threshold=-70 hysteresis=4
bgscan simple: Failed to enable signal strength monitoring
bgscan simple: Init scan interval: 86400
bgscan: Initialized module 'simple' with parameters '30:-70:86400'
nl80211: Received scan results (32 BSSes)
nl80211: Scan results indicate BSS status with 86:5a:1c:02:2c:b3 as associated
wlan0: BSS: Start scan result update 2
bgscan simple: scan result notification
```

The presence of the `nl80211: Signal monitor threshold` line tells me the error is caused by either the `return -1` or the `return send_and_recv_msgs(...)` in driver_nl80211.c:
```
static int nl80211_signal_monitor(void *priv, int threshold, int hysteresis)
{
	struct i802_bss *bss = priv;
	struct wpa_driver_nl80211_data *drv = bss->drv;
	struct nl_msg *msg;
	struct nlattr *cqm;

	wpa_printf(MSG_DEBUG, "nl80211: Signal monitor threshold=%d "
		   "hysteresis=%d", threshold, hysteresis);

	if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_SET_CQM)) ||
	    !(cqm = nla_nest_start(msg, NL80211_ATTR_CQM)) ||
	    nla_put_u32(msg, NL80211_ATTR_CQM_RSSI_THOLD, threshold) ||
	    nla_put_u32(msg, NL80211_ATTR_CQM_RSSI_HYST, hysteresis)) {
		nlmsg_free(msg);
		return -1;
	}
	nla_nest_end(msg, cqm);

	return send_and_recv_msgs(drv, msg, NULL, NULL);
}
```

The following is with respect to bullet point 3.:

Dmesg output:
```
[  189.073237]  wl_is_linkdown : [  189.076170] Link down Reason : WLC_E_LINK
[  189.080236] [06-09 10:09:57.500] wl_notify_connect_status: link down if wlan0 may call cfg80211_disconnected. event : 16, reason=1 from 86:5a:1c:02:2a:fb
[  189.097327]  wl_is_linkdown : [  189.100317] Link down Reason : WLC_E_LINK
[  204.352918] wl_android_wifi_off in
[  204.357537] dhd_wlfc_deinit():3472, maintain HOST RXRERODER flag in tvl
[  204.364639] dhdsdio_isr : bus is down. we have nothing to do
[  204.370401] gpio tegra-gpio-aon wake69 for gpio=59(FF:3)
[  204.375713] Disabling wake69
[  204.378741] sdhci-tegra 3440000.sdhci: Tuning done, restoring the best tap value : 20
[  204.387658] wifi_platform_set_power = 0
[  204.606754] dhd_set_mac_addr_handler: interface info not available/down 
[  204.707936] 
[  204.707936] 
[  204.707936] Dongle Host Driver, version 1.201.82 (r)                                   <------- Kernel driver seems to restart
[  204.707936] Compiled from 
[  204.718675] wl_android_wifi_on in
[  204.722112] wifi_platform_set_power = 1
ping: sendto: Network is unreachable
root at redacted:~# [  204.936832] vdd-1v8: voltage operation not allowed
[  204.941701] sdhci-tegra 3440000.sdhci: could not set regulator OCR (-1)
[  204.969038] vdd-1v8: voltage operation not allowed
[  204.973887] sdhci-tegra 3440000.sdhci: could not set regulator OCR (-1)
[  204.997827] vdd-1v8: voltage operation not allowed
[  205.002673] sdhci-tegra 3440000.sdhci: could not set regulator OCR (-1)
[  205.011717] vdd-1v8: voltage operation not allowed
[  205.016537] sdhci-tegra 3440000.sdhci: could not set regulator OCR (-1)
[  205.124664] vdd-1v8: voltage operation not allowed
[  205.129526] sdhci-tegra 3440000.sdhci: could not set regulator OCR (-1)
[  205.137064] vdd-1v8: voltage operation not allowed
[  205.141900] sdhci-tegra 3440000.sdhci: could not set regulator OCR (-1)
[  205.150213] vdd-1v8: voltage operation not allowed
[  205.155051] sdhci-tegra 3440000.sdhci: could not set regulator OCR (-1)
[  205.161704] sdhci-tegra 3440000.sdhci: Tuning done, restoring the best tap value : 20
[  205.170149] F1 signature read @0x18000000=0x17214354
[  205.179474] F1 signature OK, socitype:0x1 chip:0x4354 rev:0x1 pkg:0x2
[  205.186659] DHD: dongle ram size is set to 786432(orig 786432) at 0x180000
[  205.263135] dhdsdio_write_vars: Download, Upload and compare of NVRAM succeeded.
[  205.315157] dhd_bus_init: enable 0x06, ready 0x06 (waited 0us)
[  205.321312] gpio tegra-gpio-aon wake69 for gpio=59(FF:3)
[  205.326674] gpio tegra-gpio-aon wake69 for gpio=59(FF:3)
[  205.331979] Enabling wake69
[  205.337489] wifi_platform_get_mac_addr
[  205.342950] Firmware up: op_mode=0x0005, MAC=00:04:4b:a7:e6:b4
[  205.352998] clm path from default:/lib/firmware/brcm/bcmdhd.clm_blob
[  205.359398] Skipping the clm download. len:0 memblk:          (null)
[  205.368020] dhd_preinit_ioctls pspretend_threshold for HostAPD failed  -23
[  205.379962] Firmware version = wl0: Nov  6 2019 21:22:23 version 7.35.349.85 (r723239 CY) FWID 01-a59d25b5
```

Thank you!
Manuel



More information about the Hostap mailing list