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

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

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

Я использую двойную загрузкуWindows 7иУбунту 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)

решение1

У меня нет вашего оборудования, но были похожие проблемы с 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)

решение2

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

options sdhci debug_quirks=0x40 debug_quirks2=0x4

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

решение3

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

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

Связанный контент