Fix issue where kernel 6.6 based BT address was set to AA:AA:AA:AA:AA:AA
[platform/adaptation/bluetooth-firmware-bcm.git] / scripts / bt-dev-start-artik.sh
1 #!/bin/sh
2 PATH=/bin:/usr/bin:/sbin:/usr/sbin
3
4 # Script for registering Broadcom UART BT device
5 BT_UART_DEVICE=/dev/ttySAC3
6 BT_CHIP_TYPE=bcm2035
7 BCM_TOOL=/usr/bin/brcm_patchram_plus
8
9 BT_PLATFORM_DEFAULT_HCI_NAME="TIZEN-Mobile"
10 UART_SPEED=3000000
11 TIMEOUT=24
12
13 #set default firmware
14 BCM_FIRMWARE=BT_FW_BCM4358A1_001.002.005.0032.0066.hcd
15
16 REVISION_NUM=`grep Revision /proc/cpuinfo | awk "{print \\$3}"`
17 REVISION_HIGH=`echo $REVISION_NUM| cut -c1-2`
18 REVISION_LOW=`echo $REVISION_NUM| cut -c3-`
19
20 HARDWARE=`grep Hardware /proc/cpuinfo | awk "{print \\$3}"`
21
22 check_hw_dt()
23 {
24         HARDWARE=`cat /proc/device-tree/model | awk "{print \\$2}"`
25
26         case $HARDWARE in
27
28                 "ARTIK10")
29                         BT_UART_DEVICE=/dev/ttySAC2
30                         BCM_TOOL=/usr/bin/brcm_patchram_plus
31                         BCM_FIRMWARE=BCM4354_003.001.012.0353.0745_Samsung_Artik_ORC.hcd
32                         ;;
33
34                 "ARTIK5")
35                         BT_UART_DEVICE=/dev/ttySAC0
36                         BCM_TOOL=/usr/bin/brcm_patchram_plus
37                         BCM_FIRMWARE=BCM4354_003.001.012.0353.0745_Samsung_Artik_ORC.hcd
38                         ;;
39
40                 "artik710")
41                         BT_UART_DEVICE=/dev/ttySAC1
42                         BCM_TOOL=/usr/bin/brcm_patchram_plus
43                         BCM_FIRMWARE=BCM4345C0_003.001.025.0111.0205.hcd
44                         ;;
45
46         esac
47 }
48
49 parse_bd_addr()
50 {
51         for x in $(cat /proc/cmdline); do
52                 case $x in
53                         bd_addr=*)
54                                 BD_ADDR=${x#bd_addr=}
55                                 ;;
56                 esac
57         done
58 }
59
60 check_hw_dt
61 if [ -z "${HARDWARE##ARTIK*}" ]; then
62         parse_bd_addr
63 fi
64
65 if [ ! -e "$BT_UART_DEVICE" ]
66 then
67         mknod $BT_UART_DEVICE c 204 64
68 fi
69
70 if [ ! -e /opt/etc/.bd_addr ]
71 then
72         # Set BT address
73         /usr/bin/setbd
74 fi
75
76 # Trun-on Bluetooth Chip
77 /usr/sbin/rfkill unblock bluetooth
78
79 echo "Check for Bluetooth device status"
80 if (/usr/bin/hciconfig | grep hci); then
81         echo "Bluetooth device is UP"
82         /usr/bin/hciconfig hci0 up
83 else
84         echo "Bluetooth device is DOWN"
85         echo "Registering Bluetooth device"
86         echo "change auth of brodcom tool"
87         chmod 755 $BCM_TOOL
88
89         # In tizenW hardware first time bcmtool download may not success, hence we need to try more times
90         MAXBCMTOOLTRY=5
91         flag=0
92         for (( c=1; c<=$MAXBCMTOOLTRY; c++))
93         do
94                 echo "******* Bcmtool download attempt $c ********"
95
96                 if [ $BD_ADDR ];then
97                         $BCM_TOOL $BT_UART_DEVICE --patchram /usr/etc/bluetooth/$BCM_FIRMWARE --no2bytes --baudrate $UART_SPEED --use_baudrate_for_download $BT_UART_DEVICE --bd_addr ${BD_ADDR} > /dev/null 2>&1 &
98                 else
99                         $BCM_TOOL $BT_UART_DEVICE --patchram /usr/etc/bluetooth/$BCM_FIRMWARE --no2bytes --baudrate $UART_SPEED --use_baudrate_for_download $BT_UART_DEVICE --enable_lpm > /dev/null 2>&1 &
100                 fi
101
102                 bcmtool_pid=$!
103                 #Check next timeout seconds for bcmtool success
104                 for (( i=1; i<=$TIMEOUT; i++))
105                 do
106                         /bin/sleep 0.1
107                         kill -0 $bcmtool_pid
108                         bcmtool_alive=$?
109
110                         if [ $i -eq $TIMEOUT ]
111                         then
112                                 echo "time expired happen $i"
113                                 kill -TERM $bcmtool_pid
114                                 break
115 #                               ${RFKILL} block bluetooth
116 #                               exit 1
117                         fi
118
119                         if [ $bcmtool_alive -eq 0 ]
120                         then
121                                 echo "Continue....$i"
122                                 continue
123                         else
124                                 echo "Break.......$i"
125                                 flag=1
126                                 break
127                         fi
128                 done
129
130                 if [ $flag -eq 1 ]
131                 then
132                         echo "Break bcmtool download loop on $c attempt"
133                         break
134                 else
135                         /bin/sleep 1
136                         echo "sleep done"
137                 fi
138
139
140                 if [ $c -eq $MAXBCMTOOLTRY ]
141                 then
142                         echo "***** No Chance to activate, count=$c ******"
143                         ${RFKILL} block bluetooth
144                         exit 1
145                 fi
146
147         done
148
149         echo "Try for hciattach"
150
151         # Attaching Broadcom device
152         if (/usr/bin/hciattach $BT_UART_DEVICE -s $UART_SPEED $BT_CHIP_TYPE $UART_SPEED flow); then
153                 sleep 0.1
154                 /usr/bin/hciconfig hci0 up
155                 /usr/bin/hciconfig hci0 name $BT_PLATFORM_DEFAULT_HCI_NAME
156                 /usr/bin/hciconfig hci0 sspmode 1
157                 echo "HCIATTACH success"
158         else
159                 echo "HCIATTACH failed"
160                 /usr/sbin/rfkill block bluetooth
161         fi
162 fi