dmesg

dmesg

Ich habe einen HP Envy 13-ad001la mit PopOs 19.10. Der Kartenleser funktioniert nicht. Wenn ich ihn verwende, lspcierhalte ich die Meldung, dass es sich um einen Alcor Micro-Geräteleser handelt:

01:00.0 Unassigned class [ff00]: Alcor Micro Device 6625
    Subsystem: Hewlett-Packard Company Device 834a
    Flags: fast devsel, IRQ 255
    Memory at a1200000 (64-bit, non-prefetchable) [disabled] [size=4K]
    Capabilities: [40] Power Management version 3
    Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
    Capabilities: [80] Express Endpoint, MSI 00
    Capabilities: [100] Latency Tolerance Reporting

Nach meinem Verständnis bedeutet „Nicht zugewiesene Klasse“, dass Linux keinen Treiber für dieses Gerät finden kann. Ich habe nach dem entsprechenden Treiber gesucht und festgestellt, dass es sich um den Treiber „alcor_pci“ handelt (https://cateee.net/lkddb/web-lkddb/MISC_ALCOR_PCI.html) und es wurde nicht geladen, also habe ich modprobe verwendet, um es zu laden.

 ~  lsmod | grep alcor     
alcor_pci              20480  0

Aber danach funktioniert es immer noch nicht und lshwzeigt Folgendes an (NO RECLAMADO bedeutet UNCLAIMED):

*-pci:0
             descripción: PCI bridge
             producto: Sunrise Point-LP PCI Express Root Port #5
             fabricante: Intel Corporation
             id físico: 1c
             información del bus: pci@0000:00:1c.0
             versión: f1
             anchura: 32 bits
             reloj: 33MHz
             capacidades: pci normal_decode bus_master cap_list
             configuración: driver=pcieport
             recursos: irq:122 memoria:a1200000-a12fffff
           *-generic NO RECLAMADO
                descripción: Unassigned class
                producto: Alcor Micro
                fabricante: Alcor Micro
                id físico: 0
                información del bus: pci@0000:01:00.0
                versión: 00
                anchura: 64 bits
                reloj: 33MHz
                capacidades: cap_list
                configuración: latency=0
                recursos: memoria:a1200000-a1200fff

Kann mir bitte jemand helfen? Ich weiß nicht, ob ich nach dem Laden des Moduls noch etwas tun muss.

Antwort1

Dies kann nicht funktionieren, da die Geräte-ID AU6625 erst inLinux 5.6.

(einige Fahrerunterstützen die „Force Using“-Funktion von Modulen sogar bei einer Nichtübereinstimmung, aber ich würde nicht wirklich darauf hoffen, dass Kartenleser das unterstützen)

Antwort2

(Dieser Text ist eine automatische Übersetzung vom Französischen ins Englische.)

Hallo,
meine Erfahrungen mit dieser Karte:

*"Alcor Micro AU6625 PCI-E Flash card reader controller"*

Wenn Sie bereit sind, Ihren Linux-Kernel neu zu kompilieren, scheint die Karte mit dem bereits im Kernel enthaltenen AU6621-Treiber sehr gut zu funktionieren (seit Kernel-Version 5.5.6). Benennen Sie ihn einfach im Quellcode des Moduls um und kompilieren Sie dann den Linux-Kernel neu. Das funktioniert bei mir seit Kernel-Version 5.5.9. Ich verwende sie jetzt seit einigen Monaten ohne (offensichtliche) Probleme mit diesen Kernel-Versionen (5.5.9, 5.5.16, 5.6.7, 5.6.9).

meine Umgebung:

"HP ENVY Laptop 13-ad1xx"
LSPCI
02:00.0 Unassigned class [ff00]: Alcor Micro AU6625 PCI-E Flash card reader controller
Debian
Stock linux kernel: https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.6.7.tar.xz

Achtung, ich bin kein Entwickler, sondern nur ein Systemadministrator, der seinen Linux-Kernel von Zeit zu Zeit gerne neu kompiliert.

Der Rest dieses Beitrags setzt voraus, dass Sie bereits wissen, wie man einen Linux-Kernel neu kompiliert. Andernfalls ist es besser, diesen Vorgang nicht fortzusetzen. Einen Kernel falsch zu erstellen und auszuführen kann sehr gefährlich sein. Sie könnten alle Daten auf Ihrer Festplatte beschädigen.

Sobald die Quellen extrahiert sind, müssen die folgenden Dateien (gefunden durch den Shell-Befehl "$ grep -i -n -r "AU662" *") an der Wurzel der dekomprimierten Kernelquellen angepasst werden.

Ändern Sie alle Verweise mit „6621“ in „6625“.

Vor der Änderung: $ grep -i -r -n "AU662" *

*drivers/misc/cardreader/alcor_pci.c:5: * Driver for Alcor Micro AU6601 and AU6621 controllers*
*drivers/misc/cardreader/alcor_pci.c:37:static const struct alcor_dev_cfg au6621_cfg = {*
*drivers/misc/cardreader/alcor_pci.c:41:static const struct alcor_dev_cfg au6625_cfg = {*
*drivers/misc/cardreader/alcor_pci.c:48:    { PCI_DEVICE(PCI_ID_ALCOR_MICRO, PCI_ID_AU6621),*
*drivers/misc/cardreader/alcor_pci.c:49:        .driver_data = (kernel_ulong_t)&au6621_cfg },*
*drivers/misc/cardreader/alcor_pci.c:50:    { PCI_DEVICE(PCI_ID_ALCOR_MICRO, PCI_ID_AU6625),*
*drivers/misc/cardreader/alcor_pci.c:51:        .driver_data = (kernel_ulong_t)&au6625_cfg },*
*drivers/misc/cardreader/Kconfig:8:   au6621.*
*drivers/mmc/host/alcor.c:5: * Driver for Alcor Micro AU6601 and AU6621 controllers*
*drivers/mmc/host/alcor.c:892:      /* The clk will not work on au6621. We need to trigger data*
*include/linux/alcor_pci.h:5: * Driver for Alcor Micro AU6601 and AU6621 controllers*
*include/linux/alcor_pci.h:19:#define PCI_ID_AU6621             0x6621*
*include/linux/alcor_pci.h:20:#define PCI_ID_AU6625             0x6625*
*include/linux/alcor_pci.h:36: * 0x10 - ADMA phy address. AU6621 only?*
*include/linux/alcor_pci.h:45: * The au6601 and au6621 have different DMA engines with different issues. One*
*include/linux/alcor_pci.h:46: * For example au6621 engine is triggered by addr change. No other interaction*
*include/linux/alcor_pci.h:54:#define AU6621_DMA_PAGE_CNT           0x05*
*include/linux/alcor_pci.h:57:/* ADMA ctrl? AU6621 only. */*
*include/linux/alcor_pci.h:58:#define AU6621_DMA_CTRL               0x0c*
*include/linux/alcor_pci.h:59:#define AU6621_DMA_ENABLE         BIT(0)*

Nach der veränderung:

*drivers/misc/cardreader/alcor_pci.c:5: * Driver for Alcor Micro AU6601 and AU6625 controllers*
*drivers/misc/cardreader/alcor_pci.c:37:static const struct alcor_dev_cfg au6625_cfg = {*
*drivers/misc/cardreader/alcor_pci.c:41:/*static const struct alcor_dev_cfg au6625_cfg = {*
*drivers/misc/cardreader/alcor_pci.c:48:    { PCI_DEVICE(PCI_ID_ALCOR_MICRO, PCI_ID_AU6625),*
*drivers/misc/cardreader/alcor_pci.c:49:        .driver_data = (kernel_ulong_t)&au6625_cfg },*
*drivers/misc/cardreader/Kconfig:8:   au6625.*
*drivers/mmc/host/alcor.c:5: * Driver for Alcor Micro AU6601 and AU6625 controllers*
*drivers/mmc/host/alcor.c:892:      /* The clk will not work on au6625. We need to trigger data*
*include/linux/alcor_pci.h:5: * Driver for Alcor Micro AU6601 and AU6625 controllers*
*include/linux/alcor_pci.h:19:#define PCI_ID_AU6621             0x6621*
*include/linux/alcor_pci.h:20:#define PCI_ID_AU6625             0x6625*
*include/linux/alcor_pci.h:36: * 0x10 - ADMA phy address. AU6625 only?*
*include/linux/alcor_pci.h:45: * The au6601 and au6625 have different DMA engines with different issues. One*
*include/linux/alcor_pci.h:46: * For example au6625 engine is triggered by addr change. No other interaction*
*include/linux/alcor_pci.h:54:#define AU6625_DMA_PAGE_CNT           0x05*
*include/linux/alcor_pci.h:57:/* ADMA ctrl? AU6625 only. */*
*include/linux/alcor_pci.h:58:#define AU6625_DMA_CTRL               0x0c*
*include/linux/alcor_pci.h:59:#define AU6625_DMA_ENABLE         BIT(0)*

Zwei wichtige Hinweise:

  • seit Kernel 5.6.x scheint es einen Start des im Kernel enthaltenen AU6625-Treibers zu geben, aber dieser enthaltene Treiber scheint noch nicht zu funktionieren (zumindest bei meiner Konfiguration und bis zum 5.6.9-Kernel, den ich derzeit verwende). Sie müssen diesen neuen Teil daher im Code „auskommentieren“ oder löschen.

  • Nach dem Neustart auf diesem neu kompilierten Kernel zeigt der Befehl "lspci" weiterhin "Unassigned Class ..." an.
    für mich

    02:00.0 Nicht zugewiesene Klasse [ff00]: Alcor Micro AU6625 PCI-E Flash-Kartenleser-Controller

Aber die Karte funktioniert trotzdem sehr gut und ist wie jede andere in meinem Dateimanager (Nautilus) eingebunden.

dmesg

May 10 13:35:35 MylapX kernel: [    0.818161] pci 0000:02:00.0: [1aea:6625] type 00 class 0xff0000
May 10 13:35:35 MylapX kernel: [    0.818209] pci 0000:02:00.0: reg 0x10: [mem 0xb4200000-0xb4200fff 64bit]
May 10 13:35:35 MylapX kernel: [    0.818386] pci 0000:02:00.0: supports D1 D2
May 10 13:35:35 MylapX kernel: [    0.818388] pci 0000:02:00.0: PME# supported from D1 D2 D3hot D3cold

May 10 13:35:35 MylapX kernel: [    2.845290] alcor_pci 0000:02:00.0: enabling device (0000 -> 0002)

May 10 13:35:39 MylapX kernel: [    7.617586] mmc0: Skipping voltage switch
May 10 13:35:39 MylapX kernel: [    7.877031] mmc0: new high speed SDXC card at address aaaa
May 10 13:35:39 MylapX kernel: [    7.880661] mmcblk0: mmc0:aaaa ACLCF 119 GiB 
May 10 13:35:39 MylapX kernel: [    7.896324]  mmcblk0: p1

fdisk -l

Disk /dev/mmcblk0: 119.9 GiB, 127865454592 bytes, 249737216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device         Boot Start       End   Sectors   Size Id Type
/dev/mmcblk0p1      32768 249737215 249704448 119.1G  7 HPFS/NTFS/exFAT

$ df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p1  120G   98G   22G  82% /media/user/3561-6331

verwandte Informationen