use*_*440 6 realtek card-reader sd-card 14.04
我已经阅读了一些其他发布此问题的帖子。但是没有针对这个问题的解决方案。我已经在我的联想 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
Run Code Online (Sandbox Code Playgroud)
问候语
小智 2
在 MSI GE60 上工作 我有一个 Realtek Semiconductor Co., Ltd. RTS5227,可以在 Windows 上工作,但不能在 Linux Mint(基于 ubuntu)中工作。
注意/重要:
使用此方法可能会导致设备在重新启动后无法识别读卡器。我还不明白发生了什么,但设备似乎无法在 PCI 总线上枚举。我通过 Windows 上的冷启动修复了这个问题(使用官方驱动程序)。
我找到了一些 rts5209 的教程并尝试改编它们:
https://vidyut.net/realtek-sd-card-reader-working-ubuntu/
我从 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,
Run Code Online (Sandbox Code Playgroud)
一旦我完成了这个任务,我就构建了驱动程序并尝试使用它,但显然驱动程序和硬件之间的链接不存在。
因此,我获取了设备的名称并尝试修改代码以获得正确的设备名称。进入 rtsx.h 的第一行 (55) 并根据您的需要调整设备名称的定义:
(before)
#define CR_DRIVER_NAME "rts5229"
(after)
#define CR_DRIVER_NAME "rts5227"
Run Code Online (Sandbox Code Playgroud)
之后我修改了 Makefile 的目标:
(before)
TARGET_MODULE := rts5229
(after)
TARGET_MODULE := rts5227
Run Code Online (Sandbox Code Playgroud)
之后什么
make clean
make
sudo make install
sudo depmod
sudo modprobe rts5227
Run Code Online (Sandbox Code Playgroud)
验证您的设备是否未使用 rtsx_pci 模块 (lspci -v),如果是这种情况,您需要使用 Dainaccio 方法来修复该问题(接近第二个教程的末尾)。
当你的模块正确加载时, ls /dev 应该会显示一个新界面(对我来说 /dev/sdb):D
事实上,这并不是很干净。问题是,应该对 2 个读卡器版本之间的差异有更多的了解,并且对驱动程序有更多的了解,才能使其正常工作。
该驱动程序基本功能齐全,可以挂载/卸载分区、在卡上写入和读取、检测插入和移除。我还没有测试过自动挂载。但无论如何,驱动程序工作的 lspci -v 会告诉你这个解决方案不干净:外围设备类无法识别,所以我认为其他值。通过简要查看代码,我还看到许多硬编码为 rts5229 的参考。它们可能是一些需要完成的工作......
不管怎样,祝你有美好的一天!
~~~~~~
小智 2
上游 rtsx_pci 管理读卡器。
仍然有问题,因为我必须卸载然后重新加载驱动程序才能使其工作:
# modprobe -r rtsx_pci
# modprobe rtsx_pci
Run Code Online (Sandbox Code Playgroud)
PS:我还没有向上游报告(甚至检查问题是否已经报告)。我希望尽快做到这一点,但请随意击败我(唯一的要求是拥有重现该错误的硬件)。
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27122 次 |
| 最近记录: |