Данная консольная утилита выполняет накопление значений RSSI сигнала WiFi в текcтовый файл. Значениям RSSI будет соответствовать уровень сигнала WiFi, принимаемый Linux-устройством (на котором запущена утилита). Подразумевается, что сигнал WiFi передаётся точкой доступа к которой подключено (ассоциировано) Linux-устройство.
Утилита накапливает значения RSSI в течении интервала времени, заданного пользователем.
Скорость накопления (кол-во значений RSSI в секунду) также задаётся пользователем.
Ниже приведён пример установки для Debian Stretch.
- Устанавливаем пакеты, необходимые для сборки и работы утилиты: 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
- Скачиваем файлы данного репозитория. Можно скачать архивом с помощью браузера (кнопка Clone or download); или, если установлен git, скачиваем, выполнив команду:
git clone https://github.com/h3pr5tq/accumulation-rssi.git
- Для сборки надо перейти в папку проекта .../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 обязательных аргумента:
-i
- имя сетевого интерфейса, которое можно узнать с помощью командыsudo iw dev
.-f
- файл, куда будут сохранены накопленные значения RSSI в текстовом виде.-t
- время накопления значений RSSI в секундах; примерно соответствует времени выполнения утилиты.-s
- скорость накполения: кол-во значений RSSI в одну секунду.
По окончанию выполнения утилиты должны получить текстовый файл следующего вида:
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. Подробнее в Примечании.
Отметим следующие моменты:
-
Через используемый сетевой интерфейс (аргумент
-i
) заранее (до запуска утилиты) должно быть установлено соединение (ассоциация) с точкой доступа. Проверить наличие ассоциации с точкой доступа можно с помощьюsudo iw dev <devname> link
, где<devname>
- имя сетевого интерфейса. -
Скорость накопления (аргумент
-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 #не корректно, повтор предыдущего
...