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ę dmesg
w 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 remove
przed 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)
lspci
lublsusb
dodanie tej informacji do pytania może pomóc w znalezieniu innych osób z tym samym problemem.Odpowiedzi:
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:
Utwórz plik i zapisz w nim ten ciąg
options sdhci debug_quirks=0x40
:Teraz uruchom ponownie lub ponownie załaduj moduł:
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 )
źródło
$ sudo setpci -s 00:1c.2 0x50.B=0x41
późniejZ tym problemem miałem do czynienia na linuxlite. Rozwiązaniem było utworzenie pliku
/etc/modprobe.d/sdhci-pci.conf
z zawartością:Ta opcja
0x4
zmniejsza prędkość z ultra wysokiej do wysokiej, ale lepiej, żeby nie działała karta.źródło
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-lts
aby 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-wily
a następnie ponownie uruchomić komputer w nowym jądrze i ponownie przetestować dysk SD.źródło