Bluetooth

De Caninos Loucos
Ir para: navegação, pesquisa

A Labrador Baseboard é equipada com módulos em combo de Wi-Fi e Bluetooth, podendo conter o módulo Realtek RTL8723BS ou o módulo Microchip ATWILC3000, dependendo da sua versão. Estes dois módulos utilizam interface UART para se comunicar com o sistema.

Instalar o Bluetooth reinstalando o sistema

A maneira mais simples de realizar a ativação do Bluetooth é atualizar o sistema da labrador para o mais recente, basta seguir o descrito no link Instalando um sistema 32 bits ou Instalando um sistema 64 bits, dependendo da versão da sua Labrador. Na versão atual os drivers de Bluetooth já estarão instalados e o Bluetooth já será iniciado automaticamente, independente do modulo de Wi-Fi/Bluetooth disponível na baseboard.

A inicialização do Bluetooth ocorre no durante o Boot do sistema, essa inicialização é realizada via script localizado em /etc/init.d/wifi_bt_start.sh, portanto é possível ajustar o comportamento inicial do Bluetooth alterando esse script.

Desativando o Bluetooth da inicialização

Caso queira evitar que o Bluetooth seja automaticamente iniciado com o sistema basta impedir que o script /etc/init.d/wifi_bt_start.sh seja carregado como default ao sistema, isso pode ser realizado utilizando o comando abaixo;

$update-rc.d wifi_bt_start.sh remove


Instalando o Bluetooth sem alterar o sistema

Para instalar o Bluetooth sem a necessidade de reinstalar o sistema, o processo é:

1 - Atualizar o Kernel, para atualizar o Kernel siga o descrito em Troca De Kernel Compilado.

2 - Instalar as aplicações necessárias para a execução do Bluetooth;

2.1 - Instale o Bluez

   $sudo apt-get install bluez

2.2 - Instale o Blueman

   $sudo apt-get install blueman

2.3 - Baixe os firmwares dos módulos para ATCWILC3000 e RTL8723BS,

   Firmware do ATCWILC3000 estão disponíveis em Linux4wilc/firmware.
   Faça o download para o diretório /...qualquer diretório.../src/mchp/
   Firmware do RTL8723BS estão disponíveis em lwfinger/rtl8723bs_bt.
   Faça o download para o diretório /...qualquer diretório.../src/rtk/

2.4 - Extraia e copie os firmwares para os diretórios corretos.

   $cd /src/mchp/
   $unzip firmware-master.zip
   $sudo mkdir /lib/firmware/updates/4.14.13/mchp
   $sudo cp firmware-master/* /lib/firmware/updates/4.14.13/mchp/
   $cd ../rtk/
   $unzip rtl8723bs_bt-master.zip
   $sudo mkdir /lib/firmware/bluetooth/rtl8723bs
   $sudo cp rtl8723bs_bt-master/* /lib/firmware/bluetooth/rtl8723bs/
   

2.5 - Instale o firmware do RTL8723BS

   $cd /lib/firmware/bluetooth/rtl8723bs/
   $sudo make
   $sudo make install
   $sudo rm /lib/firmware/rtl_bt/rtlbt_config

2.6 - Inicie o Bluetooth

 2.6.1 - Iniciando o Realtek RTL8723BS
   
   $cd /lib/firmware/Bluetooth/rtl8723bs/
   $nohup ./rtk_hciattach -n -s 115200 /dev/ttyS2 rtk_h5 > r8723bs_bt.nolog 2> r8723bs_bt.log < /dev/null &
   Neste ponto o dispositivo Bluetooth já deve estar disponível para uso. Para verificar basta usar o comando;
  root@debian-armhf:/home/caninos# hciconfig -a
hci0:	Type: Primary  Bus: UART
	BD Address: 14:6B:9C:7D:95:AD  ACL MTU: 1021:8  SCO MTU: 255:16
	UP RUNNING 
	RX bytes:1451 acl:0 sco:0 events:57 errors:0
	TX bytes:6112 acl:0 sco:0 commands:58 errors:0
	Features: 0xff 0xff 0xff 0xfe 0xdb 0xff 0x7b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link policy: RSWITCH HOLD SNIFF PARK 
	Link mode: SLAVE ACCEPT 
	Name: 'debian-armhf'
	Class: 0x1c0000
	Service Classes: Rendering, Capturing, Object Transfer
	Device Class: Miscellaneous, 
	HCI Version: 4.0 (0x6)  Revision: 0x1e3e
	LMP Version: 4.0 (0x6)  Subversion: 0xe40e
	Manufacturer: Realtek Semiconductor Corporation (93)

 2.6.2 - Iniciando o Microchip ATCWILC3000
   Carregue o modulo caso não esteja carregado;
   $sudo modprobe wilc-sdio
   $echo BT_POWER_UP > /dev/wilc_bt
   $echo BT_FW_CHIP_WAKEUP > /dev/wilc_bt
   $echo BT_DOWNLOAD_FW > /dev/wilc_bt
   $echo BT_FW_CHIP_ALLOW_SLEEP > /dev/wilc_bt
   $sudo hciattach ttyS2 any 115200 noflow
   
   Neste ponto o dispositivo Bluetooth já deve estar disponível para uso. Para verificar basta usar o comando;
   root@debian-armhf:/home/caninos# hciconfig -a
hci0:	Type: Primary  Bus: UART
	BD Address: F8:F0:05:D9:2A:45  ACL MTU: 27:30  SCO MTU: 0:0
	UP RUNNING 
	RX bytes:205 acl:0 sco:0 events:14 errors:0
	TX bytes:109 acl:0 sco:0 commands:14 errors:0
	Features: 0x00 0x00 0x00 0x00 0x60 0x00 0x00 0x00
	Packet type: DM1 DH1 HV1 
	Link policy: 
	Link mode: SLAVE ACCEPT 
Can't read local name on hci0: Input/output error (5)


2.7 - Altere a taxa de operação entre o sistema e o Bluetooth

  Ambos módulos suportam operar em diversas frequências (Baud rate).
 2.7.1 - Alterar baudrate RTL8723BS
 O comando abaixo realiza troca do baudrate do RTL8723BS; 
 $sudo hcitool cmd 0x03F 0x0017 XX XX XX XX
 
 Onde XX são os bytes do código da velocidade desejada, os códigos a serem enviados podem ser por hora os abaixo, e devem ser enviados os bytes menos significativos primeiros;
 Baudrate 115200:  0x0252C014
 Baudrate 230400:  0x0252C00A
 Baudrate 921600:  0x05F75004
 Baudrate 1000000: 0x00005004
 Baudrate 1500000: 0x04928002
 Baudrate 1500000: 0x01128002
 Baudrate 2000000: 0x00005002(Não suportado atualmente)
 Baudrate 2500000: 0x0000B001(Não suportado atualmente)
 Baudrate 3000000: 0x04928001(Não suportado atualmente)
 Baudrate 3500000: 0x052A6001(Não suportado atualmente)
 Baudrate 4000000: 0x00005001(Não suportado atualmente)
 Portanto, por exemplo para operar a um Baudrate de 1500000 basta utilizar o comando abaixo;
$sudo hcitool cmd 0x03F 0x0017 02 80 92 04
Depois é necessário atualizar o baudrate da UART do sistema, pode-se utilizar o comando abaixo para isso;
$sudo stty -F /dev/ttyS2 1500000
 2.7.2 - alterar baudrate ATCWILC3000
 para alterar este baudrate o comando abaixo pode ser utilizado
 sudo hcitool cmd 0x03F 0x0053 XX XX XX XX YY
 XX indica o baudrate, YY indica o controle de FLOW, se YY for 00 isso indica que não haverá FLOW control.
 
 XX indica o valor em hexadecimal do baudrate desejado
 por exemplo para uma taxa 921600 que é 0xE1000 em hexadecimal, sem controle de fluxo, basta utilizar o comando abaixo;
 $sudo hcitool cmd 0x03F 0x0053 00 10 0E 00 00
 Depois, basta alterar o baud rate da UART;
 $sudo stty -F /dev/ttyS2 921600