Presentazione Marco Bianchessi Laurea in Ingegneria Elettronica Politecnico di Milano Lavoro In STMicroelectronics dal 1994 Mi occupo di Bluetooth dal 1998 Membro del Bluetooth Hi-Rate working group Membro di: – – – Radio improvement WG Automotive expert Group Industrial automation Study Group Email [email protected] Corso Bluetooth 14-4-2003, 3 ore Bluetooth Phy e Baseband 5-5-2003, 3 ore Baseband LMP 3 ore HCI +L2CAP 3 ore RFCOM, SDP e profili (corso di Rossi) Cosa e’ Bluetooth? Non e’ una wireless LAN E’ un sistema wireless di “cable replacement” E’ estremamente versatile Specifica non solo la comunicazione ma anche l’applicazione Si propone come l’interfaccia universale di collegamento per terminali mobili Cosa significa “Bluetooth” Soprannome di Harald, re vichingo vissuto nel decimo secolo. “Blatand” in danese significa “dalla pelle scura” in inglese e’ diventato “Bluetooth” Nome provvisorio del progetto, e’ rimasto come nome definitivo. Come e’ nato Bluetooth Il SIG (Special Interest Group) viene fondato nel 1998 da Nokia Intel Ericsson IBM e Toshiba Dopo 6 mesi le prime specifiche vengono pubblicate Il SIG accetta nuovi membri, finora oltre 2000 aziende si sono associate I nuovi membri partecipano alla definizionee revisione delle specifiche Inizio 2001 vengono pubblicate le specifiche 1.1, la versione definitiva su cui si basano I prodotti attuali Bluetooth stack Applications TCP/IP HID RFCOMM Data Audio L2CAP Link Manager Baseband RF Specifiche radio Opera nella banda ISM (Industrial Scientific and Medical), allocata tra 2.4 e 2.5 Ghz Nella stessa banda operano anche: – – – Wireless LAN 802.11 Forni a Microonde Sistemi proprietari (Video, audio, dati, controllo) Limitazioni sull’ emissione di potenza Spettro RF (usi civili) AM Radio 100Khz TV UHF GSM 1 Mhz GPS 1GHz Radio OC TV VHF 10Mhz FM Radio TV VHF 100Mhz GSM DECT UMTS ISM 1800 2GHz Telepass 3GHz Fast frequency hopping Tecnica di spread spectrum robusta e a basso costo ma relativamente poco efficiente Permette a Bluetooth di operare correttamente anche in ambienti molto disturbati Si basa su una radio a banda 1Mhz che viene commutata velocemente (1600 hops al secondo) secondo una sequenza pseudo-casuale 79 canali a disposizione,da 2.402GHz a 2.480GHz. La banda totale occupata e’ 79 Mhz, la potenza media emessa in ogni singola banda e’ statisticamente 1/79 della potenza nominale Modulazione GFSK (Gaussian Frequency shift keying), – – – 2 levels (1 bit) FM modulation 1 M symbol/s 1 MHz Bandwidth Ideal zero crossing 1 Ft+fd •BT=0.5 •Indice di Modulazione 0.28,0.35 •Minima deviazione115KHz •Symbol rate 1us +/- 20PPm Ft 0 Ft-fd t 1us Classi di potenza Power Class Maximum Output Power (Pmax) Nominal Output Power Minimum Output Power1) Power Control 1 100 mW (20 dBm) N/A 1 mW (0 dBm) Pmin<+4 dBm to Pmax 2 2.5 mW (4 dBm) 1 mW (0 dBm) 0.25 mW (-6 dBm) Optional: 3 1 mW (0 dBm) N/A N/A Optional: • 0dBm=1mW, 10dBm=10mW, 20dBm=100mW Sensitivity Parametro che identifica la bonta’ del ricevitore Si definisce come il livello di potenza ricevuta (in dBm) al quale il ricevitore garantisce un BER pari a 10-3 Le specifiche richiedono almeno –70dBm, alcuni design attuali arrivano fino a –85dBm Link budget Pr=Pt-Alt+Ag-PL-Alr PL (propagation loss) dipende dalla distanza In campo aperto PL d2, in ambienti indoor PL d4 Limite di funzionamento: Pr=sensitivity Con I dati di specifica: – – 10 metri con Pt= 0dBm 100 metri con Pt=20dBm Pr=Potenza ricevuta (in dBm) Pt=Potenza emessa (in dBm) Alt=perdite di adattamento (in dB) Ag=guadagno di antenna (in dB) Pl= Attenuazione di propagazione (in dB) Alr= adattamento al ricevitore (in dB) Frequency hopping freq 2.402 2.480 79 canali da 1MHz master slave time TDD Time division duplexing f(2k) f(2k+1) A >=260 ms B f(2k+2) t t 625 ms Dopo ogni pacchetto da A a B segue un pacchetto di risposta da B ad A Ogni pacchetto viene trasmesso su un differente canale RF Uno slot temporale vale 625 us (1/1600Hz) Tra un pacchetto e il successivo viene riservato un intervallo di 200 us per commutare frequenza, l’ efficienza scende al 70% Topologia Piconet master active slave parked slave standby Ruoli Master – – – Stabilisce la sequenza pseudocasuale di hopping Diventa master il primo dispositivo che chiede la connessione, è possibile un Master/Slave switch Ogni dispositivo, anche il più semplice, puo diventare master Slave – – – – Fino a 7 slaves contemporaneamente attivi in una piconet Ogni slave puo comunicare solo con il master Può trasmettere solo in risposta ad un pacchetto del master Ogni slave attivo riceve un indirizzo di 3 bits (AM_address) BD_address Ogni dispositivo Bluetooth possiede un BD_address univoco, di 48 bit Derivato dal MAC address IEEE 802 Si compone di 3 sottoparti: – – – LAP (Lower address part) 24 bits UAP (Upper address part) 8 bits NAP (Non-significant address part) 16 bits Bluetooth Clock 3200 Hz CLK 27 12 11 10 9 8 7 6 5 4 3 2 1 0 312.5uS 1.28S 1.25mS 625uS Contatore a 28 bits, incrementato a 3.2kHz Si riazzera ogni 23 ore, 18 minuti e 6 secondi Ogni dispositivo ha un proprio clock indipendente, resettato solamente all’accensione Due dispositivi per sincronizzarsi calcolano il proprio offset relativo come differenza dei rispettivi clock L’ offset relativo rimane costante nel tempo Sequenza di Hopping 27 bits Selection kernel HOP Channel phase NATIVE CLK 1 : 79 sequence 27 bits Offset 28 bits (LAP+4 bits UAP) MASTER BD_ADDR Pacchetti 72b 54b access code packet header 0-2745b payload Iniziano con un access code, necessario alla radio per trovare il pacchetto 54bits di header, identifica il pacchetto Da 0 a 2745 bits di payload FEC • 2 tipi di Forward-Error Correction (FEC) • 1/3 rate: bit-repeat code • Corregge fino a un errore ogni3 bits • 2/3 rate: (15,10) shortened Hamming code • Corregge un errore ogni 15 Access code LSB 4 Preambolo Sync word 4 MSB Trailer Preambolo: vale 1010 se syncword inizia con 1, vale 0101 se inizia con 0 Syncword:derivata dal LAP del BD_Address: – – – 64 DAC (device access code) relativo ad un device CAC (channel access code) relativo alla piconet GIAC (generic inqiuiry a.c.) usato nella fase di inquiry Trailer, vale 1010 se syncword finisca con 0, vale 0101 se finisce con 1 Correlatore Sinc word Ac1 Ac2 Ac3 Ac4 Ac5 Ac6 Ac62Ac63Ac64 XXXXXXX XXXX Bits ricevuti 1 0 0 0 1 1 0 0 1......0 1 0 0 X 1x1=1 1x0=0 Operatore xor: 0x1=0 0x0=1 Operatore somma Ricerca i 64 bit dell’access code all’interno dello stream ricevuto In media il valore di uscita vale 32 All’ arrivo dell’ access code corretto vale 64 Si pone una soglia di ricezione attorno a 58/60 per rilevare il pacchetto anche in presenza di errori Packet header 3 AM_ADDR 4 TYPE 1 FLOW parameter AM_ADDR 1 ARQN 1 SEQN 8 HEC information slave active member address TYPE payload type FLOW LC flow control ARQN ACK/NAK SEQN retransmit ordering HEC header error check Il pachet header e’protetto con FEC 1/3 -> 18*3=54 bits ARQ A B B X C MASTER SLAVE 1 SLAVE 2 G F H Z Z NAK ACK Flow control Quando il ricevitore non può accettare nuovi dati per un certo tempo (es. Una stampante con buffer pieno), viene attivato il bit di flow del pacchetto di risposta (Flow=0) Il trasmettitore, alla ricezione di un Flow=0 smette di inviare dati. Periodicamente si riprova ad accedere al ricevitore per verificarne lo stato (es. con POLL) Quando poll torna ad 1, la reasmissione riprende. Pacchetti speciali ID, ha solamente l’access code Poll – – Null – – Non ha payload, richiede una risposta Usato dal master per interrogare gli salves Non ha payload, non richiede risposta Usato per terminare un trasferimento FHS Class of device Serve per identificare velocemente il tipo di dispositivo, le classi definite sono: – – – – – – Computer (desktop,notebook, PDA, organizers, .... ) Phone (cellular, cordless, payphone, modem, ...) LAN /Network Access point Audio/Video (headset,speaker,stereo, video display, vcr..... Peripheral (mouse, joystick, keyboards, ..... ) Imaging (printing, scanner, camera, display, ...) Link asimmetrico f(k) f(k+1) f(k+2) f(k) f(k) f(k+3) f(k+4) f(k+5) f(k+3) f(k+4) f(k+5) f(k+5) ACL Links Asynchronous Connection_Less Vengono utilizzati per trasportare dati Possono utilizzare pacchetti multislot e FEC Implementano sempre il meccanismo ARQ Sono automaticamente attivati al momento della connessione SCO Links Synchronous Connection Oriented Vengono utilizzati per trasportare la voce Si riservano periodicamente degli slot per la comunicazione sincrona Ogni link SCO garantisce un throughput di 64kbps bidirezionale Non e’implementato il meccanismo ARQ, quindi I pacchetti sono soggetti ad errori Vengono attivate a richiesta appoggiandosi a una connessione ACL Codifica della voce CVSDM 1 1 0 0 0 0 0 0 1 0 1 1 1 1 1 0 1 0 0 0 0 1 1 1 0 0 0 1 0 1 0 1 0 . . . . . . . Tipi di pacchetto segment 1 2 3 4 type 0000 0001 0010 0011 SCO link ACL link NULL POLL FHS DM1 NULL POLL FHS DM1 type symmetric DM1 108.8 108.8 108.8 DH1 172.8 172.8 172.8 DM3 258.1 387.2 54.4 AUX1 DH3 390.4 585.6 86.4 1010 1011 1100 1101 DM3 DH3 DM5 286.7 477.8 36.3 DH5 433.9 723.2 57.6 1110 1111 DM5 DH5 0100 0101 0110 0111 1000 1001 DH1 HV1 HV2 HV3 DV asymmetric Payload (solo nei link ACL) Payload header Payload Body (0:2700 bits) CRC (16 bits) Payload header: 1 byte per pacchetti singoli 2 per pachetti multipli (3/5 slot) L_CH: 11= pacchetti di controllo, 10= inizio dati, 01=continuazione dati Data whitening Si sovrappone al flusso dati un flusso pseudocasuale Il flusso così generato ha caratteristiche spettrali migliori In ricezione si ricostruisce lo stesso flusso e lo si elide Payload processing Connessione iniziale 79 32 TX 312.5 us RX • Ricevitore e trasmettitore non sono ancora sincronizzati, ne in tempo ne in frequenza • I canali utilizzati sono ridotti a soli 32 dei 79 possibili per diminuire il tempo di connessione • Il trasmettitore invia pacchetti ad un rate doppio del normale (3200/sec), •La sequenza di hopping e’ semplificata e indipendente dall’adddress • Il ricevitore ascolta su un canale per un tempo necessario a ricevere almeno 16 pacchetti • Statisticamente prima o poi capita che le frequenza coincidano • Il pacchetto ricevuto contiene le informazioni necessarie a ricevere i pacchetti successivi Page Quando un disposivo vuole connettersi ad un altro conoscendone il BD_address. Il >Master è in stato di page: invia in continuazione pacchetti ID con l’access code dello >Slave e, dopo ogni paccchetto trasmesso, rimane in ascolto di una risposta dallo slave Lo >Slave e’ in ‘inquiry scan’:ricerca il proprio access code e quando lo trova, risponde con il proprio ID Un >master quando sente l’eco dello >slave invia un FHS packed con il proprio BD_address e clock Se lo >slave lo riceve correttamente, risponde con un ID e usando le informazioni contenute in FHS inizia ad ascoltare la piconet Inquiry Usato per raccogliere informazioni sugli eventuali dispositivi bluetooth nelle vicinanze Il dispositivo che fa l’inquiry invia una serie di ID packet usando un particolare access code GIAC, dopo ogniun ascolta la risposta Ogni dispositivo in inquiry scan, ascolta in canale ricercando il GIAC, se lo trova risponde col proprio FHS packet. Per evitare collisioni, la risposta e’ ritardata di un tempo random Stati Stati low power (per gli slave) Active – – – Parked: – Active: Il dispositivo è sempre in attesa di un possibile pacchetto dal master Hold: Il dispositivo è in stand-by per un tempo hTO dopo di che torna active Sniff: Il dispositivo và in stand-by ogni Ts e vi rimane per in tempo Nsa Il dispositivo è sincronizzato ma disattivato (no AM_Address), ogni TB ascolta il master per controllare se deve riattivarsi Unconnected – – Page scan: Il dispositivo ascolta pacchetti di page per Tw p.s. ogni Tp.s. Inquiry scan: Il dispositivo ascolta pacchetti di inquiry per Tw I.s. ogni Ti.s.