ubuntuusers.de

WLAN Verbindung im Akkubetrieb

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

matzepupatze

Anmeldungsdatum:
12. Juli 2008

Beiträge: 6

Hallo, ich habe bei mir auf dem Notebook WICD installiert. Unter System/Einstellungen/Sitzungen habe ich unter Startprogramme /opt/wicd/tray.py eingetragen. WLAN startet somit automatisch und ich bekomme zuhause auch problemlos meine Verbindung ins Internet. Allerdings nur wenn ich mein Notebook mit dem Netzteil betreibe. Wenn ich das Notebook im Akkubetrieb starte bekomme ich keine Verbindung... ☹ Ich habe schon in der Energieverwaltung gesucht aber nichts gefunden. Wenn ich das Notebook mit dem Netzteil starte und dann nachdem er die Verbindung aufgebaut habe weiter im Akkubetrieb betreibe bleibt die Verbindung bestehen.... 😕 Bin für jede Antwort dankbar...

Ach ja, Infos zur Hardware habe ich einer anderen Frage schon geschrieben. http://forum.ubuntuusers.de/topic/probleme-mit-intel-iwl3945-wlan/#post-1510518

lena_punkt

Anmeldungsdatum:
21. Januar 2009

Beiträge: 33

Hallo,

ich weiß, daß der Post über 2 Jahre alt ist. Aber ich habe jetzt genau dasselbe Problem mit 10.10 und noch nichts dazu im Internet gefunden. Vorallem ist es mir unerklärlich. Hat jemand eine Idee, wie man das Problem angehen könnte? Das Wlan ist mit WPA2 gesichert. Laut lspci ist der Wlan-Controller ein Ralink RT2860. Das Verhalten ist so, daß ich ins Netz komme, wenn ich entweder am Netzteil hänge oder wenn der Akku komplett geladen ist. Ist dies nicht der Fall, versucht der Networkmanager irgendwie ständig, eine Verbindung ins Wlan herzustellen, was er aber nicht schafft. Nach 2 Minuten fragt er dann immer nach dem Wlan-Kennwort. Wenn ich es eingegeben habe, versucht er es wieder 2 Minuten und er fragt wieder nach dem Kennwort. Hat das Verhalten vielleicht irgendwas mit irgendwelchen Energieeinstellungen zu tun?

Grüße

s_rehm

Avatar von s_rehm

Anmeldungsdatum:
27. Oktober 2008

Beiträge: 306

Ich habe ein ähnliches Problem seit 10.10 mit einer Broadcom Karte im Dell Mini 9. Betreibe ich das Netbook mit Netzstecker, so habe ich volle Bandbreite des Wlan Adapters. Wenn ich Kabel abziehe und das Gerät mit Akku betreibe, dann sinkt die Bandbreite des Wlans drastisch!

elektronenblitz63

Avatar von elektronenblitz63

Anmeldungsdatum:
16. Januar 2007

Beiträge: 29307

Wohnort: NRW

Hallo,
da gab (gibt) es Probleme mit der Energieverwaltung. Testet mal ein

sudo iwconfig <Schnittstelle> power off

s_rehm

Avatar von s_rehm

Anmeldungsdatum:
27. Oktober 2008

Beiträge: 306

Der Tipp klang vielversprechend. Habe mir gerade die man-Page zu iwconfig durchgelesen. Leider brachte er aber keine Besserung. Ich nehme nicht an, dass ein reboot nötig ist oder?

elektronenblitz63

Avatar von elektronenblitz63

Anmeldungsdatum:
16. Januar 2007

Beiträge: 29307

Wohnort: NRW

Hallo,
die Steuerung erfolgt normalerweise über Skripte in /usr/lib/pm-utils/power.d. Das System fragt die vorhandenen Schnittstellen ab und ermittelt die möglichen Parameter. Je nach Typ/Treibermodul sind unterschiedliche Befehle für Stromsparmodi möglich.

Möglich sind (soweit mir bekannt):

iwconfig <interface> <power on> <power off>
iwpriv <interface> <get_power> <set_power>     # liest/schreibt Werte direkt in ein entsprechendes Register

Sofern iwconfig nicht funktioniert ...

Mögliche Register abfragen:

iwpriv <Schnittstelle>

Status Powermodus abfragen:

iwpriv <Schnittstelle> get_power

Power-Modus auf volle Leistung (AC/mit Netzteil):

sudo iwpriv <Schnittstelle> set_power 0
# oder
sudo iwpriv <Schnittstelle> set_power 6

Akkumodus (Battery) aktivieren

sudo iwpriv <Schnittstelle> set_power 7

Weitere Stomsparmodi können dazwischen liegen und verändern das Verhalten (Sendeleistung/Timeouts/Beacons usw.) der WLAN-Karte

sudo iwpriv <Schnittstelle> set_power (1-5)

Zustand jeweils wieder überprüfen:

iwpriv <Schnittstelle> get_power

s_rehm

Avatar von s_rehm

Anmeldungsdatum:
27. Oktober 2008

Beiträge: 306

Hi elekronenblitz63,
ich habe ein bisschen herumprobiert bin aber noch nicht zu einer Lösung gekommen. Dann habe ich etwas auf Launchpad geschaut und der Bug ist bekannt. https://bugs.launchpad.net/ubuntu/+source/linux/+bug/651008
Ich habe allerdings wenig Hoffnung, dass er in Maverick noch gefixt wird.

elektronenblitz63

Avatar von elektronenblitz63

Anmeldungsdatum:
16. Januar 2007

Beiträge: 29307

Wohnort: NRW

Was zeigt denn

iwpriv <Schnittstelle> get_power

jeweils mit und ohne Netzteil?

s_rehm

Avatar von s_rehm

Anmeldungsdatum:
27. Oktober 2008

Beiträge: 306

Ich habe das betroffene Gerät gerade nicht zur Hand und kann dir den genauen Wortlaut nicht nennen. Das Kommando funktionierte aber nicht. Irgendwas mit "no private ioctls."

elektronenblitz63

Avatar von elektronenblitz63

Anmeldungsdatum:
16. Januar 2007

Beiträge: 29307

Wohnort: NRW

Irgendwas mit "no private ioctls."

Dann unterstützt der Treiber iwpriv nicht. Entlade/lade das Treibermodul im Akkubetrieb und prüfe die Funktion. Ansonsten könnte man das Skript /usr/lib/pm-utils/power.d/wireless etwas ändern.

s_rehm

Avatar von s_rehm

Anmeldungsdatum:
27. Oktober 2008

Beiträge: 306

So, ich bin wieder an dem Gerät und bin einen Schritt weitergekommen. Das Kommando

sudo iwconfig <Schnittstelle> power off

Funktioniert doch! Allerdings muss das Gerät dazu schon mit Batterie laufen. In meinem ersten Versuch habe ich das Kommando probiert als mein Netbook noch am Netz war und habe es anschließend abgezogen.

Jetzt stellt sich nur die Frage wie ich das dauerhaft so betreiben kann. Immerhin ist es umständlich das jedes mal einzugeben.

elektronenblitz63

Avatar von elektronenblitz63

Anmeldungsdatum:
16. Januar 2007

Beiträge: 29307

Wohnort: NRW

Funktioniert doch! Allerdings muss das Gerät dazu schon mit Batterie laufen.

Natürlich, die Änderungen erfolgen dynamisch. Ist das Netzteil angeschlossen wurde das Skript ja auch noch nicht abgearbeitet und die WLAN-Karte arbeitet mit "voller Kraft".

Dann zeige bitte mal den Inhalt des Skripts unter 10.10

cat /usr/lib/pm-utils/power.d/wireless

oder mit

gedit /usr/lib/pm-utils/power.d/wireless

und den Inhalt hier einfügen (Codeblock bitte).

s_rehm

Avatar von s_rehm

Anmeldungsdatum:
27. Oktober 2008

Beiträge: 306

et voilà:

#!/bin/sh

. "${PM_FUNCTIONS}"

# See if we have the usual wireless tools.
# Do not just fail because not all cards require these.
which iwpriv >/dev/null 2>&1 && have_iwpriv="true"
which iwconfig >/dev/null 2>&1 && have_iwconfig="true"

# If only all the drivers did The Right Thing with iwconfig power.
# Too bad they do not.

get_wireless_params() {
    # $1 = interface 
    # $2 = on or off
    unset iwpriv iwconfig iwlevel
    
    # Don't do anything if we cannot find a driver for this iface.
    [ -L "/sys/class/net/$1/device/driver" ] || return 1
    # Skip if not a wireless card.
    [ -d "/sys/class/net/$1/wireless" ] || return 1
    # Also don't do anything if the device is disabled
    [ "$(cat /sys/class/net/$1/device/enable)" = "1" ] || return 1
    driver="$(readlink "/sys/class/net/$1/device/driver")"
    driver=${driver##*/}
    case $driver in
        ipw2100) iwpriv_ac="set_power 0"
            iwpriv_batt="set_power 5"
            iwconfig_ac="power on"
            iwconfig_batt="power on";;
        ipw3945)
            iwpriv_ac="set_power 6"
            iwpriv_batt="set_power 7";;
        iwl*) if [ -f "/sys/class/net/$1/device/power_level" ]; then
                 iwlevel_ac=0
                 iwlevel_batt=3
              else
                 iwconfig_ac="power off"
                 iwconfig_batt="power on"
              fi;;
        *) iwconfig_ac="power off"
           iwconfig_batt="power on";;
    esac
    case $2 in
        off) [ "$iwpriv_ac" ] && iwpriv="$iwpriv_ac"
            [ "$iwconfig_ac" ] && iwconfig="$iwconfig_ac"
            [ "$iwlevel_ac" ] && iwlevel="$iwlevel_ac";;
        on) [ "$iwpriv_batt" ] && iwpriv="$iwpriv_batt"
            [ "$iwconfig_batt" ] && iwconfig="$iwconfig_batt"
            [ "$iwlevel_batt" ] && iwlevel="$iwlevel_batt";;
    esac
    return 0
}

wireless_powersave() {
    for dev in /sys/class/net/*; do
        get_wireless_params "${dev##*/}" "$1" || continue
	ret=0
	printf "Turning powersave for %s %s..." "${dev##*/}" "$1"
	if [ "$have_iwconfig" = true -a "$iwconfig" ]; then
	    iwconfig "${dev##*/}" $iwconfig || ret=1
	fi
        if [ "$have_iwpriv" = true -a "$iwpriv" ]; then
	    iwpriv "${dev##*/}" $iwpriv || ret=1
	fi
        if [ "$iwlevel" ]; then
	    echo "$iwlevel" > "$dev/device/power_level" || ret=1
	fi
	[ "$ret" -eq 0 ] && echo Done. || echo Failed.
    done
}

case $1 in
    true) wireless_powersave on ;;
    false) wireless_powersave off ;;
    *) exit $NA ;;
esac

mit meinem beschränktem Wissen, würde ich den letzten Abschnitt ändern in

case $1 in
    true) wireless_powersave off ;;
    false) wireless_powersave off ;;
    *) exit $NA ;;
esac

elektronenblitz63

Avatar von elektronenblitz63

Anmeldungsdatum:
16. Januar 2007

Beiträge: 29307

Wohnort: NRW

Nur diesen Abschnitt austauschen:

    case $driver in
        ipw2100) iwpriv_ac="set_power 0"
            iwpriv_batt="set_power 0"
            iwconfig_ac="power on"
            iwconfig_batt="power on";;
        ipw3945)
            iwpriv_ac="set_power 6"
            iwpriv_batt="set_power 6";;
        iwl*) if [ -f "/sys/class/net/$1/device/power_level" ]; then
                 iwlevel_ac=0
                 iwlevel_batt=0
              else
                 iwconfig_ac="power off"
                 iwconfig_batt="power off"
              fi;;
        *) iwconfig_ac="power off"
           iwconfig_batt="power off";;
    esac

Wie man erkennen kann habe ich alle Werte für den Batteriemodus geändert. Für Netz- und Batteriebetrieb werden nun die selben Einstellungen verwendet, also wie im Netzbetrieb.

Das Skript muss ja weiterhin fehlerfrei abgearbeitet werden. Sollte jetzt also für alle WLAN-Karten und Treibervarianten funktionieren. Du kannst deine Variante natürlich ebenso testen.

s_rehm

Avatar von s_rehm

Anmeldungsdatum:
27. Oktober 2008

Beiträge: 306

👍 Rainer, ich danke dir ganz herzlich! Die Änderung im Skript hat zu dem erhofften Ergebnis geführt und ich habe wiedermal etwas dazu gelernt. Ich werde diesen Workaround mit deiner Zustimmung im Bugreport auf Launchpad bekanntgeben.

Antworten |