Saltar para o conteúdo principal

Bluetooth

Procure dispositivos Bluetooth Low Energy próximos, inspecione a intensidade do sinal e os dados de anúncio, navegue pelos serviços e características GATT e visualize dados em tempo real dos periféricos ligados.

Ecrã de visão geral com controlos de pesquisa e dispositivos próximos ordenados por RSSI.
Cada linha de dispositivo mostra o seu nome, RSSI e se é conectável.

Visão geral

A ferramenta Bluetooth utiliza o framework CoreBluetooth da Apple para atuar como um central BLE (Bluetooth Low Energy) e procurar periféricos próximos. Exibe todos os dispositivos descobertos, juntamente com a intensidade do sinal em tempo real (RSSI), dados de anúncio e estado da ligação. Pode ligar-se a periféricos conectáveis para navegar pelos seus serviços e características GATT, ler valores, subscrever notificações e inspecionar dados do fabricante.

Índice


Ecrã de Visão Geral

O ecrã de visão geral é a vista principal da ferramenta Bluetooth. Contém uma barra de pesquisa, um cartão de estado com controlos de pesquisa e uma lista rolável de dispositivos descobertos.

Um campo de texto no topo do ecrã filtra a lista de dispositivos pelo nome. Ao escrever uma consulta, a lista é imediatamente reduzida aos dispositivos cujo nome anunciado ou nome do periférico contém o texto pesquisado (sem distinção entre maiúsculas e minúsculas). Aparece um botão para limpar quando o campo não está vazio.

Cartão de Estado do Bluetooth

O cartão de estado exibe:

  • Etiqueta Estado do Bluetooth com o estado atual do rádio, codificado por cores:
    • Ativo (verde) — o Bluetooth está ativo e pronto para pesquisar.
    • Desligado (vermelho) — o rádio Bluetooth está desligado.
    • Não autorizado (laranja) — o utilizador negou permissão Bluetooth para a app.
    • Não suportado (vermelho) — o hardware do dispositivo não suporta Bluetooth.
    • Desconhecido / A reiniciar (cinzento) — o sistema ainda está a determinar o estado do Bluetooth.
  • Um botão de controlo de pesquisa (visível apenas quando o Bluetooth está Ativo):
    • Parar Pesquisa (vermelho) — para a pesquisa ativa.
    • Iniciar Pesquisa (verde) — inicia a pesquisa de periféricos próximos.

A pesquisa inicia automaticamente quando a ferramenta é aberta e o Bluetooth está ativo.

Lista de Dispositivos

Os dispositivos descobertos aparecem numa lista rolável, ordenada por RSSI (sinal mais forte primeiro). A lista atualiza em tempo real à medida que novos dispositivos são encontrados ou os dispositivos existentes atualizam os seus dados de anúncio.

Linha de Dispositivo

Cada dispositivo é apresentado como um cartão contendo:

  • Um ícone Bluetooth dentro de um emblema circular. Um arco branco sobrepõe o círculo, preenchendo proporcionalmente à intensidade do sinal do dispositivo (0–100%).
  • Nome do dispositivo — o nome local anunciado ou nome do periférico. Dispositivos que não transmitem nome aparecem como [No Name].
  • RSSI — a intensidade do sinal recebido em dB (ex.: RSSI: -43 dB).
  • Um indicador de estado no canto inferior esquerdo, mostrando um dos seguintes:
    • Ligado (verde) — o dispositivo está atualmente ligado.
    • Conectável (azul) — o dispositivo anuncia que aceita ligações.
    • Serviços: N — o número de serviços GATT anunciados pelo dispositivo (mostrado quando existem serviços mas o dispositivo ainda não está ligado).
    • (sem etiqueta) — o dispositivo não é conectável e não anuncia serviços.
  • Um indicador à direita:
    • Um ícone verde de visto se o dispositivo estiver ligado.
    • Um chevron (>) se o dispositivo for conectável (toque para abrir detalhes).
    • Texto Não Conectável se o dispositivo não aceitar ligações.

Toque em qualquer linha de dispositivo para navegar para o Ecrã de Detalhes do Dispositivo.

Estados Vazios

A visão geral mostra estados vazios contextuais:

  • A pesquisar — um ícone de lupa com animação de carregamento enquanto a pesquisa inicial está em progresso e ainda não foram encontrados dispositivos.
  • Bluetooth desligado / Não suportado — um ícone Bluetooth riscado com o estado atual e um convite para ativar o Bluetooth.
  • Pesquisa Parada — um ícone Bluetooth com um botão Iniciar Pesquisa quando o Bluetooth está ligado mas a pesquisa foi parada manualmente e não há dispositivos na lista.

Ecrã de Detalhes do Dispositivo

Ao tocar numa linha de dispositivo abre-se um ecrã dedicado de detalhes. O ecrã está dividido numa área de cabeçalho, um indicador de intensidade do sinal e três separadores de conteúdo.

Cabeçalho e Ligação

O cabeçalho contém:

  • Um botão de voltar (< Devices) para regressar ao ecrã de visão geral.
  • O nome do dispositivo exibido em destaque.
  • Um indicador de estado da ligação — um ponto colorido ao lado de uma etiqueta:
    • Ligado (verde)
    • A ligar (laranja)
    • Desligado (vermelho)
    • A desligar (laranja)
  • Um botão Ligar / Desligar (apenas mostrado para dispositivos conectáveis):
    • Ligar (azul) — inicia uma ligação BLE. Um spinner de carregamento é mostrado enquanto a ligação está a ser estabelecida.
    • A ligar... (azul, desativado) — exibido durante a tentativa de ligação.
    • Desligar (vermelho) — termina a ligação ativa.

Quando a ligação é estabelecida, a ferramenta descobre automaticamente todos os serviços GATT e as suas características. Características legíveis são lidas imediatamente, e características que suportam notificações são subscritas automaticamente.

Indicador de Intensidade do Sinal

A secção de intensidade do sinal fornece uma visão detalhada e em tempo real do sinal rádio do dispositivo:

  • Indicador circular — um arco que se preenche de 0% a 100% com um gradiente angular (vermelho a laranja a amarelo a verde). O valor atual do RSSI em dBm é exibido no centro.

  • Distância aproximada — uma estimativa legível derivada do valor RSSI:

    Intervalo RSSIEtiqueta
    -30 a -50 dBmMuito Perto
    -51 a -65 dBmPerto
    -66 a -80 dBmMédio
    -81 a -90 dBmLonge
    Abaixo de -90 dBmMuito Longe
  • Barras de sinal — um indicador de 5 barras que se preenche com base na percentagem da intensidade do sinal.

  • Qualidade do sinal — uma etiqueta de texto: Excelente (>80%), Boa (>60%), Razoável (>40%), Fraca (>20%) ou Muito Fraca (<=20%).

  • RSSI — o valor bruto em dBm.

  • Potência TX — o nível de potência de transmissão 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 distância.

  • Histórico do Sinal — um gráfico de barras deslizante com as últimas 20 leituras de RSSI, codificado por cores (verde >= -60, amarelo >= -75, vermelho < -75). Ajuda a visualizar a estabilidade do sinal ao longo do tempo.

Separador de Informação

O separador Informação exibe informações gerais sobre o dispositivo, organizadas em linhas chave-valor:

CampoDescrição
NomeO nome anunciado ou do periférico (ou [No Name]).
IdentificadorO UUID do periférico atribuído pelo CoreBluetooth. Este é um identificador local e não é o endereço MAC real do dispositivo.
RSSIIntensidade do sinal recebido atual em dB.
Potência TXPotência de transmissão em dBm (apenas mostrado se anunciada pelo dispositivo).
ConectávelSe o dispositivo aceita ligações BLE (Sim / Não).
EstadoEstado atual da ligação (Ligado, A ligar, Desligado, A desligar).
DescobertoTimestamp quando o dispositivo foi visto pela primeira vez durante esta sessão de pesquisa.
Última AtualizaçãoTimestamp da atualização mais recente do anúncio ou RSSI.

Abaixo das linhas chave-valor, aparecem duas secções adicionais quando o dispositivo fornece os dados correspondentes:

  • Serviços Anunciados — uma lista de UUIDs de serviços GATT que o dispositivo inclui nos seus pacotes de anúncio. Serviços padrão conhecidos são mostrados com o seu nome legível ao lado do UUID (ex.: 180F (Battery Service), 180A (Device Information)). Veja Serviços Reconhecidos para a lista completa.
  • Dados do Fabricante — os dados brutos específicos do fabricante do anúncio, exibidos como uma string hexadecimal. Os dois primeiros bytes codificam o identificador da empresa Bluetooth SIG (little-endian).

Separador de Serviços

O separador Serviços está disponível apenas quando o dispositivo está ligado. Mostra a árvore completa de serviços e características GATT descobertos durante a ligação.

Cada serviço é exibido como uma linha expansível:

  • Um ícone colorido indicando a categoria do serviço:
    • Azul — Serviços genéricos (Generic Access 1800, Generic Attribute 1801)
    • Verde — Battery Service (180F)
    • Laranja — Device Information (180A)
    • Roxo — Serviços específicos do fornecedor (UUIDs começando com FE)
    • Cinzento — Outros / serviços desconhecidos
  • O nome do serviço (resolvido a partir do UUID para serviços conhecidos) e a string UUID bruta.
  • Um emblema mostrando o número de características pertencentes a esse serviço.
  • Um chevron que roda quando o serviço está expandido.

Serviços Reconhecidos

UUIDNome do Serviço
1800Generic Access
1801Generic Attribute
180ADevice Information
180FBattery Service
1812HID (Human Interface Device)
1813Scan Parameters
1819Location and Navigation
181CUser Data
FE59Apple Notification Center

Expandir um serviço revela as suas características. Cada linha de característica mostra:

  • Um ícone colorido baseado na propriedade principal (roxo para leitura+escrita, azul para só leitura, verde para só escrita, laranja para só notificação, cinzento caso contrário).
  • O nome da característica (resolvido a partir do UUID para características GATT conhecidas) e a string UUID bruta.
  • Etiquetas de propriedade — pequenas etiquetas coloridas para cada propriedade suportada:
    • Read (azul) — o valor pode ser lido sob demanda.
    • Write (verde) — o valor pode ser escrito com confirmação.
    • Write No Response (verde claro) — o valor pode ser escrito sem confirmação.
    • Notify (laranja) — a característica pode enviar atualizações ao central.
    • Indicate (laranja claro) — como Notify mas com confirmação.
    • Auth (roxo) — a característica requer escritas assinadas autenticadas.
  • Um botão olho para alternar (mostrado quando a característica tem um valor). Ao tocar, revela o valor atual da característica, exibido em múltiplos formatos:
    • Hex — a sequência bruta de bytes.
    • String — uma interpretação UTF-8, se os bytes formarem texto válido.
    • Numérico — interpretação automática baseada no comprimento dos bytes:
      • 1 byte: valor UInt8
      • 2 bytes: valor UInt16
      • 4 bytes: valor UInt32 e valor Float

Características Reconhecidas

UUIDNome da Característica
2A00Device Name
2A01Appearance
2A04Peripheral Preferred Connection Parameters
2A05Service Changed
2A19Battery Level
2A23System ID
2A24Model Number String
2A25Serial Number String
2A26Firmware Revision String
2A27Hardware Revision String
2A28Software Revision String
2A29Manufacturer Name String
2A2AIEEE 11073-20601 Regulatory Certification Data List
2A50PnP ID

Separador de Dados

O separador Dados mostra dados interpretados em tempo real do dispositivo ligado. Se o dispositivo não estiver ligado, é exibida uma mensagem com um botão Ligar (para dispositivos conectáveis) ou uma mensagem informativa.

Quando ligado, o separador mostra até três cartões:

  • Dados do Fabricante — a carga útil específica do fabricante do anúncio:

    • 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 são mostrados em hex (ex.: ID: 0x1234).
    • Dados Brutos — o despejo hexadecimal completo dos bytes dos dados do fabricante.
    • Visualização de bytes — um gráfico de barras horizontal onde cada barra representa um byte. A altura da barra é proporcional ao valor do byte (0–255), fornecendo uma impressão digital visual rápida dos dados.
  • Valores das Características — uma lista de todas as características que têm um valor legível. Cada entrada mostra:

    • O nome da característica (ou UUID se desconhecido).
    • O valor interpretado (como byte, UInt16, UInt32/Float, string UTF-8 ou hex, dependendo do comprimento dos dados).
    • Um pequeno gráfico de barras de bytes para valores até 8 bytes, com barras codificadas por cor conforme magnitude (azul < 30%, verde < 60%, amarelo < 80%, vermelho >= 80%).
    • Os valores atualizam automaticamente para características que suportam notificações.
  • Informação da Ligação — metadados de tempo e sinal:

    • Descoberto — a hora em que o dispositivo foi visto pela primeira vez, com o tempo decorrido desde a descoberta.
    • Última Atualização — a hora da atualização de dados mais recente, com Potência TX se disponível.

Permissões e Requisitos

  • Permissão Bluetooth — o CoreBluetooth requer que o utilizador conceda acesso ao Bluetooth. Se a permissão for negada, o Lirum mostra um ecrã de permissões com um botão para abrir as Definições do iOS para que o utilizador possa reativar o acesso.
  • Rádio Bluetooth — se o Bluetooth estiver desligado, a ferramenta permanece acessível mas os controlos de pesquisa ficam desativados e um estado vazio convida o utilizador a ligar o Bluetooth. Neste caso, não é mostrado um pedido de permissão.
  • A permissão Bluetooth é gerida pelo sistema; não existe um botão explícito para "pedir permissão". O pedido do sistema aparece automaticamente na primeira vez que o CoreBluetooth é inicializado.

Detalhes Técnicos

  • A ferramenta atua como um Central BLE usando CBCentralManager. Pesquisa todos os periféricos próximos (scanForPeripherals(withServices: nil)), ou seja, descobre dispositivos independentemente dos serviços que anunciem.
  • Os valores de RSSI (Indicador de Intensidade do Sinal Recebido) tipicamente variam entre -30 dBm (muito forte, dispositivo muito próximo) e -100 dBm (muito fraco, dispositivo distante ou obstruído). A ferramenta normaliza este intervalo para uma escala de 0–100% usando a fórmula: (RSSI + 100) / 70.
  • Para dispositivos ligados, o RSSI é consultado a cada 2 segundos usando readRSSI(). Um filtro de ruído suprime atualizações inferiores a 2 dB para reduzir tremores visuais.
  • Na ligação, a ferramenta chama discoverServices(nil) para enumerar todos os serviços GATT, depois discoverCharacteristics(nil, for:) em cada serviço. Características legíveis são lidas automaticamente via readValue(for:), e características com capacidade de notificação são subscritas via setNotifyValue(true, for:).
  • A Potência TX (CBAdvertisementDataTxPowerLevelKey) representa a intensidade do sinal a 1 metro do transmissor. Quando ambos Potência TX e RSSI são conhecidos, a diferença pode ser usada para estimar a perda de percurso e a distância aproximada.
  • Os Dados do Fabricante (CBAdvertisementDataManufacturerDataKey) seguem o formato Bluetooth SIG: os dois primeiros bytes são o identificador da empresa em ordem little-endian, seguidos pelos bytes da carga útil específica do fornecedor.
  • O identificador do periférico mostrado no separador Informação é um UUID atribuído pelo CoreBluetooth no dispositivo local. É estável entre lançamentos da app para o mesmo dispositivo mas não é o endereço MAC Bluetooth real (que o iOS não expõe).

Notas e Limitações

  • O que pode ver depende do que cada periférico anuncia e do que o iOS expõe via CoreBluetooth. Alguns dispositivos anunciam dados mínimos.
  • Muitos dispositivos aparecem como [No Name] porque não incluem um nome local nos seus pacotes de anúncio.
  • As estimativas de distância aproximada são orientações baseadas em limiares de RSSI. As distâncias reais variam significativamente dependendo do ambiente, obstáculos, orientação da antena e potência de transmissão.
  • Nem todos os dispositivos conectáveis se ligam com sucesso. Alguns requerem emparelhamento prévio através das Definições do iOS, e alguns podem rejeitar ligações de centrais desconhecidas.
  • Dispositivos Bluetooth clássicos (não BLE) não são visíveis através do CoreBluetooth e não aparecem nos resultados da pesquisa.
  • Os valores RSSI podem flutuar rapidamente devido a interferência multipercurso, absorção corporal e outros fatores ambientais. O gráfico de histórico do sinal ajuda a suavizar visualmente estas variações.

Resolução de Problemas

  • Nenhum dispositivo encontrado — certifique-se de que o Bluetooth está ligado, permaneça no ecrã Bluetooth por alguns segundos e toque em Iniciar Pesquisa se a pesquisa tiver sido parada.
  • Permissão negada — toque no botão Abrir Definições no ecrã de permissões e reative o acesso ao Bluetooth para o Lirum nas Definições de Privacidade do iOS.
  • Falha na ligação — o dispositivo pode requerer emparelhamento nas Definições do iOS primeiro, pode não suportar ligações de apps de terceiros, ou pode ter saído do alcance.
  • Separador de serviços vazio — alguns dispositivos não expõem serviços ou atrasam a descoberta de serviços. Aguarde alguns segundos após a ligação. Se não aparecerem serviços, o dispositivo pode não suportar perfis GATT padrão.
  • Valores das características mostram apenas hex — a ferramenta tenta interpretar valores como texto UTF-8 e tipos numéricos comuns. Se nenhuma destas interpretações se aplicar, é mostrado o despejo hexadecimal bruto.