Вывод `nmcli device wifi list` часто почти пустой в Ubuntu 18.04

Когда я перешел с Ubuntu 14.04 на Ubuntu 18.04, я заметил что часто в выводе nmcli d wifi вместо списка видимых точек доступа указывается только точка доступа, к которой подключен компьютер.

Пример этого выглядит так:

me@computer:~$ sudo nmcli device wifi list
IN-USE  SSID  MODE   CHAN  RATE        SIGNAL  BARS  SECURITY 
*       XYZ   Infra  161   540 Mbit/s  67      ▂▄▆_  WPA2 

Это можно «исправить», запустив вручную sudo iw wlan0 scan , а затем повторно запустив вышеуказанное и увидев ближайшие точки доступа, как ожидалось.

Насколько я понимаю, периодически система выполняет сканирование автоматически (каждые 300 секунд, если я правильно помню из прошлых исследований). Похоже, что тем временем Ubuntu / NetworkManager решает отказаться от того, что ему известно из последнего сканирования.

Это известное изменение, и / или функция, или ошибка? Можно ли это изменить? Изучая данные, я регулярно сталкиваюсь с этим вопросом , который предполагает, что частота сканирования определяется NetworkManager и жестко запрограммирована.


До сих пор я наблюдал такое поведение с Wi-Fi-картами Intel 7260, 8260 и 9260, а также с Wi-Fi-картой Atheros, поэтому я почти уверен, что это не проблема оборудования. Система, на которую я сейчас смотрю, имеет network-manager 1.10.6

Чтобы продемонстрировать, происходит ли эта очевидная очистка кеша в данной системе, один из подходов состоит в том, чтобы контролировать вывод этой команды: while [1]; сделать список Wi-Fi устройств nmcli | wc -l; сон 15; сделано . Когда возникает описанный выше симптом, на выходе будет «2».Если вы выполните новое сканирование во время выполнения команды, то есть iw wlan0 scan , в выходных данных будет отражено, что NetworkManage теперь знает о других точках доступа.

На двух машинах, на которых я тестировал вышеупомянутое, я постоянно вижу 17x 15-секундные интервалы перед очисткой кеша, так что время жизни кеша составляет ~ 255-280 секунд. Следует отметить, что это не соответствует 120 секундам в по ссылке сверху (которая, как я подтвердил, остается неизменной в текущем репозитории github).

0
задан 4 December 2019 в 19:08

1 ответ

Обновление/Примечание. Я не копался в истории коммитов, но похоже, что интервал сканирования изменился в версии NetworkManager 20.04 на что-то более разумное, на порядок каждые 4 минуты (возможно, я неправильно запомнил это число).


Так что это побочный эффект преднамеренного изменения, внесенного в NetworkManager.

Ранее NetworkManager выполнял периодическое сканирование независимо от качества Wi-Fi-соединения. Это вызывало проблемы в распространенных случаях использования, таких как видеоконференции.

На момент написания этой статьи логика была изменена таким образом, что время между сканированиями (на обычных настройках WPA2) составляет один раз в день, пока уровень сигнала хороший, в в этом случае> 70/100 (казалось бы, произвольные единицы, используемые NM). Если уровень сигнала ниже этого порога, сканирование будет происходить каждые 30 с, пока не будет установлено лучшее соединение. Это жестко запрограммированная настройка диспетчера сети для порогового значения роуминга bgscan, принадлежащего базовому wpa_supplicant. (Примерная ссылка на текущую версию этого кода)

Я не копал дальше, но, очевидно, список wifi устройств nmcli загружает кэшированную информацию о доступных сетях Wi-Fi. Мне кажется разумным (теперь, когда я больше понимаю, что происходит), что этот кеш отбрасывается, когда он достигает некоторого порога устаревания, и, следовательно, в списке нет других точек доступа/сетей.


Таким образом, этот вопрос возник в результате наблюдения за симптомом этого изменения на машине в статической среде. И для подавляющего большинства реальных случаев использования это безвредно. Если бы я переместился в район, который лучше обслуживается другой точкой доступа, мой ноутбук, вероятно, бродил бы незаметно для меня.

А как насчет машины, которая постоянно перемещается и нуждается в быстром переходе от точки доступа к точке доступа? Это может сработать, но это зависит. В конечном счете, это не предназначено для использования здесь, и вышеприведенная логика жестко запрограммирована и не поддается настройке.

3
ответ дан 18 March 2020 в 04:18

Другие вопросы по тегам:

Похожие вопросы: