Bluetooth
Procure dispositivos Bluetooth Low Energy nas proximidades, inspecione a intensidade do sinal e os dados de anuncio, navegue pelos servicos e caracteristicas GATT e visualize dados ao vivo de perifericos conectados.
Visao geral
A ferramenta Bluetooth usa o framework CoreBluetooth da Apple para atuar como um central BLE (Bluetooth Low Energy) e buscar perifericos proximos. Ela exibe todos os dispositivos que descobre, junto com a intensidade do sinal em tempo real (RSSI), dados de anuncio e status de conexao. Voce pode conectar a perifericos conectaveis para navegar seus servicos e caracteristicas GATT, ler valores, assinar notificacoes e inspecionar dados do fabricante.
Sumario
- Tela de Visao Geral
- Tela de Detalhes do Dispositivo
- Permissoes e Requisitos
- Detalhes Tecnicos
- Notas e Limitacoes
- Solucao de Problemas
Tela de Visao Geral
A tela de visao geral e a visualizacao principal da ferramenta Bluetooth. Ela contem uma barra de busca, um cartao de status com controles de varredura e uma lista rolavel de dispositivos descobertos.
Barra de Busca
Um campo de texto no topo da tela filtra a lista de dispositivos por nome. Digitar uma consulta restringe instantaneamente a lista aos dispositivos cujo nome anunciado ou nome do periferico contem o texto de busca (sem diferenciacao de maiusculas e minusculas). Um botao de limpar aparece quando o campo nao esta vazio.
Cartao de Status do Bluetooth
O cartao de status exibe:
- Rotulo Status do Bluetooth com o estado atual do radio, codificado por cores:
- Ligado (verde) — o Bluetooth esta ativo e pronto para varredura.
- Desligado (vermelho) — o radio Bluetooth esta desligado.
- Nao Autorizado (laranja) — o usuario negou permissao Bluetooth para o app.
- Nao Suportado (vermelho) — o hardware do dispositivo nao suporta Bluetooth.
- Desconhecido / Reiniciando (cinza) — o sistema ainda esta determinando o estado do Bluetooth.
- Um botao de controle de varredura (visivel apenas quando o Bluetooth esta Ligado):
- Parar Varredura (vermelho) — para a varredura ativa.
- Iniciar Varredura (verde) — inicia a varredura por perifericos proximos.
A varredura inicia automaticamente quando a ferramenta e aberta e o Bluetooth esta ligado.
Lista de Dispositivos
Os dispositivos descobertos aparecem em uma lista rolavel, ordenada por RSSI (sinal mais forte primeiro). A lista e atualizada em tempo real conforme novos dispositivos sao encontrados ou dispositivos existentes atualizam seus dados de anuncio.
Linha do Dispositivo
Cada dispositivo e exibido como um cartao contendo:
- Um icone Bluetooth dentro de um emblema circular. Um arco branco sobrepoe o circulo, preenchendo proporcionalmente a intensidade do sinal do dispositivo (0-100%).
- Nome do dispositivo — o nome local anunciado ou nome do periferico. Dispositivos que nao transmitem um nome aparecem como
[No Name]. - RSSI — a intensidade do sinal recebido em dB (ex:
RSSI: -43 dB). - Um indicador de status no canto inferior esquerdo, mostrando um dos seguintes:
- Conectado (verde) — o dispositivo esta atualmente conectado.
- Conectavel (azul) — o dispositivo anuncia que aceita conexoes.
- Servicos: N — o numero de servicos GATT que o dispositivo anuncia (mostrado quando servicos estao presentes mas o dispositivo ainda nao esta conectado).
- (sem rotulo) — o dispositivo nao e conectavel e nao anuncia servicos.
- Um indicador na direita:
- Um icone verde de check se o dispositivo estiver conectado.
- Um chevron (
>) se o dispositivo for conectavel (toque para abrir detalhes). - Texto Nao Conectavel se o dispositivo nao aceitar conexoes.
Toque em qualquer linha de dispositivo para navegar ate a Tela de Detalhes do Dispositivo.
Estados Vazios
A visao geral mostra estados vazios contextuais:
- Varrendo — um icone de lupa com animacao de carregamento enquanto a varredura inicial esta em andamento e nenhum dispositivo foi encontrado ainda.
- Bluetooth Desligado / Nao Suportado — um icone Bluetooth cortado com o estado atual e um aviso para ligar o Bluetooth.
- Varredura Parada — um icone Bluetooth com um botao Iniciar Varredura quando o Bluetooth esta ligado mas a varredura foi parada manualmente e nao ha dispositivos na lista.
Tela de Detalhes do Dispositivo
Tocar em uma linha de dispositivo abre uma tela de detalhes dedicada. A tela e dividida em uma area de cabecalho, um medidor de intensidade do sinal e tres abas de conteudo.
Cabecalho e Conexao
O cabecalho contem:
- Um botao de voltar (
< Devices) para retornar a tela de visao geral. - O nome do dispositivo exibido em destaque.
- Um indicador de estado de conexao — um ponto colorido ao lado de um rotulo:
- Conectado (verde)
- Conectando (laranja)
- Desconectado (vermelho)
- Desconectando (laranja)
- Um botao Conectar / Desconectar (mostrado apenas para dispositivos conectaveis):
- Conectar (azul) — inicia uma conexao BLE. Um spinner de carregamento e mostrado enquanto a conexao esta sendo estabelecida.
- Conectando... (azul, desabilitado) — exibido durante a tentativa de conexao.
- Desconectar (vermelho) — encerra a conexao ativa.
Quando uma conexao e estabelecida, a ferramenta descobre automaticamente todos os servicos GATT e suas caracteristicas. Caracteristicas legiveis sao lidas imediatamente, e caracteristicas que suportam notificacoes sao assinadas automaticamente.
Medidor de Intensidade do Sinal
A secao de intensidade do sinal fornece uma visualizacao detalhada e em tempo real do sinal de radio do dispositivo:
-
Medidor circular — um arco que preenche de 0% a 100% com um gradiente angular (vermelho para laranja para amarelo para verde). O valor atual do RSSI em dBm e exibido no centro.
-
Distancia aproximada — uma estimativa legivel derivada do valor RSSI:
Faixa de RSSI Rotulo -30 a -50 dBm Muito Perto -51 a -65 dBm Perto -66 a -80 dBm Medio -81 a -90 dBm Longe Abaixo de -90 dBm Muito Longe -
Barras de sinal — um indicador de 5 barras que preenche com base na porcentagem de intensidade do sinal.
-
Qualidade do sinal — um rotulo de texto: Excelente (>80%), Bom (>60%), Razoavel (>40%), Fraco (>20%) ou Muito Fraco (<=20%).
-
RSSI — o valor bruto em dBm.
-
Potencia TX — o nivel de potencia de transmissao em dBm, se o dispositivo o anunciar. Este valor representa a intensidade do sinal a 1 metro do transmissor e pode ser usado para estimar a distancia.
-
Historico do Sinal — um grafico de barras rolante das ultimas 20 leituras de RSSI, codificado por cores (verde >= -60, amarelo >= -75, vermelho < -75). Isso ajuda a visualizar a estabilidade do sinal ao longo do tempo.
Aba Info
A aba Info exibe informacoes gerais sobre o dispositivo, organizadas como linhas chave-valor:
| Campo | Descricao |
|---|---|
| Nome | O nome anunciado ou do periferico (ou [No Name]). |
| Identificador | O UUID do periferico atribuido pelo CoreBluetooth. Este e um identificador local e nao e o endereco MAC real do dispositivo. |
| RSSI | Intensidade do sinal recebido atual em dB. |
| Potencia TX | Potencia de transmissao em dBm (mostrado apenas se anunciado pelo dispositivo). |
| Conectavel | Se o dispositivo aceita conexoes BLE (Sim / Nao). |
| Estado | Estado atual da conexao (Conectado, Conectando, Desconectado, Desconectando). |
| Descoberto | Timestamp de quando o dispositivo foi visto pela primeira vez durante esta sessao de varredura. |
| Ultima Atualizacao | Timestamp da atualizacao mais recente de anuncio ou RSSI. |
Abaixo das linhas chave-valor, duas secoes adicionais aparecem quando o dispositivo fornece os dados correspondentes:
- Servicos Anunciados — uma lista de UUIDs de servicos GATT que o dispositivo inclui em seus pacotes de anuncio. Servicos padrao conhecidos sao mostrados com seu nome legivel ao lado do UUID (ex:
180F (Battery Service),180A (Device Information)). Veja Servicos Reconhecidos para a lista completa. - Dados do Fabricante — os dados brutos especificos do fabricante do anuncio, exibidos como uma string hexadecimal. Os dois primeiros bytes codificam o identificador da empresa Bluetooth SIG (little-endian).
Aba Servicos
A aba Servicos esta disponivel somente quando o dispositivo esta conectado. Ela mostra a arvore completa de servicos e caracteristicas GATT descobertos durante a conexao.
Cada servico e exibido como uma linha expansivel:
- Um icone colorido indicando a categoria do servico:
- Azul — Servicos genericos (Generic Access
1800, Generic Attribute1801) - Verde — Battery Service (
180F) - Laranja — Device Information (
180A) - Roxo — Servicos especificos do fornecedor (UUIDs comecando com
FE) - Cinza — Outros / servicos desconhecidos
- Azul — Servicos genericos (Generic Access
- O nome do servico (resolvido a partir do UUID para servicos conhecidos) e a string UUID bruta.
- Um emblema mostrando o numero de caracteristicas pertencentes a esse servico.
- Um chevron que gira quando o servico esta expandido.
Servicos Reconhecidos
| UUID | Nome do Servico |
|---|---|
1800 | Generic Access |
1801 | Generic Attribute |
180A | Device Information |
180F | Battery Service |
1812 | HID (Human Interface Device) |
1813 | Scan Parameters |
1819 | Location and Navigation |
181C | User Data |
FE59 | Apple Notification Center |
Expandir um servico revela suas caracteristicas. Cada linha de caracteristica mostra:
- Um icone colorido baseado na propriedade principal (roxo para leitura+escrita, azul para somente leitura, verde para somente escrita, laranja para somente notificacao, cinza caso contrario).
- O nome da caracteristica (resolvido a partir do UUID para caracteristicas GATT conhecidas) e a string UUID bruta.
- Rotulos de propriedade — pequenos rotulos coloridos para cada propriedade suportada:
- Read (azul) — o valor pode ser lido sob demanda.
- Write (verde) — o valor pode ser escrito com confirmacao.
- Write No Response (verde claro) — o valor pode ser escrito sem confirmacao.
- Notify (laranja) — a caracteristica pode enviar atualizacoes ao central.
- Indicate (laranja claro) — como Notify mas com confirmacao.
- Auth (roxo) — a caracteristica requer escritas assinadas autenticadas.
- Um botao de olho para alternar (mostrado quando a caracteristica tem um valor). Ao tocar, revela o valor atual da caracteristica, exibido em multiplos formatos:
- Hex — a sequencia bruta de bytes.
- String — uma interpretacao UTF-8, se os bytes formarem texto valido.
- Numerico — interpretacao automatica baseada no comprimento dos bytes:
- 1 byte: valor UInt8
- 2 bytes: valor UInt16
- 4 bytes: valor UInt32 e valor Float
Caracteristicas Reconhecidas
| UUID | Nome da Caracteristica |
|---|---|
2A00 | Device Name |
2A01 | Appearance |
2A04 | Peripheral Preferred Connection Parameters |
2A05 | Service Changed |
2A19 | Battery Level |
2A23 | System ID |
2A24 | Model Number String |
2A25 | Serial Number String |
2A26 | Firmware Revision String |
2A27 | Hardware Revision String |
2A28 | Software Revision String |
2A29 | Manufacturer Name String |
2A2A | IEEE 11073-20601 Regulatory Certification Data List |
2A50 | PnP ID |
Aba Dados
A aba Dados mostra dados interpretados ao vivo do dispositivo conectado. Se o dispositivo nao estiver conectado, um aviso e exibido com um botao Conectar (para dispositivos conectaveis) ou uma mensagem informativa.
Quando conectado, a aba mostra ate tres cartoes:
-
Dados do Fabricante — a carga util especifica do fabricante do anuncio:
- ID do Fabricante — resolvido a partir dos dois primeiros bytes (little-endian) dos dados do fabricante. IDs conhecidos incluem Apple (
0x004C), Microsoft (0x0006), Samsung (0x0075), Xiaomi (0x038F) e Bosch (0x01D7). IDs desconhecidos sao mostrados em hex (ex:ID: 0x1234). - Dados Brutos — o dump hexadecimal completo dos bytes dos dados do fabricante.
- Visualizacao de bytes — um grafico de barras horizontal onde cada barra representa um byte. A altura da barra e proporcional ao valor do byte (0-255), fornecendo uma impressao digital visual rapida dos dados.
- ID do Fabricante — resolvido a partir dos dois primeiros bytes (little-endian) dos dados do fabricante. IDs conhecidos incluem Apple (
-
Valores das Caracteristicas — uma lista de todas as caracteristicas que tem um valor legivel. Cada entrada mostra:
- O nome da caracteristica (ou UUID se desconhecido).
- O valor interpretado (como byte, UInt16, UInt32/Float, string UTF-8 ou hex dependendo do comprimento dos dados).
- Um pequeno grafico de barras de bytes para valores ate 8 bytes, com barras codificadas por cor conforme magnitude (azul < 30%, verde < 60%, amarelo < 80%, vermelho >= 80%).
- Os valores sao atualizados automaticamente para caracteristicas que suportam notificacoes.
-
Informacoes de Conexao — metadados de tempo e sinal:
- Descoberto — o horario em que o dispositivo foi visto pela primeira vez, com o tempo decorrido desde a descoberta.
- Ultima Atualizacao — o horario da atualizacao de dados mais recente, com Potencia TX se disponivel.
Permissoes e Requisitos
- Permissao Bluetooth — o CoreBluetooth requer que o usuario conceda acesso ao Bluetooth. Se a permissao for negada, o Lirum mostra uma tela de permissoes com um botao para abrir as Configuracoes do iOS para que o usuario possa reativar o acesso.
- Radio Bluetooth — se o Bluetooth estiver desligado, a ferramenta permanece acessivel mas os controles de varredura ficam desabilitados e um estado vazio solicita ao usuario que ligue o Bluetooth. Nenhum portao de permissao e mostrado neste caso.
- A permissao Bluetooth e gerenciada pelo sistema; nao ha um botao explicito de "solicitar permissao". O prompt do sistema aparece automaticamente na primeira vez que o CoreBluetooth e inicializado.
Detalhes Tecnicos
- A ferramenta atua como um Central BLE usando
CBCentralManager. Ela varre todos os perifericos proximos (scanForPeripherals(withServices: nil)), ou seja, descobre dispositivos independentemente de quais servicos eles anunciam. - Os valores de RSSI (Indicador de Intensidade do Sinal Recebido) tipicamente variam de -30 dBm (muito forte, dispositivo muito proximo) a -100 dBm (muito fraco, dispositivo distante ou obstruido). A ferramenta normaliza esta faixa para uma escala de 0-100% usando a formula:
(RSSI + 100) / 70. - Para dispositivos conectados, o RSSI e consultado a cada 2 segundos usando
readRSSI(). Um filtro de ruido suprime atualizacoes menores que 2 dB para reduzir tremores visuais. - Na conexao, a ferramenta chama
discoverServices(nil)para enumerar todos os servicos GATT, depoisdiscoverCharacteristics(nil, for:)em cada servico. Caracteristicas legiveis sao lidas automaticamente viareadValue(for:), e caracteristicas com capacidade de notificacao sao assinadas viasetNotifyValue(true, for:). - A Potencia TX (
CBAdvertisementDataTxPowerLevelKey) representa a intensidade do sinal a 1 metro do transmissor. Quando ambos Potencia TX e RSSI sao conhecidos, a diferenca pode ser usada para estimar a perda de caminho e a distancia aproximada. - Os Dados do Fabricante (
CBAdvertisementDataManufacturerDataKey) seguem o formato Bluetooth SIG: os dois primeiros bytes sao o identificador da empresa em ordem little-endian, seguidos pelos bytes da carga util especifica do fornecedor. - O identificador do periferico mostrado na aba Info e um UUID atribuido pelo CoreBluetooth no dispositivo local. E estavel entre inicializacoes do app para o mesmo dispositivo mas nao e o endereco MAC Bluetooth real (que o iOS nao expoe).
Notas e Limitacoes
- O que voce pode ver depende do que cada periferico anuncia e do que o iOS expoe via CoreBluetooth. Alguns dispositivos anunciam dados minimos.
- Muitos dispositivos aparecem como
[No Name]porque nao incluem um nome local em seus pacotes de anuncio. - As estimativas de distancia aproximada sao orientacoes gerais baseadas em limites de RSSI. As distancias reais variam significativamente dependendo do ambiente, obstaculos, orientacao da antena e potencia de transmissao.
- Nem todos os dispositivos conectaveis conectam com sucesso. Alguns requerem emparelhamento previo nas Configuracoes do iOS, e alguns podem rejeitar conexoes de centrais desconhecidos.
- Dispositivos Bluetooth classicos (nao BLE) nao sao visiveis atraves do CoreBluetooth e nao aparecem nos resultados da varredura.
- Os valores RSSI podem flutuar rapidamente devido a interferencia multipercurso, absorcao corporal e outros fatores ambientais. O grafico de historico do sinal ajuda a suavizar visualmente estas variacoes.
Solucao de Problemas
- Nenhum dispositivo encontrado — certifique-se de que o Bluetooth esta ligado, permaneca na tela do Bluetooth por alguns segundos e toque em Iniciar Varredura se a varredura tiver sido parada.
- Permissao negada — toque no botao Abrir Configuracoes na tela de permissoes e reative o acesso ao Bluetooth para o Lirum nas Configuracoes de Privacidade do iOS.
- Falha na conexao — o dispositivo pode requerer emparelhamento nas Configuracoes do iOS primeiro, pode nao suportar conexoes de apps de terceiros, ou pode ter saido do alcance.
- Aba de servicos vazia — alguns dispositivos nao expoem servicos ou atrasam a descoberta de servicos. Aguarde alguns segundos apos conectar. Se nenhum servico aparecer, o dispositivo pode nao suportar perfis GATT padrao.
- Valores das caracteristicas mostram apenas hex — a ferramenta tenta interpretar valores como texto UTF-8 e tipos numericos comuns. Se nenhuma dessas interpretacoes se aplicar, o dump hexadecimal bruto e mostrado.