powersave wifi script

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
Toni
Linux 3.x
Linux 3.x
Messaggi: 999
Iscritto il: lun 30 gen 2006, 22:08
Slackware: slackware-14
Kernel: 3.10.5
Desktop: i3
Località: milano

powersave wifi script

Messaggio da Toni »

ciao , ho trovato questo script nel tarball dei sorgenti della mia scheda wifi

Codice: Seleziona tutto

#! /bin/sh
# Power saving for rtl8192 using the Realtek rtl drivers.
# This script relies upon the name of the driver.
#
CONTROL_RTL_POWER=1
VERBOSE="[ 1 = 1 ]"
OUTPUT="/dev/stdout"

R8192_DRIVERNAME="$1" 
$VERBOSE && echo "========>$R8192_DRIVERNAME" > $OUTPUT

if [ x$CONTROL_RTL_POWER = x1 ] ; then
	# Provide defaults for config file settings
	[ "$RTL8192_AC_POWER" ]   || RTL8192_AC_POWER=0
	[ "$RTL8192_BATT_POWER" ] || RTL8192_BATT_POWER=6

        case $R8192_DRIVERNAME in
            "rtl819xE") R8192_DRVMODNAME=r8192e_pci 
            $VERBOSE && echo "$R8192_DRVMODNAME" >> $OUTPUT
            ;;
            "rtl819xSE") R8192_DRVMODNAME=r8192se_pci
            $VERBOSE && echo "$R8192_DRVMODNAME" >> $OUTPUT
            ;;
            "rtl8192CE") R8192_DRVMODNAME=r8192ce_pci
            $VERBOSE && echo "$R8192_DRVMODNAME" >> $OUTPUT
            ;;
            "rtl819xP") R8192_DRVMODNAME=r8190_pci 
            $VERBOSE && echo "$R8192_DRVMODNAME" >> $OUTPUT
            ;;
            *) $VERBOSE && echo "$R8192_DRVMODNAME NOT support" >> $OUTPUT
            exit 0
            ;;
        esac

	# find executables
	if [ -x /sbin/iwpriv ] ; then
		IWPRIV=/sbin/iwpriv
	elif [ -x /usr/sbin/iwpriv ] ; then
		IWPRIV=/usr/sbin/iwpriv
	else
		$VERBOSE && echo "iwpriv is not installed" >> $OUTPUT
	fi
	if [ -x /sbin/iwconfig ] ; then
		IWCONFIG=/sbin/iwconfig
	elif [ -x /usr/sbin/iwconfig ] ; then
		IWCONFIG=/usr/sbin/iwconfig
	else
		$VERBOSE && echo "iwconfig is not installed" >> $OUTPUT
	fi

	SET_R8192_AC_PARMS="set_power $RTL8192_AC_POWER"
	SET_R8192_BAT_PARMS="set_power $RTL8192_BATT_POWER"

	#
	# Find all the wireless devices using the supplied driver names.
	# Place the interface names on the list WIFI_IFNAMES.
	#
	findWifiIfsByDriver() {
		local DEVICE;
		local LINK_TARGET;
		WIFI_IFNAMES=""

		for DEVICE in /sys/class/net/*; do
			if [ -d $DEVICE/wireless -a -h $DEVICE/device/driver ]; then
				# See if the driver for $DEVICE matches the supplied one by checking the link to
				# the driver.
				LINK_TARGET=`readlink $DEVICE/device/driver`
				LINK_TARGET=${LINK_TARGET##*/}

				if [ "$LINK_TARGET" = "$1" ]; then

					# add the interface name to the list
		    			WIFI_IFNAMES="$WIFI_IFNAMES ${DEVICE##*/}"
				fi
			fi
		done
		$VERBOSE && echo $WIFI_IFNAMES
	}


	#
	# Set all the adaptors using the supplied driver into the supplied
	# power saving mode
	#
	# $1 - driver name
	# $2 - power command
	# $3 - power command arguments
	#
	setWifiPwrSave () {
		local DEVICE;
		findWifiIfsByDriver $1;
		for DEVICE in $WIFI_IFNAMES; do
			$VERBOSE && echo "Wireless power saving: $2 $DEVICE $3" >> $OUTPUT
			$2 $DEVICE $3
		done
	}

	rtl8192_AcPwrSave () {
		setWifiPwrSave "$R8192_DRIVERNAME" "$IWPRIV" "$SET_R8192_AC_PARMS"
	}

	rtl8192_BatPwrSave () {
		setWifiPwrSave "$R8192_DRIVERNAME" "$IWPRIV" "$SET_R8192_BAT_PARMS"
	}
	grep -q off-line /proc/acpi/ac_adapter/*/state
        if [ $? = 0 ]
        then
            [ -d /sys/module/$R8192_DRVMODNAME ] && rtl8192_BatPwrSave
	else
            [ -d /sys/module/$R8192_DRVMODNAME ] && rtl8192_AcPwrSave
	fi
	
else
	$VERBOSE && echo "Realtek rtl Wireless power setting is disabled." >> $OUTPUT
fi

Qualcuno mi da un suggerimento su come utilizzarlo , in modo che il power saving entri in funzione soltanto quando il laptop usa la batteria?
a proposito utilizzo xfce , magari suddetto script si puo piazzare da qualche parte :-k

ciao e grazie

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6566
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: powersave wifi script

Messaggio da targzeta »

Dovresti provare con acpid. Cerca sul forum, normalmente quando il PC passa alla batteria il kernel (il modulo acpi) manda un evento che viene rilevato dal demone in questione. Quindi puoi configurare il demone per dirgli di eseguire il tuo script. Non è difficile, fai una ricerca.

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà 

Rispondi