Включить режим мониторинга для RTL8188CUS через USB на Raspbian

15

Я пытаюсь включить режим мониторинга для USB-ключа Wi-Fi с набором микросхем RTL8188CUS на Raspberry Pi модели B + (или любой Raspberry Pi в этом отношении).

$ lsusb
Bus 001 Device 005: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
$ sudo iwconfig wlan0 mode monitor
Error for wireless request "Set Mode" (8B06) :
    SET failed on device wlan0 ; Invalid argument.

Согласно github / raspberrypi / linux / Issues / 369 , вам нужно включить модуль ядра rtlwifi / rtl8192cu, который включен в дистрибутив ядра, но не скомпилирован. Это требует незначительных изменений в некоторых файлах, как указано ниже в «ШАГ 2».

Проблема с USB, упомянутая в этой теме, была решена с 4.1.6+, поэтому драйвер rtlwifi должен работать.

Шаги воссоздать на свежем малиновом пи (модель B +) ...

ШАГ 0: Обновите существующие модули и ядро ​​до последней версии

$ sudo apt-get update
$ sudo rpi-update
$ uname -a
Linux raspberrypi 4.1.7+ #815 PREEMPT Thu Sep 17 17:59:24 BST 2015 armv6l GNU/Linux

ШАГ 1: Получить исходный текст ядра raspbian и добавить недостающие зависимости

$ git clone --depth=1 https://github.com/raspberrypi/linux
$ sudo apt-get install bc lshw

ШАГ 2. Включите драйверы rtlwifi (ядро) для RTL8188CUS (RTL8192)

edit linux/drivers/net/wireless/Kconfig
-#source "drivers/net/wireless/rtlwifi/Kconfig"
-source "drivers/net/wireless/rtl8192cu/Kconfig"
+source "drivers/net/wireless/rtlwifi/Kconfig"
+#source "drivers/net/wireless/rtl8192cu/Kconfig"

edit linux/drivers/net/wireless/Makefile
-#obj-$(CONFIG_RTLWIFI)         += rtlwifi/
+obj-$(CONFIG_RTLWIFI)          += rtlwifi/

ШАГ 3: Скомпилируйте и установите ядро ​​(это заняло много часов)

Суммировано из документации по сборке ядра .

$ cd linux
$ KERNEL=kernel
$ make bcmrpi_defconfig

$ make zImage modules dtbs
$ sudo make modules_install
$ sudo cp arch/arm/boot/dts/*.dtb /boot/
$ sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
$ sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
$ sudo scripts/mkknlimg arch/arm/boot/zImage /boot/$KERNEL.img

ШАГ 4: Перезагрузка

$ sudo reboot

ШАГ 5: Убедитесь, что загружен модуль rtlwifi / rtl8192cu

$ lsmod | fgrep rtl8192cu
rtl8192cu             100806  0 
rtl_usb                14781  1 rtl8192cu
rtl8192c_common        72091  1 rtl8192cu
rtlwifi               101122  3 rtl_usb,rtl8192c_common,rtl8192cu
mac80211              623281  3 rtl_usb,rtlwifi,rtl8192cu
$
$ lshw
  *-network:0
       description: Ethernet interface
       physical id: 1
       bus info: usb@1:1.3
       logical name: wlan0
       serial: 00:0b:81:94:e9:a3
       capabilities: ethernet physical
       configuration: broadcast=yes driver=rtl8192cu driverversion=4.1.7+ firmware=N/A link=no multicast=yes

ШАГ 6: Попробуйте активировать режим мониторинга

$ sudo iwconfig wlan0 mode monitor
Error for wireless request "Set Mode" (8B06) :
    SET failed on device wlan0 ; Operation not supported.

Что я пропустил?
Проблема 369, кажется, указывает на то, что он может работать с драйвером rtlwifi?

Мэтт М
источник
Это, сэр, было чрезвычайно полезно. Я точно следовал инструкциям, и это сработало как шарм.
Алекс Никол
При всем уважении и бонусных баллах за настойчивость, ИМХО, это тоже довольно громоздко. Смотрите здесь , вы можете получить Wi-Fi ключ с чипсетом, который поддерживает режим монитора из коробки, менее чем за 5 долларов США, включая доставку.
RolfBly

Ответы:

8

Оказывается, шаги для перекомпиляции и загрузки модуля rtlwifi верны. Проблема в том, что iwconfig не работает, чтобы включить / определить режим мониторинга в этой ситуации.

Вместо этого я использовал iw, как обрисовал в общих чертах Стивен Гордон, и это сработало.

Подвести итоги:

ШАГ 6b: список доступных физических сетевых интерфейсов

$ iw dev

ШАГ 7: Определите, поддерживает ли физический интерфейс режим мониторинга

$ iw phy phy0 info
... lots of stuff ...
Supported interface modes:
     * IBSS
     * managed
     * AP
     * AP/VLAN
     * monitor
     * mesh point
     * P2P-client
     * P2P-GO
... lots more stuff ...

ШАГ 8: Добавьте интерфейс мониторинга к этой физической карте

Вам необходимо явно добавить интерфейс мониторинга для имеющегося у вас оборудования.

$ sudo iw phy phy0 interface add mon0 type monitor

ШАГ 8: Начать мониторинг

В моем случае я использую tshark для облегчения мониторинга, отображая несколько полезных полей, а не много шума.

$ sudo apt-get install tshark
$ sudo tshark -i mon0 -f 'broadcast' -T fields -e frame.time_epoch -e wlan.sa -e radiotap.dbm_antsignal -e wlan.fc.type -e wlan.fc.subtype

Выполнено.

Мэтт М
источник
Ваша ссылка не работает, вы пропустили несколько последних символов: sandilands.info/sgordon/capturing-wifi-in-monitor-mode-with-iw (Я пытался отредактировать ваше сообщение, но, по-видимому, изменения должны содержать не менее 6 символов. ..)
Тед Мельчарек
Я не понимаю, что делать на шаге 2 // нужна помощь.
Рэй Кадьяк
В репозитории git, который вы клонировали на шаге 1 (каталог 'linux') ... Отредактируйте файл 'linux / drivers / net / wireless / Kconfig', закомментируйте 2 строки с rtl8192cu, добавив '#' к начало строки. Отредактируйте файл 'linux / drivers / net / wireless / Makefile', закомментируйте 1 строку с помощью rtl8192cu, раскомментируйте строку с помощью rtlwifi.
Мэтт М
0

Великие инструкции. Спасибо. Еще пара вещей, которые мне нужно было сделать ...

  1. Когда я перезагрузил свой raspberry pi 3 с новым образом (4.9.13-v7 +), lsmod перечислил rtl8192cu, хотя каталог rtl8192cu находился в /lib/modules/4.9.13-v7+/kernel/drivers/net/wireless/realtek / rtlwifi / rtl8192cu Решение: мне пришлось сделать sudo modprobe rtl8192cu

  2. iwconfig jsut говорит: «Нет беспроводных расширений» даже для интерфейсов, которые активно подключены к точке доступа. Я использую IW вместо. См. Инструкции в http://linuxwireless.org/en/users/Documentation/iw/__v41.html.

user63497
источник