Estoy tratando de habilitar el modo de monitoreo para un dongle wifi USB con el chipset RTL8188CUS en una frambuesa pi modelo b + (o cualquier frambuesa pi para el caso).
$ 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.
De acuerdo con github / raspberrypi / linux / issues / 369 , debe habilitar el módulo de kernel rtlwifi / rtl8192cu que se incluye con la distribución del kernel pero no se compila. Esto requiere modificaciones menores en algunos archivos como se detalla a continuación en 'PASO 2'.
El problema de USB mencionado en ese hilo se resolvió a partir de 4.1.6+, por lo que el controlador rtlwifi debería funcionar.
Pasos para recrear en una frambuesa pi fresca (modelo B +) ...
PASO 0: Actualice los módulos y el núcleo existentes a la última versión
$ 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
PASO 1: Obtenga la fuente del núcleo raspbian y agregue las dependencias que faltan
$ git clone --depth=1 https://github.com/raspberrypi/linux
$ sudo apt-get install bc lshw
PASO 2: habilite los controladores rtlwifi (kernel) para 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/
PASO 3: compile e instale el kernel (tomó muchas horas)
Resumido de la documentación de construcción del núcleo .
$ 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
PASO 4: reiniciar
$ sudo reboot
PASO 5: Verifique que el módulo rtlwifi / rtl8192cu esté cargado
$ 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
PASO 6: Intente activar el modo de monitoreo
$ sudo iwconfig wlan0 mode monitor
Error for wireless request "Set Mode" (8B06) :
SET failed on device wlan0 ; Operation not supported.
¿Qué me perdí?
El problema 369 parece indicar que puede funcionar con el controlador rtlwifi.
Respuestas:
Resulta que los pasos para recompilar y cargar el módulo rtlwifi son correctos. El problema es que iwconfig no funciona para habilitar / determinar el modo de monitoreo en esta situación.
En cambio, usé iw como lo describe Steven Gordon y funcionó.
Para resumir:
PASO 6b: enumere las interfaces de red físicas disponibles
PASO 7: Determine si la interfaz física admite el modo de monitoreo
PASO 8: Agregue una interfaz de monitoreo a esa tarjeta física
Debe agregar explícitamente una interfaz de 'monitoreo' para el hardware que tiene.
PASO 8: Comience a monitorear
En mi caso, estoy usando tshark para facilitar el monitoreo, mostrando algunos campos útiles en lugar de mucho ruido.
Hecho.
fuente
Grandes instrucciones Gracias. Un par de cosas más que necesitaba hacer ...
Cuando reinicié mi raspberry pi 3 con la nueva imagen (4.9.13-v7 +), lsmod enumeró el rtl8192cu aunque el directorio rtl8192cu estaba en /lib/modules/4.9.13-v7+/kernel/drivers/net/wireless/realtek / rtlwifi / rtl8192cu Solución: tuve que hacer una sudo modprobe rtl8192cu
iwconfig jsut dice "No hay extensiones inalámbricas" incluso para las interfaces que están conectadas activamente a un AP. Estoy usando iw en su lugar. Consulte las instrucciones en http://linuxwireless.org/en/users/Documentation/iw/__v41.html
fuente