Como extrair informações sobre as portas USB no Linux

O GNU/Linux tem várias opções de comandos para obter as mais variadas e detalhadas informações sobre o seu hardware.
Estes comandos e funções são importantes em várias situações, inclusive para montar scripts de instalação que se adaptem às especifidades do hardware.
Neste texto, procuro responder também uma questão que me foi feita, tempos atrás, sobre como determinar a potência em miliamperes das portas USB de um notebook ou como determinar o consumo atual de um dispositivo.
Para responder a esta e outras questões, listei uma série de comandos que você pode dar no terminal para obter dados sobre as portas USB.
Obviamente, há várias outras formas eficientes para obter tais informações no Linux. Estas são apenas algumas.
Se você tem preferência por algum outro método, sinta-se à vontade para explicá-lo na seção de comentários.

O comando lsusb

O primeiro comando que vamos abordar é um que foi feito para resolver este problema.
Ele pode oferecer mais informações se for executado com privilégios administrativos.
Na sua forma básica, ele oferece informações sobre as portas e sobre os firmwares dos dispositivos conectados.


lsusb 

Bus 004 Device 003: ID 8087:07da Intel Corp. 
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 003: ID 2232:1035  
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Para obter uma riqueza maior de detalhes, use a opção ‘-v’ ou ‘–verbose’:


sudo lsusb --verbose

Use o comando grep para filtrar as informações a um determinado dispositivo.
No exemplo abaixo, segue as informações referentes ao dongle USB do teclado/mouse:


sudo lsusb --verbose | grep -i Dell

Bus 001 Device 003: ID 413c:2501 Dell Computer Corp. 
  idVendor           0x413c Dell Computer Corp.
  iManufacturer           1 Dell
  iProduct                2 Dell KM632 Wireless Keyboard and Mouse

Se você conectar um smartphone ao USB, pode usar o mesmo artifício para encontrar informações sobre ele:


sudo lsusb --verbose | grep -i moto

Bus 001 Device 005: ID 22b8:2e83 Motorola PCS 
  idVendor           0x22b8 Motorola PCS
  iManufacturer           1 motorola
  iProduct                2 MotoG3

Note, no exemplo acima, a primeira linha traz informações sobre o Bus e o número do Device. Veja como exibir informações completas sobre este dispositivo especificamente:


sudo lsusb -v -s 001:005

Bus 001 Device 005: ID 22b8:2e83 Motorola PCS 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x22b8 Motorola PCS
  idProduct          0x2e83 
  bcdDevice           ff.ff
  iManufacturer           1 motorola
  iProduct                2 MotoG3
  iSerial                 3 0016903665
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           39
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass         6 Imaging
      bInterfaceSubClass      1 Still Image Capture
      bInterfaceProtocol      1 Picture Transfer Protocol (PIMA 15470)
      iInterface              5 PTP
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x001c  1x 28 bytes
        bInterval               6
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0000
  (Bus Powered)

Note que, na linha 26, em destaque na listagem acima, encontra-se a informação sobre a capacidade máxima de energização desta porta USB: 500mA.

Como determinar o consumo de energia de um dispositivo USB com o comando lsusb

Uma outra forma de responder especificamente a esta questão é filtrar os resultados do comando com o egrep (o grep também pode ser usado).
Veja um exemplo:


sudo lsusb -v | egrep "^Bus|MaxPower"

### repare no consumo (em miliamperes) dos 3 dispositivos conectados ao meu notebook: HD externo, smartphone Samsung Galaxy ACE II e um dongle para teclado e mouse.
Bus 004 Device 003: ID 8087:07da Intel Corp. 
    MaxPower                0mA
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    MaxPower                0mA
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    MaxPower                0mA
Bus 003 Device 003: ID 2232:1035  
    MaxPower              500mA
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    MaxPower                0mA
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    MaxPower                0mA
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    MaxPower                0mA
Bus 001 Device 034: ID 152d:2509 JMicron Technology Corp. / JMicron USA Technology Corp. JMS539 SuperSpeed SATA II 3.0G Bridge
    MaxPower                2mA
Bus 001 Device 036: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II], GT-I9300 Phone [Galaxy S III], GT-P7500 [Galaxy Tab 10.1]
    MaxPower              500mA
Bus 001 Device 028: ID 413c:2501 Dell Computer Corp. 
    MaxPower              100mA
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    MaxPower                0mA

O comando usb-devices

Você pode usar o comando usb-devices, combinado ao grep, para obter informações mais compactas sobre o dispositivo Motorola (no meu caso):


usb-devices | grep -A 5 -i motorola

### Como você pode ver, esta é uma forma de obter fácil o número de série de um smartphone:

S:  Manufacturer=motorola
S:  Product=MotoG3
S:  SerialNumber=0016903665
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=00 Driver=(none)

Como obter informações com o usbview

O aplicativo gráfico usbview fornece as informações sobre as portas USB e os dispositivos conectados, organizadas em árvore.
Pode ser uma opção interessante para quem não se dá muito bem com a linha de comando. Veja a figura.
Informações sobre o motorola moto g3

Monitoramento das portas USB

O comando udevadm pode ser usado para manter um monitoramento constante das portas USB no seu sistema.
Sempre que houver uma ocorrência, ela será mostrada na tela.


udevadm monitor path /dev/usb/hiddev0

### No exemplo, abaixo, a saída do udevadm ao conectar um drive USB:

KERNEL[13527.084590] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4 (usb)
KERNEL[13527.084830] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0 (usb)
KERNEL[13527.085322] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/host7 (scsi)
KERNEL[13527.085411] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/host7/scsi_host/host7 (scsi_host)
UDEV  [13527.089506] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4 (usb)
UDEV  [13527.095055] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0 (usb)
UDEV  [13527.098276] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/host7 (scsi)
UDEV  [13527.098351] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/host7/scsi_host/host7 (scsi_host)

...

O udev é o gerenciamento dinâmico de dispositivos do Linux.
Ele supre os softwares do sistema com informações sobre eventos, cuida das permissões dos nós dos dispositivos e pode criar symlinks adicionais ao diretório /dev.
(Manual do udev)

udev – Linux dynamic device management
O daemon do udev, o systemd-udevd.service, recebe os uevents dos dispositivos diretamente do kernel, a cada vez que um é adicionado ou removido no sistema, ou quando seu estado se altera.

O comando dmesg

Por último e não menos importante, o comando dmesg também pode ser usado para buscar informações sobre as portas e dispositivos USB no seu sistema:


dmesg | grep USB

Como sempre, se você souber o que estão procurando, o uso do comando grep ajuda a filtrar as informações, para obter apenas o que te interessa.
Divirta-se!

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Como obter informações sobre seu HD USB externo.

Dentro da caixa do seu HD (disco rígido) externo, há um HD comum. É quase sempre possível obter informações detalhadas sobre o dispositivo USB, sem precisar abrir o invólucro de plástico.
Neste post, vou mostrar como obter a maior quantidade possível de informações sobre o dispositivo, da linha de comando do Linux — portanto, sem precisar “encostar a mão” no HD.
Se você não se interessa muito pelos detalhes técnicos ou em executar comandos pelo terminal, pode pular direto para a última sessão deste post.
Foto parcial do HD externo USB WD Elements

  • Se você ainda não usa o Linux, pode instalar o sistema operacional em um pendrive para realizar esta e muitas outras atividades — quem trabalha com suporte técnico tem uma grande vantagem ao ter uma distro livre de vírus sempre à mão (em um pendrive ou em um DVD/CD).

Como obter informações com lsusb

Se o seu dispositivo de armazenamento externo está conectado via USB, um dos primeiros comandos indicados é o lsusb.
Com os parâmetros certos, é possível obter uma lista completa das especificações do drive.
Comece entrando com o comando para obter informações genéricas sobre as conexões USB:

lsusb

Abaixo, realcei a linha em que se encontra o Bus ao qual o meu HD externo se encontra conectado. Veja que cada dispositivo tem uma ID associada.

Bus 001 Device 006: ID 058f:6331 Alcor Micro Corp. SD/MMC/MS Card Reader
Bus 001 Device 004: ID 0ac8:3420 Z-Star Microelectronics Corp. Venus USB2.0 Camera
Bus 001 Device 046: ID 04f3:0234 Elan Microelectronics Corp. 
Bus 001 Device 045: ID 0b38:0010 Gear Head 107-Key Keyboard
Bus 001 Device 044: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 002: ID 1058:1048 Western Digital Technologies, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Com o parâmetro -v, é possível obter informações muito mais detalhadas. Experimente:

lsusb -v 

Nas distros baseadas no Ubuntu e no Debian, você pode obter informações mais detalhadas, ainda, se executar o comando com privilégios administrativos:

sudo lshusb -v

Finalmente, vou propor que você filtre as informações para ver apenas o que importa neste momento — as informações sobre o drive externo USB Western Digital (no meu caso específico).
Para isto, preciso informar a ID do dispositivo (reveja a primeira listagem). Veja, como fica pra mim:

sudo lsusb -v -d 1058:1048

Entre as informações obtidas, você poderá ver as velocidades que o dispositivo pode alcançar:

...

wSpeedsSupported   0x000e
      Device can operate at Full Speed (12Mbps)
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport   1
      Lowest fully-functional device speed is Full Speed (12Mbps)
...

A velocidade atual do dispositivo está limitada pela versão da porta USB a que ele se encontra conectado.
O comando lsusb tem um artigo somente para ele, caso você queira tirar mais algumas dúvidas.

Obtenha mais informações com o hdparm

O programa hdparm pode ser usado para obter informações sobre vários tipos de dispositivos de armazenamento e alterar configurações importantes neles.

disco rígido western digital desktop black edition
Saiba como melhorar a performance do seu disco rígido com o hdparm.

Para obter informações detalhadas sobre o dispositivo use a opção -I em conjunto com o comando hdparm:

sudo hdparm -I /dev/sdb

Altere, no comando acima, a localização do seu HD, caso ele não se encontre em /dev/sdb. O comando mount pode ajudar a determinar a localização exata do seu disco.

Western Digital hard disk drive
3 formas de verificar o desempenho do HD, no Linux.

O que realmente tem dentro da caixinha do HD externo USB

Foto parcial dos discos em um Seagate Barracuda.
Controle a temperatura do seu HD com o HDDTEMP.
Se você tem esta curiosidade, sugiro procurar no Youtube por “external HD disassemble” (desmontagem de HD externo).
Para adiantar, há um HD comum, como qualquer outro.
O que pode diferir é a porta de comunicação entre o dispositivo e o PC:

  • Em alguns casos, a porta é USB, conectada por uma peça encaixada ou aparafusada ao conector SATA do HD.
  • Há outros casos em que a peça de encaixe é soldada ou integrada de outra forma irreversível ao HD. O dispositivo fica inútil sem ela.

Você vai precisar a abrir a caixa para saber.
Se quiser saber mais o assunto, leia o artigo Como desmontar o HD externo.

HD Western Digital
Clique, para ver detalhes.

Quando a peça adaptadora USB/SATA se encontra soldada ao dispositivo, não será possível reaproveitar o disco em seu notebook, se você tiver esta intenção.
Há casos em que a altura do HD, bloqueia seu encaixe dentro do notebook, impossibilitando seu uso nesta situação — mas não no desktop.

Como montar um drive pelo nome do volume (label)

A cada vez que você monta um dispositivo de armazenamento externo, é comum ele ser referenciado, no Linux, em locais diferentes.
Um pendrive, hoje, pode estar em /dev/sdc e amanhã em /dev/sdb.
flash memory icon
Mas, e se você tem um script ou aplicativo que precisa saber exatamente onde encontrar os seus dados, sempre?
Se o nome deste dispositivo de armazenamento se mantiver sempre único e sem mudanças, é possível se referir a ele, no Linux.
O comando mount permite montar qualquer dispositivo a partir do seu nome de volume (disk volume label).



Se você ainda não configurou o nome do volume do seu dispositivo, pode usar o comando e2label, para isto.
Veja um exemplo de como mostrar o nome do volume atual:

e2label /dev/sdd3
musicas

Para alterar o nome do volume do seu dispositivo de armazenamento externo, use este exemplo:

e2label /dev/sdd3 novo_nome

Como montar um drive pelo seu nome de volume

No exemplo que segue, vou montar um drive externo, cujo nome de volume é “Fotos”, na minha pasta de usuário, com o nome de “Camera”.

mount -L fotos /home/Imagens/Camera

Vamos ver um outro exemplo.
Se quiser montar um HD externo, com o nome de volume “Documentos” em “/media/usb”, faça o seguinte:

mkdir -p /media/usb
mount -L Documentos /media/usb

Configure o fstab

Opcionalmente, você pode pode posicionar a requisição para montar o seu dispositivo dentro do arquivo /etc/fstab.
Ao fazer isto, você irá garantir que ele seja montado automaticamente a cada vez que o sistema for iniciado.
Adicione a seguinte linha ao arquivo /etc/fstab (com os devidos ajustes, para que se adequem à sua realidade):

LABEL=Documentos     /media/usb    ext4   defaults 0 0

Espero que isto resolva.

Referências

Como criar um pendrive com Linux, usando o UNetbootin

O UNetbootin baixa e instala automaticamente o Linux em um drive USB ou uma partição do seu HD à sua escolha.
O aplicativo, desenvolvido em C++, por Geza Kovacs, tem versões para rodar em Windows, Mac e Linux e permite criar dezenas de distribuições Linux live e mais alguns aplicativos em um dispositivo de armazenamento USB.
flash memory icon
Se você usa Windows ou Mac OS, baixe o UNetbootin direto do site oficial, cujo link está ao final deste artigo.
Usuários Linux, podem seguir as instruções do próximo tópico.
Já escrevi antes sobre como instalar Linux em um pendrive, com duas excelentes ferramentas:

Neste artigo, vou mostrar como realizar esta tarefa com o aplicativo UNetbootin, que tem uma vantagem interessante:

  • O programa fornece uma lista com várias distribuições Linux, entre as mais usadas, com opções de várias versões e baixa a imagem daquela que você escolher.
    Isto facilita bastante a tarefa para iniciantes.

Como baixar e instalar o UNetbootin no Linux

No Debian e nas distros derivadas (como o Ubuntu, Linux Mint etc), é possível instalar com o apt-get ou aptitude:

sudo apt-get install UNetbootin

No Fedora, é possível baixar com o yum:

yum install unetbootin

Ao final desta página, há uma relação de links para páginas de downloads específicos para algumas distribuições Linux.

Como usar o UNetbootin

O aplicativo precisa de privilégios administrativos, em alguns sistemas (Debian, por exemplo), para gravar a imagem no pendrive.
Por isto, ele pode pedir a senha de administrador (root) para dar início ao processo.
captura de tela do gksu.
Na tela inicial do UNetbootin, escolha o sabor do Linux desejado — eu contei mais de 40 disponíveis.

captura de tela do aplicativo UNetbootin
Clique, para ver detalhes.

A tela seguinte, permite escolher uma das versões disponíveis do “sabor” Linux desejado.
A quantidade de opções, na lista, vai variar de acordo com a distribuição escolhida.
captura de tela do aplicativo UNetbootin exibindo a lista de versões disponíveis da distribuição Linux escolhida.
Clique, para ver detalhes.

Veja, ao final do artigo, alguns links úteis para sites de onde você pode encontrar e baixar a imagem Linux ideal para você — no caso de você querer uma que não esteja listada.
A seguir, escolha o local (pendrive) onde você deseja que a sua distro seja instalada.
Se a distro escolhida for Ubuntu, ou derivada deste, indique o espaço reservado para armazenar dados — isto pode ser importante, se você pretende usar o Linux a partir do seu pendrive (muita gente faz isto, quando vai a uma lan house, cibercafé ou usar o computador de outras pessoas, para preservar sua privacidade).

O processo de instalação do Linux no pendrive

O processo vai ocorrer em 4 passos — e não precisa da intervenção do usuário.
Dependendo da sua conexão, pode ser um pouco lento fazer o download da imagem Linux pedida.
Em seguida, o aplicativo vai extrair e preparar os arquivos para gravação no dispositivo USB — ou qualquer outro que você tenha especificado, na tela inicial.
No terceiro passo, o UNetbootin faz a instalação na mídia USB.
Enfim, basta reiniciar o computador no qual você vai usar o seu novo Linux.

captura de tela do aplicativo unetbootin fazendo download do xubuntu
Clique para ver detalhes.

Recomendações finais

Você pode obter um funcionamento melhor do UNetbootin, se inserir e montar o drive USB ou o cartão de memória, antes de iniciar o aplicativo.
Se você não encontrar a distro e a versão desejada, ainda é possível usar o UNetbootin, para gravar a imagem desejada — mas você vai ter que baixar a imagem que você quer, antes.
Usuários mais avançados, podem usar opções de linha de comando, para executar fazer o aplicativo ir direto ao ponto desejado.
Para exemplificar, se você já baixou uma imagem, pode indicar sua localização antecipadamente assim:

unetbootin method=diskimage isofile="/home/justincase/Downloads/Ubuntu14.04.01.iso"

LEIA TAMBÉM

Referências e links para downloads:

Como instalar Ubuntu em um pendrive via Windows

Ter o Ubuntu instalado em um pendrive, pronto para uso, pode ser de grande utilidade para proteger sua privacidade ao usar computadores de terceiros (na casa de um amigo, no cibercafé etc).
Há vários métodos e aplicativos disponíveis para realizar esta tarefa.
Neste texto, vou mostrar como instalar o Ubuntu (ou qualquer outra distribuição Linux) em um pendrive, com o aplicativo Universal USB Installer, ou UUI.
A minha recomendação, contudo, permanece sendo instalar o Linux em um pendrive, a partir de outra máquina Ubuntu. Se você tiver algum amigo que use Ubuntu, esta será uma tarefa muito mais fácil de realizar.
Usuários do Mac, podem usar o UNetbootin, também bastante simples.

O que você precisa ter

Para quem precisa fazer a instalação a partir de uma máquina Windows, será necessário ter um pendrive com, pelo menos, 2Gb de espaço livre. Ele deve estar formatado com os sistemas de arquivo Fat16, Fat32 ou NTFS. O seu PC ou notebook tem que ter suporte a dar boot via USB.
ubuntu install usb
Você vai precisar fazer o download destes itens:

  • Ubuntu — escolha neste site a versão que se adéqua às suas necessidades e clique em Iniciar download
  • UUI – Universal USB Installer — clique no link para baixar o Instalador Universal USB e execute-o no seu sistema

Havendo alguma dificuldade para baixar o UUI, vá até a página do PendriveLinux (em inglês) para baixar a mais nova versão e tirar alguma dúvida.

Preparando o pendrive

Depois de baixar o Ubuntu e instalar o UUI no seu sistema, execute o instalador.
Dentro do programa instalador selecione a distro Linux que você escolheu. Em seguida, indique onde se encontra o arquivo imagem (ISO) correspondente a ela.
create-usb-windows-2-12.10
Se o seu pendrive já se encontra conectado e reconhecido pelo sistema, você pode selecioná-lo. Depois, prossiga, clicando no botão “Create“.

LEIA MAIS
  • Instale qualquer Linux em um pendrive — o aplicativo UNetbootin, disponível para Windows, Mac e Linux, permite escolher uma entre dezenas de distribuições. Ele baixa e instala tudo pra você
  • Qual Ubuntu escolher — as dicas deste artigo, vão funcionar para outras distribuições Linux. Mas, se você optou pelo Ubuntu, conheça as diferenças entre as versões e qual pode ser mais interessante para você
  • O que fazer depois de instalar o Ubuntu — veja 10 dicas sobre o que fazer, logo depois de instalar o Ubuntu

Isto é o suficiente para iniciar o processo de instalação, que pode demorar alguns minutos.
Quando terminar, reinicie o computador, com o pendrive ainda conectado. Não esqueça de indicar na BIOS do seu sistema que deseja iniciá-lo pelo pendrive.
Divirta-se!