USB desativa a proteção contra gravação

USB desativa a proteção contra gravação

Eu tenho um USB protegido contra gravação:

dmesg | tail

[10098.126089] sd 7:0:0:0: [sdb] Write Protect is on
[10098.126098] sd 7:0:0:0: [sdb] Mode Sense: 23 00 80 00
[10098.126779] sd 7:0:0:0: [sdb] No Caching mode page present
[10098.126788] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[10098.131418] sd 7:0:0:0: [sdb] No Caching mode page present
[10098.131425] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[10098.133335]  sdb: sdb1
[10098.135509] sd 7:0:0:0: [sdb] No Caching mode page present
[10098.135515] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[10098.135521] sd 7:0:0:0: [sdb] Attached SCSI removable disk

Como posso desligar a proteção contra gravação?

O que eu tentei

  1. Verificado se possui um switch de hardware - não
  2. Tentei formatá-lo no Windows e no Linux (via terminal também)
  3. Tentei fdisk|chmod
  4. Tentei consertar isso com várias ferramentas do centro de software Ubuntu
  5. Usei o Google e vi cerca de 10.000 discussões sobre esse problema, mas nunca foram resolvidas

Informações adicionais

fsck -n /dev/sdb1

fsck from util-linux 2.19.1
dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN
There are differences between boot sector and its backup.
Differences: (offset:original/backup)
  65:01/00
  Not automatically fixing this.
Free cluster summary wrong (968250 vs. really 911911)
  Auto-correcting.
Leaving file system unchanged.
/dev/sdb1: 50 files, 93653/1005564 clusters

fdisk -l

   Device  boot.   Start        End      Blocks   Id  System
/dev/sdb1            32     8060927     4030448    b  W95 FAT32

umount /dev/sdb1

mkfs -t vfat /dev/sdb1

mkfs.vfat 3.0.9 (31 Jan 2010)
mkfs.vfat: unable to open /dev/sdb1

Responder1

Para desativar a proteção contra gravação do dispositivo de disco, usamos o utilitário de sistema de baixo nível hdparm assim:

sudo apt-get install hdparm    
sudo hdparm -r0 /dev/sdb

onde assumimos que /dev/sdbé o dispositivo de disco físico no qual estamos trabalhando. Se o dispositivo tiver partições montadas como somente leitura, você deverá remontá-las como leitura-gravação para gravar dados nelas.

Espero que ajude.

Responder2

Depois de pesquisar sua pergunta, parece que este é um problema não muito incomum com certas marcas de unidades flash USB (algumas Samsung mais antigas, um modelo Kingston) que basicamente "desapareceriam" sem motivo conhecido. As pessoas tentaram abri-los e saltar dois cabos (talvez de um interruptor instável?) Sem sucesso. Se você ainda tiver esta unidade e ela ainda estiver na garantia, eu a devolverei e substituirei.

Detesto dar-lhe más notícias =\ mas parece que você está sem sorte nesta situação, pois tudo que li aponta para falha de hardware.

Editar 27/05/2016: Tive um problema pessoalmente com uma unidade flash que estourou recentemente. No meu caso, este era um Corsair Flash Voyager 128GB que começou a ficar drasticamente lento para mim. Embora não apresentasse os sintomas observados aqui, ocasionalmente não era montado e aparecia como um dispositivo “Silicon Power”. Isso ocorreu porque a unidade acumulou uma grande quantidade de setores defeituosos e entrou no modo de diagnóstico/programação. Como esta é uma das minhas respostas mais populares e também se enquadra na categoria de "unidades flash com falha", resolvi incluí-la aqui para referência.

Atualização 2: Em relação ao Corsair Flash Voyager, enviei o meu para um RMA, apenas para ver o segundo falhar da mesma maneira. Na verdade, o problema acabou sendo mecânico. O mecanismo deslizante parece colocar uma pequena pressão no PCB. Normalmente, isso não teria causado problemas na vida útil normal do dispositivo. Mas para este modelo em particular, parece ter tido juntas de solda fracas que a pressão da ação deslizante exacerbou - levando à oxidação na junta rachada e eventual falha. Em vez de fazer mais uma RMA, resolvi resolver o problema com minhas próprias mãos. Abri o gabinete, raspei um pouco do invólucro de plástico para dar espaço de manobra ao PCB e, em seguida, refluí o chip NAND para reparar as juntas de solda quebradas. Está funcionando muito bem até hoje!

Responder3

Nenhuma dessas respostas fornecidas até agora está correta.

Para realmente fazer funcionar, você pode substituir a detecção do disco USB anunciando que é somente leitura com uma configuração de peculiaridades do USB. Veja como funciona.

  1. Conecte o dispositivo USB e faça um lsusbexemplo:

    $ lsusb
    Bus 002 Device 012: ID 0781:5583 SanDisk Corp. 
    
  2. Anote esses dois códigos depois IDe entre os dois pontos (eles são chamados de idVendore idProduct). Desconecte o dispositivo USB.

  3. Remova o usb_storagemódulo do kernel (assumindo que esteja compilado como um módulo)

    $ sudo modprobe -r $(lsmod | sed -n 's:,: :g ; s,^usb_storage[ 0-9]*,,p') usb_storage
    
  4. Agora colocaremos o módulo de volta usando uma configuração de modo quirks para substituir a detecção do sinalizador somente gravação do dispositivo.

    Defonte/drivers/usb/storage/usb.c#L572retirado da v4.19, você pode ver que a configuração do modo quirks que procuramos é w. Veja como recarregaremos o módulo do kernel:

    $ sudo modprobe usb_storage quirks=0781:5583:w
    

    Substitua os números entre os dois pontos pelos que você viu na etapa (1) acima.

  5. Conecte o dispositivo de armazenamento USB novamente. Agora podemos confirmar dmesgse funcionou:

    Antes: quebrado apenas gravação

    E depois: trabalhando leitura/gravação

    Além disso, depois de emitir um comando de montagem, você verá:

    /dev/sdb1 on /usb type ext4 (rw,relatime)
    

Agora vá tirar suas coisas desse disco imediatamente, ele está falhando.

Responder4

A resposta de Angel é boa, mas os comandos reais não foram tão fáceis para mim. Isto é o que funcionou: conecte o cartão (o meu é um cartão SD com uma chave manual de proteção contra gravação, mas a chave está desligada e pode ser gravada em uma máquina Windows). O Ubuntu montou-o automaticamente em /media/andrew/6AB0-1FD91, e o dmesg mostrou que a partição era /dev/sdb1.

Desmonte-o e torne-o gravável

sudo umount /dev/sdb1
sudo hdparm -r0 /dev/sdb

Crie um novo ponto de montagem e monte-o lá (meu ID de usuário de /etc/passwd é 1000)

sudo mkdir /media/andrew/temp
sudo mount -o uid=1000 /dev/sdb1 /media/andrew/temp

ainda reclamará que é somente leitura. Não sei por que tive que alterar esse sinalizador antes E depois da montagem, mas foi a única maneira que funcionou para mim. Defina-o como gravável novamente e remonte-o no mesmo lugar

sudo hdparm -r0 /dev/sdb1
sudo mount -o remount,rw /dev/sdb1

Agora posso gravar no disco como meu usuário normal. Estou tomando muito cuidado com isso caso esteja realmente falhando, mas esses comandos me permitiram terminar o que estava fazendo.

informação relacionada