Eu possuo um laptop com um leitor de cartão embutido. Nos últimos anos, eu tenho lidado com um problema curioso que parece mais relacionado a software do que hardware.
Executo uma inicialização dupla do Windows 7 e do Ubuntu 14.04 , ambos de 64 bits. No Windows, o cartão SD funciona perfeitamente. É um pouco lento, mas sempre consegue concluir sem erros.
No Ubuntu, ele pára repentinamente e eu recebo essas mensagens quando digito dmesg
em um terminal:
[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
Isso acontece com qualquer cartão SD de qualquer tamanho de armazenamento e a qualquer momento durante a transferência, especialmente com arquivos grandes ou grandes quantidades de arquivos. Cliquei com o botão direito do mouse no ícone do cartão SD no meu painel do Ubuntu e cliquei Safely remove
antes de ejetar o SD, e até reformatei o SD para que ele estivesse livre de erros, mas ainda me causa problemas. Minhas unidades flash USB são formatadas no mesmo formato (FAT32) que o cartão SD e todas funcionam bem. Por que o Windows pode ler / gravar bem no meu cartão e não no Ubuntu?
Saída de lspci
(apenas leitores de cartão):
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
oulsusb
adicionar essas informações à sua pergunta pode ajudar a encontrar outras pessoas com o mesmo problema.Respostas:
Não tenho o seu hardware, mas tive problemas semelhantes com a Broadcom e seus drivers. Muito frustrante. Além disso, pode valer a pena tentar:
Crie um arquivo e escreva esta string nele
options sdhci debug_quirks=0x40
:Agora reinicie ou recarregue o módulo:
O rastreador de bugs mencionou que pode não lhe dar velocidade total, mas vale a pena tentar.
(De https://bugzilla.kernel.org/show_bug.cgi?id=73241 e http://www.linuxtechtips.com/2013/08/sd-mmc-ms-pro-card-reader-not-working. html )
fonte
$ sudo setpci -s 00:1c.2 0x50.B=0x41
depois dissoEu enfrentei esse problema no linuxlite. A solução foi criar um arquivo
/etc/modprobe.d/sdhci-pci.conf
com o conteúdo:A opção
0x4
diminui a velocidade de ultra-alta para alta velocidade, mas é melhor que o cartão não operável.fonte
Algumas pesquisas rápidas no Google para obter informações sobre o controlador da placa retornam outras postagens de pessoas que apontam o kernel como o culpado. Não tenho um relatório de bug específico à mão para fazer referência; portanto, não posso dizer com certeza se a correção existe antes, mas há uma maneira fácil de descobrir se ela está disponível. Instale e inicialize em um kernel mais recente e veja se o problema do cartão SD melhorou. Nenhum dano ocorrerá no seu computador e você poderá removê-lo sempre que não precisar.
Execute
apt-cache search linux-generic-lts
para ver os outros pacotes de kernel disponíveis. A última versão que vejo no repositório é linux-generic-lts-wily. Você podesudo apt-get install linux-generic-lts-wily
reiniciar o novo kernel e testar a unidade SD novamente.fonte