From b384c84b7f239a8717db5a4bc8f49617596897f6 Mon Sep 17 00:00:00 2001 From: DoHyun Pyun Date: Thu, 25 Jul 2019 12:37:59 +0900 Subject: [PATCH] Use hciattach tool for the RPI3 target There is an UART HW differnece between RPI3 B and RPI3 B+ model such as cts pin setting. Because of this we should use the different value for Uart Speed and flow control. btattach tool operates the firmware download and Uart setting in the kernel driver as the proto. So we can't use the btattach tool for RPI3 target. Change-Id: I2c57b6fb53d95e4363fb27db78b1d21b522dc832 Signed-off-by: DoHyun Pyun --- firmware/CMakeLists.txt | 4 ++-- packaging/bluetooth-firmware-bcm.spec | 7 +++++-- scripts/bt-dev-start-rpi3.sh | 39 +++++++++++++++++++++++++++-------- 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/firmware/CMakeLists.txt b/firmware/CMakeLists.txt index c9855fe..d047afb 100755 --- a/firmware/CMakeLists.txt +++ b/firmware/CMakeLists.txt @@ -13,5 +13,5 @@ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/bcm4343w/BCM4343A1_001.002.009.0022.00 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/bcm43012/BCM43012B0_002.001.021.0081.0087.hex DESTINATION /lib/firmware/bcm43012/) # RPI3 -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/rpi3/BCM43430A1.hcd DESTINATION /lib/firmware/brcm) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/rpi3/BCM4345C0.hcd DESTINATION /lib/firmware/brcm) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/rpi3/BCM43430A1.hcd DESTINATION ${PLUGIN_INSTALL_PREFIX}/etc/bluetooth) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/rpi3/BCM4345C0.hcd DESTINATION ${PLUGIN_INSTALL_PREFIX}/etc/bluetooth) diff --git a/packaging/bluetooth-firmware-bcm.spec b/packaging/bluetooth-firmware-bcm.spec index 1672264..ae22671 100644 --- a/packaging/bluetooth-firmware-bcm.spec +++ b/packaging/bluetooth-firmware-bcm.spec @@ -143,13 +143,16 @@ rm -rf %{_prefix}/etc/bluetooth/bt-dev-start.sh rm -rf %{_prefix}/etc/bluetooth/bt-dev-end.sh ln -s %{_prefix}/etc/bluetooth/bt-dev-start-rpi3.sh %{_prefix}/etc/bluetooth/bt-dev-start.sh ln -s %{_prefix}/etc/bluetooth/bt-dev-end-rpi3.sh %{_prefix}/etc/bluetooth/bt-dev-end.sh +mkdir -p /lib/firmware/brcm +ln -s %{_prefix}/etc/bluetooth/BCM43430A1.hcd /lib/firmware/brcm/ +ln -s %{_prefix}/etc/bluetooth/BCM4345C0.hcd /lib/firmware/brcm/ %files rpi3 %manifest %{name}.manifest %license LICENSE.APLv2 LICENSE.Broadcom %defattr(-,root,root,-) -/lib/firmware/brcm/BCM43430A1.hcd -/lib/firmware/brcm/BCM4345C0.hcd +%{_prefix}/etc/bluetooth/BCM43430A1.hcd +%{_prefix}/etc/bluetooth/BCM4345C0.hcd %attr(755,-,-) %{_prefix}/etc/bluetooth/bt-dev-end-rpi3.sh %attr(755,-,-) %{_prefix}/etc/bluetooth/bt-dev-start-rpi3.sh %manifest %{name}.manifest diff --git a/scripts/bt-dev-start-rpi3.sh b/scripts/bt-dev-start-rpi3.sh index dc2f600..aab1b91 100644 --- a/scripts/bt-dev-start-rpi3.sh +++ b/scripts/bt-dev-start-rpi3.sh @@ -3,14 +3,13 @@ PATH=/bin:/usr/bin:/sbin:/usr/sbin # Script for registering Broadcom UART BT device BT_UART_DEVICE=/dev/ttyAMA0 -BT_CHIP_TYPE=bcm +BT_CHIP_TYPE=bcm43xx BT_MAC_FILE=/opt/etc/.bd_addr BT_PLATFORM_DEFAULT_HCI_NAME="TIZEN-Mobile" -UART_SPEED=3000000 HCI_CONFIG=/usr/bin/hciconfig -BT_ATTACH=/usr/bin/btattach +HCI_ATTACH=/usr/bin/hciattach if [ ! -e "$BT_UART_DEVICE" ] then @@ -30,6 +29,19 @@ GEN_BDADDR(){ BT_MAC=`printf b8:27:eb:%02x:%02x:%02x $((0x$B1 ^ 0xaa)) $((0x$B2 ^ 0xaa)) $((0x$B3 ^ 0xaa))` } +PIMODEL=`cat /proc/device-tree/model | awk '{print $5}'` +echo "$PIMODEL" + +if [ "$PIMODEL" = "B" ] +then + FLOW_CONTROL=noflow + UART_SPEED=460800 +else + FLOW_CONTROL=flow + UART_SPEED=2000000 + +fi + if [ ! -e "$BT_MAC_FILE" ] then # Set BT address @@ -50,11 +62,20 @@ else echo "Registering Bluetooth device" # Attaching Broadcom device - $BT_ATTACH -B $BT_UART_DEVICE -P $BT_CHIP_TYPE -S $UART_SPEED > /dev/null 2>&1 & + flag=0 + for ((i=0; i<2; i++)) + do + if ($HCI_ATTACH $BT_UART_DEVICE $BT_CHIP_TYPE $UART_SPEED $FLOW_CONTROL nosleep $BT_MAC -t 5); then + sleep 0.1 + $HCI_CONFIG hci0 up + echo "HCIATTACH success" + flag=1 + break + fi + done - sleep 0.02 - - $HCI_CONFIG hci0 up - $HCI_CONFIG hci0 name $BT_PLATFORM_DEFAULT_HCI_NAME - echo "HCIATTACH success" + if [ $flag -eq 0 ] + then + echo "HCIATTACH failed" + fi fi -- 2.7.4