Skip to content

Linux utility for accumulation of WiFi RSSI to text file. Using nl80211, Managed mode. Useful for experiments with WiFi (example, localization)

Notifications You must be signed in to change notification settings

h3pr5tq/accumulation-rssi

Repository files navigation

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 обязательных аргумента:

  • -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. Подробнее в Примечании.

Примечание

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

  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    #не корректно, повтор предыдущего
     ...

About

Linux utility for accumulation of WiFi RSSI to text file. Using nl80211, Managed mode. Useful for experiments with WiFi (example, localization)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published