Home

Awesome

accumulation-rssi

Данная консольная утилита выполняет накопление значений RSSI сигнала WiFi в текcтовый файл. Значениям RSSI будет соответствовать уровень сигнала WiFi, принимаемый Linux-устройством (на котором запущена утилита). Подразумевается, что сигнал WiFi передаётся точкой доступа к которой подключено (ассоциировано) Linux-устройство.

Утилита накапливает значения RSSI в течении интервала времени, заданного пользователем.
Скорость накопления (кол-во значений RSSI в секунду) также задаётся пользователем.

Установка

Ниже приведён пример установки для Debian Stretch.

  1. Устанавливаем пакеты, необходимые для сборки и работы утилиты: build-essential, libnl-3-200, libnl-genl-3-200, libnl-3-dev, libnl-genl-3-dev. Это можно сделать, например, так:
sudo apt-get update
sudo apt-get install build-essential \
                     libnl-3-200 libnl-genl-3-200 \
                     libnl-3-dev libnl-genl-3-dev
  1. Скачиваем файлы данного репозитория. Можно скачать архивом с помощью браузера (кнопка Clone or download); или, если установлен git, скачиваем, выполнив команду:
git clone https://github.com/h3pr5tq/accumulation-rssi.git
  1. Для сборки надо перейти в папку проекта .../accomulation-rssi/ (предварительно разархивировав, если скачивали с помощью браузера) и выполнить команды:
make
sudo make install

Готово!

Для удаления утилиты выполните sudo make uninstall или тоже самое, но напрямую sudo rm /usr/local/bin/accomulation-rssi.
В случае ошибок при сборке необходимо очистить промежуточные файлы. Это можно сделать с помощью команды make clean.

Использование

Пример:

accumulation-rssi  -i wlan0  -f ~/rssi.txt  -t 100  -s 10

Утилита требует 4 обязательных аргумента:

По окончанию выполнения утилиты должны получить текстовый файл следующего вида:

Colummn "number of received frames" - very useful. This column reports: the rssi value has been updated or not.
rssi == 0

rssi:   number of received frames:

-39     278916
-38     278923
-38     278923
-38     278929
-38     278930
-37     278935
-38     278937
-37     278940
-39     278943
-39     278943
-37     278951
     ...

Второй столбец "number of received frames" необходим, чтобы знать было ли обновлено (заново измерено) значение RSSI сигнала WiFi или это просто повтор пердыдущего значения RSSI. Подробнее в Примечании.

Примечание

Отметим следующие моменты:

  1. Через используемый сетевой интерфейс (аргумент -i) заранее (до запуска утилиты) должно быть установлено соединение (ассоциация) с точкой доступа. Проверить наличие ассоциации с точкой доступа можно с помощью sudo iw dev <devname> link, где <devname> - имя сетевого интерфейса.

  2. Скорость накопления (аргумент -s) необходимо выбирать, понимая следующее: значение RSSI обновляется только при получении фрейма от точки доступа; если в течении некоторого времени фреймы не принимаются, то значения RSSI, накопленные за данное время, будут одинаковые.
    Например, если за секунду Linux-устройство принимает 10 фреймов, а скорость накопления равняется 20 (аргумент -s), то каждое второе значение RSSI не будет отражать действительность, а просто будет повторять предыдущее значение RSSI (это приближённый пример).
    Таким образом не имеет смысла задавать скорость накопления больше кол-ва фреймов, принимаемых в секунду.
    По столбцу "number of received frames" можно отследить является ли считанное значение RSSI корректным (отражает уровень энергии в приёмном тракте в момент считывания) или это повтор предыдущего значения RSSI.

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

     ...
-34     392825
-34     392827
-34     392827
-34     392827
-35     392829
-35     392829
-35     392829
-34     392831
-34     392833
-34     392833
     ...

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

     ...
-34     392825    #корректно
-34     392827    #корректно
-34     392827    #не корректно, повтор предыдущего
-34     392827    #не корректно, повтор предыдущего
-35     392829    #корректно
-35     392829    #не корректно, повтор предыдущего
-35     392829    #не корректно, повтор предыдущего
-34     392831    #корректно
-34     392833    #корректно
-34     392833    #не корректно, повтор предыдущего
     ...