34.2. Bluetooth

Bluetooth é uma tecnologia sem fio para conexão de vários dispositivos, como telefones celulares, PDAs, dispositivos periféricos ou componentes de sistema como teclado ou mouse. O nome deriva do rei dinamarquês Harold Bluetooth, que uniu várias facções guerreiras na Escandinávia. O logotipo da Bluetooth baseia-se nas runas de “H” (lembra uma estrela) e “B”.

Vários aspectos importantes distinguem o Bluetooth do IrDA. Primeiro, os dispositivos individuais não precisam “ver” um ao outro diretamente e, segundo, vários dispositivos podem ser conectados em uma rede. Contudo, a taxa de dados máxima é de 720 Kbps (na versão atual 1.2). Teoricamente, o Bluetooth pode se comunicar até através de paredes. Na prática, porém, isto depende das propriedades da parede e da classe do dispositivo. Há três classes de dispositivos com faixas de transmissão entre dez e 100 metros.

34.2.1. Noções básicas

As seções a seguir resumem os princípios básicos da maneira como o Bluetooth trabalha. Obtenha mais informações sobre os requisitos que o software deve atender, como o Bluetooth interage com o seu sistema e como ele traça o seu perfil de trabalho.

34.2.1.1. Software

Para poder usar o Bluetooth, você precisa de um adaptador de Bluetooth (adaptador interno ou dispositivo externo), drivers e uma pilha de protocolos Bluetooth. O kernel do Linux já contém os drivers básicos para usar o Bluetooth. O sistema Bluez é usado como pilha de protocolos. Para verificar se os aplicativos funcionam com o Bluetooth, os pacotes básicos bluez-libs e bluez-utils devem estar instalados. Esses pacotes oferecem diversos serviços e utilitários necessários. Além disso, alguns adaptadores, como Broadcom ou AVM BlueFritz! exigem que o pacote bluez-firmware seja instalado. O pacote bluez-cups habilita a impressão nas conexões Bluetooth. Se você precisa depurar problemas com conexões de Bluetooth, instale o pacote bluez-hcidump.

34.2.1.2. Interação geral

Um sistema Bluetooth consiste em quatro camadas interbloqueadas que fornecem a funcionalidade desejada:

Hardware

O adaptador e um driver adequado para suporte pelo kernel do Linux.

Arquivos de configuração

Usados para controlar o sistema Bluetooth.

Daemons

Serviços que são controlados pelos arquivos de configuração e fornecem a funcionalidade.

Aplicativos

Os aplicativos possibilitam que a funcionalidade fornecida pelos daemons seja usada e controlada pelo usuário.

Ao inserir um adaptador Bluetooth, seu driver é carregado pelo sistema hotplug. Depois que o driver for carregado, o sistema verifica os arquivos de configuração para ver se o Bluetooth deve ser iniciado. Se for o caso, determina os serviços a serem iniciados. Com base nestas informações, os daemons respectivos são iniciados. Os adaptadores Bluetooth são examinados durante a instalação. Se for encontrado um ou mais, o Bluetooth é habilitado. Caso contrário, o sistema Bluetooth é desativado. Qualquer dispositivo Bluetooth acrescentado depois deve ser habilitado manualmente.

34.2.1.3. Perfis

No Bluetooth, os serviços são definidos por meio de perfis, como o perfil de transferência de arquivo, o perfil de impressão básica e o perfil de rede de área pessoal. Para habilitar um dispositivo para usar os serviços de outro dispositivo, ambos devem compreender o mesmo perfil. Freqüentemente, essa parte das informações não é incluída no pacote e no manual do dispositivo. Infelizmente, alguns fabricantes não atendem rigorosamente as definições dos perfis individuais. Apesar disto, a comunicação entre os dispositivos em geral funciona uniformemente.

No texto a seguir, os dispositivos locais são os fisicamente conectados ao computador. Os demais dispositivos que só podem ser acessados por conexões sem fio são chamados de dispositivos remotos.

34.2.2. Configuração

Esta seção apresenta a configuração do Bluetooth. Saiba quais os arquivos de configuração envolvidos, que ferramentas são necessárias e como configurar o Bluetooth com YaST ou manualmente.

34.2.2.1. Configurando o Bluetooth com YaST

Use o módulo YaST do Bluetooth, mostrado na Figura 34.2, “Configuração YaST do Bluetooth”, para configurar o suporte do Bluetooth no sistema. Assim que o hotplug detectar um adaptador de Bluetooth no sistema (por exemplo, durante a inicialização ou quando você conectar um adaptador), o Bluetooth inicia automaticamente com as configurações desse módulo.

Figura 34.2. Configuração YaST do Bluetooth

Configuração YaST do Bluetooth

Na primeira etapa da configuração, determine se os serviços Bluetooth devem ser inicializados no sistema. Se tiver habilitado os serviços Bluetooth, dois itens podem ser configurados. Primeiro, o Nome do Dispositivo. É o nome que outros dispositivos exibem quando o seu computador tiver sido descoberto. Há dois marcadores de espaço disponíveis — %h significa o nome de host do sistema (útil, por exemplo, se foi atribuído dinamicamente por DHCP) e %d insere o número da interface (só é útil se você tiver mais de um adaptador Bluetooth no computador). Por exemplo, se você gravar Laptop %h no campo e DHCP atribuir o nome unidade123 ao seu computador, outros dispositivos remotos reconheceriam o seu computador como Laptop unidade123.

O parâmetro Gerenciador de Segurança refere-se ao comportamento do sistema local quando um dispositivo remoto tenta se conectar. A diferença está no tratamento do número PIN. Permita que qualquer dispositivo se conecte sem um PIN ou, se o PIN for necessário, determine como o correto é escolhido. Você pode gravar um PIN (armazenado em um arquivo de configuração) no campo de entrada adequado. Se um dispositivo tentar se conectar, primeiro usa este PIN. Se falhar, ele recua para utilização sem PIN. Para máxima segurança, é melhor escolher Solicitar PIN Sempre. Esta opção permite que você use vários PINs para vários dispositivos (remotos).

Clique em Configuração Daemon Avançada para ativar a caixa de diálogo para selecionar e configurar os serviços disponíveis (chamados perfis no Bluetooth). Todos os serviços disponíveis são exibidos em uma lista e podem ser habilitados ou desabilitados clicando em Ativar ou Desativar. Clique em Editar para abrir uma caixa de diálogo na qual especificar argumentos adicionais para o serviço selecionado (daemon). Não mude nada, a menos que conheça o serviço. Após concluir a configuração dos daemons, saia desta caixa de diálogo clicando em OK.

De volta à caixa de diálogo principal, clique em Opções de Segurança para abrir a caixa de diálogo de segurança e especificar criptografia, autenticação e configurações de exploração. Em seguida, saia da caixa de diálogo de segurança para retornar à caixa de diálogo principal. Após fechar a caixa de diálogo principal com Concluir, o sistema Bluetooth está pronto para uso.

Da caixa de diálogo principal, você também pode acessar a caixa de diálogo Classes de Dispositivo e Serviço. Os dispositivos Bluetooth são agrupados em várias classes de dispositivo. Nesta caixa de diálogo, escolha o correto para o seu computador, como Desktop ou Laptop. A classe de dispositivo não é muito importante, ao contrário da classe de serviço, também configurada aqui. Às vezes, dispositivos Bluetooth remotos, como telefones celulares, só aceitam determinadas funções se puderem detectar a classe de serviço correta configurada no sistema. Isso ocorre com freqüência com os telefones celulares que esperam uma classe chamada Transferência de Objeto antes de permitir a transferência dos arquivos de ou para o computador. Você pode escolher várias classes. Não é útil selecionar todas as classes “por via das dúvidas.” A seleção padrão deve ser adequada na maioria dos casos.

Para usar o Bluetooth para configurar uma rede, ative PAND na caixa de diálogo Configuração Daemon Avançada e configure o modo do daemon com Editar. Para uma conexão de rede Bluetooth funcional, um pand deve operar no modo Recepção e o peer no modo Pesquisar. Por padrão, o modo Recepção é predefinido. Adapte o comportamento do seu pand local. Adicionalmente, configure a interface bnepX (X representa o número do dispositivo no sistema) no módulo YaST daPlaca de Rede.

34.2.2.2. Configurando o Bluetooth manualmente

Os arquivos de configuração dos componentes individuais do sistema Bluez estão localizados no diretório /etc/bluetooth. A única exceção é o arquivo /etc/sysconfig/bluetooth para inicialização dos componentes, que é modificada pelo módulo YaST.

Os arquivos de configuração descritos abaixo só podem ser modificados pelo root do usuário. Atualmente, não há interface de usuário gráfico para mudar todas as configurações. Os mais importantes podem ser configurados com o módulo YaST do Bluetooth, descrito em Seção 34.2.2.1, “Configurando o Bluetooth com YaST”. Todas as outras configurações só são do interesse de usuários experientes com casos especiais. Normalmente, as configurações padrão devem ser adequadas.

Um número PIN fornece proteção básica contra conexões indesejadas. Telefones móveis normalmente consultam o PIN quando estabelecem o primeiro contato (ou quando configuram um dispositivo de contato no telefone). Para que dois dispositivos possam se comunicar, ambos devem se identificar com o mesmo PIN. No computador, o PIN se localiza no arquivo /etc/bluetooth/pin.

[Important]Segurança das conexões Bluetooth

Apesar dos PINs, a transmissão entre dois dispositivos pode não ser totalmente segura. Por padrão, a autenticação e a criptografia das conexões Bluetooth são desativadas. Ativar a autenticação e a criptografia pode resultar em problemas de comunicação com alguns dispositivos Bluetooth.

Várias configurações, como os nomes de dispositivo e o modo de segurança podem ser mudados no arquivo de configuração /etc/bluetooth/hcid.conf. Normalmente, as configurações padrão devem ser adequadas. O arquivo contém comentários descrevendo as opções para as diversas configurações.

Duas seções no arquivo incluído são designadas como opções e dispositivo. O primeiro contém informações gerais que hcid usa para iniciar. O último contém configurações para dispositivos Bluetooth individuais e locais.

Uma das configurações mais importantes da seção opções é segurança automática. Se configurado em auto, hcid tenta usar o PIN local para as conexões recebidas. Se falhar, alterna para nenhum e estabelece a conexão. Para maior segurança, esta configuração padrão deve ser definida para usuário para verificar se o usuário é solicitado a digitar um PIN toda vez que uma conexão é estabelecida.

Configure o nome sob o qual o computador é exibido do outro lado na seção dispositivo. A classe de dispositivo, como Desktop, Laptop ou Servidor é definida nessa seção. Autenticação e criptografia também são habilitadas ou desabilitadas aqui.

34.2.3. Componentes e utilitários do sistema

A operabilidade do Bluetooth depende da interação de vários serviços. Pelo menos dois daemons em segundo plano são necessários: hcid (daemon da interface do controlador de host), que atua como interface para o dispositivo Bluetooth e o controla e sdpd (daemon de protocolo de discovery de serviços), por meio do qual um dispositivo pode descobrir que serviços o host torna disponível. Se não forem ativados automaticamente quando o sistema é inicializado, hcid e sdpd podem ser ativados com o comando rcbluetooth start. Este comando deve ser executado como root.

Os parágrafos a seguir descrevem resumidamente as ferramentas shell mais importantes que podem ser usadas para trabalhar com o Bluetooth. Embora vários componentes gráficos sejam agora disponíveis para controlar o Bluetooth, pode ser válido verificar esses programas.

Alguns dos comandos só podem ser executados como root. Entre eles o comando l2ping device_address para testar a conexão a um dispositivo remoto.

34.2.3.1. hcitool

hcitool pode ser usado para determinar se dispositivos locais e remotos são detectados. O comando hcitool dev lista os dispositivos locais. A saída gera uma linha na forma interface_name device_address para todo dispositivo local detectado.

Procure dispositivos remotos com o comando hcitool inq. Três valores retornam para todo dispositivo detectado: o endereço do dispositivo, a diferença de relógio e a classe de dispositivo. O endereço do dispositivo é importante, porque outros comandos o usam para identificar o dispositivo de destino. A diferença de relógio serve principalmente para um propósito técnico. A classe especifica o tipo de dispositivo e o tipo de serviço como um valor hexadecimal.

O comando hcitool name device-address pode ser usado para determinar o nome do dispositivo de um dispositivo remoto. No caso de um computador remoto, a classe e o nome do dispositivo correspondem às informações em seu /etc/bluetooth/hcid.conf. Endereços de dispositivo local geram uma saída de erro.

34.2.3.2. hciconfig

O comando /usr/sbin/hciconfig envia mais informações sobre o dispositivo local. Se hciconfig for executado sem quaisquer argumentos, a saída mostra informações do dispositivo, como o nome do dispositivo (hciX), o endereço do dispositivo físico (um número de 12 dígitos no formato 00:12:34:56:78) e informações sobre a quantidade de dados transmitida.

hciconfig hci0 name exibe o nome que é retornado pelo seu computador quando recebe solicitações de dispositivos remotos. Assim como consultar as configurações do dispositivo local, hciconfig pode ser usado para modificar essas configurações. Por exemplo, hciconfig hci0 name TEST configura o nome em TEST.

34.2.3.3. sdptool

O programa sdptool pode ser usado para verificar que serviços se tornam disponíveis por um dispositivo específico. O comando sdptool browse device_address retorna todos os serviços de um dispositivo. Use o comando sdptool search service_code para procurar um serviço específico. Este comando digitaliza todos os dispositivos acessíveis para o serviço solicitado. Se um dos dispositivos oferecer o serviço, o programa imprime o nome completo do serviço retornado pelo dispositivo com uma breve descrição. Veja uma lista de todos os códigos de serviço possíveis digitando sdptool sem parâmetros.

34.2.4. Aplicativos gráficos

Em Konqueror, digite o URL bluetooth:/ para listar dispositivos Bluetooth locais e remotos. Clique duas vezes em um dispositivo para obter uma visão geral dos serviços fornecidos pelo dispositivo. Se você mover por um dos serviços especificados com o mouse, a barra de status do browser mostra que perfil é usado para o serviço. Se você clicar em um serviço, uma caixa de diálogo é aberta, perguntando o que fazer: salvar, usar o serviço (deve ser iniciado um aplicativo para fazer isto) ou cancelar a ação. Marque uma caixa de seleção se não quiser que a caixa de diálogo seja exibida novamente mas quer que a ação selecionada seja realizada. Para alguns serviços, o suporte ainda não está disponível. Para outros, pode ser necessário instalar pacotes adicionais.

34.2.5. Exemplos

Esta seção oferece dois exemplos típicos de possíveis cenários Bluetooth. O primeiro mostra como uma conexão de rede entre dois hosts pode ser estabelecida através do Bluetooth. O segundo apresenta uma conexão entre um computador e um telefone móvel.

34.2.5.1. Conexão de rede entre dois hosts

No primeiro exemplo, é estabelecida uma conexão de rede entre os hosts H1 e H2. Estes dois hosts têm endereços do dispositivo Bluetooth baddr1 e baddr2 (determinado nos dois hosts com o comando hcitool dev como descrito acima). Os hosts devem ser identificados com os endereços IP 192.168.1.3 (H1) e 192.168.1.4 (H2).

A conexão Bluetooth é estabelecida com a ajuda de pand (daemon de personal area network). Os seguintes comandos devem ser executados pelo usuário root. A descrição enfoca as ações específicas do Bluetooth e não fornece uma explicação detalhada do comando de rede ip.

Digite pand -s para iniciar pand no host H1. Em seguida, uma conexão pode ser estabelecida no host H2 com pand -c baddr1. Se você digitar ip link show em um dos hosts para listar as interfaces de rede disponíveis, a saída deve conter uma entrada como a seguinte:

 bnep0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000 
 link/ether 00:12:34:56:89:90 brd ff:ff:ff:ff:ff:ff

Em vez de 00:12:34:56:89:90, a saída deve conter o endereço do dispositivo local baddr1 ou baddr2. Agora é necessário atribuir e ativar um endereço IP a esta interface. Em H1, isso pode ser feito com os dois comandos seguintes:

ip addr add 192.168.1.3/24 dev bnep0
ip link set bnep0 up

Em H2:

ip addr add 192.168.1.4/24 dev bnep0
ip link set bnep0 up

Agora H1 pode ser acessado de H2 com o IP 192.168.1.3. Use o comando ssh 192.168.1.4 para acessar H2 de H1, supondo que H2 executa um sshd, que é ativado por padrão no SUSE Linux. O comando ssh 192.168.1.4 também pode ser executado como um usuário normal.

34.2.5.2. Transferência de dados de um telefone móvel para o computador

O segundo exemplo mostra como transferir uma fotografia criada em um telefone móvel com uma câmara digital interna para um computador (sem incorrer em custos adicionais para a transmissão de uma mensagem multimídia). Embora a estrutura do menu possa ser diferente em vários telefones móveis, o procedimento geralmente é bastante semelhante. Consulte o manual do seu telefone, se necessário. Este exemplo descreve a transferência de uma fotografia de um telefone móvel Sony Ericsson para um laptop. O serviço Obex-Push deve estar disponível no computador e o computador deve conceder acesso ao telefone móvel. Na primeira etapa, o serviço se torna disponível no laptop. Você precisa de um daemon de serviço especial no laptop para obter os dados do telefone. Se o pacote kbluetooth estiver instalado, você não precisa iniciar um daemon especial. Se o kbluetooth não estiver instalado, use o daemon opd do pacote bluez-utils. Inicie o daemon com o seguinte comando:

opd --mode OBEX --channel 10 --daemonize --path /tmp --sdp 

São usados dois importantes parâmetros: --sdp registra o serviço com sdpd e --path /tmp instrui o programa onde salvar os dados recebidos, neste caso em /tmp. Você também pode especificar qualquer outro diretório ao qual tenha acesso de gravação.

Se você usar o kbluetooth, você será solicitado por um diretório onde a fotografia é recebida no laptop.

Agora o telefone móvel deve reconhecer o computador. Para isso, abra o menu Conectar no telefone e selecione Bluetooth. Se necessário, clique em Ativar antes de selecionar Meus dispositivos. Selecione Novo dispositivo e deixe o seu telefone procurar o laptop. Se um dispositivo for detectado, o nome aparecerá na tela. Selecione o dispositivo associado ao laptop. Se encontrar uma consulta de PIN, digite o PIN especificado em /etc/bluetooth/pin. Agora o seu telefone reconhece o laptop e é capaz de trocar dados com o laptop. Saia do menu atual e vá para o menu da imagem. Selecione a imagem a transferir e pressione Mais. No menu seguinte, pressione Enviar para selecionar um modo de transmissão. Selecione Via Bluetooth. O laptop deve ser listado como dispositivo de destino. Selecione o laptop para iniciar a transmissão. A imagem é então salva no diretório especificado com o comando opd. Faixas de áudio podem ser transferidas para o laptop da mesma maneira.

34.2.6. Solução de problemas

Se tiver dificuldades em estabelecer uma conexão, prossiga de acordo com a seguinte lista. Lembre-se de que o erro pode estar de um lado da conexão ou mesmo de ambos. Se possível, reconstrua o problema com outro dispositivo Bluetooth para verificar se o dispositivo não está com defeito.

O dispositivo local está listado na saída do hcitool dev?

Se o dispositivo local não estiver listado nesta saída, hcid não é iniciado ou o dispositivo não é reconhecido como um dispositivo Bluetooth. Isto pode ter várias causas. O dispositivo pode estar com defeito ou o driver correto pode estar faltando. Laptops com Bluetooth interno em geral têm um switch de ativar e desativar para dispositivos sem fio, como WLAN e Bluetooth. Consulte o manual do laptop para ver se o seu dispositivo tem este switch. Reinicie o sistema Bluetooth com o comando rcbluetooth restart e verifique se há erros reportados em /var/log/messages.

O seu adaptador Bluetooth precisa de um arquivo firmware?

Nesse caso, instale bluez-bluefw e reinicie o sistema Bluetooth com rcbluetooth restart.

A saída de hcitool inq retorna outros dispositivos?

Teste este comando mais de uma vez. A conexão pode ter interferências, porque a banda da freqüência do Bluetooth já é usada por outros dispositivos.

Os PINs correspondem?

Verifique se o número PIN do computador (em /etc/bluetooth/pin) corresponde ao do dispositivo de destino.

O dispositivo remoto pode “ver” o seu computador?

Tente estabelecer a conexão do dispositivo remoto. Verifique se este dispositivo vê o computador.

A conexão de rede pode ser estabelecida (veja Seção 34.2.5.1, “Conexão de rede entre dois hosts”)?

A configuração descrita em Seção 34.2.5.1, “Conexão de rede entre dois hosts” pode não funcionar por várias razões. Por exemplo, um dos dois computadores pode não ter suporte para o protocolo ssh. Tente ping 192.168.1.3 ou ping 192.168.1.4. Se funcionar, verifique se sshd está ativo. Outro problema pode ser que um dos dois dispositivo já possui configurações de rede que conflitam com o endereço 192.168.1.X do exemplo. Se for o caso, tente vários endereços, como 10.123.1.2 e 10.123.1.3.

O laptop parece um dispositivo de destino (consulte Seção 34.2.5.2, “Transferência de dados de um telefone móvel para o computador”)? O dispositivo móvel reconhece o serviço Obex-Push no laptop?

Em Meus dispositivos, selecione o respectivo dispositivo e veja a lista de Serviços. Se Obex-Push não for exibido (mesmo depois da atualização da lista), o problema é causado por opd no laptop. O opd está ativo? Você tem acesso de gravação ao diretório especificado?

O cenário descrito em Seção 34.2.5.2, “Transferência de dados de um telefone móvel para o computador” funciona na direção contrária?

Se o pacote obexftp estiver instalado, o comando obexftp -b device_address -B 10 -p image pode ser usado em alguns dispositivos. Vários modelos Siemens e Sony Ericsson foram testados e demonstraram ser funcionais. Consulte a documentação em /usr/share/doc/packages/obexftp.

Se você instalou o pacote bluez-hcidump, poderá usar hcidump -X para verificar o que é enviado entre os dispositivos. Algumas vezes as ajudas da saída fornecem uma sugestão de onde o problema está, mas esteja ciente de que estará apenas parcialmente em “texto legível”.

34.2.7. Mais informações

Alguma documentação adicional (recente) pode ser encontrada em /usr/share/doc/packages/bluez-utils/ (versão em alemão e inglês disponível).

Uma ampla visão geral de várias instruções para o uso e a configuração do Bluetooth está disponível em http://www.holtmann.org/linux/bluetooth/. Outras informações e instruções úteis: