dmesg

dmesg

PopOs 19.10이 설치된 HP Envy 13-ad001la가 있습니다. 카드 리더가 작동하지 않습니다. 사용하면 lspci이것이 Alcor Micro 장치 리더라는 것을 알게 됩니다.

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

제가 이해하기로는 "할당되지 않은 클래스"는 Linux가 이 장치에 대한 드라이버를 찾을 수 없다는 의미입니다. 해당 드라이버를 검색해 보니 해당 드라이버가 "alcor_pci"(https://cateee.net/lkddb/web-lkddb/MISC_ALCOR_PCI.html) 로드되지 않았으므로 modprobe를 사용하여 로드했습니다.

 ~  lsmod | grep alcor     
alcor_pci              20480  0

하지만 이후에도 여전히 작동하지 않고 lshw다음과 같은 메시지가 표시됩니다(NO RECLAMADO는 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

누구든지 저를 도와주실 수 있나요? 모듈을 로드한 후 다른 작업을 수행해야 하는지 모르겠습니다.

답변1

AU6625 장치 ID가 에만 추가되었기 때문에 작동할 수 없습니다.리눅스 5.6.

(일부 운전자불일치가 있는 경우에도 "강제 사용" 모듈을 지원하지만 카드 리더가 이를 지원하기를 정말 바라지 않습니다)

답변2

(이 텍스트는 프랑스어에서 영어로 자동 번역됩니다.)

안녕하세요,
이 카드에 대한 저의 경험입니다.:

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

Linux 커널을 다시 컴파일하려는 경우 카드는 커널에 이미 포함된 AU6621 드라이버(커널 버전 5.5.6 이후)와 매우 잘 작동하는 것 같습니다. 모듈의 소스 코드에서 이름을 "변경"한 다음 Linux 커널을 다시 컴파일하십시오. 이것은 커널 버전 5.5.9부터 작동합니다. 나는 이 커널 버전(5.5.9, 5.5.16, 5.6.7, 5.6.9)에서 (명백한) 문제 없이 몇 달 동안 사용해 왔습니다.

내 환경:

"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

경고합니다. 저는 개발자가 아니며 때때로 Linux 커널을 다시 컴파일하는 것을 좋아하는 시스템 관리자일 뿐입니다.

이 게시물의 나머지 부분에서는 여러분이 이미 Linux 커널을 다시 컴파일하는 방법을 알고 있다고 가정합니다. 그렇지 않으면 이 프로세스를 계속하지 않는 것이 좋습니다. 커널을 잘못 구축하고 실행하는 것은 매우 위험할 수 있으며 하드 드라이브의 모든 데이터를 손상시킬 수 있습니다.

소스가 추출되면 압축이 풀린 커널 소스의 루트에서 다음 파일을 조정해야 합니다(셸 명령 "$ grep -i -n -r "AU662" *" 로 확인).

"6621"이 포함된 모든 참조를 "6625"로 변경합니다.

변경 전: $ 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)*

변경 후:

*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)*

두 가지 중요 사항:

  • 커널 5.6.x부터 커널에 포함된 AU6625 드라이버가 시작되는 것 같지만 이 포함된 드라이버는 아직 작동하지 않는 것 같습니다(적어도 내 구성과 현재 사용 중인 최대 5.6.9 커널에서는). ) 따라서 코드에서 이 새 부분을 "주석 처리"하거나 삭제해야 합니다.

  • 새로 컴파일된 커널을 재부팅한 후에도 "lspci" 명령은 "할당되지 않은 클래스 ..."를 계속 표시합니다.
    나를 위한

    02:00.0 할당되지 않은 클래스 [ff00]: Alcor Micro AU6625 PCI-E 플래시 카드 리더 컨트롤러

그러나 카드는 어쨌든 매우 잘 작동하며 다른 카드와 마찬가지로 내 Filemanager(Nautilus)에 마운트됩니다.

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

관련 정보