rendered paste body#! /bin/bash### BEGIN INIT INFO# Provides: bluetooth# Required-Start: $local_fs $syslog $remote_fs# Required-Stop: $local_fs $syslog $remote_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: Start bluetooth daemons### END INIT INFO## bluez-utils Bluetooth subsystem starting and stopping## originally from bluez's scripts/bluetooth.init## Edd Dumbill <ejad@debian.org># LSB 3.0 compilance and enhancements by Filippo Giunchedi <filippo@debian.org>## startup control over dund and pand can be changed by editing# /etc/default/bluez-utilsPATH=/sbin:/bin:/usr/sbin:/usr/binDESC="Bluetooth services"HCID=/usr/sbin/hcidHCIATTACH=/usr/sbin/hciattachHCID_NAME=hcidHCID_OPTIONS="-x -s"HID2HCI=/usr/sbin/hid2hciUART_CONF=/etc/bluetooth/uartRFCOMM=/usr/bin/rfcommRFCOMM_NAME=rfcommRFCOMM_CONF=/etc/bluetooth/rfcomm.confSDPTOOL=/usr/bin/sdptoolDUND_DAEMON=/usr/bin/dundDUND_NAME=dundPAND_DAEMON=/usr/bin/pandPAND_NAME=pandHIDD_DAEMON=/usr/bin/hiddHIDD_NAME=hiddDUND_ENABLED=0PAND_ENABLED=0HIDD_ENABLED=0DUND_OPTIONS=""PAND_OPTIONS=""HIDD_OPTIONS="--master --server"test -f /etc/default/bluetooth && . /etc/default/bluetoothtest -f /etc/default/rcS && . /etc/default/rcS. /lib/lsb/init-functions# test for essential daemonstest -x $HCID || exit 0test -x $HCIATTACH || exit 0test -x $RFCOMM || exit 0# disable nonessential daemons if not presentif test "$DUND_ENABLED" != "0"; then if ! test -f $DUND_DAEMON; then DUND_ENABLED=0 fifiif test "$PAND_ENABLED" != "0"; then if ! test -f $PAND_DAEMON; then PAND_ENABLED=0 fifiif test "$HIDD_ENABLED" != "0"; then if ! test -f $HIDD_DAEMON; then HIDD_ENABLED=0 fifiset -erun_sdptool(){ test -x $SDPTOOL || return 1 if ! test -z "$SDPTOOL_OPTIONS" ; then oldifs="$IFS" IFS=";" for o in $SDPTOOL_OPTIONS ; do #echo "execing $SDPTOOL $o" IFS=" " $SDPTOOL $o &>/dev/null done IFS="$oldifs" fi}enable_hci_input(){ if [ "$VERBOSE" != no ]; then log_success_msg "Switching on Bluetooth input devices..." $HID2HCI --tohci else $HID2HCI --tohci >/dev/null 2>&1 fi}disable_hci_input(){ if [ "$VERBOSE" != no ]; then log_success_msg "Switching Bluetooth input devices back to HID mode..." $HID2HCI --tohid else $HID2HCI --tohid >/dev/null 2>&1 fi}start_pan(){ if test "$DUND_ENABLED" != "0"; then start-stop-daemon --start --quiet --exec $DUND_DAEMON -- $DUND_OPTIONS [ "$VERBOSE" != no ] && log_success_msg "Starting $DUND_NAME..." fi if test "$PAND_ENABLED" != "0"; then start-stop-daemon --start --quiet --exec $PAND_DAEMON -- $PAND_OPTIONS [ "$VERBOSE" != no ] && log_success_msg "Starting $PAND_NAME..." fi}stop_pan(){ if test "$DUND_ENABLED" != "0"; then start-stop-daemon --stop --quiet --exec $DUND_DAEMON || true [ "$VERBOSE" != no ] && log_success_msg "Stopping $DUND_NAME..." fi if test "$PAND_ENABLED" != "0"; then start-stop-daemon --stop --quiet --exec $PAND_DAEMON || true [ "$VERBOSE" != no ] && log_success_msg "Stopping $PAND_NAME..." fi}start_hid(){ if test "$HIDD_ENABLED" != "0"; then start-stop-daemon --start --quiet --exec $HIDD_DAEMON -- $HIDD_OPTIONS [ "$VERBOSE" != no ] && log_success_msg "Starting $HIDD_NAME..." fi}stop_hid(){ if test "$HIDD_ENABLED" != "0"; then $HIDD_DAEMON --killall start-stop-daemon --stop --quiet --exec $HIDD_DAEMON || true [ "$VERBOSE" != no ] && log_success_msg "Stopping $HIDD_NAME..." fi}start_uarts(){ [ -f $HCIATTACH ] && [ -f $UART_CONF ] || return grep -v '^#' $UART_CONF | while read i; do if [ "$VERBOSE" != no ]; then $HCIATTACH $i else $HCIATTACH $i >/dev/null 2>&1 fi done}stop_uarts(){ killall hciattach > /dev/null 2>&1 || true}start_rfcomm(){ if [ -x $RFCOMM ] && [ -f $RFCOMM_CONF ] ; then # rfcomm must always succeed for now: users # may not yet have an rfcomm-enabled kernel if [ "$VERBOSE" != no ]; then log_success_msg "Starting $RFCOMM_NAME..." $RFCOMM -f $RFCOMM_CONF bind all || true else $RFCOMM -f $RFCOMM_CONF bind all >/dev/null 2>&1 || true fi fi}stop_rfcomm(){ if [ -x $RFCOMM ] ; then if [ "$VERBOSE" != no ]; then log_success_msg "Stopping $RFCOMM_NAME..." $RFCOMM unbind all || true else $RFCOMM unbind all >/dev/null 2>&1 || true fi fi}restart_rfcomm(){ if [ -x $RFCOMM ] && [ -f $RFCOMM_CONF ] ; then if [ "$VERBOSE" != no ]; then log_success_msg "Restarting $RFCOMM_NAME..." $RFCOMM unbind all || true $RFCOMM -f $RFCOMM_CONF bind all || true else $RFCOMM unbind all >/dev/null 2>&1|| true $RFCOMM -f $RFCOMM_CONF bind all >/dev/null 2>&1 || true fi fi}case "$1" in start) log_daemon_msg "Starting $DESC" if test "$BLUETOOTH_ENABLED" == "0"; then log_progress_msg "disabled. see /etc/default/bluetooth" log_end_msg 0 exit 0 fi start-stop-daemon --start --quiet --exec $HCID -- $HCID_OPTIONS || true log_progress_msg "hcid" start_uarts || true start_hid || true enable_hci_input || true start_rfcomm || true start_pan || true log_end_msg 0 ;; stop) log_daemon_msg "Stopping $DESC" stop_pan || true stop_rfcomm || true disable_hci_input || true stop_hid || true start-stop-daemon --stop --quiet --exec $HCID || true log_progress_msg "$HCID_NAME" stop_uarts || true log_end_msg 0 ;; restart|force-reload) log_daemon_msg "Restarting $DESC" stop_hid || true stop_pan || true start-stop-daemon --stop --quiet --exec $HCID || true sleep 1 if test "$BLUETOOTH_ENABLED" == "0"; then log_progress_msg "disabled. see /etc/default/bluetooth" log_end_msg 0 exit 0 fi start-stop-daemon --start --quiet --exec $HCID -- $HCID_OPTIONS || true log_progress_msg "$HCID_NAME" start_pan || true start_hid || true restart_rfcomm log_end_msg 0 ;; *) N=/etc/init.d/bluetooth # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $N {start|stop|restart|force-reload}" >&2 exit 1 ;;esacexit 0# vim:noet