SD 卡在 Ubuntu 下无法正常工作,但在 Windows 下可以正常工作

SD 卡在 Ubuntu 下无法正常工作,但在 Windows 下可以正常工作

我有一台内置读卡器的笔记本电脑。在过去的一年左右的时间里,我一直在处理一个奇怪的问题,这个问题似乎更多地与软件有关,而不是与硬件有关。

我运行了双启动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 卡任何存储大小,并且它将发生在任何传输时,尤其是传输大文件或大量文件时,时间会缩短。我右键单击 Ubuntu 面板上的 SD 卡图标,然后Safely remove在弹出 SD 之前单击,甚至重新格式化 SD,这样它就不会出现错误,但它仍然给我带来问题。我的 USB 闪存驱动器的格式与 SD 卡相同 (FAT32),它们都工作正常。为什么 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=73241http://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

快速谷歌搜索一下您的卡控制器的信息,就会返回其他帖子,这些帖子来自那些指出内核是罪魁祸首的人。我手头没有具体的错误报告可以参考,所以我不能肯定地说上游是否存在修复程序,但有一种简单的方法可以找出它是否可用。安装并启动较新的内核,看看 SD 卡问题是否有所改善。这不会对您的计算机造成任何损害,如果您不需要它,您可以随时将其删除。

运行apt-cache search linux-generic-lts以查看其他可用的内核包。我在存储库中看到的最新版本是 linux-generic-lts-wily。sudo apt-get install linux-generic-lts-wily然后您可以重新启动进入新内核并再次测试 SD 驱动器。

相关内容