summaryrefslogtreecommitdiff
path: root/shared/utils/bdaddr/set_bdaddr.sh
diff options
context:
space:
mode:
Diffstat (limited to 'shared/utils/bdaddr/set_bdaddr.sh')
-rw-r--r--shared/utils/bdaddr/set_bdaddr.sh19
1 files changed, 13 insertions, 6 deletions
diff --git a/shared/utils/bdaddr/set_bdaddr.sh b/shared/utils/bdaddr/set_bdaddr.sh
index 299626d..e59fa39 100644
--- a/shared/utils/bdaddr/set_bdaddr.sh
+++ b/shared/utils/bdaddr/set_bdaddr.sh
@@ -17,17 +17,24 @@
# limitations under the License.
#
-# Get the unique board serial number from /proc/cmdline,
-# prepend '0's to the serial number to fill 5 LSBs of the
-# BT address and prepend "C0" as MSB to prepare a 6 byte
-# Bluetooth Random Static Address. Reference:
+# Get the unique board serial number from /proc/cmdline or
+# /proc/bootconfig, prepend '0's to the serial number to
+# fill 5 LSBs of the BT address and prepend "C0" as MSB to
+# prepare a 6 byte Bluetooth Random Static Address. Reference:
# https://www.bluetooth.com/wp-content/uploads/2022/05/Bluetooth_LE_Primer_Paper.pdf [Page 23]
#
# Format the output in xx:xx:xx:xx:xx:xx format for the
# "bdaddr" command to work.
-BTADDR=`/vendor/bin/cat /proc/cmdline | vendor/bin/grep -o serialno.* |\
- /vendor/bin/cut -f2 -d'=' | /vendor/bin/awk '{printf("C0%010s\n", $1)}' |\
+BTADDR=`/vendor/bin/cat /proc/cmdline | /vendor/bin/grep -o serialno.* |\
+ /vendor/bin/cut -f2 -d'=' | /vendor/bin/awk '{printf("c0%010s\n", $1)}' |\
/vendor/bin/sed 's/\(..\)/\1:/g' | /vendor/bin/sed '$s/:$//'`
+if [ -z "${BTADDR}" ]
+then
+ BTADDR=`/vendor/bin/cat /proc/bootconfig | /vendor/bin/grep -o serialno.* |\
+ /vendor/bin/cut -f2 -d'=' | /vendor/bin/cut -c 3-10 |\
+ /vendor/bin/awk '{printf("c0%010s\n", $1)}' |\
+ /vendor/bin/sed 's/\(..\)/\1:/g' | /vendor/bin/sed '$s/:$//'`
+fi
/vendor/bin/hw/bdaddr "${BTADDR}"