PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WLAN-Modul rt61lässt sich nicht unloaden



Deve
25.06.06, 14:37
Hi,

da nach einem suspend meine WLAN-Karte beim Wiederherstellen des Systems nicht mehr funktioniert, habe ich in /etc/powersave/sleep eingetragen, dass das Modul "rt61" vor dem suspend entladen und beim erneuten Starten wieder geladen werden soll.
Das Modul lässt sich offensichtlich aber nicht unloaden. Hier der Inhalt der log-Datei "messages":
Jun 25 14:49:25 laptop-david [powersave-prepare_suspend_to_disk][4921]: ERROR: suspend2disk failed on unloading 'rt61'. Trying to recover...
Jun 25 14:49:26 laptop-david kernel: ADDRCONF(NETDEV_UP): eth0: link is not ready


Ich dachte, das Modul eth0 muss vielleicht auch entladen werden, habe es deshalb auch zur entsprechenden List hinzugefügt, aber das hat leider nichts geändert.
Der Inhalt der suspend2disk.log ist wie folgt (die Zeile mit dem betreffenden Modul ist rot markiert):

suspend2disk initiated: 2006-06-25 15:15:53
Debug info follows here, please include in your bug reports. Thanks.
--------------------------------------------------------------------
Loaded modules:
Module Size Used by
uhci_hcd 32400 0
xt_pkttype 5760 3
ipt_LOG 9856 8
xt_limit 6528 8
cpufreq_ondemand 10632 1
cpufreq_userspace 8448 0
cpufreq_powersave 5760 0
speedstep_centrino 11184 1
freq_table 8448 1 speedstep_centrino
snd_pcm_oss 47104 0
snd_mixer_oss 20480 1 snd_pcm_oss
snd_seq 53360 0
snd_seq_device 11916 1 snd_seq
edd 12484 0
ibm_acpi 28800 0
button 10640 0
battery 13444 0
ac 8964 0
rt61 211968 1
ip6t_REJECT 8960 3
xt_tcpudp 7040 3
ipt_REJECT 9216 3
xt_state 6016 12
iptable_mangle 6656 0
iptable_nat 11652 0
ip_nat 20268 1 iptable_nat
iptable_filter 6912 1
ip6table_mangle 6272 0
ip_conntrack 49880 3 xt_state,iptable_nat,ip_nat
nfnetlink 10264 2 ip_nat,ip_conntrack
ip_tables 16196 3 iptable_mangle,iptable_nat,iptable_filter
ip6table_filter 6656 1
ip6_tables 17604 2 ip6table_mangle,ip6table_filter
x_tables 16388 10 xt_pkttype,ipt_LOG,xt_limit,ip6t_REJECT,xt_tcpudp, ipt_REJECT,xt_state,iptable_nat,ip_tables,ip6_tabl es
ipv6 242272 13 ip6t_REJECT
apparmor 53144 0
aamatch_pcre 17408 1 apparmor
loop 19080 0
dm_mod 57936 0
usbhid 44640 0
pcmcia 39100 0
firmware_class 13952 1 pcmcia
yenta_socket 27660 2
rsrc_nonstatic 16384 1 yenta_socket
pcmcia_core 41748 3 pcmcia,yenta_socket,rsrc_nonstatic
ehci_hcd 31880 0
intel_agp 24988 1
agpgart 33352 1 intel_agp
shpchp 44000 0
pci_hotplug 28860 1 shpchp
i8xx_tco 11032 0
usbcore 116612 4 uhci_hcd,usbhid,ehci_hcd
i2c_i801 12044 0
i2c_core 24064 1 i2c_i801
e100 37256 0
mii 9088 1 e100
snd_intel8x0 34716 1
snd_ac97_codec 87072 1 snd_intel8x0
snd_ac97_bus 6144 1 snd_ac97_codec
snd_pcm 86788 3 snd_pcm_oss,snd_intel8x0,snd_ac97_codec
snd_timer 25860 2 snd_seq,snd_pcm
snd 57092 10 snd_pcm_oss,snd_mixer_oss,snd_seq,snd_seq_device,s nd_intel8x0,snd_ac97_codec,snd_pcm,snd_timer
soundcore 13024 1 snd
snd_page_alloc 13576 2 snd_intel8x0,snd_pcm
ide_cd 39840 0
cdrom 36512 1 ide_cd
parport_pc 39524 1
lp 15012 0
parport 37192 2 parport_pc,lp
reiserfs 217856 2
fan 8580 0
thermal 17416 0
processor 31208 2 speedstep_centrino,thermal
piix 13316 0 [permanent]
ide_disk 19200 5
ide_core 123340 3 ide_cd,piix,ide_disk

Memory info:
total used free shared buffers cached
Mem: 774632 454332 320300 0 83168 110408
-/+ buffers/cache: 260756 513876
Swap: 514040 124 513916

/proc/cmdline: root=/dev/hda6 vga=0x317 resume=/dev/hda5 splash=silent
------------------------------------------------------------------------------
========we are going to sleep, preparing.========
running kernel is grub menu entry 0 (vmlinuz)
== checking runlevel ==
no shutdown/reboot in progress, good.
== Unmounting FAT/NTFS filesystems: ==
none found in /etc/mtab
== FAT/NTFS filesystems unmounted ==
Stopping services: ('slmodemd irda upsd apcupsd' configured)
none running.

------------------------------------------------------------------------------
Unloading modules: ('eth0 rt61' configured)
checking eth0
checking rt61
could not unload module 'rt61', usage count: 1

== restore_after_sleep: restart and reload everything ==

Resuming:
---------

Reloading modules:

Restarting services:

Remounting filesystems:
not necessary.

Dem entnehme ich also, dass rt61 nicht entladen werden kann, weil es benutzt wird. Aber von wem oder was?

Das Entladen per Hand mit rmmod geht natürlich auch schief:

laptop-david:/sbin # rmmod rt61
ERROR: Module rt61 is in use
Kann mir jemand weiterhelfen?

Deve
06.07.06, 11:47
So, nach fast zwei Wochen pushe ich mal ganz vorsichtig dieses Thema...vielleicht hat ja doch jemand einen Rat parat?

Mallah
06.07.06, 15:32
leider kann ich dir nicht weiterhelfen,

ich kenne nur lsof (list open files), probiere es mal damit lsof | grep rt61

ansonsten würde mich das auch interessieren, wie man es rausbekommt, welcher dienst bzw welche hardware das Modul verwendet

mfg

Mallah

Deve
06.07.06, 16:11
Hm, leider taucht rt61 nicht in dieser Liste auf.

xanlosch
07.07.06, 09:19
Fahr am besten das Interface, an dem sich das WLAN hängt bspw. eth0, ra0, ..., runter und dann sollte auch das Unloaden des Moduls klappen.

man ifconfig verrät dir mehr.

ThorstenHirsch
07.07.06, 09:24
Ja, ganz genau. Du musst mit "ifconfig ra0 down" erst das Interface deaktivieren, dann darfst Du das Modul entladen.

Nur aus Neugierde: benutzt Du das Modul von RaLink oder vom rt2x00-Projekt?

Mallah
07.07.06, 14:24
abgesehene davon, gibts es keinen befehl , um herauszufinden, welches modul von wem verwendet wird?

Deve
10.07.06, 21:15
@xanlosch und Thorsten: Danke für euren Tipp! Wenn ich ra0 herunterfahre, kann ich auch rt61 unloaden. Ich verwende das Modul von RaLink.

Wie kann ich das jetzt automatisieren, dass das Interface ra0 beim Übergang in den Suspend2Disk-Mode heruntergefahren wird und beim erneuten Einschalten des Systems mit den vorherigen Einstellungen aufgerufen wird?

In der Datei /etc/powersave/sleep gibt es auch die "SERVICES_TO_RESTART"-Variablen. Kann ich das damit irgendwie machen?

ThorstenHirsch
11.07.06, 00:38
Ja, das dürfte der richtige Ansatz sein. Aber schau nochmal in die Doku Deiner Distri - dort sollte das genauer stehen. Allerdings "mit den vorherigen Einstellungen" - das wird etwas schwieriger. Dafür musst Du wohl die Einstellungen zwischenspeichern, also um ein paar Skripte kommst Du nicht herum.

Deve
11.07.06, 11:08
Alles was ich zu diesen Variablen finden konnte, steht im Kommentar der sleep-Datei selbst:

# All services that have to be stopped before entering a sleep mode
# and restarted after the machine resumes.
# If you notice problems of some services that may be related to
# suspend/standby, restarting the service may solve the problem.
# The names to enter here are simply the filenames of the init scripts
# in /etc/init.d. The services are stopped in the order entered here.
# They are restarted after resume in the reverse order.
# Entering "NONE" disables restarting of services ("" means default)
Nun, in /etc/init.d/boot.local lade ich das Modul rt61 und konfiguriere mit ifconfig und iwconfig die Schnittstelle ra0. Wenn ich aber
SUSPEND2DISK_RESTART_SERVICES="boot.local" angebe, sagt er, dass der Dienst gar nicht gestartet wurde. Macht ja irgendwie auch kein Sinn.

Jetzt setzte ich meine Hoffnung auf die Skripte in /usr/lib/powersave/scripts, die da heißen prepare_suspend_to_disk und restore_after_suspend_to_disk. Ich kann leider keine Shell-Skripte schreiben und ich erwarte auch nicht, dass mir das hier jetzt jemand erklärt, keine Angst :)
Aber es würde schon reichen, wenn ich nur wüsste, wie er einfach beim erneuten Einschalten nach suspend ein paar Zeilen Shell-Befehle ausführt, die ich sonst jedes Mal von Hand eingeben müsste. Bin für eure Tipps dankbar!

ThorstenHirsch
11.07.06, 11:58
Ja, nee, das mit boot.local funktioniert nicht, weil das kein richtiger Dienst ist.
Trag' einfach die Befehle in die beiden Dateien (prepare_suspend_to_disk, restore_after_suspend_to_disk) ein. Das sollte schon reichen.

Deve
12.07.06, 12:18
Ok, ich komme der Lösung immer näher. Ich kann jetzt die Module, Einstellungen und Schnittstellen bei der Rückkehr aus dem suspend automatisch laden, indem ich die entsprechenden Befehle in restore_after_suspend_to_disk eintrage. Allerdings zickt er, wenn ich die Befehle zum entfernen des Moduls in prepare_suspend_to_disk eintrage. Ich habe es wie folgt gemacht:
#!/bin/bash
################################################## #########################
# #
# Powersave Daemon #
# #
# Copyright (C) 2004,2005 SUSE Linux Products GmbH #
# #
# This program is free software; you can redistribute it and/or modify it #
# under the terms of the GNU General Public License as published by the #
# Free Software Foundation; either version 2 of the License, or (at you #
# option) any later version. #
# #
# This program is distributed in the hope that it will be useful, but #
# WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU #
# General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License along #
# with this program; if not, write to the Free Software Foundation, Inc., #
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #
# #
################################################## #########################
#

#######################
# my own instructions for the WLAN-Module
#BEGIN
#######################

# quit the ra0 interface
ifconfic ra0 down

# unload the WLAN Module rt61
/sbin/rmmod rt61

#######################
#END
#######################

# first get helper functions (e.g. DEBUG, load_scheme, ...)
. "${0%/*}/helper_functions"
...
...
Von Hand eingegeben führen die obigen Befehle zum gewünschten Ergebnis, wenn ich allerdings im Skript versuche, das Modul zu entfernen, passiert beim suspend-Versuch einfach garnix. In der entpsrechenden log-Datei suspend2disk.log ist der letzte suspend-Versuch protokolliert. Der aktuelle Versuch kommt anscheinend nicht mal soweit, die log-Datei anzulegen.

Jemand, ne Idee, was ich falsch gemacht habe?

xanlosch
12.07.06, 13:16
Tipfehler !

Anstatt


# quit the ra0 interface
ifconfic ra0 down


sollte es



# quit the ra0 interface
ifconfig ra0 down


heißen.

Deve
12.07.06, 13:40
Tomaten auf den Augen :D Stimmt...

Aber leider liegt es daran nicht.

Deve
31.07.06, 12:12
Für's Protokoll:

Dass das suspend to disk nicht mehr funktionierte, lag daran, dass mir irgendwie die Execute-Rechte beim Editieren von prepare_suspend_to_disk verloren gingen. Typischer Anfängerfehler nehme ich an :)

Auf jeden Fall funktioniert jetzt alles: ich entlade das WLAN-Modul vor dem suspend, indem ich die entsprechenden Zeilen in prepare_suspend_to_disk eintrage und lade das Modul bei der Rückkehr aus dem suspend wieder mit Hilfe von restore_after_suspend_to_disk. :cool: