Problemas em ler a saúde SMART do seu HD Externo em Linux? Temos dicas valiosas!
| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. Mais detalhes clicando aqui.
1. Introdução
O Kernel Linux é poderoso e dinâmico, permitindo que você acesse o interior de várias partes do hardware do seu computador. Uma dessas partes é o SMART dos Hard Drive Disks, ou HDD’s – contraído em HD – e Solid State Drives – ou apenas SSD’s – para verificar suas respectivas saúdes.
Para quem utiliza sistemas Ubuntu devem estar familiarizados com o GNOME Disk Utility, ou apenas Disks. Ele pode ser instalado com o comando:
$ sudo apt install gnome-disk-utility
Consulte a sua distribuição mas possivelmente esse programa estará disponível nos repositórios. Em ArchLinux e similares um simples “sudo pacman -S gnome-disk-utility” bastará, enquanto que na família Fedora será com “sudo dnf install gnome-disk-utility”.
A tela é simples e permite acesso a detalhes das mídias de armazenamento com suporte a SMART em seu computador:
Outra forma de ver os dados SMART é com o comando skdump após instalar o pacote libatasmart-bin – Em ArchLinux e similares um simples “sudo pacman -S libatasmart” bastará, enquanto que na família Fedora será com “sudo dnf install libatasmart-bin”. Em Ubuntu é o bom e velho apt install libatasmart-bin.
Para verificar use o comando:
$ sudo skdump /dev/sda
Você também tem acesso aos dados SMART do referido dispositivo de armazenamento:
Até aí, tudo certo!
2. O problema
O assunto desta publicação ocorre quando os usuários tentam acessar um disco Externo como estes:
E vê esse tipo de problema:
O GNOME Disk Utility não exibe a guia Dados do SMART e Autotestes; e mesmo se você utilizar o skdump pelo terminal, a saída será um erro de que o dispositivo não é suportado.
Se você tentou ler o status SMART de algum HDD Externo e se deparou com esse problema, eis o porquê!
3. Explicação
O Linux na maioria das distros utiliza um controlador de USB-SATA que se chama UAS. Ele é fantástico, resolve o problema 99% das vezes. Mas aquele 1%…. É quando o controlador, que não são raros no mercado, é fabricado pela Seagate sob o ID 0bc2. – O problema é mais comum na marca Seagate, mas nada impede que também ocorra em outras marcas.
Em meados de 2017 o Kernel recebeu um patch (detalhes aqui) onde justificaram que o controlador UAS possui muitos problemas quando lida com dispositivos Seagate e por isso não funcionaria mais o acesso ao SMART nem os autotestes. Ele reconhece a mídia porém com limitações.
Isso é no mínimo intrigante porque tanto no Windows 10 ou 11 o UAS e seu respectivo acesso USB-SATA funcionam normalmente.
Conclusão: Usuários Linux que querem ler os dados SMART de um dispositivo de armazenamento externo da marca Seagate ou que possuem um controlador fabricado pela Seagate, estão convidados a trocar de adaptador; ou mesmo a comprar um HD Externo de outras marcas! – Absurdo.
4. Solução
Dica enviada pelo leitor Alexandre C. Leite! Meu muito obrigado!
Instale o pacote smartmontools que provavelmente estará sob o mesmo nome no repositório, no caso de sistemas baseados em Ubuntu o comando completo é:
$ sudo apt install smartmontools
Em ArchLinux e similares um simples “sudo pacman -S smartmontools” bastará, enquanto que na família Fedora será com “sudo dnf install smartmontools”.
E o comando para verificação é:
$ sudo smartctl -d sat -a /dev/sdX
Aonde X é a letra do seu disco USB.
Se por ventura seu dispositivo não foi reconhecido, tente atualizar o banco de dados de leitores de HD externos:
$ sudo update-smart-drivedb
E tente o comando desta forma:
$ sudo smartctl -T permissive -d sat -a /dev/sdX
5. Problemas…
Não reconheceu? Diante de tal situação no mínimo estranha, trago á luz uma solução que funciona para 99% dos casos em que o dispositivo externo não permitir que o SMART seja acessível… E ainda haverão aqueles 1% em que nada poderá ser feito para tal! – Portanto é um método paliativo que não resolve plenamente o problema e não há garantias de que sempre dará certo.
Basta plugar o HDD Externo na porta USB, seja ela 2.0 ou 3.0, dê o comando:
$ lsusb
E anote a ID do dispositivo. No meu exemplo foi:
Bus 001 Device 020: ID 0bc2:231a Seagate RSS LLC Expansion Portable
Copie o código e cole-o, adaptando neste comando:
$ echo “0bc2:231a:u” | sudo tee /sys/module/usb_storage/parameters/quirks
Observe a presença do :u após o código!
Após isso, basta desconectar o dispositivo e reconectá-lo. Ele será reconhecido pelo outro controlador de dispositivos, chamado usb-storage, mais limitado em recursos porém funcional.
Assim, basta abrir o GNOME Disk Utility ou o comando skdump que você terá acesso ao SMART do dispositivo!
Lembrando que isso não é plena garantia. Nos meus testes, de 3 adaptadores SATA-USB externos que possuo, 2 não funcionaram com esse método, porém 1 foi bem sucedido. Inclusive não necessariamente funciona apenas com Seagate, a mesma lógica e comandos valem para problema semelhante em outras marcas e modelos de adaptadores SATA externos!
6. Conclusão
Por mais que o Kernel Linux tenha evoluído seja bem completo com poucos problemas de compatibilidade de hardwares reportados, ainda há casos como este em que inexplicavelmente algo relativamente simples não foi resolvido de uma forma definitiva a anos.
Obviamente o acesso a dados SMART não é algo prioritário e muitos usuários/estudantes de Linux não sentirão falta disso; mas é um empecilho que pessoalmente me rendeu dores de cabeça e que muitos por aí podem ter tido o mesmo problema!
#ZoioTheGreenEye
Fontes:
smartmontools
github
Autodidata, me aprofundei em sistemas operacionais baseados em UNIX®, principalmente Linux. Também procuro trazer assuntos correlacionados direta ou indiretamente, como automação, robótica e embarcados.
Faz uns 4 anos que eu tento acessar o smart de hd externos usb, via Android e até hj não encontrei uma solução kkkk
Infelizmente eu também, nem sempre as soluções apresentadas funcionam e muitos drivers USB ficam sem acesso
Desenterrando mais um post seu, quero deixar registrado aqui que tenho um adaptador igual a esse da foto (primeira foto do íten 2) e utilizo o comando:
sudo smartctl -d sat -a /dev/sdb
Funciona de boas, sem ter que ficar buscando id do dispositivo e adicionando ao /sys/module/usb_storage/parameters/quirks.
Ao menos os HDs que testei, todos funcionaram OK.
Fica a dica!
Bom saber, vou testar aqui esse parametro -d sat
E mais uma dicazinha rápida, ainda nesse tópico:
Utilize o comando “sudo update-smart-drivedb” para atualizar a lista de drives dele, assim aumenta o leque de HDs reconhecidos. Apesar que já é bastante grande e, como falei, até agora, pra mim, reconheceu todos eles.
Se tiver curiosidade, veja a lista no link abaixo:
https://www.smartmontools.org/wiki/Supported_USB-Devices
WOW, vou alterar a publicação e atualiza-la! Merece!