Cómo desarrollar Bluetooth Linux integrado
1. Compatibilidad de Linux con Bluetooth Los siguientes protocolos están implementados en el kernel de Linux 2.6.
Forma serial del controlador de dispositivo Bluetooth (controlador HCI UART)
Controlador de memoria USB Bluetooth (controlador HCI USB)
El kernel también implementa L2CAP, interfaz serial RFCOMM y soporte de enlace SCO.
Además, el kernel admite directamente BNEP (Protocolo de encapsulación de red Bluetooth), que opera una red Bluetooth como una LAN inalámbrica.
Linux también admite dispositivos de entrada Bluetooth.
Es necesario habilitar ambas opciones, HIDP y HID2HCI.
DUND trata las redes Bluetooth como redes de acceso telefónico.
2. Pila de protocolos Bluetooth
Después de implementar L2CAP, también se necesita una pila de protocolos Bluetooth para manejarlo. ¿Qué papel juega? Tengo entendido que el kernel está encapsulado al nivel RFCOMM, que solo es responsable de encapsular, enviar y recibir paquetes de datos Bluetooth. En cuanto a los paquetes de datos recibidos, en las cuatro etapas de Bluetooth, qué impacto tendrá el estado de la aplicación y cómo responder a los paquetes de datos correctos, estas son algunas de las cosas que debe hacer la pila de protocolos Bluetooth.
Existen varias pilas de protocolos Bluetooth que compiten por implementar la funcionalidad Bluetooth en Linux, pero el que tiene mayor impacto es bluez. Se ha convertido casi en sinónimo de la pila estándar de Linux.
¿Otra pila es Affix? Pero menos gente lo usa
A nivel de aplicación, consta principalmente de dos partes: la biblioteca de la aplicación bluez (principalmente responsable de la comunicación de bluez con el kernel) y la herramienta bluez-util. Dicho esto, algunas herramientas de línea de comandos pueden completar las cuatro etapas del procesamiento de Bluetooth.
3. El concepto de Bluetooth.
El emparejamiento puede ser iniciado por una parte. Si el dispositivo necesita ser buscado por otros dispositivos, debe ser detectable.
2. Comandos Bluetooth en Linux
-------------------------- ---- -----------------
La forma más conveniente de usar Bluetooth en Linux es usar el comando que viene con bluez-util para realizar pruebas.
Utilizaremos el dispositivo Bluetooth más fácil de encontrar en el mercado para probar la comunicación entre el dispositivo de capa física y el teléfono móvil. Después de insertar la memoria Bluetooth en el puerto USB en LINUX, veremos un mensaje en dmesg
que indica que la memoria USB Bluetooth ha sido reconocida. Si
Las herramientas de interacción persona-computadora que vienen con el sistema operativo provienen principalmente de bluez-util.
/usr/sbin/hciattach ?:?conecte dispositivos seriales a través de UART HCI a la pila BlueZ
/usr/sbin/hcid : Demonio de interfaz del controlador de host Bluetooth
/usr/sbin/hciemu :emulador HCI
/usr/sbin/hciconfig ?Configurar dispositivo Bluetooth
/usr/sbin/hcidump: analizar datos HCI
/usr/bin/hcitool: Configurar conexiones Bluetooth
/usr/bin/sdptool: Controlar y consultar servidores SDP
hciconfig es similar a hciconfig.
Se pueden encontrar operaciones similares en el sitio web oficial (no es conveniente dejar un enlace aquí, solo búsquelo usted mismo)
Detectar dispositivos USB, lsusb
2.p> p>
Activar el dispositivo
hciconfig hci0 up
3 Modificar el archivo de configuración de Bluetooth
Bluetooth usa /etc/bluetooth/
hcid.conf ?rfcomm.conf
Entre ellos, hcid.conf trata sobre información de emparejamiento. Entre ellos, usuario de seguridad significa que cada emparejamiento requerirá que el usuario ingrese el código PIN de la otra parte, mientras que el emparejamiento automático utiliza directamente el código PIN en la clave;
4. Reiniciar el servicio Bluetooth
Si se modifica la configuración de Bluetooth es necesario reiniciar el servicio Bluetooth
parada del servicio bluetooth
inicio del servicio bluetooth
5. Escanear dispositivos
6. Agregar configuración de emparejamiento automático
Modificar /etc/bluetooth/rfcomm.conf
Agregar Escanear la dirección Bluetooth
7. Crear nodo de dispositivo (solo para la creación por primera vez)
rfcomm create dev #Creará el nodo de dispositivo en /dev/rfcomm0
Es equivalente a la siguiente serie de comandos
mknod /dev/rfcomm0 c 216 1
chmod 666 /dev/rfcomm0
rfcomm bind / dev/rfcomm0 00: 21:19:A4:E0:F1-1
8. Agregue información del mensaje SDP
Para reducir problemas, agregue todos los servicios Bluetooth compatibles.
sdptool add --channel=1 DID SP DUN LAN FAX OPUSH FTP HS HF SAP NAP GN PANU HID CIP CTP A2SRC A2SNK SYNCML NOKID PCSUITE SR1
9.
rfcomm bind /dev/rfcomm0 00:21:19:A4:E0:F1 1
#rfcomm bind /dev/rfcomm0 ¿Dirección del dispositivo Bluetooth? Canal, este comando es opcional
10. Desvincular Bluetooth
Formato: rfcomm unbind /dev/rfcomm0 Dirección del dispositivo Bluetooth?Canal
11. /p>
hcitool cc 00:21:19:A4:E0:F1
III. Acerca del archivo de configuración de Bluetooth
------- ---- --------------------------------
El archivo de configuración de Bluetooth es /etc hcid.conf y rfcomm.conf en el directorio /bluetooth. la seguridad es el modo de autenticación del emparejamiento y el usuario es la contraseña ingresada por el usuario. Esto requiere usar
pin_helper más adelante para especificar el programa utilizado al ingresar la contraseña, que puede ser un programa de interfaz gráfica o un programa de interfaz de caracteres.
Los pin_helpers comunes incluyen
/usr/bin/bluez-pin: bluez tiene su propia interfaz de entrada de pin
kbluepin
clave de acceso El elemento de configuración especifica el número de PIN del dispositivo que solicita la conexión. En modo automático, esta clave se utilizará para conectarse.