web-dev-qa-db-fra.com

Ubuntu 14.04 Realtek Semiconductor Co., Ltd. Le lecteur de carte PCI Express RTS5227 ne fonctionne pas.

J'ai lu d'autres articles traitant de ce problème. Mais sans solution pour exactement ce problème. J'ai installé Ubuntu 14.04 sur mon Lenovo T440.

Le lecteur de carte PCI Express RTS5227 de Realtek Semiconductor Co., Ltd. ne fonctionne pas.

Après avoir inséré une carte SD dans la fente, rien ne s'est passé.

# 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

saluer

5
user286440

travaillant sur MSI GE60 J'ai un RTS5227 de Realtek Semiconductor Co., Ltd. qui fonctionne sur les fenêtres, mais pas sous Linux à la menthe (basé sur Ubuntu).

ATTENTION/IMPORTANT:

utiliser cette méthode peut éventuellement amener le périphérique à ne pas reconnaître le lecteur de carte après un redémarrage. Je n'ai pas encore compris ce qui se passe, mais l'appareil ne semble pas pouvoir énumérer sur le bus PCI. J'ai corrigé cela par démarrage à froid sous Windows (avec le pilote officiel).

J'ai trouvé des tutoriels pour rts5209 et j'ai essayé de les adapter:

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

J'ai pris les sources pour RTS5229 sur le site web de realtek (pilote de lecteur de carte PCIE RTS5229 pour Linux): pas plus de 2 liens dans mon message, les tutoriels semblent plus importants -> google

alors j’ai fait faire un peu plus de modification de code que dans les tutoriels liés de rtcx.c afin de construire sans erreur: commentez la déclaration de proc_info dans la ligne d’initialisation rtsx_Host_template.

(before)
.proc_info = proc_info, 

(after)
//.proc_info = proc_info,

une fois que je me suis débrouillé, j’ai construit le pilote et essayé de l’utiliser, mais le lien entre le pilote et le matériel n’était évidemment pas présent.

Alors j'ai pris le nom de mon appareil et essayer de modifier le code afin d'avoir le bon nom d'appareil. Allez dans les premières lignes (55) de rtsx.h et adaptez la définition du nom de périphérique à votre besoin:

(before)
#define CR_DRIVER_NAME "rts5229"

(after)
#define CR_DRIVER_NAME "rts5227"

Après quoi j'ai modifié la cible du Makefile:

(before)
TARGET_MODULE := rts5229

(after)
TARGET_MODULE := rts5227

après quoi

make clean
make
Sudo make install
Sudo depmod
Sudo modprobe rts5227

vérifiez que votre appareil n'utilise pas le module rtsx_pci (lspci -v) si c'est le cas, vous devez utiliser la méthode Dainaccio pour résoudre ce problème (vers la fin du deuxième tutoriel).

lorsque votre module est correctement chargé, ls/dev devrait vous montrer une nouvelle interface (pour moi/dev/sdb): D

En fait, ce n'est pas vraiment propre. Le problème, c'est qu'il devrait y avoir beaucoup plus de compréhension de la différence entre la version à 2 lecteurs de carte et beaucoup plus de compréhension du pilote pour que tout se passe bien.

Le pilote est fondamentalement fonctionnel, vous pouvez monter/démonter une partition, écrire et lire sur la carte, l’insertion et le retrait sont détectés. Je n'ai pas testé le montage automatique. Quoi qu’il en soit, si lspci -v fonctionne avec le pilote, il vous montrera que cette solution n’est pas propre: la classe des périphériques n’est pas reconnue, alors je pense que les autres valeurs sont importantes. Après un bref aperçu du code, j'ai également vu de nombreuses références codées en dur à rts5229. ils pourraient être du travail à faire ...

quoi qu'il en soit, passez une bonne journée!

~~~~~

2
T. Delizy

Le rtsx_pci en amont gère le lecteur de carte.

Quelque chose ne va pas car j'ai dû décharger puis recharger le pilote pour que cela fonctionne:

# modprobe -r rtsx_pci
# modprobe rtsx_pci

PS: Je n'ai pas encore signalé (ou même vérifié si le problème avait déjà été signalé) en amont. J'espère pouvoir le faire bientôt, mais n'hésitez pas à me battre (l'exigence onyl est d'avoir du matériel reproduisant le bogue).

Ici sur Thinkpad Yoga S1 qui expédie également cet appareil:

# 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
2
Alban Browaeys

c'était le pilote rts_pstor sur mon système Debian. Il a fallu deux cycles rmmod/modprobe pour que cela fonctionne.

1
jcomeau_ictx

J'ai essayé la solution ci-dessus, mais cela n'a pas fonctionné sur mon Lenovo T540p et Linux Mint Mate 14.04 LTS. J'ai étudié les sources du noyau (en-tête) et je n'ai trouvé aucune solution. J'ai donc téléchargé le noyau stable 19.1 à partir de http://www.kernel.org et trouvé dans /usr/src/linux_19.1/drivers/mfd/ un fichier appelé rts5227.c. Ce fichier peut être trouvé à partir de la version 3.9 du noyau.

J'ai décidé de compiler le nouveau noyau incl. l'original .config en utilisant

make oldconfig
make menuconfig

Ensuite, j'ai quitté le menuconfig après avoir enregistré la configuration actuelle et compilé le noyau et les modules:

make

Pour installer des modules:

Sudo make modules_install

Pour installer le nouveau noyau et mettre à jour Grub2

Sudo make install

Lorsque tout est prêt, redémarrez le système (j'ai dû redémarrer deux fois, car le premier redémarrage s'est terminé dans le shell d'initramfs (n'a pas trouvé "dev by uuid"))

Vous devriez maintenant voir votre carte SD insérée dans la fente SD. J'ai une carte PCIe USB 3.0 dans le slot PCIe et cela fonctionne maintenant.

0
Robert Müller