tutorial - Conexión Bluetooth multipeer a un dispositivo que no sea iOS
bluetooth core swift (1)
Actualmente estoy intentando conectar un Raspberry Pi y un dispositivo iOS a través de Bluetooth. Al usar BTLE y CBCentralManager
puedo hacer esto: me puedo conectar al Pi y compartir datos.
Mi problema es que, para mi propósito, necesito que los dispositivos tengan una IP, que, hasta donde yo sé, solo es posible utilizando un perfil de Bluetooth PAN (Personal Area Network). iOS admite esto con el nuevo Multipeer Connectivity Framework y funciona cuando se conectan dos dispositivos iOS, uno que usa MCNearbyServiceBrowser
y el otro que usa MCNearbyServiceAdvertiser
. Después de la conexión, ambos dispositivos tienen una interfaz de red con una IP. Pero ahora tengo que incorporar el Rasperry Pi a ese escenario, y no encuentro ninguna forma de hacer que Pi se una al PAN.
¿Alguien tiene alguna pista si esto es de alguna manera posible, dónde empezar a buscar, si hay una buena explicación sobre la comunicación en un PAN o algo similar? ¿Podría haber un marco que haga algo como eso? Estoy feliz por las pistas y consejos.
Probablemente, el Framework de Conectividad de Multipeer se base en un protocolo patentado ya que no he visto en ninguna parte que implemente PAN. Es solo similar. Como mencionas, la lista de perfiles compatibles también contiene PAN con la siguiente nota:
Dependiendo del accesorio Bluetooth, puede experimentar ligeras variaciones en la funcionalidad del perfil. Estas variaciones se rigen por el fabricante de accesorios, no por el dispositivo iOS.
Entonces, en teoría, PAN es compatible como está, y usted debería poder conectarse con un dispositivo arbitrario que admita este perfil. Conecté mi teléfono Android a mi iPhone con el punto de acceso personal en el iPhone y el Android podría usar la conexión a internet compartida sin ningún problema.
Encontré el tutorial de anclaje Bluetooth para iPhone de Raspberry Pi que parece describir exactamente lo que estás tratando de hacer. Para referencia futura, copio los pasos aquí:
Instala los paquetes bluetooth
sudo aptitude install bluetooth bluez-utils bluez-compat
Empareje los dispositivos, esta es la parte difícil
pi@raspberrypi ~ $ hcitool scan
Scanning ...
18:34:51:55:B0:D8 Fanboy ][
pi@raspberrypi ~ $
pi@raspberrypi ~ $ grep KeyboardDisplay /usr/bin/bluez-simple-agent
capability = "KeyboardDisplay"
pi@raspberrypi ~ $ sudo perl -i -pe ''s/KeyboardDisplay/DisplayYesNo/'' /usr/bin/bluez-simple-agent
pi@raspberrypi ~ $ grep DisplayYesNo /usr/bin/bluez-simple-agent
capability = "DisplayYesNo"
pi@raspberrypi ~ $
pi@raspberrypi ~ $ sudo bluez-simple-agent hci0 18:34:51:55:B0:D8
RequestConfirmation (/org/bluez/18868/hci0/dev_18_34_51_55_B0_D8, 160178)
Confirm passkey (yes/no): yes
Release
New device (/org/bluez/18868/hci0/dev_18_34_51_55_B0_D8)
pi@raspberrypi ~ $
pi@raspberrypi ~ $ sudo bluez-test-device trusted 18:34:51:55:B0:D8 yes
Encienda el Hotspot personal
pi@raspberrypi ~ $ echo "echo ''iface bnep0 inet dhcp'' >> /etc/network/interfaces" | sudo sh
pi@raspberrypi ~
$ sudo pand -c 18:34:51:55:B0:D8 -role PANU --persist 30
Disfrutar
pi@raspberrypi ~ $ ifconfig bnep0
bnep0 Link encap:Ethernet HWaddr e0:91:53:61:0f:74
inet addr:172.20.10.10 Bcast:172.20.10.15 Mask:255.255.255.240
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4426 (4.3 KiB) TX bytes:802 (802.0 B)
Todos los créditos van a http://www.wolfteck.com/ para proporcionar estas instrucciones detalladas.