2013-11-02 3 views
3

Я использую устройство Wi-Fi для чипсета AR9271 на Debian 7 на ядре 3.12.rc5. Я использую драйверы ath9k_htc и nl80211.Получение принимаемой мощности сигнала соседних устройств

Я создаю специальную WLAN через wpa_supplicant 2.0, и я хотел бы получить мощность принимаемого сигнала соседнего устройства в программе на C.

Какую функцию или API я могу использовать для получения этой информации?

ответ

1

Редактировать: Не заметили специальную часть в первый раз .. Для ad-hoc я действительно не знаю.

Для чего это стоит, и для подключения инфраструктуры:

Если вы wpa_supplicant, вы также должны иметь wpa_cli.

Команда:

wpa_cli signal_poll 

должен дать вам экран scrapeable выход.

Вы можете (также) интерфейс с wpa_supplicant через C, используя wpa_ctrl_open() и wpa_ctrl_request():

Что-то в строке:

#include "wpa_ctrl.h" 
<needed declarations and definitions> 
ctrl = wpa_ctrl_open(path); 
wpa_ctrl_request(ctrl, "SIGNAL_POLL", 11, buf, &len, NULL); 
2

Это превосходно справляется с libpcap, контролируя беспроводной LAN для сырых пакетов, включая заголовок 802.11, который содержит RSSI, а также MAC-адрес источника. См. this question для нескольких советов и подсказок относительно декодирования базовой структуры пакета.

Проще всего это прослушивать пакеты с соседних устройств, чтобы вы могли читать их RSSI. Сырое трафик от устройства беспроводной ЛВС имеет тенденцию быть безумно шумно - вам придется фильтровать только для устройств, которые вы заинтересованы в

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

+0

Я изучаю Libpcap, могли бы вы сказать мне, если мне нужно использовать LINKTYPE_IEEE802_11 или LINKTYPE_IEEE802_11_RADIOTAP для получения информации RSSI для каждого устройства? – Angs

+0

Используйте заголовок RADIOTAP. – Petesh

Смежные вопросы