Configurando dispositivos USB

Por:
Configurando dispositivos USB

O suporte a dispositivos USB no Linux é feito em duas camadas. Em primeiro lugar é preciso carregar o módulo do Kernel que dá suporte e em seguida o dispositivo é detectado ou pelo próprio módulo, ou pelo hotplug, um serviço que fica residente e tem a responsabilidade de detectar e ativar novos dispositivos USB assim que eles são plugados no micro.

Por exemplo, para habilitar um scanner USB seria preciso carregar o módulo usb-ohci ou usb-uhci (que ativa a porta USB do micro) e depois o módulo scanner, que habilita o scanner propriamente dito. O hotplug é bastante competente em fazer este tipo de associação.

Na maioria dos casos o sistema de detecção de hardware do Kurumin, aliado ao hotplug é suficiente para detectar os dispositivos USB, mesmo quando eles são plugados com o micro ligado. Mas, em caso de problemas você pode experimentar a configuração manual. Estas instruções são válidas também para outras distribuições Linux.

  • usbcore : Este deve ser o primeiro módulo a ser carregado. Ele habilita o suporte básico e cria a pasta /proc/bus/usb, onde os periféricos USB ficam acessíveis. Para carregar o módulo, use o comando: modprobe usbcore.

Depois que ele estiver ativo, monte a pasta com os dispositivos USB usando o comando:

# mount -t usbfs none /proc/bus/usb

  • usb-ohci : Este módulo ativa o controlador USB, tanto faz se você está usando as portas USB onboard da placa mãe ou se está usando uma placa PCI, elas são vistas da mesma forma pelo sistema. Ele é a segunda peça básica do suporte a USB, você deve carregá-lo depois do usbcore, antes de tentar carregar outros módulos. Use o comando: modproble usb-ohci
  • usb-uhci : Este módulo faz a mesma coisa que o usb-ohci, habilita o controlador USB que você tiver instalado. A diferença é que o usb-ohci dá suporte aos controladores usados pela via e outros fabricantes, enquanto o usb-uhci dá suporte aos controladores USB usados pela Intel. Na dúvida, experimente carregar os dois para ver qual funciona na sua placa. O módulo incorreto não carregará, voltando algumas mensagens de erro. Para carregar: modprobe usb-uhci

Se ambos os módulos retornarem mensagens de erro, do tipo:

/lib/modules/2.4.22-xfs/kernel/drivers/usb/host/usb-uhci.o: init_module: No such device
Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters.
You may find more information in syslog or the output from dmesg
/lib/modules/2.4.22-xfs/kernel/drivers/usb/host/usb-uhci.o: insmod /lib/modules/2.4.22-xfs/kernel/drivers/usb/host/usb-uhci.o failed
/lib/modules/2.4.22-xfs/kernel/drivers/usb/host/usb-uhci.o: insmod usb-uhci failed

Significa que por algum motivo o sistema não foi capaz de de ativar a controladora USB. Isto acontece geralmente devido a problemas de hardware, quando a placa está mal encaixada ou o USB está desativado no setup por exemplo. Verifique tudo e tente novamente. Eventualmente pode aparecer algum novo controlador USB que realmente não seja suportado, mas este tipo de incompatibilidade é geralmente resolvido nas próximas versões do Kernel.

  • usbserial : Este módulo habilita suporte à comunicação com Palms, Pocket PCs (com o Windows CE) e outros dispositivos que transfiram dados através da porta USB usando-a como se fosse uma porta serial. A comunicação com estes dispositivos (do ponto de vista do sistema) é feita de uma forma diferente que seria com um cartão de memória por exemplo. O cartão de memória é visto como se fosse um HD externo, enquanto no caso do Palm a porta USB é usada como substituta para uma porta serial.

O usbserial deve ser carregado depois do usbcore e do usb-ohci ou uhci. Para carregá-lo, use o de sempre: modprobe usbserial

Um dispositivo conectado na primeira porta USB aparece como o dispositivo /dev/ttyUSB0, o ligado à segunda porta aparece como /dev/ttyUSB1 e assim por diante. Configure o Kpilot ou o outro programa de sincronismo que estiver usando para utilizar uma destas portas e tente usar o hotsync.

Se o programa reclamar que não consegue abrir a porta, experimente criar os dispositivos usando os comandos:

# mknod /dev/ttyUSB0 c 188 0
# mknod /dev/ttyUSB1 c 188 1
# mknod /dev/ttyUSB2 c 188 2
# mknod /dev/ttyUSB3 c 188 3

O usbserial funcionava de forma bastante precária até o Kernel 2.4.22 (usado no Kurumin 2.x). O suporte melhorou muito a partir do Kernel 2.4.24 (usando no Kurumin 3.0 em diante). Se você está tendo problemas, experimente usar uma distribuição com uma versão recente do Kernel.

Uma dica é que dependendo da versão do Kernel que estiver sendo usada, a comunicação com o Palm só vai funcionar se você pressionar primeiro o botão de hotsync na base e só depois ativar o sincronismo dentro do programa. Isso acontece por que o dispositivo /dev/ttyUSB1 (ou o que seja) é criado apenas a partir do momento em que existe algum dispositivo conectado na porta. Versões antigas do Kernel não conseguem “perceber” a presença do Palm até que a função de sincronismo seja ativada.

Note que isto é justamente o oposto que você vai ler na documentação dos programas (que sempre dizem que você deve primeiro ativar a opção no programa e só depois apertar o botão de hotsync no Palm, justamente o procedimento que não funciona.)

  • usb-storage : O usb-storage é um protocolo padrão para comunicação entre dispositivos de armazenamento USB. Isto inclui cartões de memória, HDs externos, CD-ROMs e gravadores USB, etc. Depois de carregar o módulo com o comando “modprobe usb-storage” o devfs criará os pontos de montagem necessários. Veja mais detalhes sobre como acessar cada tipo de dispositivo mais adiante.
  • hid : Este módulo habilita suporte a vários tipos de periféricos USB, como joysticks, mouses, mesas de digitalização e outros dispositivos do gênero. Este módulo serve também para algumas coisas não diretamente relacionadas, ele dá suporte a alguns no-breaks inteligentes que usam a porta USB como meio de comunicação por exemplo. Para habilitá-lo: modprobe hid

Os dispositivos criados são: /dev/usb/hiddev0 (para algo conectado na primeira porta USB), /dev/usb/hiddev1 (para a segunda porta) e assim por diante.

Caso os dispositivos não sejam criados automaticamente, use os comandos:

# mknod /dev/usb/hiddev0 c 180 96
# mknod /dev/usb/hiddev1 c 180 97
# mknod /dev/usb/hiddev2 c 180 98
# mknod /dev/usb/hiddev3 c 180 99
# mknod /dev/usb/hiddev4 c 180 100
  • usbkbd : Dá suporte a teclados USB. Em geral estes teclados são detectados durante o boot pelo hotplug e ativados a tempo de serem usados na tela de login, mas em alguns casos você pode querer plugar o teclado com o micro ligado (num notebook por exemplo) e vai querer que ele funcione imediatamente. Caso o hotplug não dê conta do recado sozinho, carregue os módulos usbcore, usb-ohci (ou uhci) e em seguida o usbkbd (modprobe usbkbd). O teclado deve começar a funcionar imediatamente.
  • usbnet : Apesar de caras e difíceis de encontrar, existem algumas “placas” de rede USB. Este módulo dá suporte a alguns modelos.

Como acessar cartões de memória, câmeras, CD-ROMs e gravadores USB

Hoje em dia a maior parte dos dispositivos de armazenamento USB, como cartões de memória, câmeras e também CD-ROMs USB são compatíveis com um protocolo padrão, o USB-Storage. Não são necessários drivers separados para cada modelo.

A detecção é feita pelo hotplug, um serviço de sistema que fica habilitado por padrão em quase todas as distribuições atuais, até mesmo no Slackware, a partir da versão 9.1.

A tarefa dele é detectar novos dispositivos USB ou PCMCIA assim que são plugados, carregando os módulos apropriados. Não é preciso plugar os dispositivos antes de ligar o micro, eles são detectados “on the fly”, poucos segundos depois de serem ligados. Isto é geralmente suficiente para colocar o dispositivo para funcionar, mais ainda fica faltando o ultimo passo que é montá-lo, para finalmente acessar os dados.

Muitas distribuições, como o Mandrake 9.2 em diante incluem utilitários que cuidam desta última milha, detectando o dispositivo e criando um ícone para ele no desktop. O Kurumin consegue detectar CD-ROMS e gravadores USB e inclui ícones mágicos para acessar cartões de memória, câmeras e HDs USB.

Mas, o objetivo deste artigo é ensiná-lo a acessar estes dispositivos manualmente, quando as ferramentas de detecção automáticas falharem, para que você possa entender os passos envolvidos no processo de ativação, então vamos lá 🙂

Os memory-keys, cartões de memória ligados através da porta USB e HDs USB são detectados pelo sistema como se fossem dispositivos SCSI. A localização mais comum é /dev/sda. Se por acaso você tiver mais de um, o segundo será detectado como /dev/sdb. Existem no mercado vários formatos de cartões de memória, como os compact flash, memory stick e smart media. Existem vários tipos de adaptadores, tanto USB quanto PCMCIA para ligá-los no PC. Usando estes adaptadores, o cartão de memória é reconhecido da mesma forma que um memory-key.

gdh1
Para todos os efeitos, os memory-keys e cartões de memória são vistos como se fossem HDs externos. Eles são inclusive particionados. Se você rodar o comando “cfdisk /dev/sda” (ou abrir o /dev/sda em outro particionador de sua preferência) vai ver as partições:

gdh2
O padrão é que eles venham de fábrica com uma única partição FAT 16, usada pelos fabricantes por ter pouco overhead e ser compatível com todas as versões do Windows e Linux. Mas, é possível dividir em várias particoes e até mesmo usar outros sistemas de arquivos.

Caso exista uma única partição ela aparece sempre como /dev/sda1, você precisa apenas montá-la em uma pasta qualquer para acessar os arquivos, como em:

# mkdir /mnt/usb

(para criar a pasta)

# mount /dev/sda1 /mnt/usb

(para montar)

Depois é só abrir o gerenciador de arquivos para visualizar os arquivos através da pasta. Ele será sempre montado com permissão de escrita, mas dependendo da distribuição você pode precisar primeiro acessar a pasta como root e alterar as permissões de acesso para que seu login de usuário passa ter acesso completo. Para abrir o konqueror como root, use o comando: kdesu konqueror

Caso você esteja usando um adaptador PCMCIA para acessar o cartão ele será detectado pelo sistema como um disco IDE e não SCSI. Neste caso o dispositivo será /dev/hde1 e você poderá acessá-lo com o comando:

# mount /dev/hde1 /mnt/usb

A maioria das câmeras digitais vendidas hoje em dia também sao compatíveis com o USB Stograge e graças a isso são acessadas da mesma forma que os cartões de memória.

Você precisa apenas “montar” a câmera para ter acesso às fotos armazenadas no cartão de memória. A partir daí você pode baixar as fotos, deletá-las ou até mesmo usar a câmera como meio de transporte para outros tipos de arquivos, como se fosse uma memory key USB.

Para isso basta rodar os comandos:

# mkdir /mnt/camera

(cria a pasta)

# mount /dev/sda1 /mnt/camera

(monta)

Na hora de desplugar o cabo, rode um:

# umount /mnt/camera

Para ter certeza que o sistema atualizou corretamente os arquivos no cartão.

Para câmeras que não são compatíveis com este sistema ainda resta o libgphoto, usado através de programas como o gtkan e o baixar-fotos do Kurumin. Ele é um conjunto de drivers para vários modelos de câmeras, principalmente modelos antigos. Você pode ler um pouco mais sobre ele aqui:

https://www.hardware.com.br/analises/analise-kodak/

Os CD-ROMs USB também são detectados como dispositivos SCSI, mas o dispositivo criado pelo sistema é diferente.

Caso você tenha apenas o CD-ROM USB ele será sempre o /dev/sr0, caso você tenha também um gravador IDE então o gravador IDE será o /dev/sr0 e o USB será o /dev/sr1

Para acessar usamos novamente o bom e velho mount, como em:

# mkdir /mnt/cdrom1

(cria a pasta)

# mount /dev/sr0 /mnt/cdrom1

(monta)

Antes de trocar o CD ou desplugar o memory key você deve primeiro desmontar a pasta, como em:

# umount /dev/usb
# umount /dev/cdrom1

Para checar se o gravador USB foi reconhecido, rode o comando:

# cdrecord -scanbus

Ele mostra a lista dos gravadores disponíveis, como em:

scsibus0:
0,0,0 0) ‘MATSHITA’ ‘UJDA750 DVD/CDRW’ ‘1.51’ Removable CD-ROM
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *

scsibus1:
1,0,0 100) ‘IMATION ‘ ‘RIPGO! ‘ ‘1.08’ Removable CD-ROM
1,1,0 101) *
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) *
1,6,0 106) *
1,7,0 107) *

Neste caso tenho dois gravadores. Um IDE que foi reconhecido pelo sistema como o dispositivo “0,0,0” e um RipGo, um gravador USB que apareceu como unidade “1,0,0”. Isto indica que ele está pronto para ser usado.

Caso o gravador não tenha sido reconhecido automáticamente, você pode experimentar carregar os módulos e restartar o hotplug manualmente, usando os comandos:

# /etc/init.d/hotplug stop
# modprobe usbcore
# modprobe usb-storage
# /etc/init.d/hotplug start

A partir do momento em que o gravador aparece na lista do cdrecord -scanbus, ele já estará disponivel no programa de gravação, seja o K3B ou o xcdroast. Algumas versões antigas do K3B tinham problemas para conversar com alguns gravadores USB, mas as atuais estão bem melhores neste quesito.

gdh3
Em último caso, caso o programa realmente não consiga encontrar o gravador, mesmo após este ter sido ativado pelo sistema, você pode ainda gravar o CD manualmente, usando o CD record, como em:

# cdrecord speed=4 dev=1,0,0 -data kurumin.iso

(onde o dev=1,0,0 é o código de identificação do dispositivo no cdrecord -scanbus e o 4 é a velocidade de gravação)

Este comando serve para gravar um arquivo ISO já previamente criado. Você pode criar o ISO usando o K3B, basta criar uma nova seção para gravar um CD de dados e na hora de gravar marcar a opção “somente criar imagem”.

Lembre-se que os gravadores USB 1.x estão limitados a 4X por causa da interface. Você pode arriscar gravar a 6X, mas este é o limite extremo. É possivel gravar em velocidades mais altas apenas em gravadores que usam portas USB 2.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X