Bluetooth
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