O cartão SD não funciona bem no Ubuntu, mas no Windows

9

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 dmesgem 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 removeantes 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)

fonte
3
Você poderia adicionar alguma informação sobre o hardware? Por exemplo, encontrar o leitor em lspciou lsusbadicionar essas informações à sua pergunta pode ajudar a encontrar outras pessoas com o mesmo problema.
Oli
Que formato o cartão SD possui?
Charles Green
11
Vale a pena conferir: acho que o Ubuntu tem algum problema com o exFat, que é uma variante dos sistemas FAT e FAT32.
Charles Green
Realmente depende de como o dispositivo em questão foi formatado: Desde que você tenha reformatado o dispositivo no Ubuntu, eu teria dificuldade em acreditar que é exFAT
Charles Green
Perdeu a coisa chat - Eu realmente não tenho muito a acrescentar, mas pensei que talvez nós com vista para uma pequena coisa ....
Charles Green

Respostas:

5

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:

  1. Crie um arquivo e escreva esta string nele options sdhci debug_quirks=0x40:

    sudo sh -c 'echo options sdhci debug_quirks=0x40 >> /etc/modprobe.d/sdhci-pci.conf'
    
  2. Agora reinicie ou recarregue o módulo:

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

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 )

G Trawo
fonte
Está funcionando! Consegui recuperar o que estava nele via recortar e colar (embora tudo funcionasse LENTAMENTE ), e atualmente estou formatando o cartão SD. Dedos cruzados!
Recorte e cole tudo de volta em um cartão SD limpo e até adicione quase 1 GB de material que eu gostaria de adicionar. Transferências lentas, mas sem erros de E / S. Um milhão de agradecimentos!
Que bom que funcionou!
G Trawo
Eu tinha que fazer $ sudo setpci -s 00:1c.2 0x50.B=0x41depois disso
Minner
1

Eu enfrentei esse problema no linuxlite. A solução foi criar um arquivo /etc/modprobe.d/sdhci-pci.confcom o conteúdo:

options sdhci debug_quirks=0x40 debug_quirks2=0x4

A opção 0x4diminui a velocidade de ultra-alta para alta velocidade, mas é melhor que o cartão não operável.

Alex Lee
fonte
0

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-ltspara ver os outros pacotes de kernel disponíveis. A última versão que vejo no repositório é linux-generic-lts-wily. Você pode sudo apt-get install linux-generic-lts-wilyreiniciar o novo kernel e testar a unidade SD novamente.

Stephen Nichols
fonte
Isso mudará minha versão do Ubuntu de 14.04 (Trusty) para 15.10 (Wily) ou simplesmente melhorará o kernel?
Somente atualizará o kernel. Sua versão do Ubuntu não será afetada.
Stephen Nichols
Não, mesmo problema. Teve que forçar ejetar, e toda vez que eu forçar ejetar, o cartão nunca será registrado (o Ubuntu tentará lê-lo, mas algo em segundo plano "trava") até eu reiniciar.