Как я могу контролировать переключение между беспроводными точками доступа в Linux?

3617
Andrew Ferrier

Поскольку стены моего дома толстые и сильно ослабляют беспроводные сигналы, у меня есть две точки доступа в разных частях моего дома, настроенные на один и тот же SSID с одинаковыми настройками . Оба работают хорошо в целом. Однако, аналогично тому, что наблюдал этот пользователь, я обнаружил, что перемещение моего ноутбука из одной комнаты в другую не заставляет его достаточно быстро переключать точки доступа; либо его повторное сканирование слишком редкое, либо слишком низкий порог качества сигнала, либо и то, и другое. Это приводит к раздражающе длительному периоду, когда сеть не будет отвечать.

Можно ли вообще контролировать это в Linux? (это то, что работает на моем ноутбуке - точнее, у меня есть CrunchBang, вариант Debian, если это имеет значение). Я хотел бы иметь возможность изменить пороговое значение сигнала и / или период повторного сканирования, если это возможно, чтобы сделать его более агрессивным при переключении.

3
Как я всегда советую, когда я вижу сообщение о кризисе, спросите также в #crunchbang на irc.freenode.net. xchat устанавливается вместе с crunchbang, и #crunchbang автоматически подключается при запуске. Rob 11 лет назад 1
Благодарю. Я немного сомневаюсь, что это специфично для CrunchBang, поэтому я решил сначала спросить более широкую аудиторию. Но спасибо за совет. Andrew Ferrier 11 лет назад 0
Я обычно ищу здесь и спрашиваю в чане. В зависимости от того, кто в канале, вы получите ответ довольно быстро. Я знаю это #! по умолчанию использует gnome-network-manager, вам может повезти с другим сетевым менеджером. Rob 11 лет назад 0

3 ответа на вопрос

4
koniu

Сетевому менеджеру требуется время, чтобы решить, что соединение не возвращается, и только после этого он попытается восстановить соединение. Я нахожу wicdболее «отзывчивым», чем NetworkManager- я бы подумал переключиться на это.

Вы также можете запустить фоновый скрипт, который опрашивает уровень сигнала и вызывает отключение, если сигнал выходит за пределы определенного уровня. После отключения ваш сетевой менеджер будет обычно подключаться к сети с более сильным сигналом.

Пример использования скрипта iw(1)из пакета iw :

#!/bin/bash IFACE="wlan0" LIMIT="-75" while true; do signal=$(iw $IFACE link | grep signal | awk '') [ $signal ] && [ $signal -lt $LIMIT ] && iw $IFACE disconnect echo $signal sleep 1 done 
`iw dev wlan0 disconnect` делает свое дело, спасибо. MLu 8 лет назад 0
0
systemBuilder

Точки доступа хранят информацию о состоянии вашего устройства - вы не можете просто магически перемещаться от одного к другому, сопоставляя параметры. Крупные компании, такие как Аруба, решают эту проблему, размещая «маршрутизатор доступа» в одном месте здания, а затем каждая «точка доступа» - это просто антенна и линейная карта в маршрутизаторе доступа. Домашние точки доступа не имеют этой магии.

Если точки доступа не общаются друг с другом по какому-то магическому протоколу, я бы предположил, что вы создаете огромные проблемы для своих точек доступа, потому что появляется какой-то неизвестный MACID и у него есть пароль WEP / WPA, но он не связан с ним, и поэтому у них нет разрешить назначение IP-адресов, и поэтому им не разрешается отправлять пакеты, и это, вероятно, запутывает wpa_supplicant на вашей рабочей станции, в дополнение к точке доступа.

Благодарю. Ваш ответ, кажется, не согласен с этим хорошо проголосовавшим ответом здесь: http://superuser.com/a/122508/3021. Есть ли у вас какие-либо ссылки, чтобы упомянуть здесь? Andrew Ferrier 8 лет назад 3
-1
Bruno

попробуйте так:

#!/bin/bash IFACE="wlp3s0" LIMIT="-65" ID1="wireless network name" ID2="wireless network name"  ssid=$(iw $IFACE link | grep SSID | awk '') signal=$(iw $IFACE link | grep signal | awk '')  if [ $signal -lt $LIMIT ] then case $ssid in $ID1) nmcli con up $ID2 ;; $ID2) nmcli con up $ID1 ;; esac && ssid=$(iw $IFACE link | grep SSID | awk '') && echo you are now connected to $ssid else echo "no changes needed"  fi sleep 1 
Добро пожаловать в Супер пользователя! Можете ли вы объяснить свой код, [** отредактировав свой ответ **] (https://superuser.com/posts/1318886/edit) - чтобы помочь тем, кто может не понимать всего этого? Спасибо :) bertieb 6 лет назад 1

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