Ubuntu 14.04 Realtek Semiconductor Co., Ltd. RTS5227 PCI Express 读卡器无法正常工作

Ubuntu 14.04 Realtek Semiconductor Co., Ltd. RTS5227 PCI Express 读卡器无法正常工作

我读过一些其他发布此问题的帖子。但没有针对此问题的解决方案。我在联想 T440s 上安装了 Ubuntu 14.04。

Realtek Semiconductor Co., Ltd. RTS5227 PCI Express 读卡器无法正常工作。

当我将 SD 卡推入插槽后,什么也没发生。

# lspci

02:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5227 PCI Express Card Reader (rev 01)
    Subsystem: Lenovo Device 220c
    Flags: fast devsel, IRQ 16
    Memory at f0500000 (32-bit, non-prefetchable) [size=4K]
    Capabilities: [40] Power Management version 3
    Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
    Capabilities: [70] Express Endpoint, MSI 00
    Capabilities: [100] Advanced Error Reporting
    Capabilities: [140] Device Serial Number 00-00-00-01-00-4c-e0-00
    Capabilities: [150] Latency Tolerance Reporting
    Capabilities: [158] L1 PM Substates

# lshw
    *-pci:0
         Beschreibung: PCI bridge
         Produkt: Lynx Point-LP PCI Express Root Port 6
         Hersteller: Intel Corporation
         Physische ID: 1c
         Bus-Informationen: pci@0000:00:1c.0
         Version: e4
         Breite: 32 bits
         Takt: 33MHz
         Fähigkeiten: pci pciexpress msi pm normal_decode bus_master cap_list
         Konfiguration: driver=pcieport
         Ressourcen: irq:17 memory:f0500000-f05fffff
       *-generic UNGEFORDERT
            Beschreibung: Unassigned class
            Produkt: RTS5227 PCI Express Card Reader
            Hersteller: Realtek Semiconductor Co., Ltd.
            Physische ID: 0
            Bus-Informationen: pci@0000:02:00.0
            Version: 01
            Breite: 32 bits
            Takt: 33MHz
            Fähigkeiten: pm msi pciexpress cap_list
            Konfiguration: latency=0
            Ressourcen: memory:f0500000-f0500fff

问候语

答案1

在 MSI GE60 上工作我有一个 Realtek Semiconductor Co., Ltd. RTS5227,可以在 Windows 上运行,但不能在 Linux Mint(基于 ubuntu)上运行。

注意/重要:

使用此方法可能会导致设备在重启后无法识别读卡器。我还不明白发生了什么,但设备似乎无法在 pci 总线上枚举。我通过在 Windows 上进行冷启动(使用官方驱动程序)解决了这个问题。

我找到了一些 rts5209 的教程并尝试对其进行调整:

https://vidyut.net/realtek-sd-card-reader-working-ubuntu/

http://dainaccio.wordpress.com/2013/07/14/realtek-sd-reader-mounting-problems-under-linux-mintubuntu/#more-836

我从 realtek 网站获取了 RTS5229 的源代码(Linux 的 PCIE RTS5229 读卡器驱动程序):我的消息中不超过 2 个链接,教程似乎更重要 --> google

然后,为了构建时不出现错误,我必须比 rtcx.c 中的链接教程多做一些代码修改:注释 rtsx_host_template 初始化行 206 中 proc_info 的声明。

(before)
.proc_info = proc_info, 

(after)
//.proc_info = proc_info,

一旦我完成了这件事,我就会构建驱动程序并尝试使用它,但显然驱动程序和硬件之间的链接不存在。

因此我采用了我的设备名称并尝试修改代码以获得正确的设备名称。进入 rtsx.h 的前几行 (55) 并根据您的需要调整设备名称的定义:

(before)
#define CR_DRIVER_NAME "rts5229"

(after)
#define CR_DRIVER_NAME "rts5227"

我修改了 Makefile 的目标后:

(before)
TARGET_MODULE := rts5229

(after)
TARGET_MODULE := rts5227

什么之后

make clean
make
sudo make install
sudo depmod
sudo modprobe rts5227

验证您的设备没有使用 rtsx_pci 模块(lspci -v),如果是的话,您需要使用 Dainaccio 方法来解决这个问题(接近第二个教程的结尾)。

当你的模块正确加载时, ls /dev 应该会向你显示一个新界面(对我来说是 /dev/sdb):D

事实上,这并不是很干净。关键是应该更多地了解两个读卡器版本之间的差异,并更多地了解驱动程序,以使其正常工作。

该驱动程序基本可以正常工作,您可以挂载/卸载分区、在卡上写入和读取,并检测插入和移除。我还没有测试自动挂载。但无论如何,在驱动程序工作的情况下,lspci -v 会显示此解决方案并不干净:无法识别外围设备类,所以我认为其他值。通过简要查看代码,我还看到许多引用硬编码到 rts5229。它们可能有一些工作要做……

无论如何,祝你有美好的一天!

~~~~~

答案2

上游 rtsx_pci 管理读卡器。

仍然有问题,因为我必须卸载然后重新加载驱动程序才能使其工作:

# modprobe -r rtsx_pci
# modprobe rtsx_pci

附言:我还没有向上游报告(甚至没有检查过这个问题是否已经报告)。我希望尽快报告,不过请随意抢先一步(唯一的要求是拥有能够重现该错误的硬件)。

Thinkpad Yoga S1 也搭载了此款设备:

# lspci

05:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5227 PCI Express Card Reader (rev 01)
Subsystem: Lenovo Device 2217
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 75
Region 0: Memory at f0400000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [40] Power Management version 3
    Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
    Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
    Address: 00000000fee0f00c  Data: 41e2
Capabilities: [70] Express (v2) Endpoint, MSI 00
    DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
        ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
    DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
        MaxPayload 128 bytes, MaxReadReq 512 bytes
    DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
    LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s unlimited, L1 <64us
        ClockPM+ Surprise- LLActRep- BwNot-
    LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk-
        ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
    LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
    DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR+, OBFF Via message/WAKE#
    DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
    LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
         Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
         Compliance De-emphasis: -6dB
    LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
         EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [100 v2] Advanced Error Reporting
    UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
    UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
    UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
    CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
    CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
    AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
Capabilities: [140 v1] Device Serial Number 00-00-00-01-00-4c-e0-00
Capabilities: [150 v1] Latency Tolerance Reporting
    Max snoop latency: 71680ns
    Max no snoop latency: 71680ns
Capabilities: [158 v1] L1 PM Substates
    L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
          PortCommonModeRestoreTime=60us PortTPowerOnTime=60us
Kernel driver in use: rtsx_pci

答案3

它是rts_pstor我的 Debian 系统上的驱动程序。花费了两个rmmod/modprobe周期才使其工作。

答案4

您可以尝试以下代码在启动时启用 rtsx_pci 模块。

echo "rtsx_pci" | sudo tee -a /etc/modules

相关内容