Modify the configuration to support RPI4 model
[platform/adaptation/bluetooth-firmware-bcm.git] / scripts / bt-dev-start-rpi3.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/ttyAMA0
6 BT_CHIP_TYPE=bcm43xx
7 BT_MAC_FILE=/opt/etc/.bd_addr
8
9 BT_PLATFORM_DEFAULT_HCI_NAME="TIZEN-Mobile"
10
11 HCI_CONFIG=/usr/bin/hciconfig
12 HCI_ATTACH=/usr/bin/hciattach
13
14 if [ ! -e "$BT_UART_DEVICE" ]
15 then
16         mknod $BT_UART_DEVICE c 204 64
17 fi
18
19 GEN_BDADDR(){
20         #echo "BT Mac addr generates randomly."
21         #MAC_PRE=$(echo "00:02:")
22         #MAC_POST=$(/usr/bin/openssl rand -hex 4 | sed 's/\(..\)/\1:/g; s/.$//')
23         #BT_MAC=$MAC_PRE$MAC_POST
24         echo "Generates BT MAC address based on serial number."
25         SERIAL=`cat /proc/device-tree/serial-number | cut -c9-`
26         B1=`echo $SERIAL | cut -c3-4`
27         B2=`echo $SERIAL | cut -c5-6`
28         B3=`echo $SERIAL | cut -c7-8`
29         BT_MAC=`printf b8:27:eb:%02x:%02x:%02x $((0x$B1 ^ 0xaa)) $((0x$B2 ^ 0xaa)) $((0x$B3 ^ 0xaa))`
30 }
31
32 PIVERSION=`cat /proc/device-tree/model | awk '{print $3}'`
33 PIMODEL=`cat /proc/device-tree/model | awk '{print $5}'`
34 echo "$PIVERSION $PIMODEL"
35
36 if [ "$PIVERSIOM" = "3" ] && [ "$PIMODEL" = "B" ]
37 then
38         echo "RPI3 B model"
39         FLOW_CONTROL=noflow
40         UART_SPEED=460800
41 else
42         echo "RPI3 B+ or RPI4 model"
43         FLOW_CONTROL=flow
44         UART_SPEED=2000000
45
46 fi
47
48 if [ ! -e "$BT_MAC_FILE" ]
49 then
50         # Set BT address
51         GEN_BDADDR
52         echo $BT_MAC > ${BT_MAC_FILE}
53 else
54         BT_MAC=$(cat ${BT_MAC_FILE})
55 fi
56
57 echo $BT_MAC
58
59 echo "Check for Bluetooth device status"
60 if ($HCI_CONFIG | grep hci); then
61         echo "Bluetooth device is UP"
62         $HCI_CONFIG hci0 up
63 else
64         echo "Bluetooth device is DOWN"
65         echo "Registering Bluetooth device"
66
67         # Attaching Broadcom device
68         flag=0
69         for ((i=0; i<2; i++))
70         do
71                 if ($HCI_ATTACH $BT_UART_DEVICE $BT_CHIP_TYPE $UART_SPEED $FLOW_CONTROL nosleep $BT_MAC -t 5); then
72                         sleep 0.1
73                         $HCI_CONFIG hci0 up
74                         echo "HCIATTACH success"
75                         flag=1
76                         break
77                 fi
78         done
79
80         if [ $flag -eq 0 ]
81         then
82                 echo "HCIATTACH failed"
83         fi
84 fi