Pergunta

Eu estou tentando encontrar qualquer solução alternativa para um bluetooth le bug em OSX . Em particular, quero saber onde OSX dá errado em ler a tabela Bluetooth Le Gatt. Assim, eu estou visualizando os pacotes L2CAP em packetlogger do hardware io Ferramentas para xcode .

Quando eu uso o Bluetooth Explorer para se conectar ao dispositivo Le Bluetooth, espero ver 3.4.4.9 leitura por solicitação de tipo de grupo (UUID= 0x2800 «Primário de serviço», StartingHandle= 0x0001, final= 0xffff) para descobrir serviços primários (ou localização por tipo de solicitação de valor (UUID= 0x2800, valor: UUID of Service)), seguido por 3.4.4.1 leitura por tipo de solicitação (UUID= 0x2803 «Característica») para descobrir características. Isto é o que eu vejo quando cheirei os pacotes de um iPhone (usando um CC2540).

Mas no OSX, as únicas solicitações de L2CAP que vejo no packetlogger (e o CC2540) após a conexão são:

    .
  1. leitura por tipo de solicitação (attributeType= 0x2803, startinghandle= 0x001a, endinghandle= 0x001a)
  2. leitura por tipo de solicitação de tipo (AtrattInType= 0x2802 «include», partida= 0x0001, finalinghandle= 0x0004)
  3. leitura por tipo de solicitação (attributeType= 0x2802, partida= 0x0005, finalinghandle= 0x0009)
  4. leitura por tipo de solicitação (attributeType= 0x2802, startinghandle= 0x0010, endinghandle= 0x0019)
  5. leitura por tipo de solicitação de tipo (attributeType= 0x2802, partindo= 0x001a, finalinghandle= 0x001a)
  6. leitura por tipo de solicitação (attributeType= 0x2803, startinghandle= 0x001a, endinghandle= 0x001a)
  7. leitura por tipo de solicitação (attributeType= 0x2802, startinghandle= 0x0021, endinghandle= 0x0027)
  8. leitura por tipo de solicitação (attributeType= 0x2802, startinghandle= 0x002b, endinghandle= 0x002e)
  9. Não são solicitações suficientes para descobrir os serviços, mas o Bluetooth Explorer lista todos os UUIDs de serviço neste momento. Isso indica que o OSX já sabe onde os serviços estão neste dispositivo Le Bluetooth. Serviços de dispositivo de cache blue e lê-los na inicialização? Em caso afirmativo, como posso limpar o cache?

    Eu tentei desligar o Bluetooth, matando blue e reiniciar OSX, mas toda vez que OSX nunca redescobre os serviços.

Foi útil?

Solução

Sim, blined faz cache a tabela Bluetooth Le Gatt.Se o cache for ruim, faça o seguinte para excluí-lo, graças ao "processo blue está matando meu CPU" :

    .
  1. delete /library/preferences/com.apple.bluetooth.plist.Isso removerá o conhecimento de todos os dispositivos Bluetooth e Bluetooth ligados.
  2. matar / usr / sbin / blued.Será reiniciado pelo Launchd.
  3. Execute o programa Bluetooth Le novamente.O Packetlogger agora será exibido leitura por tipo de grupo solicitações para redescobrir os serviços principais.
  4. O cache é permitido quando a central estabeleceu um "vínculo" com o periférico (não apenas emparelhado), de acordo com o cache de atributo Bluetooth 4.0 Volume 3 Parte G 2.5.2.Não tenho certeza de como verificar se a central de fato ligada ao periférico, mas eu suponho que isso aconteceu.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top