
我擁有一台內建讀卡機的筆記型電腦。在過去的一年左右的時間裡,我一直在處理一個奇怪的問題,這個問題似乎與軟體相關,而不是與硬體相關。
我運行雙啟動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 卡的任何存儲大小,並且它將發生在任何傳輸時的時間,尤其是大檔案或大量檔案。我右鍵單擊 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 及其驅動程式有類似的問題。非常令人沮喪。除此之外,這可能值得一試:
建立一個檔案並將此字串寫入其中
options sdhci debug_quirks=0x40
:sudo sh -c 'echo options sdhci debug_quirks=0x40 >> /etc/modprobe.d/sdhci-pci.conf'
現在重新啟動,或重新載入模組:
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
快速谷歌搜尋有關卡控制器的資訊會返回其他人指出核心是罪魁禍首的帖子。我手頭上沒有具體的錯誤報告可供參考,因此我無法確定上游是否存在修復程序,但有一種簡單的方法可以找出它是否可用。安裝並啟動到更新的內核,看看 SD 卡問題是否有所改善。不會對您的電腦造成任何損害,如果不需要,您可以隨時將其刪除。
運行apt-cache search linux-generic-lts
以查看其他可用的核心包。我在儲存庫中看到的最新版本是 linux-generic-lts-wily。您可以sudo apt-get install linux-generic-lts-wily
重新啟動到新核心並再次測試 SD 磁碟機。