6 RFKILL="/usr/sbin/rfkill"
10 # Script for registering Broadcom UART BT device
12 BT_UART_DEVICE=/dev/ttySAC0
14 BCM_TOOL=/usr/bin/bcmtool_4343w
16 BCM_TOOL_DBG_LOG=/var/lib/bluetooth/bcmtool_log
18 # If you want to enable bcmtool debug log, please uncomment below #
19 #ENABLE_BCMTOOL_DEBUG="-DEBUG"
21 HCI_CONFIG=/usr/bin/hciconfig
22 HCI_ATTACH=/usr/bin/hciattach
24 BT_ADDR=/csa/bluetooth/.bd_addr
25 BCM_WIFI_CID=/opt/etc/.cid.info
27 SYSLOG_PATH=/var/log/messages
31 #Firmware Loading timeout: Unit * 100ms
32 # Example : 34 is 3.4 sec
35 HARDWARE=`grep Hardware /proc/cpuinfo | awk "{print \\$3}"`
36 REVISION=`grep Revision /proc/cpuinfo | awk "{print \\$3}"`
37 BCM_PACKAGING_TYPE=`cat ${BCM_WIFI_CID}`
39 BCM_FIRMWARE="BCM4343A1_001.002.009.0035.0096_ORC_Orbis_WC1-S.hcd"
41 if [ "$HARDWARE" == "WC1-S" ] && ( [ "$REVISION" == "0000" ] || [ "$REVISION" == "0001" ] )
43 BCM_FIRMWARE="BCM4334W0_001.002.003.0014.0017_Ponte_Solo_Semco_B58_13.5dBm.hcd"
45 if [ "${BCM_PACKAGING_TYPE}" == "semco" ] || [ "${BCM_PACKAGING_TYPE}" == "samsung" ] ; then
46 BCM_FIRMWARE="BCM4343A1_001.002.009.0035.0096_ORC_Orbis_WC1-S.hcd"
47 echo "Package type is semco"
48 elif [ "${BCM_PACKAGING_TYPE}" == "murata" ] ; then
49 BCM_FIRMWARE="BCM4343A1_001.002.009.0022.0050_Murata_Type-1FR.hcd"
50 echo "Package type is murata"
52 echo "Package type is not detected(${BCM_PACKAGING_TYPE})"
56 BCM_CHIP_NAME="BCM4343W"
58 echo "Check for Bluetooth device status"
59 if (${HCI_CONFIG} | grep hci); then
60 echo "Bluetooth device is UP"
65 ${RFKILL} unblock bluetooth
67 echo "BCM_FIRMWARE: $BCM_FIRMWARE, HARDWARE: $HARDWARE, REVISION: $REVISION"
69 # Set BT address: This will internally check for the file presence
72 #if the setbd return non 0, which means incorrect bd address file, then exit
78 echo "Registering Bluetooth device"
80 $BCM_TOOL $BT_UART_DEVICE -TYPE=${BCM_CHIP_NAME} $ENABLE_BCMTOOL_DEBUG \
81 -FILE=/usr/etc/bluetooth/$BCM_FIRMWARE -BAUD=$UART_SPEED \
82 -ADDR=$BT_ADDR >$BCM_TOOL_DBG_LOG 2>&1 &
85 #Check next timeout seconds for bcmtool success
86 for (( i=1; i<=$TIMEOUT; i++))
92 if [ $i -eq $TIMEOUT ]
94 echo "time expired happen $i"
95 kill -TERM $bcmtool_pid
96 /usr/sbin/rfkill block bluetooth
97 ${CP} $SYSLOG_PATH /var/lib/bluetooth/
101 if [ $bcmtool_alive -eq 0 ]
103 echo "Continue....$i"
106 echo "Break.......$i"
111 # Attaching Broadcom device
112 if (${HCI_ATTACH} $BT_UART_DEVICE -s $UART_SPEED $BT_CHIP_TYPE $UART_SPEED flow); then
114 echo "HCIATTACH success"
116 echo "HCIATTACH failed"
117 ${RFKILL} block bluetooth
118 ${CP} $SYSLOG_PATH /var/lib/bluetooth/