#!/bin/sh #=============================================================================== # # Copyright (C) 2023 by Digi International Inc. # All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 2 as published by # the Free Software Foundation. # # # !Description: Initialize bluetooth hardware # #=============================================================================== HCI_IFACE="hci0" log() { printf "<3>iw612-bluetooth: %s\n" "${1}" >/dev/kmsg } bluetooth_start() { if ! [ -e "/proc/device-tree/bluetooth/mac-address" ]; then log "[ERROR] Bluetooth mac-address not found" return fi BTADDR=$(hexdump -ve '1/1 "%02X" ":"' /proc/device-tree/bluetooth/mac-address 2>/dev/null | sed 's/:$//g') hciattach -t5 /dev/ttyBt any 115200 flow nosleep "${BTADDR}" && \ hciconfig ${HCI_IFACE} up && \ sleep 0.2 && \ hcitool -i ${HCI_IFACE} cmd 0x3f 0x0009 0xc0 0xc6 0x2d 0x00 && \ sleep 0.2 && \ killall hciattach && \ sleep 0.2 && \ hciattach -t5 /dev/ttyBt any -s 3000000 3000000 flow && \ log "Bluetooth activated" && return log "[ERROR] Cannot initialize Bluetooth" return 1 } bluetooth_stop() { if [ -e "/sys/class/bluetooth/${HCI_IFACE}" ]; then # hci reset command hcitool -i ${HCI_IFACE} cmd 0x03 0x0003 sleep 0.2 # set baudrate to 115200 hcitool -i ${HCI_IFACE} cmd 0x3f 0x0009 0x00 0xc2 0x01 0x00 killall hciattach fi } case "$1" in start) bluetooth_start ;; stop) bluetooth_stop ;; restart) $0 stop sleep 1 $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac