SD-карта не работает хорошо под Ubuntu, но хорошо работает под Windows

9

У меня есть ноутбук со встроенным кард-ридером. В течение прошлого года или около того я справлялся с любопытной проблемой, которая скорее связана с программным обеспечением, чем с аппаратным обеспечением.

Я запускаю двойную загрузку Windows 7 и Ubuntu 14.04 , обе 64-битные. Под Windows SD-карта работает просто отлично. Он работает несколько медленно, но всегда удается завершить без ошибок.

Под Ubuntu он внезапно останавливается, и я получаю эти сообщения, когда набираю dmesgв терминале:

[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

Это происходит с любой SD-картой любого размера, и это происходит в любое время при передаче, особенно с большими файлами или большими объемами файлов. Я щелкнул правой кнопкой мыши значок SD-карты на панели Ubuntu и щелкнул Safely removeперед извлечением SD-карты , и даже переформатировал SD-карту, чтобы она не содержала ошибок, но она все еще вызывает у меня проблемы. Мои USB-накопители отформатированы в том же формате (FAT32), что и SD-карта, и все они работают нормально. Почему Windows может читать / писать на мою карту хорошо, а не Ubuntu?


Вывод lspci(только для карт-ридеров):

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)

источник
3
Не могли бы вы добавить какую-либо информацию об оборудовании? Например, поиск читателя в lspciили lsusbи добавление этой информации в ваш вопрос может помочь найти других людей, которые найдут других людей с такой же проблемой.
Оли
В каком формате на нем SD-карта?
Чарльз Грин
1
Это стоит проверить: я думаю, что в Ubuntu есть некоторые проблемы с exFat, который является вариантом систем FAT и FAT32.
Чарльз Грин
Это действительно зависит от того, как было отформатировано данное устройство: поскольку вы переформатировали устройство в Ubuntu, мне было бы трудно поверить, что это exFAT
Charles Green
Пропустил разговор - мне действительно нечего добавить, но я подумал, что, может быть, мы упускаем из виду небольшую вещь ...
Чарльз Грин

Ответы:

5

У меня нет вашего оборудования, но у меня были похожие проблемы с Broadcom и их драйверами. Очень расстраивает. Кроме того, это может стоить того:

  1. Создайте файл и запишите в него эту строку options sdhci debug_quirks=0x40:

    sudo sh -c 'echo options sdhci debug_quirks=0x40 >> /etc/modprobe.d/sdhci-pci.conf'
    
  2. Теперь перезагрузите или перезагрузите модуль:

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

Баг-трекер упоминал, что он может не дать вам полной скорости, но стоит попробовать.

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

Г Траво
источник
Работает! Мне удалось спасти то, что было в нем, путем вырезания и вставки (хотя все работало МЕДЛЕННО ), и в настоящее время я форматирую SD-карту. Скрещенные пальцы!
Вырежьте и вставьте все обратно на только что вытертую SD-карту, и даже добавили почти 1 ГБ материала, который я хотел добавить. Передачи медленные, но без ошибок ввода-вывода. Миллион спасибо!
Рад, что это сработало!
G Trawo
Я должен был сделать $ sudo setpci -s 00:1c.2 0x50.B=0x41после этого
Миннер
1

Я сталкивался с этой проблемой на linuxlite. Решением было создать файл /etc/modprobe.d/sdhci-pci.confс содержанием:

options sdhci debug_quirks=0x40 debug_quirks2=0x4

Опция 0x4снижает скорость со сверхвысокой скорости до высокой скорости, но это лучше, чем неработающая карта.

Алекс Ли
источник
0

Некоторый быстрый поиск информации о контроллере вашей карты возвращает другие сообщения от людей, указывающих на ядро ​​как на виновника. У меня нет под рукой конкретного отчета об ошибке, поэтому я не могу точно сказать, существует ли исправление в апстриме, но есть простой способ узнать, доступно ли оно. Установите и загрузите более новое ядро ​​и посмотрите, не улучшилась ли проблема с SD-картой. Ваш компьютер не причинит вреда, и вы всегда можете удалить его, если он вам не нужен.

Запустите, apt-cache search linux-generic-ltsчтобы увидеть другие доступные пакеты ядра. Последнее, что я вижу в репозитории - это linux-generic-lts-wily. Вы можете sudo apt-get install linux-generic-lts-wilyперезагрузить новое ядро ​​и снова протестировать SD-диск.

Стивен Николс
источник
Изменит ли это мою версию Ubuntu с 14.04 (Trusty) на 15.10 (Wily) или просто улучшит ядро?
Это только обновит ядро. Ваша версия Ubuntu не изменится.
Стивен Николс
Нет, та же проблема. Пришлось принудительно извлечь, и каждый раз, когда я принудительно извлекаю, карта никогда не будет регистрироваться (Ubuntu будет пытаться прочитать ее, но что-то на заднем плане "зависает"), пока я не перезагрузлю.