O formato geral de uma pacote Bluetooth é mostrado abaixo:
Conforme pode ser observado, o pacote é composto por três partes principais, a saber:
Constitui a primeira parte do pacote, permitindo a sincronização das unidades da piconet, a compensação do componente DC, e a identificação da piconet ou do dispositivo endereçado. O formato geral deste campo é mostrado abaixo (figura 6).
O preâmbulo do código de acesso é composto por uma seqüência fixa de 0's e 1's, utilizada para a compensação DC. O campo de sincronismo é composto por um código derivado da parte baixa do endereço do dispositivo, denominada LAP, de Lower Address Part. Finalmente, quando o código de acesso é seguido por um cabeçalho (header), o campo de trailer, formado por 0's e 1's alternados, é enviado, visando melhorar ainda mais a compensação DC.
Os tipos de código de acesso são os seguintes:
Identifica a piconet de forma única, sendo incluído em todo os pacotes transmitidos através do canal. O campo de sincronismo do CAC é derivado do LAP da unidade master.
Este código de acesso é utilizado para o procedimento de paging, descrito na parte que trata do estabelecimento de conexões. O campo de sincronismo, no caso, é derivado do LAP do dispositivo que está sendo acessado.
Utilizado quando o master deseja descobrir quais dispositivos Bluetooth estão presentes em seu raio de ação. Esta interrogação pode ser geral (GIAC, de General Inquiry Access Code), ou dedicada (DIAC, de Dedicated Inquiry Access Code). Enquanto o GIAC é direcionado a todas as unidades Bluetooth presentes, o DIAC é endereçado a um subgrupo de unidades Bluetooth que possuem alguma característica em comum.
O cabeçalho do pacote, conforme mostrado na figura 7, é composto por 6 campos, descritos a seguir:
Conforme pode ser observado, os campos do cabeçalho descritos acima ocupam apenas 18 dos 54 bits reservados para o mesmo. O restante dos bits é gasto devido à utilização de FEC 1/3, permitindo uma eventual correção de erros do cabeçalho no receptor.
O conteúdo do campo de payload depende do tipo de pacote enviado; de forma geral, quando o pacote em questão não é de controle, este campo pode ser composto por um campo de voz, um campo de dados, ou ambos. Um campo de dados é geralmente subdividido em 3 campos: um de cabeçalho, um com o corpo da mensagem, e um terceiro com o código CRC para a verificação de erros de transmissão.
Os tipos de pacotes definidos na especificação do protocolo são descritos a seguir.