Habilite el modo de monitoreo para RTL8188CUS a través de USB en Raspbian

15

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.

Matt M
fuente
Esto, señor, fue extremadamente útil. Seguí los pasos casi exactamente, y funcionó a las mil maravillas.
Alex Nichol
Con el debido respeto y puntos de bonificación por perseverancia, en mi humilde opinión, esto también es bastante engorroso. Vea aquí , puede obtener un dongle wifi con un conjunto de chips que admite el modo de monitor de fábrica, por menos de 5 USD, incluido el envío.
RolfBly

Respuestas:

8

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

$ iw dev

PASO 7: Determine si la interfaz física admite el modo de monitoreo

$ 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 ...

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.

$ sudo iw phy phy0 interface add mon0 type monitor

PASO 8: Comience a monitorear

En mi caso, estoy usando tshark para facilitar el monitoreo, mostrando algunos campos útiles en lugar de mucho ruido.

$ 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

Hecho.

Matt M
fuente
Su enlace está roto, le faltan los últimos caracteres: sandilands.info/sgordon/capturing-wifi-in-monitor-mode-with-iw (Traté de editar su publicación, pero aparentemente las ediciones deben tener al menos 6 caracteres. ..)
Ted Mielczarek
No entiendo qué hacer en el Paso 2 // necesito ayuda.
Ray Kodiak
Dentro del repositorio de git que clonó en el paso 1 (directorio 'linux') ... Edite el archivo 'linux / drivers / net / wireless / Kconfig', comente las 2 líneas con rtl8192cu agregando un '#' al comienzo de la línea. Edite el archivo 'linux / drivers / net / wireless / Makefile', comente la línea 1 con rtl8192cu, descomente la línea con rtlwifi.
Matt M
0

Grandes instrucciones Gracias. Un par de cosas más que necesitaba hacer ...

  1. 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

  2. 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

usuario63497
fuente