Karta SD nie działa dobrze w systemie Ubuntu, ale działa dobrze w systemie Windows

9

Posiadam laptopa z wbudowanym czytnikiem kart. Przez mniej więcej rok miałem do czynienia z ciekawym problemem, który wydaje się bardziej związany z oprogramowaniem niż ze sprzętem.

Korzystam z podwójnego rozruchu systemu Windows 7 i Ubuntu 14.04 , oba w wersji 64-bitowej. W systemie Windows karta SD działa dobrze. Działa nieco wolno, ale zawsze udaje mu się ukończyć bez błędów.

W systemie Ubuntu nagle się zatrzymuje i otrzymuję te wiadomości, gdy piszę dmesgw terminalu:

[12535.092927] mmcblk0: mmc0:b368 SD    1.88 GiB 
[12535.096167]  mmcblk0: p1
[12653.904243] mmc0: Timeout waiting for hardware interrupt.
[12653.904974] mmcblk0: error -110 transferring data, sector 158279, nr 1024, cmd response 0x900, card status 0xc00
[12663.930682] mmc0: Timeout waiting for hardware interrupt.
[12663.930823] end_request: I/O error, dev mmcblk0, sector 158279
[12663.930838] end_request: I/O error, dev mmcblk0, sector 158287
[12663.930845] end_request: I/O error, dev mmcblk0, sector 158295
[12663.930852] end_request: I/O error, dev mmcblk0, sector 158303
[12663.930858] end_request: I/O error, dev mmcblk0, sector 158311
[12663.930864] end_request: I/O error, dev mmcblk0, sector 158319
[12663.930871] end_request: I/O error, dev mmcblk0, sector 158327
[12663.930877] end_request: I/O error, dev mmcblk0, sector 158335
[12663.930883] end_request: I/O error, dev mmcblk0, sector 158343
[12663.930889] end_request: I/O error, dev mmcblk0, sector 158351
[12673.957122] mmc0: Timeout waiting for hardware interrupt.
[12674.002269] mmcblk0: error -110 transferring data, sector 159303, nr 1024, cmd response 0x900, card status 0xc00

Dzieje się tak z każdą kartą SD o dowolnej wielkości i dzieje się to w dowolnym momencie podczas przesyłania, szczególnie w przypadku dużych plików lub dużych ilości plików. Kliknąłem prawym przyciskiem myszy ikonę karty SD w panelu Ubuntu i kliknąłem Safely removeprzed wysunięciem karty SD, a nawet sformatowałem kartę SD, aby była wolna od błędów, ale nadal powoduje problemy. Moje dyski flash USB są sformatowane w tym samym formacie (FAT32) co karta SD i wszystkie działają dobrze. Dlaczego system Windows dobrze odczytuje / zapisuje na mojej karcie, a nie Ubuntu?


Wyjście lspci(tylko czytniki kart):

02:00.0 Ethernet controller: Broadcom Corporation NetLink BCM57785 Gigabit Ethernet PCIe (rev 10)
02:00.1 SD Host controller: Broadcom Corporation BCM57765/57785 SDXC/MMC Card Reader (rev 10)
02:00.2 System peripheral: Broadcom Corporation BCM57765/57785 MS Card Reader (rev 10)
02:00.3 System peripheral: Broadcom Corporation BCM57765/57785 xD-Picture Card Reader (rev 10)

źródło
3
Czy możesz dodać jakieś informacje o sprzęcie? Na przykład znalezienie czytelnika lspcilub lsusbdodanie tej informacji do pytania może pomóc w znalezieniu innych osób z tym samym problemem.
Oli
Jaki format ma na tym karta SD?
Charles Green
1
Warto to sprawdzić: myślę, że Ubuntu ma jakiś problem z exFat, który jest wariantem systemów FAT i FAT32.
Charles Green
To naprawdę zależy od tego, jak sformatowano dane urządzenie: skoro sformatowałeś urządzenie w Ubuntu, nie mogłem uwierzyć, że jest to exFAT
Charles Green
Brakowało mi czatu - naprawdę nie mam wiele do dodania, ale pomyślałem, że może przeoczyliśmy coś małego ...
Charles Green

Odpowiedzi:

5

Nie mam twojego sprzętu, ale miałem podobne problemy z Broadcom i ich sterownikami. Bardzo frustrujące. Poza tym może to być warte wypróbowania:

  1. Utwórz plik i zapisz w nim ten ciąg options sdhci debug_quirks=0x40:

    sudo sh -c 'echo options sdhci debug_quirks=0x40 >> /etc/modprobe.d/sdhci-pci.conf'
    
  2. Teraz uruchom ponownie lub ponownie załaduj moduł:

    sudo modprobe -r sdhci-pci sdhci
    sudo modprobe sdhci-pci
    

Tracker błędów wspomniał, że może nie dać ci pełnej prędkości, ale warto spróbować.

(Od https://bugzilla.kernel.org/show_bug.cgi?id=73241 i http://www.linuxtechtips.com/2013/08/sd-mmc-ms-pro-card-reader-not-working. HTML )

G Trawo
źródło
To działa! Udało mi się uratować to, co było w nim za pomocą wycinania i wklejania (chociaż wszystko działało WOLNO ), a obecnie formatuję kartę SD. Skrzyżowane palce!
Wytnij i wklej wszystko z powrotem na świeżo wyczyszczoną kartę SD, a nawet dodałem prawie 1 GB rzeczy, które chciałem dodać. Przesyłanie przebiega powoli, ale nie występują błędy we / wy. Wielkie dzięki!
Cieszę się, że to zadziałało!
G Trawo
Musiałem to zrobić $ sudo setpci -s 00:1c.2 0x50.B=0x41później
Minner
1

Z tym problemem miałem do czynienia na linuxlite. Rozwiązaniem było utworzenie pliku /etc/modprobe.d/sdhci-pci.confz zawartością:

options sdhci debug_quirks=0x40 debug_quirks2=0x4

Ta opcja 0x4zmniejsza prędkość z ultra wysokiej do wysokiej, ale lepiej, żeby nie działała karta.

Alex Lee
źródło
0

Szybkie wyszukiwanie informacji o kontrolerze kart zwraca inne posty od osób wskazujących na jądro jako winowajcę. Nie mam pod ręką konkretnego raportu o błędzie, więc nie mogę stwierdzić na pewno, czy poprawka istnieje wcześniej, ale istnieje prosty sposób, aby dowiedzieć się, czy jest dostępna. Zainstaluj i uruchom nowsze jądro i sprawdź, czy problem karty SD się poprawił. Komputer nie wyrządzi żadnej szkody i zawsze możesz go usunąć, jeśli go nie potrzebujesz.

Uruchom, apt-cache search linux-generic-ltsaby zobaczyć inne dostępne pakiety jądra. Najnowsze, które widzę w repozytorium, to linux-generic-lts-wily. Możesz, sudo apt-get install linux-generic-lts-wilya następnie ponownie uruchomić komputer w nowym jądrze i ponownie przetestować dysk SD.

Stephen Nichols
źródło
Czy to zmieni moją wersję Ubuntu z 14.04 (Trusty) na 15.10 (Wily), czy po prostu ulepszy jądro?
Uaktualni tylko jądro. Twoja wersja wydania Ubuntu pozostanie niezmieniona.
Stephen Nichols
Nie, ten sam problem. Musiałem wymusić wysunięcie i za każdym razem wymuszam wysunięcie karta nigdy się nie zarejestruje (Ubuntu spróbuje ją odczytać, ale coś w tle „zawiesi się”), dopóki nie uruchomię się ponownie.