2 PATH=/bin:/usr/bin:/sbin:/usr/sbin
7 RFKILL="/usr/sbin/rfkill"
11 # Script for registering Broadcom UART BT device
13 BT_UART_DEVICE=/dev/ttySAC0
15 BCM_TOOL=/usr/bin/bcmtool_4343w
17 BCM_TOOL_DBG_LOG=/var/lib/bluetooth/bcmtool_log
19 # If you want to enable bcmtool debug log, please uncomment below #
20 #ENABLE_BCMTOOL_DEBUG="-DEBUG"
22 HCI_CONFIG=/usr/bin/hciconfig
23 HCI_ATTACH=/usr/bin/hciattach
25 BT_ADDR=/csa/bluetooth/.bd_addr
26 BCM_WIFI_CID=/opt/etc/.cid.info
28 SYSLOG_PATH=/var/log/messages
32 #Firmware Loading timeout: Unit * 100ms
33 # Example : 34 is 3.4 sec
36 HARDWARE=`grep Hardware /proc/cpuinfo | awk "{print \\$3}"`
37 REVISION=`grep Revision /proc/cpuinfo | awk "{print \\$3}"`
38 BCM_PACKAGING_TYPE=`cat ${BCM_WIFI_CID}`
40 BCM_FIRMWARE="BCM4343A1_001.002.009.0035.0096_ORC_Orbis_WC1-S.hcd"
42 if [ "$HARDWARE" == "WC1-S" ] && ( [ "$REVISION" == "0000" ] || [ "$REVISION" == "0001" ] )
44 BCM_FIRMWARE="BCM4334W0_001.002.003.0014.0017_Ponte_Solo_Semco_B58_13.5dBm.hcd"
46 if [ "${BCM_PACKAGING_TYPE}" == "semco" ] || [ "${BCM_PACKAGING_TYPE}" == "samsung" ] ; then
47 BCM_FIRMWARE="BCM4343A1_001.002.009.0035.0096_ORC_Orbis_WC1-S.hcd"
48 echo "Package type is semco"
49 elif [ "${BCM_PACKAGING_TYPE}" == "murata" ] ; then
50 BCM_FIRMWARE="BCM4343A1_001.002.009.0022.0050_Murata_Type-1FR.hcd"
51 echo "Package type is murata"
53 echo "Package type is not detected(${BCM_PACKAGING_TYPE})"
57 BCM_CHIP_NAME="BCM4343W"
59 echo "Check for Bluetooth device status"
60 if (${HCI_CONFIG} | grep hci); then
61 echo "Bluetooth device is UP"
66 ${RFKILL} unblock bluetooth
68 echo "BCM_FIRMWARE: $BCM_FIRMWARE, HARDWARE: $HARDWARE, REVISION: $REVISION"
70 # Set BT address: This will internally check for the file presence
73 #if the setbd return non 0, which means incorrect bd address file, then exit
79 echo "Registering Bluetooth device"
81 $BCM_TOOL $BT_UART_DEVICE -TYPE=${BCM_CHIP_NAME} \
82 -FILE=/usr/etc/bluetooth/$BCM_FIRMWARE -BAUD=$UART_SPEED \
86 #Check next timeout seconds for bcmtool success
87 for (( i=1; i<=$TIMEOUT; i++))
93 if [ $i -eq $TIMEOUT ]
95 echo "time expired happen $i"
96 kill -TERM $bcmtool_pid
97 /usr/sbin/rfkill block bluetooth
98 ${CP} $SYSLOG_PATH /var/lib/bluetooth/
102 if [ $bcmtool_alive -eq 0 ]
104 echo "Continue....$i"
107 echo "Break.......$i"
112 # Attaching Broadcom device
113 if (${HCI_ATTACH} $BT_UART_DEVICE -s $UART_SPEED $BT_CHIP_TYPE $UART_SPEED flow); then
115 echo "HCIATTACH success"
117 echo "HCIATTACH failed"
118 ${RFKILL} block bluetooth
119 ${CP} $SYSLOG_PATH /var/lib/bluetooth/