Revista Do Linux
 
OUTRAS SEÇÕES
  Cartas
  Variedades
  Rádio Linux
  CD do Mês
  Coluna do Augusto
  Leitura
  Dicas e truques
  Opinião
 

Linux e Bluetooth

Com nome de rei nórdico, a nova tecnologia promete facilitar a vida de muitos, e o Linux, é claro, já possui suporte a ela

Recentemente, a mídia vem falando bastante do Bluetooth, um padrão para a comunicação sem-fio. Telefones celulares, PDAs e outros dispositivos estão sendo equipados com interfaces Bluetooth, assim como adaptadores PCI, PCMCIA e USB vêm sendo oferecidos para dispositivos que não possuem o Bluetooth nativamente. Mas, afinal o que é o Bluetooth? Qual será o seu impacto na comunicação de dados? Existe software livre para redes Bluetooth? São estas perguntas que tentaremos responder neste artigo.

O Rei Dente Azul

O nome ~SBluetooth~T (Dente Azul) foi escolhido como referência ao rei viking, Harald Bluetooth, que, na Idade Média, unificou as várias tribos nórdicas. Nome bem apropriado, visto que o padrão foi desenvolvido inicialmente pela Ericsson. O objetivo do Bluetooth era oferecer um padrão para a comunicação sem-fio que exigisse pouca memória, CPU e principalmente bateria, de modo que pudesse ser implementado em qualquer tipo de dispositivo sem aumentar significativamente o seu preço. Assim, qualquer aparelho eletrônico poderia se comunicar com qualquer outro sem complicações.

Inicialmente, se pensava apenas em substituição de fios e conectores. Um mesmo fone de ouvido sem fio poderia ser utilizado com o seu celular enquanto você está no carro, com o seu telefone residencial em casa, com a televisão (quando você quer assistir TV à noite sem incomodar a esposa) ou com o seu walkman. Um telefone celular digital poderia ser utilizado como modem para conexão à Internet pelo seu laptop ou PDA sem a necessidade de cabos de dados proprietários. Ou então o seu telefone residencial Bluetooth poderia ser utilizado como modem, tanto pelo seu computador quanto pelo computador do seu filho, sem a necessidade de espalhar cabos pela casa. Da mesma forma, seria o fim dos comutadores de impressoras e de tantos outros dispositivos que servem apenas para contornar a falta de cabos e conectores em quantidade suficiente.

A especificação básica das redes Bluetooth fornece velocidade em torno de 1Mbps (723 Kbps efetivos para dados) e alcance de 10 metros. Pode parecer extremamente limitado se comparado a outras tecnologias de rede sem fio como o IEEE 802.11 (Ethernet sem fio), que opera a 11Mbps a 100m, mas o Bluetooth tem taxa de transferência comparável aos dispositivos USB atuais e um alcance maior do que a maioria dos cabos que hoje estão conectados ao seu computador. Especificações ampliadas do padrão permitem o aumento da velocidade para 10Mbps e 100m de raio, às custas de maior consumo de energia e a presença de uma antena auxiliar.

Um módulo Bluetooth pode ser montado em um único chip, incluindo o circuito de transmissão e recepção de rádio, tornando-o viável até em minúsculos players MP3 e relógios de pulso. São utilizadas freqüências na faixa ISM (Industrial, Scientific and Medic), que não requerem licenciamento prévio (ao contrário das freqüências para rádio FM ou telefones celulares), gerando potencial de interferência com redes 802.11, controles remotos para portões de garagem e uma infinidade de outros dispositivos de rádio. Entretanto, o Bluetooth utiliza um mecanismo de ~Sspread spectrum sequence hoping~T, ou seja, um dispositivo Bluetooth alterna rapidamente entre várias freqüências diferentes, de modo que ele só será sujeito à interferência de um dispositivo não-Bluetooth (ou causará interferência neles) durante intervalos de poucos milissegundos quando as freqüências coincidirem.

Na verdade, várias redes Bluetooth, que chamamos de ~Spiconets~T, podem coexistir dentro do mesmo raio de alcance, cada uma utilizando uma seqüência diferente de freqüências, de modo que uma interfira pouco no funcionamento da outra. Alguns nós podem ainda alternar entre as seqüências de freqüência das várias piconets, atuando como uma ponte entre elas e formando o que chamamos de ~Sscatternet~T. Os nós pontes também permitem que a rede Bluetooth englobe uma área com mais do que 10m de raio, pelo estabelecimento de piconets independentes interligadas por nós pontes no meio do caminho.

Redes Ad Hoc

As redes Bluetooth são deterministas (para acomodar tráfego multimídia) e autônomas, sem necessidade de configuração prévia. Dois ou mais dispositivos Bluetooth se ~Sdescobrirão~T automaticamente assim que entrarem no raio de alcance das suas antenas. Por isso, dizemos que redes Bluetooh são um tipo de rede ~SAd Hoc~T ou ~Splug-and-play~T. Não há necessidade de configuração prévia de endereços IP, da configuração de um servidor de nomes ou um ~Sfinder~T de dispositivos Bluetooth. Se não há configuração prévia, como a rede Bluetooth pode ser determinista? Durante o processo de descoberta de nós Bluetooth, qualquer um dos nós pode assumir o papel de ~Smaster~T da piconet. Este nó é o responsável por indicar quanta largura de banda está disponível para cada um dos demais nós, que assumem o papel de ~Sslaves~T.

Toda a comunicação é realizada de um master para um slave e depois do slave para o master. Um slave não pode se comunicar diretamente com outro slave, e um slave só pode transmitir em resposta a um pacote recebido do nó master. Assim sendo, qualquer pacote transmitido de um slave para outro envolve três transmissões: do master para o primeiro slave, do primeiro slave para o master e do master para o segundo slave. É claro que o master pode enfileirar o pacote para transmissão posterior ao segundo slave e atender a comunicações com maior prioridade.

A rede Bluetooth divide o tempo em 79 fatias ou slots de tamanho fixo. Os slots ímpares são sempre para transmissões do master para um slave, e os slots pares são reservados para transmissão dos slaves para o master. Desta forma, o master decide qual slave terá direito a utilizar o próximo slot par. Caso o slave não tenha dados para transmitir, deve responder com um pacote NULL que não contém dados. Já, caso o master não tenha dados para transmitir em um slot par, ele deve transmitir um pacote de POLL, que também não contém dados, de modo a dar a algum slave a oportunidade de transmitir.

É essa divisão do tempo em slots regulares e de tamanho fixo que permite o tráfego de dados multimídia com garantia de serviço e livre de colisões, sem a necessidade de protocolos complexos de QoS. Mas também é a causa da redução dos 1MBps de largura de banda teórica para o máximo de 723 Mbps efetivos. O leitor atento fará as contas e verificará que, com a alternância de slots, a taxa máxima de transferência disponível para um nó seria de apenas 57 Kbps (descontados os cabeçalhos). Então, qual é a mágica? Quando um master contata um slave, ele pode permitir que este utilize 3 ou 5 slots seguidos para transmitir um único pacote de dados, de modo que o slave toma emprestado alguns slots que estariam reservados para o master.

As redes Bluetooth são orientadas a conexão, ao contrário das redes Ethernet que são orientadas a datagramas. Ou seja, antes de enviar dados para um dispositivo Bluetooth, deve-se estabelecer uma conexão. Isso permite ao master reservar slots para cada slave, dependendo das necessidades explicitadas pelo dispositivo ou aplicação e da largura de banda já reservada para outras conexões. Existem dois tipos de conexão em uma rede Bluetooth: conexões de voz, que utilizam um slot por vez a intervalos fixos (de modo a garantir a qualidade audível da voz), e conexões de dados, que utilizam os slots remanescentes, mas podem utilizar pacotes multi-slot. Entretanto, três conexões de voz (que são sempre bi-direcionais) ocupam a totalidade da largura de banda da piconet, pois o tráfego de voz não é comprimido.

A Pilha de Protocolos Bluetooth

Uma preocupação do Bluetooth foi permitir a construção de dispositivos e aplicações funcionais sem a necessidade de implementar protocolos de nível mais alto como o TCP/IP. Para evitar a reinvenção da roda, o Bluetooth tomou emprestado alguns protocolos do padrão IrDA (comunicação sem fio por infravermelho) e definiu uma série de ~Sprofiles~T que identificam que protocolos devem ser implementados por cada tipo de dispositivo ou aplicação. Os profiles também são organizados na forma de profiles básicos, que determinam serviços básicos como a formação de uma piconet, o estabelecimento de uma conexão ou a localização de um nó na piconet capaz de prover determinado serviço; e profiles de aplicação, que utilizam profiles básicos e protocolos adicionais para definir o comportamento de uma dada aplicação, por exemplo, fone de ouvido, transferência de arquivos e conexão à Internet. Provavelmente, o profile mais utilizado pelas primeiras aplicações será o profile de emulação de porta serial, que fornece compatibilidade imediata para impressoras, modems, mouses e sincronização de PDAs via Bluetooth. Já o profile de conexão à Internet utiliza o profile de porta serial para estabelecer uma conexão PPP.

Apesar da possibilidade de formação de scatternets englobando centenas de metros, as especificações atuais do Bluetooth ainda não indicam como serviços, conexões e qualidade de serviço devem funcionar entre diferentes piconets. Hoje temos a capacidade de criar aplicações de substituição de fios, mas não aplicações de rede genéricas como no Ethernet sem fio.

Os trabalhos para a versão 2.0 da especificação Bluetooth estão focados na definição de mais profiles de substituição de fios, como para câmeras fotográficas digitais, impressão, sistemas automotivos (em vez de fios interligando os sensores de gasolina e temperatura do motor ao painel, teremos conexões Bluetooth) e vídeo em tempo real. Também estão sendo feitos estudos para a definição de taxas de transferência e raios de alcance maiores que ainda assim exijam pouca potência da bateria.

Bluetooth e o Linux

Você pode não saber, mas versões atuais do kernel do Linux já incluem suporte a alguns dispositivos Bluetooth, em especial, adaptadores USB. Então, já é possível, pelo menos em teoria, utilizar os novos modelos de impressoras jato de tinta da Epson que incluem interfaces Bluetooth e que estão disponíveis no Brasil.

A empresa Axis é um fabricante de módulos Bluetooth e fornece os respectivos device-drivers que, graças ao HCI, são compatíveis com inúmeros módulos de outros fabricantes. São os seus drivers que foram originalmente incluídos na série 2.2.x do kernel do Linux. Ela também fornece kits de desenvolvimento que implementam as camadas superiores da pilha Bluetooth, então você já pode construir com o GCC (ou Perl ou Python ou...) aplicações que se comunicam via Bluetooth.

A IBM também fornecia uma pilha Bluetooth para Linux no seu site Alphaworks, denominada BlueDrekar, mas o projeto foi ~Sgraduado~T e em breve deverá ressurgir como um produto proprietário ($$$) vendido pela Big Blue. É uma pena, visto que a IBM tem liberado tantas outras tecnologias sob licenças de software livre.

Outro pacote interessante fornecido pela IBM é um simulador de redes Bluetooth, o projeto BlueHoc, disponível no AlphaWorks livre de royalties. Com ele você pode desenvolver aplicações sem a necessidade de interfaces Bluetooth reais. O interessante do BlueHoc é a sua capacidade de simular as condições de velocidade de transferência, descoberta de serviços e interferência eletromagnética de uma rede Bluetooth real. Dado poder de processamento suficiente (o que vai depender da sua aplicação e do tamanho da rede simulada) sua aplicação poderá ser testada em tempo real. E não estamos falando de máquinas multiprocessadas ou de clusters Beowulf.

Falando em PDAs, modelos à venda nas lojas brasileiras da série iPAQ da Compaq/HP podem rodar a distribuição Linux Familiar, que já suporta o Bluetooth na versão 0.6. Existe ainda um PDA Linux sendo oferecido no mercado americano pela CDL, que inclui um módulo Bluetooth. E os próximos modelos da Palm deverão incluir Bluetooth, de modo que esperamos ver suporte a Bluetooth em breve no LinuxDA.

Apesar de já possuir alguns anos de existência, a tecnologia Bluetooth somente agora começa a estar disponível em produtos para o consumidor final, de modo que ainda existem poucas aplicações Bluetooth. Entretanto, espera-se que em pouco tempo o Bluetooth seja um componente padrão em qualquer dispositivo eletrônico, desde telefones sem fio, passando por sistemas de segurança residenciais, até impressoras, computadores, modems e PDAs. As empresas com visão de mercado já estão explorando a construção de software para Bluetooth, e os desenvolvedores de software livre já têm condições de iniciar a sua exploração para que nos próximos anos possamos participar do que deverá ser um enorme mercado.

Para saber mais:
Site do Bluetooth SIG, onde podem ser encontradas as especificações dos protocolos e profiles - www.bluetooth.com
Site da Axis, que fornece hardware e software para Bluetooth em Linux - developer.axis.com/software/linux/BlueZ
Site do projeto BlueDrekar - www-124.ibm.com/developerworks/oss/tp4bluedrekar
Site do projeto BlueHoc - www-124.ibm.com/developerworks/projects/bluehoc
PDA Linux com Bluetooth - www.cdlusa.com/products/m-idphone.shtm
Site sobre Linux Embedded e PDA - www.linuxdevices.com
Family Linux. Linux para o iPAQ - www.handhelds.org
Site do autor, com mais informações sobre a tecnologia Bluetooth - www.lozano.eti.br


Fernando Lozano - fernando@lozano.eti.br

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux