La idea es aprovechar los drivers wifi mas nuevos que haya en linux, para intentar que chips no reconocidos funcionen , o que los que funcionen mal, intenten mejorar.
despues de crear el xzm , hay que reiniciar para que funcione.
backports_updater
#!/bin/sh
# Script by www.seguridadwireless.net
SCRIPT_VERSION=20160214
############################################################
## Funciones comunes. Su nombre empieza por f_ ##
############################################################
f_variables(){
. /opt/wifislax-updaters/Funciones/funciones_updater
}
############################################################
## Funciones propias del script. Su nombre empieza por F_ ##
############################################################
# Definicion de variables
F_variables() {
PRGNAM=backports
echo -ne "\033]2;${PRGNAM}_updater\007"
WEB=https://www.kernel.org/pub/linux/kernel/projects/backports/stable/
VERSION=`curl -s $WEB|grep v[0-9]|tail -1|cut -d v -f2|cut -d / -f-1`
RAMA=`curl -s ${WEB}v$VERSION/|grep .xz|head -1|sed 's/backports-//g'|cut -d '"' -f2|cut -d t -f-1|sed 's/.$//g'`
SRCNAM=$PRGNAM-$RAMA
EXTENSION=tar.xz
SOURCES=$PRGNAM-$RAMA.$EXTENSION
DOWNLOAD=${WEB}v$VERSION/$SOURCES
}
# Descomprimimos el fichero descargado y compilamos
F_compilar(){
echo
echo "$VERDE"Configurando ..."$CIERRE"
sleep 1
make defconfig-wifi || exit 1
###################################
### Generamos parche wireless ####
###################################
cat > Negative-channel-multi.patch << "EOF"
--- a/net/wireless/chan.c 2013-08-29 18:47:51.000000000 +0200
+++ b/net/wireless/chan.c 2013-08-31 22:20:45.014734447 +0200
@@ -441,4 +441,2 @@
return -EOPNOTSUPP;
- if (!cfg80211_has_monitors_only(rdev))
- return -EBUSY;
--- a/net/mac80211/cfg.c Tue May 28 16:57:23 2013 -0400
+++ b/net/mac80211/cfg.c Tue May 28 17:16:15 2013 -0400
@@ -801,3 +801,4 @@
}
- } else if (local->open_count == local->monitors) {
+ // Patch: Always allow channel change, even if a normal virtual interface is present
+ } else /*if (local->open_count == local->monitors)*/ {
local->_oper_channel = chandef->chan;
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -3588,9 +3589,9 @@ static int ieee80211_cfg_get_channel
if (chanctx_conf) {
*chandef = chanctx_conf->def;
ret = 0;
- } else if (local->open_count > 0 &&
+ } else /*if (local->open_count > 0 &&
local->open_count == local->monitors &&
- sdata->vif.type == NL80211_IFTYPE_MONITOR) {
+ sdata->vif.type == NL80211_IFTYPE_MONITOR)*/ {
if (local->use_chanctx)
*chandef = local->monitor_chandef;
else
EOF
# Aplicamos parche si hay error se parara el proceso ( exit 1 )
echo ""
echo ""$VERDE"Aplicando parche wireless para channel -1 "$BLANCO"..."$CIERRE""
sleep 3
patch -f -p1 < Negative-channel-multi.patch || exit 1
echo
echo "$VERDE"Compilando ..."$CIERRE"
sleep 1
make || exit 1
make modules_install INSTALL_MOD_PATH=$PKG ||exit 1
rm -rf $PKG/lib/modules/$(uname -r)/*.*
}
###################################
## BLOQUE PRINCIPAL DE EJECUCION ##
###################################
# Si se cierra el script inesperadamente, ejecutar la funcion de limpieza
trap f_exitmode SIGHUP SIGINT
#Inicializamos las variables globales
f_variables
#Comprobamos conexion a Internet
f_comprobarConexion
#Inicializamos las variables del script
F_variables
#Creamos directorio de trabajo
f_directorioTemporal
#Mostramos el mensaje de presentacion
f_presentacion
#Comprobamos updates del script
f_comprobarUpdates
#Asignamos o detectamos arquitectura
f_arquitectura
#Comprobamos version instalada del paquete
f_versionInstalada
#Si no existe el fichero se descargara
f_download
#Preparamos entorno
f_preparar
#Descomprimir fichero descargado y compilamos
F_compilar
#Hacemos strip sobre el paquete
f_strip
#Creamos xzm , instalamos y salimos
f_tareasFinales