4 заметки с тегом

wifi

WiFi и Macbook

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

Распределение вайфайных сетей у нас дома

Первое время сеть работала действительно получше или я себя в этом убедил — всё-таки свежекупленный роутер под завязку набит разнообразными маркетинговыми аббревиатурами, процессорами и сопроцессорами. К сожалению, при настройке встал на старые грабли — совсем забыл для чего у меня сети в диапазонах 2,4 и 5 ГГц названы по-разному. Сделал одно имя на обе сети.

У МакОСи есть неприятный недостаток — при подключении к вайфаю, она смотрит текущую страну через устаревший протокол 802.11d и, в зависимости от того какую страну она увидит на первом попавшемся роутере (возможно соседском), принимается решение какие каналы вайфая должны ловится, а какие нет.

Мои соседи светят в эфир кодами России, Великобритании, Китая и Германии. В этой «русской рулетке» то везло, то нет, и видимо чаще попадались «неудачные» коды, потому что ноутбуки цеплялись к перегруженной сети 2,4, вместо почти пустой пятигигагерцовой, которую они временами вообще не видели.

На эту тему много и подробно написано в интернете, поэтому я рисую проблему лишь общими мазками.

Чаще всего предлагаются три решения разной степени выполнимости — либо выставить на своём роутере нужный код страны, повесить его на канал №1 и молиться, чтобы он находился первым, либо договориться с соседями и дружно установить всем один и тот же требуемый код, либо пропатчить операционную систему (последнее надо делать регулярно при каждом обновлении).

Почему-то никто не предлагает более простое решение, которое хорошо зарекомендовало себя у нас в офисе и работало у меня дома (пока я всё не сломал с покупкой нового роутера), — дать сетям 2,4 и 5 ГГц разные имена.

Это решение чудесным образом лечит все проблемы, нужно только установить в «системных настройках», в списке предпочтительных сетей пятигигагерцовую сетку первой или вообще не подключаться к сети 2,4 ГГц.

 1 комментарий    500   5 мес   mac   macos   wifi

Подпилил переподсоединялку вайфая

Чуть поменял «переподсоединялку вайфая» для Мака — теперь пингуется не 8.8.8.8 (это ДНС Гугла), а адрес гейта, что более надёжно. Правда с конца октября, когда я её написал много воды утекло — вайфай у меня отваливается теперь очень редко, уж не знаю что изменилось.

Переподсоединялка вайфая

Переподсоединение (25.92КиБ)

Вышло очередное обноление «Эль Капитана» на «Маке», а проблема с вайфаем на «Макбуках Про» так никуда и не делась. Я планирую в какие-нибудь выходные переставить систему с нуля, но когда это будет, неясно — пока я не могу себе позволить оторваться от ноута так надолго, для меня он важный рабочий инструмент.

В общем, сделал себе на «Баше» утилиту переподключающую вайфай при пропадании пингов до 8.8.8.8 (это ДНС «Гугла»). Сегодня уже целый день её использую, так гораздо комфортнее.

Занятость каналов WiFi

Утилита, чтобы посмотреть занятость каналов (11.09КиБ)

Что делать перед днём программиста как не программировать? Я настраивал точку доступа дома и пытался выбрать более свободный канал. Быстро найти подходящую утилиту под Mac OS X я не смог, поэтому начал её писать на bash. До конца не дописал (хотел ещё обозначить сколько устройств на одном канале висит), то что есть выкладываю — не пропадать же добру!

#!/bin/bash
declare -a dots

TEMP=$(mktemp -t `basename "$0"`)
trap "/bin/rm -f $TEMP" EXIT

if [ -z $1 ]; then
    /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s > $TEMP
else
    /bin/cp "$1" $TEMP
fi

# Если название точки содержит пробел, у нас всё поедет, надо избавиться от названия
# для этого мы меряем с каким отступом идёт первая строка (6 — это длина слова SSID, плюс пробелы)
cutname=`awk 'NR==1 {l=length; gsub(/^ +/, ""); print l-length+6}' $TEMP`

# Название будет отрезано командой cut
while read line; do
    line=($line)

    chs=(${line[2]//,+/ })

    # Берём только каналы 2,4ГГц
    if [ ${chs[0]} -gt 13 ]; then
        continue
    fi

    # Округляем уровень сигнала
    let lvl="(100 + ${line[1]} + 9) / 10"
    # Уровень прозрачности верхней линии
    let alpha="$lvl*10 - (100 + ${line[1]})"

    # Номера каналов
    let start="${chs[0]}-2+1"
    let end="${chs[0]}+2+${chs[1]:-0}*5+1"

    # Набор точек для рисования прямоугольника wifi-точки
    for x in $(seq $start $end); do

        # Прямоугольник закрашивается сплошным…
        for y in $(seq 0 $(($lvl - 1)) ); do 
            dots[$x+$y*100]=10
        done

        # Кроме верхней границы, она закрашивается значением
        # наибольшей насыщенности
        let xy="$x+($y+1)*100"

        if  [[ -z ${dots[$xy]} || ${dots[$xy]} -lt $alpha ]]; then
            dots[$xy]=$alpha
        fi
    done
# отрезаем заголовок, отрезаем название точки, сортируем по уровню сигнала
done < <(tail -n +2 $TEMP | cut -b${cutname}- | sort -rgk2)

# Блоки по насыщенности границы
blocks=(_ ░ ░ ░ ▒ ▒ ▒ ▒ ▒ ▒ █)

# Цвета вертикальной оси
colors=(32 32 32 32 32 33 33 31 31 31 31)

# Счётчик вертикальной оси
lvl=0

declare -i alpha

# Отрисовка шкалы и данных точек
for y in {10..0}; do
    printf "\033[${colors[-$lvl/10]}m% 4d " $lvl
    let lvl="$lvl - 10"

    for x in {0..15}; do
        alpha=${dots[$x+100*$y]}

        if [ $alpha -le 0 ]; then
            echo -n '   '
        else
            b=${blocks[$alpha]}

            echo -ne "\033[37m$b$b$b"
        fi
    done

    echo
done

# Горизонтальная ось
echo -e "\033[30m     -- -- 01 02 03 04 05 06 07 08 09 10 11 12 13"

echo -e "\033[0m"