Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

sexta-feira, 25 de fevereiro de 2011

USB a evolução

Introdução

Graças à sua grande flexibilidade, o USB é de longe o barramento externo mais usado atualmente. Além de ser usado para a conexão de todo o tipo de dispositivos, ele fornece uma pequena quantidade de energia, permitindo que os conectores USB sejam usados também por carregadores e todo o tipo de utilidades e bugigangas, incluindo luzes, ventiladores, aquecedores de xícaras de café, brinquedos, etc. Existem até mesmo pequenos "refrigeradores USB", que usam um pequeno peltier para manter uma lata de refrigerante a uma temperatura ligeiramente mais baixa que a ambiente.
53336eee


10932edd

Existem três padrões USB: o padrão 1.x (o padrão original, criado em 1996), o USB 2.0 (o padrão mais usado atualmente, introduzido em abril de 2000) e o novo padrão USB 3.0 (finalizado em novembro de 2008) que está ainda em processo de popularização.
No USB 1.x, as portas transmitem a apenas 12 megabits (o que é pouco para HDs, pendrives, drives de CD, placas wireless e outros periféricos rápidos), mas no USB 2.0 a velocidade foi ampliada para 480 megabits (ou 60 MB/s), suficiente para a maioria dos dispositivos.
Existem quatro tipos de conectores USB, o USB tipo A, que é o mais comum, usado por pendrives e topo tipo de dispositivo conectado ao PC, o USB tipo B, que é o conector "quadrado" usado em impressoras e outros periféricos, além do USB-mini (ou mini-5P) e do USB-micro, dois formatos menores, que são utilizados por câmeras, smartphones, players de áudio e outros gadgets.
27576bac

6e237e6f

Os quatro tipos utilizam a mesma pinagem, o único diferencial é mesmo o formato físico. Existem ainda alguns formatos de conectores proprietários, geralmente versões levemente modificadas de um destes quatro formatos. Por serem intercompatíveis, é relativamente fácil encontrar adaptadores diversos para permitir encaixar cabos com conectores de formatos diferentes:
67a5b903
Existem ainda adaptadores USB para portas seriais, portas paralelas, rede (com um conector RJ45) e até mesmo para saídas VGA, mas eles incluem circuitos adicionais e dependem da instalação de drivers para funcionar.
m5b6972a5
Adaptador de vídeo USB

Pinagem, energia e outros usos

O USB é um barramento serial, por isso os conectores possuem apenas 4 contatos, sendo dois para a transmissão dos dados (um para enviar, outro para receber) e os outros dois para a transmissão de eletricidade.
Os dois pinos para a transmissão de dados são os dois centrais, enquanto os para energia são os dois externos. Olhando um conector USB com os contatos virados para baixo, o pino da direita é o positivo, enquanto o da esquerda é o neutro. Dentro do cabo, o fio vermelho é o positivo, o preto é o neutro, enquanto o verde e o branco são os usados para transmissão de dados:

4b3de8bc
Essa simplicidade explica a existência de tantas bugigangas que podem ser ligadas às portas USB. Você pode descartar os pinos de dados e usar a eletricidade oferecida pelo conector para alimentar qualquer dispositivo que consuma até 2.5 watts de energia (os 2.5 watts correspondem ao padrão oficial, mas a maioria dos fabricantes de placas optam por oferecer valores consideravelmente mais altos para manter uma boa margem de tolerância). Pode ser desde um carregador para celular, até um ventilador em miniatura.
A praticidade em carregar smartphones e outros gadgets através da porta USB fez com os carregadores USB se tornassem rapidamente populares. O movimento foi logo adotando também por muitos fabricantes, que passaram a fornecer cabos USB para o carregamento, eliminando assim a necessidade de incluir uma fonte externa. O movimento se intensificou a partir de 2009, com a adoção do micro-USB como conector padrão para o carregamento de celulares e smartphones na União Europeia.
O inverso também é possível, ou seja, um conector USB fêmea, ligado a uma bateria, que sirva como fonte de energia para seu iPod, smartphone, ou outro dispositivo carregado através da porta USB. A maioria dos projetos envolve usar uma fonte de energia qualquer, que forneça 5V ou mais, e um resistor para reduzir a tensão ao valor apropriado. Um bom exemplo de aplicação do conceito são os muitos carregadores de pilhas Ni-MH que oferecem uma porta USB, alimentada pela energia das pilhas:
7ba698e5
Como 4 pilhas Ni-MH oferecem de 4.8 a 5.6 volts (de acordo com o nível de carga), é relativamente simples construir o circuito que converta a tensão nos 5V/500mA da porta USB. E a carga das pilhas é mais do que suficiente para uma carga completa na maioria dos celulares e players de mídia (se você tiver um hub USB à mão, é possível até mesmo carregar mais de um dispositivo ao mesmo tempo, embora nesse caso a carga demore muito mais).
Com uma variedade tão grande de periféricos USB, as 4 portas traseiras oferecidas na primeira geração de placas ATX acabavam nunca sendo suficientes. Os fabricantes passaram então a incorporar mais e mais portas USB no painel traseiro, além de equiparem as placas com 4 (ou mais) portas adicionais, adicionais através de headers disponíveis na placa-mãe. Os headers podem ser ligados às portas frontais do gabinete, ou a conectores adicionais instalados na parte traseira.
O maior problema é que os conectores frontais do gabinete geralmente utilizam conectores separados para cada um dos fios, de forma que você precisa se orientar usando o diagrama no manual da placa para conectá-los corretamente. O fio vermelho é o +5V, o preto é o GND, o verde é o USB+ (ou D+) e o branco o USB- (ou D-):
m3d0a8f47
74361d72
Ligar os pinos incorretamente pode causar um curto e danificar periféricos USB, ou o próprio controlador da placa-mãe. Para evitar esse tipo de catástrofe, a maioria das placas inclui circuitos que desligam a alimentação em caso de problemas (de forma que a porta simplesmente não funciona até que você conecte os fios na ordem correta), mas de qualquer forma é melhor não dar chance para o azar.

Hubs, alimentação e compartilhamento de banda

Temos ainda a possibilidade de usar hubs USB para conectar vários dispositivos à mesma porta. Em teoria, cada porta USB permite a conexão de até 127 dispositivos, o que permite até mesmo ligar um hub USB no outro. O maior problema é que tanto a banda, quanto a energia fornecida pela porta são compartilhadas entre todos os periféricos ligados ao hub, de forma que dispositivos de mais alto consumo, como mouses ópticos e HDs externos (do tipo que usa a energia da porta USB, ao invés de uma fonte própria) podem não funcionar, dependendo de quais outros dispositivos estejam ligados ao hub.
A solução nesse caso é comprar um hub com fonte externa (também chamados de "powered hubs"). Eles possuem uma fonte própria de energia, que complementa a energia fornecida pela porta, permitindo o uso de mais periféricos simultâneos. Os powered hubs são relativamente raros, devido ao custo adicional da fonte, mas muitos hubs incluem a porta para alimentação externa, suportando o uso de um carregador de celular.

30e514a2
No USB, os 12 ou 480 megabits de banda não são compartilhados entre as portas. Cada par de portas (ligadas a um controlador dedicado na placa mãe) equivale a um barramento próprio, independente dos demais. O compartilhamento ocorre apenas quando as duas portas dentro do par são usadas simultaneamente, ou quando vários dispositivos são plugados na mesma porta, através de um hub.
Algumas combinações podem ser um pouco problemáticas, já que temos tanto dispositivos que transmitem grandes volumes de dados (um HD externo, por exemplo) quanto dispositivos que transmitem um volume pequeno, mas precisam de urgência, como o teclado e o mouse. Você não gostaria que o mouse ficasse com as respostas lentas ao salvar um grande arquivo no HD externo, por exemplo. Prevendo isso, o USB suporta três modos de operação distintos, chamados de interrupt (interrupção), bulk (grande volume) e isochronous (isocrônico).
O modo de interrupção é um modo de alta prioridade, destinado a teclados, mouses e outros dispositivos de entrada. O controlador reserva 10% da banda disponível para eles, mantendo sempre um canal descongestionado.
O modo isocrônico é destinado a dispositivos que precisam transmitir dados via streaming, como, por exemplo, caixas de som e headsets USB. Eles transmitem um volume relativamente pequeno de dados, mas também precisam de uma certa prioridade.
Finalmente, temos as transferências em modo bulk, onde temos grandes pacotes de dados, transmitidos com baixa prioridade (como no caso do HD externo). Como os canais para os outros dois modos são reservados primeiro, as grandes transferências podem ser feitas utilizando a banda disponível, sem atrapalhar os outros dispositivos.
Essa política de uso de banda é similar à utilizada em redes, onde os dados são transmitidos na forma de frames ou pacotes. Isso permite que dispositivos USB 1.1 sejam conectados em portas USB 2.0 sem reduzir a velocidade para outros dispositivos conectados na mesma porta. O controlador simplesmente disponibiliza 12 megabits para o dispositivo USB 1.1 e continua disponibilizando o restante da banda para os demais dispositivos.
Outra característica interessante do USB é a capacidade de enumerar e reconhecer novos dispositivos, coisa que não existia na época das portas seriais. Detectar mouses ou modems seriais era um pesadelo para qualquer programador, já que não existia uma simples de saber que tipo de dispositivo estava plugado na porta, ou mesmo se a porta estava sendo usada ou não.
A única forma era apelar para técnicas indiretas, enviando dados através da porta e tentando deduzir quem estava do outro lado a partir das respostas. É por isso que algumas distribuições Linux antigas pediam que você movimentasse seu mouse serial num certo ponto da instalação, para que ele pudesse ser detectado.
No USB as coisas funcionam de forma muito mais eficiente. O controlador percebe quando um dispositivo é conectado e envia um pacote de controle, que o dispositivo responde enviando uma série de informações, incluindo a classe, velocidade, fabricante, string de identificação e assim por diante.
Além de permitirem que o controlador reserve corretamente os recursos usados pelo dispositivo, essas informações são enviadas ao sistema operacional. Isso permite que o dispositivo seja ativado e o programa ou o aviso correspondente seja mostrado na tela. Aqui temos um exemplo de mensagens de kernel geradas por uma distribuição Linux ao plugar um joystick USB:
usb 1-3: new low speed USB device using ohci_hcd and address 3
usb 1-3: configuration #1 chosen from 1 choice
input: Logitech WingMan Precision USB as /class/input/input2
input: USB HID v1.10 Joystick [Logitech WingMan Precision USB] on usb-0000:00:02.0-3

As informações permitem também programar ações para quando determinados dispositivos são plugados. No caso do Linux, por exemplo, isso é feito através do udev, o daemon responsável por detectar mudanças no hardware e a conexão de novos dispositivos. É possível executar automaticamente um script de backup quando o HD externo é plugado, ou abrir um determinado jogo quando você pluga o joystick. O mais interessante é que as ações podem ser relacionadas com o código de identificação do dispositivo (que é único), de forma que o backup seja feito apenas ao plugar um HD específico, evitando que seus dados sejam copiados por engano quando um amigo plugar um pendrive, por exemplo.

O que muda no USB 3.0

O USB surgiu originalmente como um substituto para as portas seriais e paralelas usadas até então. Como a aplicação inicial era a conexão de mouses, impressoras, scanners e PDAs, os 12 megabits iniciais foram considerados mais do que suficientes. Entretanto, com o passar do tempo o USB passou a ser cada vez mais usado por câmeras, pendrives e outros dispositivos "rápidos", que demandam velocidades muito maiores. Surgiu então o USB 2.0, uma atualização indolor que aumentou a taxa de transferência teórica para 480 megabits, sem quebrar a compatibilidade com o padrão antigo.
Na prática, ele permite taxas de transferência entre 30 e 45 MB/s, que são uma pesada limitação no caso dos HDs externos, interfaces de rede e outros dispositivos atuais. Como a demanda por banda não para de crescer, é apenas questão de tempo para que os 480 megabits do USB 2.0 se tornem uma limitação tão grande quanto os 12 megabits do USB original foram no passado.
Assim como o SATA, o USB é uma barramento serial, onde os dados são transmitidos usando um único par de fios, com um segundo par dando conta da alimentação elétrica. O principal problema é que o USB suporta o uso de cabos mais longos e hubs, o que torna complicado atingir taxas de transferência muito maiores que os 480 megabits do USB 2.0. Isso fez com que logo no início, os trabalhos se concentrassem em desenvolver novos cabos e conectores, que permitissem o uso de mais banda.
O primeiro rascunho do USB 3.0 foi apresentado em 2007 pela Intel, que propôs o uso de um par de cabos de fibra óptica, complementando os dois pares de fios de cobre. O uso de fibra óptica elevaria a taxa de transferência para respeitáveis 5 gigabits, sem quebrar a compatibilidade com dispositivos antigos.
O grande problema com o padrão da Intel era o custo, já que tanto os cabos quanto os dispositivos seriam muito mais caros. Ele também não fazia nada com relação à capacidade de fornecimento elétrico, mantendo os mesmos 2.5 watts por porta do USB 2.0, que são insuficientes para muitos dispositivos. Não é preciso dizer que ele foi bastante criticado e acabou sendo abandonado em 2008, dando lugar ao padrão definitivo.
O USB 3.0 oferece 4.8 gigabits de banda (10 vezes mais rápido que o 2.0 e apenas 4% menos que o padrão proposto pela Intel) utilizando fios de cobre. Os 4.8 gigabits do USB 3.0 são chamados de "Super-Speed", aumentando a confusão relacionada aos nomes dos padrões de sinalização USB. Com a adição temos agora 4 padrões e uma nomenclatura ainda mais confusa:
  • Super-Speed: 4800 megabits (introduzido pelo USB 3.0)
  • High-Speed: 480 megabits (introduzido pelo USB 2.0)
  • Full-Speed: 12 megabits (USB 1.x operando na velocidade máxima)
  • Low-Speed: 1.5 megabits (usado por dispositivos lentos, como teclados e mouses)
Para possibilitar um aumento tão dramático na velocidade de transmissão, foram adicionados dois novos pares de cabos para transmissão de dados (um para envio e outro para recepção) e um neutro, totalizando 5 novos pinos, que nos conectores tipo A são posicionados na parte interna do conector:
m4ebcfcf2
Essa organização permitiu manter a compatibilidade com dispositivos antigos, já que os 4 pinos do USB 2.0 continuam presentes. Ao plugar um dispositivo antigo em um conector USB 3.0, apenas os 4 pinos de legado são usados e ele funciona normalmente. O inverso também funciona, desde que o dispositivo USB 3.0 seja capaz de trabalhar em modo de legado, dentro das limitações elétricas do USB 2.0.
Por outro lado, os conectores USB tipo B (os usados por impressoras) e micro-USB (adotados como padrão para os smartphones) oferecem uma compatibilidade de mão-única, onde você pode plugar um dispositivo USB 2.0 em uma porta 3.0, mas não o contrário, devido ao formato dos conectores. O tipo B ganhou um "calombo" com os 5 pinos adicionais e o USB micro ganhou uma seção adicional:
img
Além dos novos conectores, outra novidade foi o aumento no fornecimento elétrico das portas, que saltou de 500 mA (2.5 watts) para 900 mA (4.5 watts), o que permite que as portas USB desam usadas para alimentar uma variedade ainda maior de dispositivos.
É possível por exemplo criar gavetas para HDs de 2.5" alimentadas por uma única porta USB, sem falar de gavetas para HDs regulares de 3.5" alimentadas por três ou até mesmo duas portas USB 3.0, já que muitos HDs "verdes" de 5.400 RPM trabalham tranquilamente abaixo dos 10 watts. Você pode contar também com toda uma nova safra de ventiladores, LEDs e bugigangas diversas tirando proveito da energia adicional.
Para reduzir o consumo elétrico dos controladores, o padrão inclui também um novo sistema de interrupções, que substitui o sistema de enumeração usado no USB 2.0. Em resumo, em vez de o controlador manter a porta ativa, constantemente perguntando se o dispositivo tem algo a transmitir, o host passa a manter o canal desativado até que o dispositivo envie um sinal de interrupção.
Além de oferecer uma pequena redução no consumo do host (suficiente para representar um pequeno ganho de autonomia no caso dos netbooks) o novo sistema reduz o consumo nos dispositivos plugados, evitando que a bateria da câmera se esgote por que você a esqueceu plugada na porta USB, por exemplo.
Para diferenciar os conectores, foi adotada a cor azul como padrão tanto para os cabos quanto para a parte interna dos conectores. Naturalmente, os fabricantes não são necessariamente obrigados a usarem o azul em todos os produtos, mas ao ver um conector azul, você pode ter certeza de que se trata de um 3.0.
Os primeiros dispositivos começaram a chegar ao mercado no final de 2009, mas não espere que eles se tornem comuns antes de 2011 ou 2012. Inicialmente, os lançamentos se concentrarão em HDs e SSDs externos (que são severamente limitados pelo USB 2.0), mas eventualmente ele chegará a outros dispositivos, substituindo o 2.0 gradualmente.
Apesar disso, ainda demorará alguns anos até que o USB 3.0 substitua o padrão anterior completamente, já que os controladores USB 2.0 são muito mais simples e baratos, e o desempenho é mais do que suficiente para muitas aplicações. Não faria sentido lançar um mouse ou um adaptador bluetooth USB 3.0, por exemplo, a não ser que fosse por simples hype.
Existem também várias complicações técnicas em equipar uma placa-mãe com um grande número de portas USB 3.0. Os controladores são caros e cada par de portas precisa ser conectado a um par de linhas PCI Express 2.0 (ou quatro linhas PCIe 1.x) para que o desempenho não seja penalizado.
Considerando que muitos chipsets possuem apenas 20 ou 24 linhas PCI Express, é perfeitamente compreensível que a primeira geração de placas tenham apenas duas portas USB 3.0 (em azul), complementadas por mais 6 ou 10 portas USB 2.0:
m27e5b075
Isso deve mudar a partir do momento em que a Intel, nVidia e AMD passarem a produzir chipsets com um número maior de portas integradas, mas isso deve acontecer apenas em 2011. A Intel é a mais avançada, graças ao trabalho no padrão xHCI (sucessor do EHCI e OHCI, usados no USB 2.0). Embora ele seja um padrão aberto de controladores, a Intel realizou a maior parte do desenvolvimento e por isso acabou desenvolvendo uma dianteira em relação aos outros fabricantes, liberando o projeto do controlador apenas depois que ele já estava concluído.
Assim como aconteceu na época do USB original, temos também uma grande oferta de placas adaptadoras, conectadas através de um slot PCI-Express x1 ou (mais raramente) de um slot x4. Elas incluem um único controlador e duas portas USB 3.0 e são usadas sobretudo por gavetas para HDs externos, que são a classe de dispositivos que mais se beneficia da maior velocidade:
m1eceb60a
Usando uma porta USB 2.0, a velocidade máxima de transferência de um HD externo fica em torno de 32 MB/s, que é o limite prático da interface (lembre-se, as taxas de transferência obtidas na prática são sempre inferiores aos limites teóricos dos barramentos, já que incluem diferentes camadas de modulação e outros tipos de perdas). Considerando que os HDs de 3.5" e 7200 RPM atuais são capazes de oferecer taxas de leitura sequencial em torno dos 150 MB/s e mesmo HDs de 2.5" já se aproximam da marca dos 100 MB/s, não é difícil entender a frustração de muitos.
Ao usar o USB 3.0, por outro lado, é possível obter taxas de transferência superiores a 100 MB/s, limitado apenas pelo desempenho do HD e do controlador da gaveta. Placas adaptadoras plugadas em slots PCI Express x1 possuem um limite prático em torno de 200 MB/s devido ao barramento, mas portas ligadas a controladores integrados à placa-mãe (ou a slots PCIe 2.0) podem oferecer taxas superiores a 300 MB/s, o que as posiciona como concorrentes diretas das portas eSATA.
Dependendo do modelo, a adaptadora pode usar um conector molex (como a da foto) ou extrair a energia necessária para alimentar as portas diretamente do conector PCI Express. As gavetas de HDs e outros dispositivos USB 3.0 podem ser perfeitamente usadas em PCs com portas USB 2.0 (pelo menos no caso das gavetas com fontes externas, que não dependem da alimentação elétrica da porta), mas nesse caso a velocidade de transmissão é limitada pela porta.
Com relação aos drivers, temos suporte no Linux a partir do kernel 2.6.31. A versão inicial do Windows 7 ainda não inclui drivers, mas eles devem ser adicionados através de uma atualização posterior, que deve se estender ao Vista. A dúvida fica por conta do Windows XP e anteriores, dos quais a Microsoft quer se livrar o mais rápido possível.