#!/bin/sh # # bluetooth Bluetooth subsystem starting and stopping # # chkconfig: 345 25 90 # # description: Bluetooth subsystem # # $Id$ # Source function library . /etc/rc.d/init.d/functions UART_CONF="/etc/bluetooth/uart" [ -f /etc/sysconfig/bluetooth ] && . /etc/sysconfig/bluetooth if [ "$UART_CONF" != "no" -a ! -f "$UART_CONF" ]; then UART_CONF="no" fi start() { # Check if the service is already running? if [ ! -f /var/lock/subsys/bluetooth ]; then msg_starting bluetooth; started if is_yes "${HID2HCI_ENABLE}" && [ -x /usr/sbin/hid2hci ]; then msg_starting hid2hci daemon /usr/sbin/hid2hci -0 -q #be quiet RETVAL=$? /bin/sleep 1 # delay for hid's to be detected by hotplug fi if is_yes "${HCID_ENABLE}" && [ -x /usr/sbin/hcid ]; then HCID_FLAGS="-f /etc/bluetooth/hcid.conf" if is_yes "${SDPD_ENABLE}" ; then HCID_FLAGS="$HCID_FLAGS -s" fi msg_starting hcid daemon /usr/sbin/hcid $HCID_FLAGS RETVAL=$? fi if is_yes "${HIDD_ENABLE}" && [ -x /usr/bin/hidd ]; then msg_starting hidd daemon /usr/bin/hidd ${HIDD_OPTIONS} --server RETVAL=$? fi if is_yes "${RFCOMM_ENABLE}" && [ -x /usr/bin/rfcomm ]; then msg_starting rfcomm daemon /usr/bin/rfcomm -f /etc/bluetooth/rfcomm.conf bind all RETVAL=$? fi if is_yes "${DUND_ENABLE}" && [ -x /usr/bin/dund ]; then msg_starting dund daemon /usr/bin/dund ${DUND_OPTIONS} RETVAL=$? fi if is_yes "${PAND_ENABLE}" && [ -x /usr/bin/pand ]; then msg_starting pand daemon /usr/bin/pand ${PAND_OPTIONS} RETVAL=$? fi if [ -f /usr/sbin/hciattach -a "$UART_CONF" != "no" ]; then grep -v '^#' $UART_CONF | while read i; do /usr/sbin/hciattach $i done fi [ $RETVAL -eq 0 ] && touch /var/lock/subsys/bluetooth else msg_already_running bluetooth fi } stop() { if [ -f /var/lock/subsys/bluetooth ]; then if is_yes "${PAND_ENABLE}" && [ -x /usr/bin/pand ]; then msg_stopping pand killproc /usr/bin/pand fi if is_yes "${DUND_ENABLE}" && [ -x /usr/bin/dund ]; then msg_stopping dund killproc /usr/bin/dund fi if is_yes "${RFCOMM_ENABLE}" && [ -x /usr/bin/rfcomm ]; then msg_stopping rfcomm daemon /usr/bin/rfcomm release all fi if is_yes "${HIDD_ENABLE}" && [ -x /usr/bin/hidd ]; then msg_stopping hidd killproc /usr/bin/hidd fi if is_yes "${HCID_ENABLE}" && [ -x /usr/sbin/hcid ]; then msg_stopping hcid killproc /usr/sbin/hcid fi if [ "$UART_CONF" != "no" ]; then killproc hciattach >/dev/null 2>&1 fi rm -f /var/lock/subsys/bluetooth else msg_not_running bluetooth fi } RETVAL=0 # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) stop start ;; reload|force-reload) if [ -f /var/lock/subsys/bluetooth ]; then msg_reloading hcid killproc hcid -HUP RETVAL=$? else msg_not_running bluetooth exit 7 fi ;; status) is_yes "${HID2HCI_ENABLE}" && status hid2hci is_yes "${HCID_ENABLE}" && status hcid is_yes "${SDPD_ENABLE}" && status sdpd is_yes "${HIDD_ENABLE}" && status hidd is_yes "${DUND_ENABLE}" && status dund if [ -f /var/lock/subsys/bluetooth ]; then exit 0 else exit 1 fi ;; *) msg_usage "$0 {start|stop|restart|reload|force-reload|status}" exit 3 esac exit $RETVAL