Sie sind nicht angemeldet.

1

07.01.2007, 21:38

SD-Kartenleser wird von UDEV nicht erkannt

Ich hab ein seltsames Problem mit meinem im Notebook integrierten Kartenlesegerät. Es ist zwar ein 5-in-1-Kartenlesegerät von ENE, aber bis vor vier, fünf Monaten lief die SD-Kartenfunktion einwandfrei.

Als ich damals irgendwann UDEV geupdatet hab, reagierte es seitdem auf das Einstecken einer SD-Karte überhaupt nicht mehr. Selbst wenn ich mit

Quellcode

1
udevmonitor --env
überwache, passiert nichts.


Im Kernellog kann man jedoch sehen, dass der SD-Treiber geladen wird:

Quellcode

1
2
3
4
5
sdhci: Secure Digital Host Controller Interface driver, 0.12
sdhci: Copyright(c) Pierre Ossman
sdhci: SDHCI controller found at 0000:06:04.2 [1524:0550] (rev 1)
ACPI: PCI Interrupt 0000:06:04.2[B] -> GSI 17 (level, low) -> IRQ 17
mmc0: SDHCI at 0xc4007000 irq 17 DMA


Hat jemand eine Idee, was die Ursache sein könnte?


Gruß|Carminox

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Carminox« (07.01.2007, 21:39)


2

08.01.2007, 03:32

Die Bezeichner haben sich geändert, du musst deine Regeln ändern. Es heißt jetzt z.B. ATTRS{model} und nicht mehr SYSFS{model}
localhost,
sweet localhost

3

08.01.2007, 22:04

Ich habe aber nie Regeln erstellt. Dies hat damals ohne zusätzliche Konfiguration funktioniert.

Zudem müsste udevmonitor nichtsdestotrotz beim Einstecken der Karte die sog. UEVENTs, also die Kernelevents protokollieren, was er jedoch nicht tut.


P.S.: Wie soll ich denn überhaupt eine Regel erstellen, wenn ich nicht mal die ATTRS{model} auslesen kann?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Carminox« (08.01.2007, 22:06)


4

08.01.2007, 22:37

Da war ich einen Schritt zuweit beim denken.
Schonmal versucht, was passiert, wenn du eine Karte vor dem Starten des Rechners einschiebs?
Könnte an hotplug liegen.
localhost,
sweet localhost

5

09.01.2007, 03:32

Selbst wenn ich vor dem Booten von Linux die SD-Karte einstecke, passiert nichts.

Und Hotplug ist in /etc/conf.d/rc aktiviert.

6

09.01.2007, 10:51

Um sicher zu gehen, dass es nicht daran liegt, dass udev nun nur ein Modul nicht mehr automatisch läd, könntest du mal ein

Quellcode

1
for i in $(find /lib/modules/`uname -r` -name "*.ko" -printf %f\\n | sed s/.ko//g); do modprobe -v $i; done

ausführen und schauen, ob es nun erkannt wird.
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

7

09.01.2007, 20:47

Also den SD-Treiber habe ich direkt im Kernel integriert (sonst würde es ja im Kernelbootlog keine Meldung darüber machen :D, hab deine Bash-Zeile trotzdem 'mal probiert.)

Ich probier's probeweise 'mal als Modul...

8

10.01.2007, 21:16

Ich hab jetzt die beiden Treiber mmc_core und sdhci als Modul kompiliert und mein Gentoo neugestartet. Beide Module werden automatisch geladen. Wenn ich die Module entlade, udevmonitor --env ausführe und diese wieder einbinde, listet er mir folgendes auf:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
UEVENT[1168459854.334725] add@/module/mmc_core
ACTION=add
DEVPATH=/module/mmc_core
SUBSYSTEM=module
SEQNUM=784

UEVENT[1168459854.338155] add@/module/sdhci
ACTION=add
DEVPATH=/module/sdhci
SUBSYSTEM=module
SEQNUM=785

UEVENT[1168459854.338942] add@/bus/pci/drivers/sdhci
ACTION=add
DEVPATH=/bus/pci/drivers/sdhci
SUBSYSTEM=drivers
SEQNUM=786

UEVENT[1168459854.339571] add@/class/mmc_host/mmc0
ACTION=add
DEVPATH=/class/mmc_host/mmc0
SUBSYSTEM=mmc_host
SEQNUM=787
PHYSDEVPATH=/devices/pci0000:00/0000:00:1e.0/0000:06:04.2
PHYSDEVBUS=pci
PHYSDEVDRIVER=sdhci

UDEV  [1168459854.355276] add@/class/mmc_host/mmc0
UDEV_LOG=3
ACTION=add
DEVPATH=/class/mmc_host/mmc0
SUBSYSTEM=mmc_host
SEQNUM=787
PHYSDEVPATH=/devices/pci0000:00/0000:00:1e.0/0000:06:04.2
PHYSDEVBUS=pci
PHYSDEVDRIVER=sdhci
UDEVD_EVENT=1


Ich hab's einmal ohne Karte und einmal mit Karte versucht, udevmonitor zeigt jedes Mal das gleiche an. Das interessante ist, dass das Kartenleselämpchen nur dann blinkt, wenn ich die Karte einschiebe, wenn die Module mmc_core und sdhci geladen sind. Sonst nicht.


Was ist verdammt nochmal das Problem? :D (Früher hats wunderbar funktioniert...)

9

13.01.2007, 10:49

bin ja nur ein kleines Licht, aber ich habe den Genkernel, der wohl mit UDEV arbeitet, so weit ich das weiß ..
Den Kartenleser nutze ich wie eine Wäxxelpladde, d.h. ent mounte ich einfach stumpf die Karte als FAT Laufwerk oder weder ich nutze den automounter, um sie in /media/ automatisch mounten zu lassen..
habe ich nur Glück, daß es bei mir so funzt? ?(
System:
i7 P2600 @ 3,4GHz
jabber: poedel@jabber.ccc.de

10

13.01.2007, 16:09

hi,

kannst du mal die Ausgabe von lspci posten?

p.s.
Ich habe z.B. einen internen Kartenleser von Texas Instruments

Quellcode

1
2
02:06.0 CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller
02:06.3 Mass storage controller: Texas Instruments PCIxx21 Integrated FlashMedia Controller


der läuft nicht mit dem sdhci treiber, aber mit dem seit kernel 2.6.19 im kernel enthaltenen
tifm treiber.

meine geladenen Module:

Quellcode

1
2
3
4
5
tifm_7xx1
tifm_sd
tifm_core
mmc_block
mmc_core


EDIT
oh, hatte übersehen das du ja im ersten post geschrieben hast das der Leser von ENE ist.
:O
AcerExtensa3001WLMi

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »sidious« (13.01.2007, 16:20)


11

13.01.2007, 19:27

Wenn's von Anfang an nicht funktioniert hätte, würde ich mir ja nicht den Kopf zerbrechen.

Da es aber funktioniert hat und ich den Grund für die Funktionsverweigerung nicht finden kann... ;(

Ich hab neben den Modulen sdhci und mmc_core die Debugfunktion aktiviert und hab im Kernellog folgendes gefunden:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
sdhci: Secure Digital Host Controller Interface driver, 0.12
sdhci: Copyright(c) Pierre Ossman
sdhci: SDHCI controller found at 0000:06:04.2 [1524:0550] (rev 1)
sdhci [sdhci_probe()]: found 1 slot(s)
ACPI: PCI Interrupt 0000:06:04.2[B] -> GSI 17 (level, low) -> IRQ 17
sdhci [sdhci_probe_slot()]: slot 0 at 0xc4007000, irq 17
sdhci: ============== REGISTER DUMP ==============
sdhci: Sys addr: 0x00000000 | Version:  0x00000100
sdhci: Blk size: 0x00000000 | Blk cnt:  0x00000000
sdhci: Argument: 0x00000000 | Trn mode: 0x00000000
sdhci: Present:  0x01f20000 | Host ctl: 0x00000000
sdhci: Power:    0x00000000 | Blk gap:  0x00000000
sdhci: Wake-up:  0x00000000 | Clock:    0x00000000
sdhci: Timeout:  0x00000000 | Int stat: 0x00000000
sdhci: Int enab: 0x00ff00fb | Sig enab: 0x00ff00fb
sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
sdhci: Caps:     0x01e021a1 | Max curr: 0x000000ff
sdhci: ===========================================
mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0
mmc0: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 21 width 0
mmc0: SDHCI at 0xc4007000 irq 17 DMA
mmc0: clock 128906Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0
mmc0: clock 128906Hz busmode 1 powermode 2 cs 1 Vdd 21 width 0
mmc0: starting CMD0 arg 00000000 flags 00000040
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (0)
mmc0: req done (CMD0): 1/0/0: 00000000 00000000 00000000 00000000
mmc0: clock 128906Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0
mmc0: starting CMD55 arg 00000000 flags 00000015
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)
mmc0: req done (CMD55): 1/0/0: 00000000 00000000 00000000 00000000
mmc0: starting CMD55 arg 00000000 flags 00000015
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)
mmc0: req done (CMD55): 1/0/0: 00000000 00000000 00000000 00000000
mmc0: starting CMD55 arg 00000000 flags 00000015
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)
mmc0: req done (CMD55): 1/0/0: 00000000 00000000 00000000 00000000
mmc0: starting CMD55 arg 00000000 flags 00000015
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)
mmc0: req done (CMD55): 1/0/0: 00000000 00000000 00000000 00000000
mmc0: starting CMD1 arg 00000000 flags 00000061
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (1)
mmc0: req done (CMD1): 1/0/0: 00000000 00000000 00000000 00000000
mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0

Für den Kernel ist der Slot existent, aber UDEV bleibt stur und macht garnichts...


Hier noch der relevante Teil meiner lspci:

Quellcode

1
2
3
4
06:04.1 FLASH memory: ENE Technology Inc ENE PCI Memory Stick Card Reader Controller (rev 01)
06:04.2 Generic system peripheral [0805]: ENE Technology Inc ENE PCI Secure Digital Card Reader Controller (rev 01)
06:04.3 FLASH memory: ENE Technology Inc FLASH memory: ENE Technology Inc: (rev 01)
06:04.4 FLASH memory: ENE Technology Inc Unknown device 0551 (rev 01)

Das "Unknown device 0551" ist die xD-Kartenlesefunktion, die scheinbar noch garnicht in der Gerätedatenbank eingetragen ist.
Das Gerät 06:04.2 ist die SD-Kartenlesefunktion.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Carminox« (13.01.2007, 19:27)