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