540 likes | 666 Views
Bluetooth. Ana Cristina Benso da Silva Andrei Oliveira da Silva Fabrício D’Avila Cabral CPSE – Centro de Pesquisa em Software Embarcado FACIN/PUCRS – Faculdade de Informática. Roteiro. Introdução Redes Wireless O mundo Wireless Bluetooth - Visão Teórica Histórico Funcionamento
E N D
Bluetooth Ana Cristina Benso da Silva Andrei Oliveira da Silva Fabrício D’Avila Cabral CPSE – Centro de Pesquisa em Software Embarcado FACIN/PUCRS – Faculdade de Informática
Roteiro • Introdução • Redes Wireless • O mundo Wireless • Bluetooth - Visão Teórica • Histórico • Funcionamento • Pilha de Protocolos • Bluetooth –Visão Prática • Instalando e Configurando Dispositivos Bluetooth • BlueZ – Pilha Bluetooth para Linux • Exemplos de Aplicações
Introdução • CPSE – Centro de Pesquisa em Software Embarcados • Iniciou atividades em 2002 • Cooperação PUCRS/ HP Brasil • Foco • Redes sem fio • Computação ubíqua • Software embarcado • Linguagens de representação e design de documentos digitais • Tecnologias
Redes Wireless • Internet 90´s • Grande acontecimento • Eliminou a barreira da distância geográfica • Alteração de paradigmas de disponibilização e obtenção de informações
Redes Wireless • Redes Wireless – Século XXI • Nova quebra de paradigmas • Desafios • Tornar a tecnologia acessível a maioria dos usuários • Migração de sistemas orientados a voz para sistemas orientados a dados • IP Networks
Visão do Mundo Wireless 1G 2G 3G 4G IPv6 Serviços IP Dados Wireless Broadband (next generation) Internet TCP/IP UTMS Interconexão de Redes Serviços de Voz WLAN Semantic Aware Services WPAN Telefonia Celular GSM IEEE 802.11a CyberWorld Sistema Analógico CDMA IEEE 802.11b TDMA Bluetooth ??? 1980 1990 2000 2010
Wireless LAN (WLAN) • Bluetooth • 2.4 GHz – ISM • Conexões de Curto Alcance • IEEE 802.11b • 2.4 GHz – ISM • 11 Mbps • IEEE 802.11a • 5 GHz • 50 Mbps
Bluetooth – Visão Teórica • Histórico • Harald Blåtand (Bluetooth) • Rei Viking Dinamarquês • Século X (940 a 981) • Habilidade de fazer as pessoas se comunicarem • Uniu e controlou a Dinamarca e Noruega • Costume de comer blueberries (arando ou uva-do-monte)
Bluetooth - Histórico • 1998 • Bluetooth SIG (Special Interest Group) • 3Com, Agere, Ericsson, IBM, Intel, Microsoft, Motorola, Nokia, Toshiba,... • 1999 • Primeira versão da especificação • 2001 • Primeiros produtos com Bluetooth • Bluetooth Academy • Ericsson+Teleca Comtec
Bluetooth - Aplicações • Substituição de cabos • Redes caseiras • Redes em escritórios
Bluetooth – Aplicações • Internet Bridge • Transferência de Arquivos • Acesso a Serviços
Topologias Piconet Scatternet Bluetooth - Funcionamento
Estabelecendo Conexão • Inquiry • Procura por dispositivos • Estados: • Inquiry • Inquiry Scan • Inquiry Response • Page • Estabelece conexões • Estados: • Page • Page Scan
Bluetooth – Pilha de Protocolos OBEX WAP AT- Commands SDP TCS BIN UDP/TCP IP PPP RFCOMM L2CAP Audio Host Controller Interface LMP Baseband Bluetooth Radio
Bluetooth - Radio • Nível Físico • Rádio Freqüência • 2.4 GHZ • Espectro • 2400 MHz – 2483 MHz • 2465 MHz – 2483 MHz • Hopping Sequences • 5 canais com 32 hops (79 Mhz) • 5 canais com 16 hops (23 Mhz)
Bluetooth - Radio • Potência do Sinal • 100 m – 100mW • 10 m – 2.5 mW • 10 cm – 1 mW • Canais suportados simultaneamente • 1 canal de dados assíncrono • 3 canais de voz síncronos • 1 canal de dados assíncrono + 1 canal de voz síncrono Canal de Voz Síncrono – 64 Kbps Canal Assíncronos Simétricos – 433.9 Kbps Canal Assíncrono Assimétrico – 732.2 Kbps
Bluetooth - Baseband • Conexões físicas como canais lógicos • Funções • Gerenciar o estabelecimento de conexões • Controlar Fluxo • Controlar Erros de Transmissão • Endereçar os dispositivos com Bluetooth Address • Controlar a Segurança
Baseband - Enlaces • Enlaces entre Mestre e Escravo • ACL (Asynchronous Connectionless Link) • Ponto-a-Multiponto • Tem Retransmissão • SCO (Synchronous Connection Oriented Link) • Ponto-a-Ponto • Voz • Não tem retransmissão
Baseband – Canais Lógicos • LM – Link Manager • Transporte de informações de controle entre os dispositivos mestre e escravo • LC – Link Control • Transporte de informações de controle de fluxo e correção de erros • UA – User Aynchronous • Transporte de dados do usuário sobre L2CAP • UI – User Isochronous • Transporte de serviços isócronos sobre L2CAP • US – User Synchronous • Transporte de serviços síncronos em enlaces do tipo SCO.
Access Code Header Payload 54 0-2745 LSB 72 MSB Baseband – Formato do Pacote • Access Code • Channel Access Code (CAC) – Piconet ID • Device Code Access (DCA) – Paging • Inquiry Access Code (IAC) – Inquiry • Header • AM_ADDR • Type • ARQN • SEQN • HEC
Baseband – Formato do Pacote • FEC • Forward Error Correction • Enlaces SCO e ACL • ID, NULL, POLL, FHS, DM1 • Enlaces SCO somente • HV1, HV2, HV3, DV • Enlaces ACL somente • DH1, AUX1, DM3, DM5, DH5
Baseband - Endereços • BD_ADDR • Bluetooth Address • 6 bytes • AM_ADDR • Endereço do dispositivo escravo • 3 Bits • PM_ADDR e AR_ADDR • Endereço especial para estações em parked mode • PM_ADDR: mestre endereça o escravo • AR_ADDR: escravo utiliza para determinar janela de acesso
Baseband – Modos de Operação • Active mode • Dispositivo está ativo e sincronizado como canal • Sniff mode • Estado de economia de energia • Escutando no canal com taxa menor • Park Mode • Dispositivo conectado a piconet, que participa ocasionalmente • Hold Mode • Dispositivo reduz a participação, de acordo com a solicitação do mestre ou de sua vontade
Bluetooth - LMP • Link Manager • Componente de Software • Controle de comunicação, autenticação e configuração • LMP - Protocolo • 55 PDU’s • LMP_encryption_mode_req • LMP_version_res • ... • Link Controller- hardware
Bluetooth - HCI • Host Controller Interface • Interface para os comandos LMP e Baseband • HCI Driver - software • HCI Firmware- hardware • HCI Controller Transport Layer - comunicação • USB • UART • RS232
Bluetooth - L2CAP • Logical Link Control and Adaptation Protocol • Identifica e roteia mensagens para os níveis mais altos • Codifica e decodifica os pacotes de dados • Segmenta pacotes para o formato Baseband • Demultiplexar e redirecionar • RFCOMM • SDP • Aplicações sobre L2CAP
Bluetooth - RFCOMM • Emula conexões por portas seriais • Canais com até 60 portas simuladas • Controle de fluxo de dados para retransmitir dados para os níveis mais altos
Bluetooth - SDP • Service Discovery Protocol • Divulgação de serviços em uma rede Bluetooth • Cliente/servidorL2CAP ? ! Device SDP
Bluetooth - Perfis • Definidos pelo SIG • Aplicações que utilizam os níveis superiores da pilha de protocolos • Perfis de uso geral: perfis básicos que dão suporte a outros perfis • Perfis de uso específico: implementam protocolos para modelos de uso
Bluetooth - Perfis • Modelos de uso • Cordless Desktop • Internet Bridge, LAN access • File Transfer, Automatic Synchronizer, Instant Postcard • Briefcase Trick, Forbidden Message • Interactive Conference • 3-in-1 Phone • Ultimate Headset, PC Speaker Phone • Hands-Free Car Kit
Serial Port Profile: emula sinais de transmissão de uma porta serial General Object Exchange Profile: transferência de dados utiliza SPP Bluetooth – Perfis Básicos • Generic Access Profile: • informações básicas do dispositivo • Service Discovery Application Profile: • Aplicações que utilizam SDP - como usar e comportamento
Bluetooth – Perfis Uso Específico • Synchronization Profile: • Informações • Troca • Atualização • Object Push Profile: • Troca de: • Dados • Objetos • LAN Access Profile: • ponto de acesso LAN • TCP/IP • SPP • Dial-up Networking Profile: • Modem - TCP/IP • Internet sem fio
Bluetooth – Perfis Uso Específico • Headset Profile: • Input/output remoto • Áudio • Fax Profile: • Fax modem sem fio • Manda/recebe msg • Cordless Telephony Profile: • “Gateway” de telefonia • Intercom Profile: • “walkie-talkie”
Bluetooth – Perfis Adicionais • Video Remote Distribution Profile : • Vídeo • alta qualidade • ACL • Basic Printing Profile: • GOEP • vCards,... • Extended Service Discovery Profile: • SDP+UPnP • Advanced Audio Distribution Profile: • Audio • alta qualidade • ACL
Bluetooth -Hardware • Dispositivos:
Bluetooth - Software • Software • Proprietários (3com, Toshiba,...) • Drivers • Desenvolvimento • BlueZ (http://bluez.sourceforge.net/) Stack Linux • Affix (http://affix.sourceforge.net/) Stack Linux • Atinav (http://www.atinav.com/download.htm) SDK C e Java • Impronto (http://www.rococosoft.com/) SDK Java
Bluetooth – Visão Prática • Instalação • Configuração • Programação • Aplicações
Aspectos Práticos • BlueZ – Pilha Oficial Linux • GPL • Documentação • API • Programação • Perfis
BlueZ - Instalação • Arquivos • Implementação das bibliotecas básicas • Implementação de perfis • Aplicações de apoio • Instalação • rpm –ivh *.rpm • Distribuições • Red Hat 9.0 • Mandrake 9.1 • Kernel • 2.4.20 • 2.4.21 • BlueZ-libs-2.4-1.i386.rpm • BlueZ-utils-2.3-1.i386.rpm • BlueZ-sdp-1.2-1.i386.rpm • BlueZ-hcidump-1.5-1.i386.rpm • BlueZ-pan-1.1-1.i386.rpm • BlueZ-bluefw-1.0.i386.rpm http://bluez.sourceforge.net/download/redhat/
BlueZ - Módulos • Carregar no kernel • Editar /etc/modules.conf : • alias net-pf-31 blueZ - inicia a pilha BlueZ • alias bt-proto-0 l2cap - inicia o protocolo L2CAP • alias bt-proto-2 sco - inicia o protocolo SCO • alias bt-proto-3 rfcomm - inicia o protocolo RFCOMM
BlueZ - Módulos • Ativar módulos • Editar /etc/rc.local: • modprobe bluez - pilha BlueZ • modprobe hci_usb - interface USB • modprobe ppp_async • modprobe ppp_deflate • modprobe bnep - Ativa protocolo BNEP • hcid - HCI • hciconfig hci0 up - Inicia o dispositivo bluetooth
BlueZ - Módulos • Exemplo de Script para iniciar os módulos: #!/bin/sh if [ "$1" == "restart" ] then echo "Killing dund process..." killall dund echo "Killing sdpd process..." killall sdpd echo "Killing hcid process..." killall hcid fi echo "Starting the BLUEZ modules and services..." modprobe bluez modprobe hci_usb modprobe ppp_async modprobe ppp_deflate modprobe bnep hcid -f /etc/bluetooth/hcid.conf hciconfig hci0 up sdpd echo "Starting dund..." sleep 2 dund --listen --channel 1 noauth echo "1" > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j ACCEPT
BlueZ - Aplicações • Ferramentas de auxílio: • hciconfig • Configuração (nome, classe,...) • hcitool • scan • Inquiry • sdptool • browse • l2ping • Teste de conexão
BlueZ - Aplicações • LAN • Disponibiliza um serviço de LAN Access Point • Configurando o DUND: • Criando os dispositivos /dev/rfcommX • Máximo 7 dispositivos: • mknod –m 666 /dev/rfcomm0 c 216 0 • mknod –m 666 /dev/rfcomm1 c 216 1 • mknod –m 666 /dev/rfcomm2 c 216 2 • mknod –m 666 /dev/rfcomm3 c 216 3 • mknod –m 666 /dev/rfcomm4 c 216 4 • mknod –m 666 /dev/rfcomm5 c 216 5 • mknod –m 666 /dev/rfcomm6 c 216 6
BlueZ - Aplicações • LAN • Configurando o DUND (cont.): • Configurando o PPP • /etc/ppp/options noauth local noipdefault proxyarp ms-dns 10.0.0.1 netmask 255.255.255.0 connect "sleep 2; echo -n CLIENTSERVER"
BlueZ - Aplicações • LAN • Configurando o DUND (cont.): • Criar um arquivo para cada dispositivo rfcomm contendo IP local e o IP a ser atribuido pro dispositivo que se conectou: • /etc/ppp/options.rfcommX: 10.0.0.1:10.0.0.2 IP LOCAL IP REMOTO
BlueZ - Aplicações • LAN • Configurando o DUND (cont.): • Servidor: • Exemplo tirado do script mostrado anteriormente: #!/bin/sh echo "Starting dund..." sleep 2 dund --listen --channel 1 noauth echo "1" > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j ACCEPT
BlueZ - Aplicações • LAN • Configurando o DUND (cont.): • Cliente: Endereço Bluetooth da máquina servidora dund –-connect xx:xx:xx:xx:xx:xx --channel 1 --msdun
BlueZ - Programação • Sockets • Bibliotecas • #include <bluetooth/bluetooth.h> • #include <bluetooth/l2cap.h> • #include <bluetooth/rfcomm.h>
BlueZ - Programação • Estruturas • Exemplos: • sockaddr_in s_addr • L2CAP • sockaddr_l2 • RFCOMM • sockaddr_rc s_addr.l2_family = AF_BLUETOOTH; s_addr.l2_psm = htobs(100); baswap(&s_endereco.l2_bdaddr, addr); s_ addr.rc_family = AF_BLUETOOTH; bacpy(&s_ addr.rc_bdaddr, BDADDR_ANY); s_ addr.rc_channel = 1; str2ba(addr, &s_addr.rc_bdaddr);