summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrpaulo <rpaulo@FreeBSD.org>2010-04-09 17:32:38 +0000
committerrpaulo <rpaulo@FreeBSD.org>2010-04-09 17:32:38 +0000
commit95f33ba3f421adc28d4463b6d94e9ce7e8b4d843 (patch)
treea6a6e90ae91b9aa598be2b8d39cdf57d4324c870
parentf891fbaed33f43cf5ca740856918e6016214884a (diff)
downloadFreeBSD-src-95f33ba3f421adc28d4463b6d94e9ce7e8b4d843.zip
FreeBSD-src-95f33ba3f421adc28d4463b6d94e9ce7e8b4d843.tar.gz
Add rc.d/ubthidhci. This small script calls usbconfig(1) to change a USB
Bluetooth controller from HID mode to HCI mode. MFC after: 1 week
-rw-r--r--etc/defaults/rc.conf5
-rwxr-xr-xetc/rc.d/ubthidhci40
-rw-r--r--share/man/man5/rc.conf.523
3 files changed, 67 insertions, 1 deletions
diff --git a/etc/defaults/rc.conf b/etc/defaults/rc.conf
index 9151da4..a5da7c2 100644
--- a/etc/defaults/rc.conf
+++ b/etc/defaults/rc.conf
@@ -436,6 +436,11 @@ rfcomm_pppd_server_two_channel="3" # Override local channel for 'two'
#rfcomm_pppd_server_two_register_sp="NO" # Override SP and DUN register
#rfcomm_pppd_server_two_register_dun="NO" # for 'two'
+#ubthidhci_enable="YES" # Switch an USB BT controller present on
+#ubthidhci_busnum="3" # bus 3 and addr 2 from HID mode to HCI mode.
+#ubthidhci_addr="2" # Check usbconfig list to find the correct
+ # numbers for your system.
+
### Miscellaneous network options: ###
icmp_bmcastecho="NO" # respond to broadcast ping packets
diff --git a/etc/rc.d/ubthidhci b/etc/rc.d/ubthidhci
new file mode 100755
index 0000000..67d7346
--- /dev/null
+++ b/etc/rc.d/ubthidhci
@@ -0,0 +1,40 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: ubthidhci
+# REQUIRE: DAEMON
+# BEFORE: bluetooth
+# KEYWORD: nojail shutdown
+
+. /etc/rc.subr
+
+name="ubthidhci"
+command="/usr/sbin/usbconfig"
+rcvar=`set_rcvar`
+start_precmd="ubthidhci_prestart"
+
+ubthidhci_prestart()
+{
+
+ if [ -z ${ubthidhci_busnum} ]; then
+ warn ubthidhci_busnum is not set
+ return 1
+ fi
+ if [ -z ${ubthidhci_addr} ]; then
+ warn ubthidhci_addr is not set
+ return 1
+ fi
+}
+
+load_rc_config $name
+#
+# We discard the output because:
+# 1) we don't want it to show up during boot; and
+# 2) the request usually returns an error, but that doesn't mean it failed
+#
+# NB: 0x40 is UT_VENDOR
+command_args="-u ${ubthidhci_busnum} -a ${ubthidhci_addr} do_request 0x40 0 0 0 0 > /dev/null 2>&1"
+
+run_rc_command "$1"
diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5
index 59e338b..31508b7 100644
--- a/share/man/man5/rc.conf.5
+++ b/share/man/man5/rc.conf.5
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd April 8, 2010
+.Dd April 09, 2010
.Dt RC.CONF 5
.Os
.Sh NAME
@@ -4268,6 +4268,26 @@ if it should register Dial-Up Networking service on the speficied
RFCOMM channel.
Default
.Dq Li NO .
+.It Va ubthidhci_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+change the USB Bluetooth controller from HID mode to HCI mode.
+You also need to specify the location of USB Bluetooth controller with the
+.Va ubthidhci_busnum
+and
+.Va ubthidhci_addr
+variables.
+.It Va ubthidhci_busnum
+Bus number where the USB Bluetooth controller is located.
+Check the output of
+.Xr usbconfig 1
+on your system to find this information.
+.It Va ubthidhci_addr
+Bus address of the USB Bluetooth controller.
+Check the output of
+.Xr usbconfig 1
+on your system to find this information.
.El
.Sh FILES
.Bl -tag -width ".Pa /etc/defaults/rc.conf" -compact
@@ -4283,6 +4303,7 @@ Default
.Xr kbdcontrol 1 ,
.Xr makewhatis 1 ,
.Xr sh 1 ,
+.Xr usbconfig 1 ,
.Xr vi 1 ,
.Xr vidcontrol 1 ,
.Xr bridge 4 ,
OpenPOWER on IntegriCloud