summaryrefslogtreecommitdiff
path: root/recipes/bluez
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /recipes/bluez
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'recipes/bluez')
-rw-r--r--recipes/bluez/bcm2035-tool/addr-as-arg.patch104
-rw-r--r--recipes/bluez/bcm2035-tool_0.0.bb19
-rw-r--r--recipes/bluez/bluez-cups-backend_3.33.bb27
-rw-r--r--recipes/bluez/bluez-cups-backend_3.36.bb26
-rw-r--r--recipes/bluez/bluez-dtl1-workaround/02dtl1_cs.sh57
-rw-r--r--recipes/bluez/bluez-dtl1-workaround_1.0.bb17
-rw-r--r--recipes/bluez/bluez-gnome_0.26.bb14
-rw-r--r--recipes/bluez/bluez-gnome_cvs.bb17
-rw-r--r--recipes/bluez/bluez-gnome_git.bb17
-rw-r--r--recipes/bluez/bluez-gstreamer-plugin_3.33.bb27
-rw-r--r--recipes/bluez/bluez-gstreamer-plugin_3.36.bb26
-rw-r--r--recipes/bluez/bluez-hcidump_1.42.bb13
-rw-r--r--recipes/bluez/bluez-libs.inc22
-rw-r--r--recipes/bluez/bluez-libs_3.33.bb1
-rw-r--r--recipes/bluez/bluez-libs_3.36.bb3
-rw-r--r--recipes/bluez/bluez-utils-3.33/hciattach-ti-bts.patch477
-rw-r--r--recipes/bluez/bluez-utils-3.x/hciattach-ti-bts.patch489
-rw-r--r--recipes/bluez/bluez-utils-3.x/hcid.conf72
-rw-r--r--recipes/bluez/bluez-utils-alsa_3.33.bb25
-rw-r--r--recipes/bluez/bluez-utils-alsa_3.36.bb24
-rw-r--r--recipes/bluez/bluez-utils-dbus/dbus-2.24.patch53
-rw-r--r--recipes/bluez/bluez-utils-dbus/dbus.patch58
-rw-r--r--recipes/bluez/bluez-utils-dbus/hcid-alignment-fix.patch42
-rw-r--r--recipes/bluez/bluez-utils-dbus/hcid.conf72
-rw-r--r--recipes/bluez/bluez-utils-dbus/smash.patch11
-rw-r--r--recipes/bluez/bluez-utils.inc67
-rw-r--r--recipes/bluez/bluez-utils/handle-eintr.patch23
-rw-r--r--recipes/bluez/bluez-utils/hcid.conf57
-rw-r--r--recipes/bluez/bluez-utils/hid2hci_usb_init.patch33
-rw-r--r--recipes/bluez/bluez-utils/ppoll-uclibc-arm-r0.patch14
-rw-r--r--recipes/bluez/bluez-utils/sbc-thumb.patch11
-rw-r--r--recipes/bluez/bluez-utils/uclibc-fix.patch46
-rw-r--r--recipes/bluez/bluez-utils3.inc148
-rw-r--r--recipes/bluez/bluez-utils_3.33.bb67
-rw-r--r--recipes/bluez/bluez-utils_3.36.bb72
-rw-r--r--recipes/bluez/bluez.inc95
-rw-r--r--recipes/bluez/bluez4/fix-dfutool-usb-declaration-mismatch.patch13
-rw-r--r--recipes/bluez/bluez4/hid2hci_usb_init.patch33
-rw-r--r--recipes/bluez/bluez4/sbc-thumb.patch11
-rw-r--r--recipes/bluez/bluez4_4.31.bb60
-rw-r--r--recipes/bluez/files/base.patch33
-rw-r--r--recipes/bluez/files/blueboxes.patch18
-rw-r--r--recipes/bluez/files/bluetooth.conf13
-rw-r--r--recipes/bluez/files/bluetooth.default37
-rw-r--r--recipes/bluez/files/default-manfid-0x0-to-bcps.patch22
-rw-r--r--recipes/bluez/files/hciattach_devlength.patch11
-rw-r--r--recipes/bluez/files/no-user-include.patch18
-rw-r--r--recipes/bluez/files/openmn/bluetooth.default37
-rw-r--r--recipes/bluez/files/openmn/hcid.conf70
-rw-r--r--recipes/bluez/files/pkgconfig-add-gthread.patch50
-rw-r--r--recipes/bluez/files/slugos/bluetooth.default37
-rw-r--r--recipes/bluez/files/slugos/hcid.conf70
52 files changed, 2879 insertions, 0 deletions
diff --git a/recipes/bluez/bcm2035-tool/addr-as-arg.patch b/recipes/bluez/bcm2035-tool/addr-as-arg.patch
new file mode 100644
index 0000000000..28618c5bbb
--- /dev/null
+++ b/recipes/bluez/bcm2035-tool/addr-as-arg.patch
@@ -0,0 +1,104 @@
+--- bcm2035-tool/bcm2035-tool.c 2007/05/07 12:48:06 2000
++++ bcm2035-tool/bcm2035-tool.c 2007/05/07 12:55:47 2001
+@@ -1,6 +1,8 @@
+-/* bcm2035-tool - bcm2035 tool for Motorola EZX phones
++/* bcm2035-tool
+ *
+ * (C) 2007 by Daniel Ribeiro <drwyrm@gmail.com>
++ *
++ * MAC address as argument extension by: Jan Herman <2hp@seznam.cz>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2
+@@ -17,10 +19,10 @@
+ *
+ */
+
++/* Default MAC address */
++#define BDADDR "\x06\x05\x04\x03\x02\x01"
+
+ //#define PATCH_FIRMWARE
+-#define BDADDR "\xab\x89\x67\x45\x23\x01"
+-
+
+ #include <stdio.h>
+ #include <string.h>
+@@ -33,6 +35,7 @@
+ #include <sys/ioctl.h>
+ #include <termios.h>
+ #include "bcm2035-tool.h"
++//#include "bluetooth.h"
+
+ #ifdef PATCH_FIRMWARE
+ #include "motorola_patches.h"
+@@ -180,18 +183,51 @@
+
+ }
+
++void mac2hex(const char *mac, u_char *dst)
++{
++
++ int i;
++ long l;
++ char *pp;
++
++ while (isspace(*mac))
++ mac++;
++
++ /* expect 6 hex octets separated by ':' or space/NUL if last octet */
++ for (i = 0; i < 6; i++) {
++ l = strtol(mac, &pp, 16);
++ if (pp == mac || l > 0xFF || l < 0)
++ return;
++ if (!(*pp == ':' || (i == 5 && (isspace(*pp) || *pp == '\0'))))
++ return;
++ /* 5-i swaps hex chars */
++ dst[5-i] = (u_char) l;
++ mac = pp + 1;
++ }
++ }
++
++char bdaddr[6];
++
+ int main(int argc, char **argv)
+ {
+ int fd, i;
+ struct termios term;
+ char buf[1024];
+- char bdaddr[6];
+-
+- if (argc < 2) {
+- printf("use: %s <device>\n", argv[0]);
++
++ if (argc < 3) {
++ printf("BCM2035 Tool:\n");
++ printf("Usage: %s <device> <bdaddr>\n", argv[0]);
+ exit(1);
+ }
+
++ if (strlen(argv[2]) < 17) {
++ printf("invalid argument %s!\n", argv[2]);
++ exit(1);
++ }
++
++ /* Converts MAC address to swapped HEX */
++ mac2hex(argv[2], bdaddr);
++
+ fd = open (argv[1], O_RDWR | O_NOCTTY );
+
+ if(fd < 0) exit(-1);
+@@ -212,7 +248,7 @@
+ #endif
+ set_baud(fd, 460800);
+
+- send_cmd(fd, CMD_SET_BDADDR, BDADDR, 6);
++ send_cmd(fd, CMD_SET_BDADDR, bdaddr, 6);
+
+ i = N_HCI;
+ if (ioctl(fd, TIOCSETD, &i) < 0) {
+@@ -228,5 +264,3 @@
+ while (1) sleep(999999999);
+ return 0;
+ }
+-
+-
diff --git a/recipes/bluez/bcm2035-tool_0.0.bb b/recipes/bluez/bcm2035-tool_0.0.bb
new file mode 100644
index 0000000000..636841de6f
--- /dev/null
+++ b/recipes/bluez/bcm2035-tool_0.0.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Bluetooth firmware poker for bccm2035 chips (motorola phones and palms)"
+LICENSE = "GPLv2"
+
+PR = "r1"
+
+SRC_URI = "http://people.openezx.org/wyrm/bcm2035-tool.tgz \
+ file://addr-as-arg.patch;patch=1 \
+ "
+
+S = "${WORKDIR}/${PN}"
+
+do_compile() {
+ ${CC} bcm2035-tool.c -o bcm2035-tool
+}
+
+do_install() {
+ install -d ${D}${sbindir}
+ install -m 755 bcm2035-tool ${D}${sbindir}
+}
diff --git a/recipes/bluez/bluez-cups-backend_3.33.bb b/recipes/bluez/bluez-cups-backend_3.33.bb
new file mode 100644
index 0000000000..40e099642a
--- /dev/null
+++ b/recipes/bluez/bluez-cups-backend_3.33.bb
@@ -0,0 +1,27 @@
+require bluez-utils3.inc
+
+PR = "r1"
+
+DEPENDS += "cups"
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --disable-alsa \
+ --enable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+
+FILES_${PN} = "${libdir}/cups/backend/bluetooth"
+RDEPENDS_${PN} = "cups"
diff --git a/recipes/bluez/bluez-cups-backend_3.36.bb b/recipes/bluez/bluez-cups-backend_3.36.bb
new file mode 100644
index 0000000000..4bcb962f3c
--- /dev/null
+++ b/recipes/bluez/bluez-cups-backend_3.36.bb
@@ -0,0 +1,26 @@
+require bluez-utils3.inc
+
+
+DEPENDS += "cups"
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --disable-alsa \
+ --enable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+
+FILES_${PN} = "${libdir}/cups/backend/bluetooth"
+RDEPENDS_${PN} = "cups"
diff --git a/recipes/bluez/bluez-dtl1-workaround/02dtl1_cs.sh b/recipes/bluez/bluez-dtl1-workaround/02dtl1_cs.sh
new file mode 100644
index 0000000000..fefc72e07a
--- /dev/null
+++ b/recipes/bluez/bluez-dtl1-workaround/02dtl1_cs.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+case "$1" in
+ suspend)
+ if [ "`/sbin/hciconfig`" != "" ]; then
+ #If hciconfig outputs anything then there's probably a Bluetooth
+ # CF card in the slot so shut it down.
+ hcitool dc `hcitool con | grep ACL | sed 's/^.*\([0-9A-F]\{2\}\(:[0-9A-F]\{2\}\)\{5\}\).*$/\1/'`
+ hciconfig hci0 down
+ killall hciattach > /dev/null 2>&1
+ fi
+ ;;
+
+ resume)
+ #check for kernel version
+ if [ "`uname -r | grep 2.4.`" != "" ]; then
+ k="o"
+ elif [ "`uname -r | grep 2.6.`" != "" ]; then
+ k="ko"
+ else
+ exit 0
+ fi
+
+ if test -e /sbin/cardctl; then
+ CARDCTL=/sbin/cardctl
+ elif test -e /sbin/pccardctl; then
+ CARDCTL=/sbin/pccardctl
+ else
+ exit 0
+ fi
+
+ if [ "`lsmod | grep hci_uart`" != "" ]; then
+ #If the hci_usb module is still loaded then there's a serial based
+ # Bluetooth CF card in the slot, which only needs a resume to get it going
+ # again.
+ rfcomm bind all
+ $CARDCTL resume
+ hciconfig hci0 up
+ else
+ # only works for nokia dtl1 cards
+ for f in /lib/modules/`uname -r`/kernel/drivers/bluetooth/dtl1_cs.$k
+ do
+ #Enumerate all the self-contained Bluetooth CF card drivers
+ f=`echo $f | sed 's/\.'$k'$//'`
+ f=`basename $f`
+ if [ "`lsmod | grep $f`" != "" ]; then
+ #If one of these drivers is still loaded, then there is probably
+ #a non-serial based Bluetooth CF card in the slot that needs
+ #ejecting and reinserting to get it going again
+ rfcomm bind all
+ $CARDCTL eject
+ $CARDCTL insert
+ hciconfig hci0 up
+ fi
+ done
+ fi
+esac
diff --git a/recipes/bluez/bluez-dtl1-workaround_1.0.bb b/recipes/bluez/bluez-dtl1-workaround_1.0.bb
new file mode 100644
index 0000000000..413d220508
--- /dev/null
+++ b/recipes/bluez/bluez-dtl1-workaround_1.0.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "A nasty hack for for dtl1-cs driver to workaround suspend/resume."
+SECTION = "console"
+PRIORITY = "optional"
+LICENSE = "GPL"
+PR = "r1"
+
+SRC_URI = "file://02dtl1_cs.sh"
+
+do_install() {
+ install -d ${D}${sysconfdir}/apm/event.d/
+ install -m 0755 ${WORKDIR}/02dtl1_cs.sh ${D}${sysconfdir}/apm/event.d/
+}
+
+#Package 02dtl1_cs.sh, which is a nasty hack to get dtl1c_cs cards working with suspend/resume
+FILES_${PN} += "${sysconfdir}/apm/"
+
+PACKAGE_ARCH = "all"
diff --git a/recipes/bluez/bluez-gnome_0.26.bb b/recipes/bluez/bluez-gnome_0.26.bb
new file mode 100644
index 0000000000..135bb5ca40
--- /dev/null
+++ b/recipes/bluez/bluez-gnome_0.26.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Bluetooth configuration applet"
+LICENSE = "GPL+LGPL"
+
+DEPENDS = "dbus-glib gconf libnotify gtk+"
+RRECOMMENDS = "gnome-icon-theme"
+
+PR = "r4"
+
+SRC_URI = "http://bluez.sourceforge.net/download/${P}.tar.gz"
+
+inherit autotools pkgconfig gconf mime
+
+FILES_${PN} += "${datadir}/gconf ${datadir}/icons ${datadir}/mime/packages"
+
diff --git a/recipes/bluez/bluez-gnome_cvs.bb b/recipes/bluez/bluez-gnome_cvs.bb
new file mode 100644
index 0000000000..728d20e5f1
--- /dev/null
+++ b/recipes/bluez/bluez-gnome_cvs.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Bluetooth configuration applet"
+LICENSE = "GPL+LGPL"
+
+DEFAULT_PREFERENCE = "-1"
+
+DEPENDS = "dbus-glib gconf libnotify gtk+"
+
+SRC_URI = "cvs://anonymous@cvs.bluez.org/cvsroot/bluez;module=gnome \
+ "
+
+PV = "0.13+cvs${SRCDATE}"
+S = "${WORKDIR}/gnome"
+
+inherit autotools pkgconfig gconf
+
+FILES_${PN} += "${datadir}/gconf"
+
diff --git a/recipes/bluez/bluez-gnome_git.bb b/recipes/bluez/bluez-gnome_git.bb
new file mode 100644
index 0000000000..e8bfd97419
--- /dev/null
+++ b/recipes/bluez/bluez-gnome_git.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Bluetooth configuration applet"
+LICENSE = "GPL+LGPL"
+
+DEFAULT_PREFERENCE = "-2"
+
+DEPENDS = "dbus-glib gconf libnotify gtk+"
+
+SRC_URI = "git://people.freedesktop.org/~hadess/bluez-gnome;protocol=git \
+ file://pkgconfig-add-gthread.patch;patch=1 "
+
+PV = "0.10+git${SRCDATE}"
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig gconf
+
+FILES_${PN} += "${datadir}/gconf"
+
diff --git a/recipes/bluez/bluez-gstreamer-plugin_3.33.bb b/recipes/bluez/bluez-gstreamer-plugin_3.33.bb
new file mode 100644
index 0000000000..53b7eb86f2
--- /dev/null
+++ b/recipes/bluez/bluez-gstreamer-plugin_3.33.bb
@@ -0,0 +1,27 @@
+require bluez-utils3.inc
+
+PR = "r1"
+
+DEPENDS += "gstreamer gst-plugins-base "
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --enable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --enable-gstreamer \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+
+FILES_${PN} = "${libdir}/gstreamer-0.10/libgstbluetooth.so"
diff --git a/recipes/bluez/bluez-gstreamer-plugin_3.36.bb b/recipes/bluez/bluez-gstreamer-plugin_3.36.bb
new file mode 100644
index 0000000000..facad9cedd
--- /dev/null
+++ b/recipes/bluez/bluez-gstreamer-plugin_3.36.bb
@@ -0,0 +1,26 @@
+require bluez-utils3.inc
+
+
+DEPENDS += "gstreamer gst-plugins-base "
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --enable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --enable-gstreamer \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+
+FILES_${PN} = "${libdir}/gstreamer-0.10/libgstbluetooth.so"
diff --git a/recipes/bluez/bluez-hcidump_1.42.bb b/recipes/bluez/bluez-hcidump_1.42.bb
new file mode 100644
index 0000000000..877c8db33c
--- /dev/null
+++ b/recipes/bluez/bluez-hcidump_1.42.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Linux Bluetooth Stack HCI Debugger Tool."
+SECTION = "console"
+PRIORITY = "optional"
+DEPENDS = "bluez-libs"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://bluez.sourceforge.net/download/bluez-hcidump-${PV}.tar.gz"
+S = "${WORKDIR}/bluez-hcidump-${PV}"
+
+EXTRA_OECONF = "--with-bluez-libs=${STAGING_LIBDIR} --with-bluez-includes=${STAGING_INCDIR}"
+
+inherit autotools
diff --git a/recipes/bluez/bluez-libs.inc b/recipes/bluez/bluez-libs.inc
new file mode 100644
index 0000000000..d740bd80a9
--- /dev/null
+++ b/recipes/bluez/bluez-libs.inc
@@ -0,0 +1,22 @@
+DESCRIPTION = "Linux Bluetooth Stack Userland Libaries."
+SECTION = "libs"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.bluez.org"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://bluez.sourceforge.net/download/bluez-libs-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+HEADERS = "bluetooth.h bnep.h cmtp.h hci.h hci_lib.h hidp.h l2cap.h rfcomm.h sco.h sdp.h sdp_lib.h"
+
+do_stage() {
+ oe_libinstall -a -so -C src libbluetooth ${STAGING_LIBDIR}
+
+ install -d ${STAGING_INCDIR}/bluetooth/
+ for f in ${HEADERS}
+ do
+ install -m 0644 include/$f ${STAGING_INCDIR}/bluetooth/$f
+ done
+}
diff --git a/recipes/bluez/bluez-libs_3.33.bb b/recipes/bluez/bluez-libs_3.33.bb
new file mode 100644
index 0000000000..6ddf62a4fb
--- /dev/null
+++ b/recipes/bluez/bluez-libs_3.33.bb
@@ -0,0 +1 @@
+require bluez-libs.inc
diff --git a/recipes/bluez/bluez-libs_3.36.bb b/recipes/bluez/bluez-libs_3.36.bb
new file mode 100644
index 0000000000..8e0e467bc9
--- /dev/null
+++ b/recipes/bluez/bluez-libs_3.36.bb
@@ -0,0 +1,3 @@
+require bluez-libs.inc
+
+PR = "r1"
diff --git a/recipes/bluez/bluez-utils-3.33/hciattach-ti-bts.patch b/recipes/bluez/bluez-utils-3.33/hciattach-ti-bts.patch
new file mode 100644
index 0000000000..1b208f7979
--- /dev/null
+++ b/recipes/bluez/bluez-utils-3.33/hciattach-ti-bts.patch
@@ -0,0 +1,477 @@
+--- bluez-utils-3.1/tools/hciattach.c.orig 2006-07-23 14:02:14.000000000 +0200
++++ bluez-utils-3.1/tools/hciattach.c 2006-07-23 14:06:29.000000000 +0200
+@@ -60,6 +60,8 @@
+ #define HCI_UART_3WIRE 2
+ #define HCI_UART_H4DS 3
+
++#include "ti_bts.h"
++
+ struct uart_t {
+ char *type;
+ int m_id;
+@@ -70,6 +72,7 @@
+ int flags;
+ char *bdaddr;
+ int (*init) (int fd, struct uart_t *u, struct termios *ti);
++ char *bts; /* bluetooth script */
+ };
+
+ #define FLOW_CTL 0x0001
+@@ -279,6 +282,114 @@
+ return 0;
+ }
+
++static int brf6150(int fd, struct uart_t *u, struct termios *ti)
++{
++ bts_t *bfp;
++ int i;
++ unsigned long vers;
++ unsigned char actionbuf[256];
++ unsigned char resp[128]; /* Response */
++ unsigned long count;
++ unsigned short atype;
++
++ if (u->bts == NULL) /* no script, ignore */
++ return 0;
++
++ bfp = bts_load_script( u->bts, &vers );
++ if (bfp == NULL)
++ return -1;
++
++ fprintf( stderr, "Loading BTS script version %lu\n", vers );
++
++ while ((count = bts_next_action( bfp, actionbuf,
++ sizeof actionbuf - 1, &atype )) != 0) {
++ if (atype == ACTION_REMARKS) {
++ if (actionbuf[0] != 0)
++ fprintf( stderr, "%s\n", actionbuf );
++ }
++ else if (atype == ACTION_SEND_COMMAND) {
++#if 0
++ fprintf( stderr, "ACTION_SEND_COMMAND: ", (int)atype );
++ for (i=0; i<count; i++) {
++ fprintf( stderr, "0x%02x ", actionbuf[i] );
++ }
++ fprintf( stderr, "\n" );
++#endif
++ int n;
++ n = write(fd, actionbuf, count);
++ if (n < 0 || n < count) {
++ perror("Failed to write TI action command");
++ return -1;
++ }
++ }
++ else if (atype == ACTION_WAIT_EVENT) {
++ action_wait_t *wait = (action_wait_t *)actionbuf;
++#if 0
++ fprintf( stderr, "ACTION_WAIT_EVENT: %u msec, %u size, data = ", wait->msec, wait->size );
++ for (i=0; i<wait->size; i++) {
++ fprintf( stderr, "0x%02x ", wait->data[i] );
++ }
++ fprintf( stderr, "\n" );
++#endif
++ usleep(wait->msec); /* seems they give usec, not msec */
++ /* Read reply. */
++ if ((count = read_hci_event(fd, resp, sizeof resp)) < 0) {
++ perror("Failed to read TI command response");
++ return -1;
++ }
++ if (count < wait->size) {
++ fprintf( stderr, "TI command response is short.");
++ }
++ for (i=0; i<wait->size; i++) {
++ if (i == 3) continue; /* ignore */
++ if (resp[i] != wait->data[i]) {
++ fprintf( stderr, "TI command response does not match expected result.\n" );
++ }
++ }
++ }
++ else if (atype == ACTION_SERIAL_PORT_PARAMETERS) {
++ action_serial_t *sercmd = (action_serial_t *)actionbuf;
++
++ /* Set actual baudrate */
++ fprintf( stderr,
++ "BTS changing baud rate to %u, flow control to %u\n",
++ sercmd->baud, sercmd->flow_control );
++
++ tcflush(fd, TCIOFLUSH);
++
++ if (sercmd->flow_control)
++ ti->c_cflag |= CRTSCTS;
++ else
++ ti->c_cflag &= ~CRTSCTS;
++ if (tcsetattr(fd, TCSANOW, ti) < 0) {
++ perror("Can't set port settings");
++ return -1;
++ }
++
++ u->speed = sercmd->baud;
++
++ tcflush(fd, TCIOFLUSH);
++ if (set_speed(fd, ti, sercmd->baud) < 0) {
++ perror("Can't set baud rate");
++ return -1;
++ }
++ }
++ else if (atype == ACTION_DELAY) {
++ action_delay_t *delay = (action_delay_t *)actionbuf;
++ usleep(delay->msec); /* seems they give usec, not msec */
++ }
++ else {
++ fprintf( stderr, "BTS action type = %d: ", (int)atype );
++ for (i=0; i<count; i++) {
++ fprintf( stderr, "0x%02x ", actionbuf[i] );
++ }
++ fprintf( stderr, "\n" );
++ }
++ }
++ bts_unload_script( bfp );
++ return 0;
++}
++
+ static int texas(int fd, struct uart_t *u, struct termios *ti)
+ {
+ struct timespec tm = {0, 50000};
+@@ -328,6 +439,17 @@
+ /* Print LMP subversion */
+ fprintf(stderr, "Texas module LMP sub-version : 0x%02x%02x\n", resp[14] & 0xFF, resp[13] & 0xFF);
+
++ if ((resp[14] >> 2) == 3) {
++ /* BRF6150 */
++ int err;
++
++ nanosleep(&tm, NULL);
++ if ((err = brf6150(fd, u, ti)) != 0) {
++ fprintf(stderr, "Texas module script failed (err=%d)\n", err);
++ return -1;
++ }
++ }
++
+ nanosleep(&tm, NULL);
+ return 0;
+ }
+@@ -1204,7 +1326,7 @@
+ {
+ printf("hciattach - HCI UART driver initialization utility\n");
+ printf("Usage:\n");
+- printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] <tty> <type | id> [speed] [flow|noflow] [bdaddr]\n");
++ printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] [-S bts-script] <tty> <type | id> [speed] [flow|noflow] [bdaddr]\n");
+ printf("\thciattach -l\n");
+ }
+
+@@ -1219,11 +1341,12 @@
+ struct sigaction sa;
+ struct pollfd p;
+ char dev[PATH_MAX];
++ char *bts = NULL;
+
+ detach = 1;
+ printpid = 0;
+
+- while ((opt=getopt(argc, argv, "bnpt:s:l")) != EOF) {
++ while ((opt=getopt(argc, argv, "bnpt:s:S:l")) != EOF) {
+ switch(opt) {
+ case 'b':
+ send_break = 1;
+@@ -1245,6 +1368,10 @@
+ init_speed = atoi(optarg);
+ break;
+
++ case 'S':
++ bts = optarg;
++ break;
++
+ case 'l':
+ for (i = 0; uart[i].type; i++) {
+ printf("%-10s0x%04x,0x%04x\n", uart[i].type,
+@@ -1320,6 +1447,8 @@
+ if (init_speed)
+ u->init_speed = init_speed;
+
++ u->bts = bts;
++
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_flags = SA_NOCLDSTOP;
+ sa.sa_handler = sig_alarm;
+--- bluez-utils-3.1/tools/ti_bts.h.orig 2006-07-23 14:07:26.000000000 +0200
++++ bluez-utils-3.1/tools/ti_bts.h 2006-07-23 14:07:46.000000000 +0200
+@@ -0,0 +1,116 @@
++/*
++ * Copyright (c) 2005 Texas Instruments, Inc.
++ * Ported by SDG Systems, LLC
++ *
++ * 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;
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
++ * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
++ * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++ *
++ * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
++ * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
++ * SOFTWARE IS DISCLAIMED.
++ *
++ */
++
++#ifndef BT_SCRIPT_H
++#define BT_SCRIPT_H
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/*
++ * Define the interface of Bluetooth Script
++ */
++
++typedef void bts_t;
++
++
++#define ACTION_SEND_COMMAND 1 /* Send out raw data (as is) */
++#define ACTION_WAIT_EVENT 2 /* Wait for data */
++#define ACTION_SERIAL_PORT_PARAMETERS 3
++#define ACTION_DELAY 4
++#define ACTION_RUN_SCRIPT 5
++#define ACTION_REMARKS 6
++
++/*
++ * Structure for ACTION_SEND_COMMAND
++ */
++typedef struct tagCActionCommand
++{
++ unsigned char data[1]; /* Data to send */
++} action_command_t;
++
++/*
++ * Structure for ACTION_WAIT_EVENT
++ */
++typedef struct tagCActionWaitEvent
++{
++ unsigned long msec; /* in milliseconds */
++ unsigned long size;
++ unsigned char data[1]; /* Data to wait for */
++} action_wait_t;
++
++
++/*
++ * Structure for ACTION_SERIAL_PORT_PARAMETERS
++ */
++typedef struct tagCActionSerialPortParameters
++{
++ unsigned long baud;
++ unsigned long flow_control;
++} action_serial_t;
++
++/* Flow Control Type */
++#define FCT_NONE 0
++#define FCT_HARDWARE 1
++
++#define DONT_CHANGE 0xFFFFFFFF /* For both baud rate and flow control */
++
++
++/*
++ * Structure for ACTION_DELAY
++ */
++typedef struct tagCActionDelay
++{
++ unsigned long msec; /* in milliseconds */
++} action_delay_t;
++
++/*
++ * Structure for ACTION_RUN_SCRIPT
++ */
++typedef struct tagCActionRunScript
++{
++ char filename[1];
++} action_run_t;
++
++/*
++ * Structure for ACTION_REMARKS
++ */
++typedef struct tagCActionRemarks
++{
++ char m_szRemarks[1];
++} action_remarks_t;
++
++
++const char *cis_create_filename(const unsigned char* cmdparms);
++bts_t * bts_load_script(const char* fname, unsigned long* version);
++unsigned long bts_next_action(const bts_t* bts_fp, unsigned char* action_buf,
++ unsigned long nMaxSize, unsigned short* ptype);
++void bts_unload_script(bts_t* bts_fp);
++
++#ifdef __cplusplus
++};
++#endif
++
++#endif /* BT_SCRIPT_H */
++
+--- bluez-utils-3.1/tools/ti_bts.c.orig 2006-07-23 14:07:28.000000000 +0200
++++ bluez-utils-3.1/tools/ti_bts.c 2006-07-23 14:07:46.000000000 +0200
+@@ -0,0 +1,149 @@
++/*
++ * Copyright (c) 2005 Texas Instruments, Inc.
++ * Ported by SDG Systems, LLC
++ *
++ * 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;
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
++ * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
++ * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++ *
++ * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
++ * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
++ * SOFTWARE IS DISCLAIMED.
++ *
++ */
++
++
++#include <stdio.h>
++#include <stdlib.h>
++#include "ti_bts.h"
++
++#ifndef MAKEWORD
++#define MAKEWORD(a, b) ((unsigned short)(((unsigned char)(a)) | ((unsigned short)((unsigned char)(b))) << 8))
++#endif
++
++#define TI_MANUFACTURER_ID 13
++
++/*
++ * Common Init Script specific
++ */
++const char *
++cis_create_filename(const unsigned char* cmdparms)
++{
++ static char bts_file[50];
++
++ /* Check for TI's id */
++ unsigned short manfid = MAKEWORD(cmdparms[8], cmdparms[9]);
++
++ if (TI_MANUFACTURER_ID == manfid) {
++ unsigned short version = MAKEWORD(cmdparms[10], cmdparms[11]);
++
++ unsigned short chip = (version & 0x7C00) >> 10;
++ unsigned short min_ver = (version & 0x007F);
++ unsigned short maj_ver = (version & 0x0380) >> 7;
++
++ if (0 != (version & 0x8000)) {
++ maj_ver |= 0x0008;
++ }
++
++ sprintf( bts_file, "TIInit_%d.%d.%d.bts",
++ (int)chip, (int)maj_ver, (int)min_ver);
++
++ return &bts_file[0];
++ }
++ return NULL;
++}
++
++typedef struct tagCHeader
++{
++ unsigned long magic;
++ unsigned long version;
++ unsigned char future[24];
++} cheader_t;
++
++
++/* The value 0x42535442 stands for (in ASCII) BTSB */
++/* which is Bluetooth Script Binary */
++#define FILE_HEADER_MAGIC 0x42535442
++
++
++bts_t *
++bts_load_script(const char* fname, unsigned long* version)
++{
++ bts_t* bts = NULL;
++ FILE* fp = fopen(fname, "rb");
++
++ if (NULL != fp) {
++ /* Read header */
++ cheader_t header;
++
++ /* Read header */
++ if (1 == fread(&header, sizeof(header), 1, fp)) {
++ /* Check magic number for correctness */
++ if (header.magic == FILE_HEADER_MAGIC) {
++ /* If user wants the version number */
++ if (NULL != version) {
++ *version = header.version;
++ }
++ bts = (bts_t*)fp;
++ }
++ }
++ /* If failed reading the file, close it */
++ if (NULL == bts) {
++ fclose(fp);
++ }
++ }
++ return bts;
++}
++
++unsigned long
++bts_next_action(const bts_t* bts_fp, unsigned char* action_buf,
++ unsigned long nMaxSize, unsigned short* ptype)
++{
++ unsigned long bytes = 0;
++ FILE* fp = (FILE*)bts_fp;
++ unsigned char action_hdr[4];
++
++ if (bts_fp == NULL)
++ return 0;
++
++ /* Each Action has the following: */
++ /* UINT16 type of this action */
++ /* UINT16 size of rest */
++ /* BYTE[] action buffer (for HCI, includes the type byte e.g. 1 for hci command) */
++
++ if (1 == fread(&action_hdr[0], sizeof(action_hdr), 1, fp)) {
++ unsigned short type = *(unsigned short*)&action_hdr[0];
++ unsigned short size = *(unsigned short*)&action_hdr[2];
++
++ if (size <= nMaxSize) {
++ int nread = fread(action_buf, sizeof(action_buf[0]), size, fp);
++
++ if (nread == size) {
++ *ptype = type;
++ bytes = (unsigned long)size;
++ }
++ }
++ }
++
++ return bytes;
++}
++
++void
++bts_unload_script(bts_t* bts_fp)
++{
++ FILE* fp = (FILE*)bts_fp;
++
++ if (NULL != fp) {
++ fclose(fp);
++ }
++}
++
+--- bluez-utils-3.1/tools/Makefile.am.orig 2006-07-23 14:06:59.000000000 +0200
++++ bluez-utils-3.1/tools/Makefile.am 2006-07-23 14:07:18.000000000 +0200
+@@ -45,7 +45,7 @@
+
+ noinst_PROGRAMS = hcisecfilter ppporc
+
+-hciattach_SOURCES = hciattach.c hciattach_st.c
++hciattach_SOURCES = hciattach.c hciattach_st.c ti_bts.h ti_bts.c
+ hciattach_LDADD = @BLUEZ_LIBS@
+
+ hciconfig_SOURCES = hciconfig.c csr.h csr.c
diff --git a/recipes/bluez/bluez-utils-3.x/hciattach-ti-bts.patch b/recipes/bluez/bluez-utils-3.x/hciattach-ti-bts.patch
new file mode 100644
index 0000000000..8fe37de9d3
--- /dev/null
+++ b/recipes/bluez/bluez-utils-3.x/hciattach-ti-bts.patch
@@ -0,0 +1,489 @@
+--- bluez-utils-2.24/tools/hciattach.c.orig 2005-12-10 15:14:36.000000000 +0100
++++ bluez-utils-2.24/tools/hciattach.c 2006-01-22 13:56:13.000000000 +0100
+@@ -57,6 +57,8 @@
+ #define HCI_UART_3WIRE 2
+ #define HCI_UART_H4DS 3
+
++#include "ti_bts.h"
++
+ struct uart_t {
+ char *type;
+ int m_id;
+@@ -66,6 +68,7 @@
+ int speed;
+ int flags;
+ int (*init) (int fd, struct uart_t *u, struct termios *ti);
++ char *bts; /* bluetooth script */
+ };
+
+ #define FLOW_CTL 0x0001
+@@ -241,6 +244,114 @@
+ return 0;
+ }
+
++static int brf6150(int fd, struct uart_t *u, struct termios *ti)
++{
++ bts_t *bfp;
++ int i;
++ unsigned long vers;
++ unsigned char actionbuf[256];
++ unsigned char resp[128]; /* Response */
++ unsigned long count;
++ unsigned short atype;
++
++ if (u->bts == NULL) /* no script, ignore */
++ return 0;
++
++ bfp = bts_load_script( u->bts, &vers );
++ if (bfp == NULL)
++ return -1;
++
++ fprintf( stderr, "Loading BTS script version %lu\n", vers );
++
++ while ((count = bts_next_action( bfp, actionbuf,
++ sizeof actionbuf - 1, &atype )) != 0) {
++ if (atype == ACTION_REMARKS) {
++ if (actionbuf[0] != 0)
++ fprintf( stderr, "%s\n", actionbuf );
++ }
++ else if (atype == ACTION_SEND_COMMAND) {
++#if 0
++ fprintf( stderr, "ACTION_SEND_COMMAND: ", (int)atype );
++ for (i=0; i<count; i++) {
++ fprintf( stderr, "0x%02x ", actionbuf[i] );
++ }
++ fprintf( stderr, "\n" );
++#endif
++ int n;
++ n = write(fd, actionbuf, count);
++ if (n < 0 || n < count) {
++ perror("Failed to write TI action command");
++ return -1;
++ }
++ }
++ else if (atype == ACTION_WAIT_EVENT) {
++ action_wait_t *wait = (action_wait_t *)actionbuf;
++#if 0
++ fprintf( stderr, "ACTION_WAIT_EVENT: %u msec, %u size, data = ", wait->msec, wait->size );
++ for (i=0; i<wait->size; i++) {
++ fprintf( stderr, "0x%02x ", wait->data[i] );
++ }
++ fprintf( stderr, "\n" );
++#endif
++ usleep(wait->msec); /* seems they give usec, not msec */
++ /* Read reply. */
++ if ((count = read_hci_event(fd, resp, sizeof resp)) < 0) {
++ perror("Failed to read TI command response");
++ return -1;
++ }
++ if (count < wait->size) {
++ fprintf( stderr, "TI command response is short.");
++ }
++ for (i=0; i<wait->size; i++) {
++ if (i == 3) continue; /* ignore */
++ if (resp[i] != wait->data[i]) {
++ fprintf( stderr, "TI command response does not match expected result.\n" );
++ }
++ }
++ }
++ else if (atype == ACTION_SERIAL_PORT_PARAMETERS) {
++ action_serial_t *sercmd = (action_serial_t *)actionbuf;
++
++ /* Set actual baudrate */
++ fprintf( stderr,
++ "BTS changing baud rate to %u, flow control to %u\n",
++ sercmd->baud, sercmd->flow_control );
++
++ tcflush(fd, TCIOFLUSH);
++
++ if (sercmd->flow_control)
++ ti->c_cflag |= CRTSCTS;
++ else
++ ti->c_cflag &= ~CRTSCTS;
++ if (tcsetattr(fd, TCSANOW, ti) < 0) {
++ perror("Can't set port settings");
++ return -1;
++ }
++
++ u->speed = sercmd->baud;
++
++ tcflush(fd, TCIOFLUSH);
++ if (set_speed(fd, ti, sercmd->baud) < 0) {
++ perror("Can't set baud rate");
++ return -1;
++ }
++ }
++ else if (atype == ACTION_DELAY) {
++ action_delay_t *delay = (action_delay_t *)actionbuf;
++ usleep(delay->msec); /* seems they give usec, not msec */
++ }
++ else {
++ fprintf( stderr, "BTS action type = %d: ", (int)atype );
++ for (i=0; i<count; i++) {
++ fprintf( stderr, "0x%02x ", actionbuf[i] );
++ }
++ fprintf( stderr, "\n" );
++ }
++ }
++ bts_unload_script( bfp );
++ return 0;
++}
++
+ static int texas(int fd, struct uart_t *u, struct termios *ti)
+ {
+ struct timespec tm = {0, 50000};
+@@ -281,14 +392,25 @@
+ } while (resp[4] != cmd[1] && resp[5] != cmd[2]);
+
+ /* Verify manufacturer */
+- if ((resp[11] & 0xFF) != 0x0d)
++ if (resp[11] != 0x0d)
+ fprintf(stderr,"WARNING : module's manufacturer is not Texas Instrument\n");
+
+ /* Print LMP version */
+- fprintf(stderr, "Texas module LMP version : 0x%02x\n", resp[10] & 0xFF);
++ fprintf(stderr, "TI module LMP version : 0x%02x\n", resp[10]);
+
+ /* Print LMP subversion */
+- fprintf(stderr, "Texas module LMP sub-version : 0x%02x%02x\n", resp[14] & 0xFF, resp[13] & 0xFF);
++ fprintf(stderr, "TI module LMP sub-version : 0x%02x%02x\n", resp[14], resp[13]);
++ if ((resp[14] >> 2) == 3) {
++ int err;
++ nanosleep(&tm, NULL);
++
++ /* BRF6150 */
++ if ((err=brf6150( fd, u, ti )) != 0) {
++ fprintf( stderr, "TI script failed (err=%d)\n",
++ err );
++ return -1;
++ }
++ }
+
+ nanosleep(&tm, NULL);
+ return 0;
+@@ -953,7 +1075,7 @@
+ {
+ printf("hciattach - HCI UART driver initialization utility\n");
+ printf("Usage:\n");
+- printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] <tty> <type | id> [speed] [flow|noflow]\n");
++ printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] [-S bts-script] <tty> <type | id> [speed] [flow|noflow]\n");
+ printf("\thciattach -l\n");
+ }
+
+@@ -970,11 +1092,12 @@
+ pid_t pid;
+ struct sigaction sa;
+ char dev[PATH_MAX];
++ char *bts = NULL;
+
+ detach = 1;
+ printpid = 0;
+
+- while ((opt=getopt(argc, argv, "bnpt:s:l")) != EOF) {
++ while ((opt=getopt(argc, argv, "bnpt:s:S:l")) != EOF) {
+ switch(opt) {
+ case 'b':
+ send_break = 1;
+@@ -996,6 +1119,10 @@
+ init_speed = atoi(optarg);
+ break;
+
++ case 'S':
++ bts = optarg;
++ break;
++
+ case 'l':
+ for (i = 0; uart[i].type; i++) {
+ printf("%-10s0x%04x,0x%04x\n", uart[i].type,
+@@ -1067,6 +1194,8 @@
+ if (init_speed)
+ u->init_speed = init_speed;
+
++ u->bts = bts;
++
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_flags = SA_NOCLDSTOP;
+ sa.sa_handler = sig_alarm;
+--- bluez-utils-2.24/tools/Makefile.am.orig 2005-12-03 07:22:16.000000000 +0100
++++ bluez-utils-2.24/tools/Makefile.am 2006-01-22 13:53:59.000000000 +0100
+@@ -37,6 +37,9 @@
+
+ noinst_PROGRAMS = hcisecfilter ppporc
+
++hciattach_SOURCES = hciattach.c ti_bts.h ti_bts.c
++hciattach_LDADD = @BLUEZ_LIBS@
++
+ hciconfig_SOURCES = hciconfig.c csr.h csr.c
+ hciconfig_LDADD = @BLUEZ_LIBS@ $(top_builddir)/common/libtextfile.a
+
+--- bluez-utils-2.24/tools/ti_bts.h.orig 2006-01-22 13:56:38.000000000 +0100
++++ bluez-utils-2.24/tools/ti_bts.h 2006-01-22 13:53:59.000000000 +0100
+@@ -0,0 +1,116 @@
++/*
++ * Copyright (c) 2005 Texas Instruments, Inc.
++ * Ported by SDG Systems, LLC
++ *
++ * 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;
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
++ * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
++ * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++ *
++ * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
++ * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
++ * SOFTWARE IS DISCLAIMED.
++ *
++ */
++
++#ifndef BT_SCRIPT_H
++#define BT_SCRIPT_H
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/*
++ * Define the interface of Bluetooth Script
++ */
++
++typedef void bts_t;
++
++
++#define ACTION_SEND_COMMAND 1 /* Send out raw data (as is) */
++#define ACTION_WAIT_EVENT 2 /* Wait for data */
++#define ACTION_SERIAL_PORT_PARAMETERS 3
++#define ACTION_DELAY 4
++#define ACTION_RUN_SCRIPT 5
++#define ACTION_REMARKS 6
++
++/*
++ * Structure for ACTION_SEND_COMMAND
++ */
++typedef struct tagCActionCommand
++{
++ unsigned char data[1]; /* Data to send */
++} action_command_t;
++
++/*
++ * Structure for ACTION_WAIT_EVENT
++ */
++typedef struct tagCActionWaitEvent
++{
++ unsigned long msec; /* in milliseconds */
++ unsigned long size;
++ unsigned char data[1]; /* Data to wait for */
++} action_wait_t;
++
++
++/*
++ * Structure for ACTION_SERIAL_PORT_PARAMETERS
++ */
++typedef struct tagCActionSerialPortParameters
++{
++ unsigned long baud;
++ unsigned long flow_control;
++} action_serial_t;
++
++/* Flow Control Type */
++#define FCT_NONE 0
++#define FCT_HARDWARE 1
++
++#define DONT_CHANGE 0xFFFFFFFF /* For both baud rate and flow control */
++
++
++/*
++ * Structure for ACTION_DELAY
++ */
++typedef struct tagCActionDelay
++{
++ unsigned long msec; /* in milliseconds */
++} action_delay_t;
++
++/*
++ * Structure for ACTION_RUN_SCRIPT
++ */
++typedef struct tagCActionRunScript
++{
++ char filename[1];
++} action_run_t;
++
++/*
++ * Structure for ACTION_REMARKS
++ */
++typedef struct tagCActionRemarks
++{
++ char m_szRemarks[1];
++} action_remarks_t;
++
++
++const char *cis_create_filename(const unsigned char* cmdparms);
++bts_t * bts_load_script(const char* fname, unsigned long* version);
++unsigned long bts_next_action(const bts_t* bts_fp, unsigned char* action_buf,
++ unsigned long nMaxSize, unsigned short* ptype);
++void bts_unload_script(bts_t* bts_fp);
++
++#ifdef __cplusplus
++};
++#endif
++
++#endif /* BT_SCRIPT_H */
++
+--- bluez-utils-2.24/tools/ti_bts.c.orig 2006-01-22 13:56:36.000000000 +0100
++++ bluez-utils-2.24/tools/ti_bts.c 2006-01-22 13:56:31.000000000 +0100
+@@ -0,0 +1,149 @@
++/*
++ * Copyright (c) 2005 Texas Instruments, Inc.
++ * Ported by SDG Systems, LLC
++ *
++ * 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;
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
++ * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
++ * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++ *
++ * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
++ * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
++ * SOFTWARE IS DISCLAIMED.
++ *
++ */
++
++
++#include <stdio.h>
++#include <stdlib.h>
++#include "ti_bts.h"
++
++#ifndef MAKEWORD
++#define MAKEWORD(a, b) ((unsigned short)(((unsigned char)(a)) | ((unsigned short)((unsigned char)(b))) << 8))
++#endif
++
++#define TI_MANUFACTURER_ID 13
++
++/*
++ * Common Init Script specific
++ */
++const char *
++cis_create_filename(const unsigned char* cmdparms)
++{
++ static char bts_file[50];
++
++ /* Check for TI's id */
++ unsigned short manfid = MAKEWORD(cmdparms[8], cmdparms[9]);
++
++ if (TI_MANUFACTURER_ID == manfid) {
++ unsigned short version = MAKEWORD(cmdparms[10], cmdparms[11]);
++
++ unsigned short chip = (version & 0x7C00) >> 10;
++ unsigned short min_ver = (version & 0x007F);
++ unsigned short maj_ver = (version & 0x0380) >> 7;
++
++ if (0 != (version & 0x8000)) {
++ maj_ver |= 0x0008;
++ }
++
++ sprintf( bts_file, "TIInit_%d.%d.%d.bts",
++ (int)chip, (int)maj_ver, (int)min_ver);
++
++ return &bts_file[0];
++ }
++ return NULL;
++}
++
++typedef struct tagCHeader
++{
++ unsigned long magic;
++ unsigned long version;
++ unsigned char future[24];
++} cheader_t;
++
++
++/* The value 0x42535442 stands for (in ASCII) BTSB */
++/* which is Bluetooth Script Binary */
++#define FILE_HEADER_MAGIC 0x42535442
++
++
++bts_t *
++bts_load_script(const char* fname, unsigned long* version)
++{
++ bts_t* bts = NULL;
++ FILE* fp = fopen(fname, "rb");
++
++ if (NULL != fp) {
++ /* Read header */
++ cheader_t header;
++
++ /* Read header */
++ if (1 == fread(&header, sizeof(header), 1, fp)) {
++ /* Check magic number for correctness */
++ if (header.magic == FILE_HEADER_MAGIC) {
++ /* If user wants the version number */
++ if (NULL != version) {
++ *version = header.version;
++ }
++ bts = (bts_t*)fp;
++ }
++ }
++ /* If failed reading the file, close it */
++ if (NULL == bts) {
++ fclose(fp);
++ }
++ }
++ return bts;
++}
++
++unsigned long
++bts_next_action(const bts_t* bts_fp, unsigned char* action_buf,
++ unsigned long nMaxSize, unsigned short* ptype)
++{
++ unsigned long bytes = 0;
++ FILE* fp = (FILE*)bts_fp;
++ unsigned char action_hdr[4];
++
++ if (bts_fp == NULL)
++ return 0;
++
++ /* Each Action has the following: */
++ /* UINT16 type of this action */
++ /* UINT16 size of rest */
++ /* BYTE[] action buffer (for HCI, includes the type byte e.g. 1 for hci command) */
++
++ if (1 == fread(&action_hdr[0], sizeof(action_hdr), 1, fp)) {
++ unsigned short type = *(unsigned short*)&action_hdr[0];
++ unsigned short size = *(unsigned short*)&action_hdr[2];
++
++ if (size <= nMaxSize) {
++ int nread = fread(action_buf, sizeof(action_buf[0]), size, fp);
++
++ if (nread == size) {
++ *ptype = type;
++ bytes = (unsigned long)size;
++ }
++ }
++ }
++
++ return bytes;
++}
++
++void
++bts_unload_script(bts_t* bts_fp)
++{
++ FILE* fp = (FILE*)bts_fp;
++
++ if (NULL != fp) {
++ fclose(fp);
++ }
++}
++
diff --git a/recipes/bluez/bluez-utils-3.x/hcid.conf b/recipes/bluez/bluez-utils-3.x/hcid.conf
new file mode 100644
index 0000000000..44e9c46fb0
--- /dev/null
+++ b/recipes/bluez/bluez-utils-3.x/hcid.conf
@@ -0,0 +1,72 @@
+#
+# HCI daemon configuration file.
+#
+# $Id: hcid.conf,v 1.4 2004/04/29 20:14:21 holtmann Exp $
+#
+
+# HCId options
+options {
+ # Automatically initialize new devices
+ autoinit yes;
+
+ # Security Manager mode
+ # none - Security manager disabled
+ # auto - Use local PIN for incoming connections
+ # user - Always ask user for a PIN
+ #
+ security auto;
+
+ # Pairing mode
+ # none - Pairing disabled
+ # multi - Allow pairing with already paired devices
+ # once - Pair once and deny successive attempts
+ pairing multi;
+
+ # PIN helper
+ pin_helper /bin/bluepin;
+
+ # D-Bus PIN helper
+ # dbus_pin_helper;
+}
+
+# Default settings for HCI devices
+device {
+ # Local device name
+ # %d - device id
+ # %h - host name
+ name "%h";
+
+ # Local device class
+ class 0x120112;
+
+ # Default packet type
+ #pkt_type DH1,DM1,HV1;
+
+ # Inquiry and Page scan
+ iscan enable; pscan enable;
+
+ # Default link mode
+ # none - no specific policy
+ # accept - always accept incoming connections
+ # master - become master on incoming connections,
+ # deny role switch on outgoing connections
+ #
+ #lm accept,master;
+ #
+ lm accept;
+
+ # Default link policy
+ # none - no specific policy
+ # rswitch - allow role switch
+ # hold - allow hold mode
+ # sniff - allow sniff mode
+ # park - allow park mode
+ #
+ #lp hold,sniff;
+ #
+ lp rswitch,hold,sniff,park;
+
+ # Authentication and Encryption
+ #auth enable;
+ encrypt enable;
+}
diff --git a/recipes/bluez/bluez-utils-alsa_3.33.bb b/recipes/bluez/bluez-utils-alsa_3.33.bb
new file mode 100644
index 0000000000..a1e3e85818
--- /dev/null
+++ b/recipes/bluez/bluez-utils-alsa_3.33.bb
@@ -0,0 +1,25 @@
+require bluez-utils3.inc
+
+PR = "r1"
+
+DEPENDS += "alsa-lib"
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --disable-hid2hci \
+ --enable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+FILES_${PN} = "${libdir}/alsa-lib/libasound*"
diff --git a/recipes/bluez/bluez-utils-alsa_3.36.bb b/recipes/bluez/bluez-utils-alsa_3.36.bb
new file mode 100644
index 0000000000..c35eec04e0
--- /dev/null
+++ b/recipes/bluez/bluez-utils-alsa_3.36.bb
@@ -0,0 +1,24 @@
+require bluez-utils3.inc
+
+
+DEPENDS += "alsa-lib"
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --disable-hid2hci \
+ --enable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+FILES_${PN} = "${libdir}/alsa-lib/libasound*"
diff --git a/recipes/bluez/bluez-utils-dbus/dbus-2.24.patch b/recipes/bluez/bluez-utils-dbus/dbus-2.24.patch
new file mode 100644
index 0000000000..d8ec946a0b
--- /dev/null
+++ b/recipes/bluez/bluez-utils-dbus/dbus-2.24.patch
@@ -0,0 +1,53 @@
+--- bluez-utils-2.24/acinclude.m4.orig 2006-01-12 08:21:38.000000000 +0100
++++ bluez-utils-2.24/acinclude.m4 2006-01-12 08:23:18.000000000 +0100
+@@ -131,46 +131,15 @@
+ ])
+
+ AC_DEFUN([AC_PATH_DBUS], [
+- dbus_prefix=${prefix}
+-
+- AC_ARG_WITH(dbus, AC_HELP_STRING([--with-dbus=DIR], [D-BUS library is installed in DIR]), [
+- if (test "${withval}" != "yes"); then
+- dbus_prefix=${withval}
+- fi
+- ])
+-
+- ac_save_CPPFLAGS=$CPPFLAGS
+- ac_save_LDFLAGS=$LDFLAGS
+-
+- DBUS_CFLAGS="-DDBUS_API_SUBJECT_TO_CHANGE"
+- test -d "${dbus_prefix}/include/dbus-1.0" && DBUS_CFLAGS="$DBUS_CFLAGS -I${dbus_prefix}/include/dbus-1.0"
+- if (test "${prefix}" = "${bluez_prefix}"); then
+- test -d "${libdir}/dbus-1.0/include" && DBUS_CFLAGS="$DBUS_CFLAGS -I${libdir}/dbus-1.0/include"
+- else
+- test -d "${dbus_prefix}/lib64/dbus-1.0/include" && DBUS_CFLAGS="$DBUS_CFLAGS -I${dbus_prefix}/lib64/dbus-1.0/include"
+- test -d "${dbus_prefix}/lib/dbus-1.0/include" && DBUS_CFLAGS="$DBUS_CFLAGS -I${dbus_prefix}/lib/dbus-1.0/include"
+- fi
++ if pkg-config --exists dbus-1; then
++ dbus_found=yes ; DBUS_CFLAGS="`pkg-config --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
++ DBUS_LIBS="`pkg-config --libs dbus-1`"
+
+ CPPFLAGS="$CPPFLAGS $DBUS_CFLAGS"
+- AC_CHECK_HEADER(dbus/dbus.h, dbus_found=yes, dbus_found=no)
+-
+- DBUS_LIBS=""
+- if (test "${prefix}" = "${dbus_prefix}"); then
+- test -d "${libdir}" && DBUS_LIBS="$DBUS_LIBS -L${libdir}"
+- else
+- test -d "${dbus_prefix}/lib64" && DBUS_LIBS="$DBUS_LIBS -L${dbus_prefix}/lib64"
+- test -d "${dbus_prefix}/lib" && DBUS_LIBS="$DBUS_LIBS -L${dbus_prefix}/lib"
+- fi
+-
+ LDFLAGS="$LDFLAGS $DBUS_LIBS"
+- AC_CHECK_LIB(dbus-1, dbus_error_init, DBUS_LIBS="$DBUS_LIBS -ldbus-1", dbus_found=no)
+- AC_CHECK_LIB(dbus-1, dbus_message_iter_get_basic, dummy=yes, dbus_found=no)
+-
+- CPPFLAGS=$ac_save_CPPFLAGS
+- LDFLAGS=$ac_save_LDFLAGS
+-
+ AC_SUBST(DBUS_CFLAGS)
+ AC_SUBST(DBUS_LIBS)
++ fi
+ ])
+
+ AC_DEFUN([AC_PATH_FUSE], [
diff --git a/recipes/bluez/bluez-utils-dbus/dbus.patch b/recipes/bluez/bluez-utils-dbus/dbus.patch
new file mode 100644
index 0000000000..c5ab129469
--- /dev/null
+++ b/recipes/bluez/bluez-utils-dbus/dbus.patch
@@ -0,0 +1,58 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- bluez-utils-2.20/acinclude.m4~dbus.patch
++++ bluez-utils-2.20/acinclude.m4
+@@ -211,46 +211,15 @@
+ ])
+
+ AC_DEFUN([AC_PATH_DBUS], [
+- dbus_prefix=${prefix}
+-
+- AC_ARG_WITH(dbus, AC_HELP_STRING([--with-dbus=DIR], [D-BUS library is installed in DIR]), [
+- if (test "${withval}" != "yes"); then
+- dbus_prefix=${withval}
+- fi
+- ])
+-
+- ac_save_CPPFLAGS=$CPPFLAGS
+- ac_save_LDFLAGS=$LDFLAGS
+-
+- DBUS_CFLAGS="-DDBUS_API_SUBJECT_TO_CHANGE"
+- test -d "${dbus_prefix}/include/dbus-1.0" && DBUS_CFLAGS="$DBUS_CFLAGS -I${dbus_prefix}/include/dbus-1.0"
+- if (test "${prefix}" = "${bluez_prefix}"); then
+- test -d "${libdir}/dbus-1.0/include" && DBUS_CFLAGS="$DBUS_CFLAGS -I${libdir}/dbus-1.0/include"
+- else
+- test -d "${dbus_prefix}/lib64/dbus-1.0/include" && DBUS_CFLAGS="$DBUS_CFLAGS -I${dbus_prefix}/lib64/dbus-1.0/include"
+- test -d "${dbus_prefix}/lib/dbus-1.0/include" && DBUS_CFLAGS="$DBUS_CFLAGS -I${dbus_prefix}/lib/dbus-1.0/include"
+- fi
++ if pkg-config --exists dbus-1; then
++ dbus_found=yes ; DBUS_CFLAGS="`pkg-config --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
++ DBUS_LIBS="`pkg-config --libs dbus-1`"
+
+ CPPFLAGS="$CPPFLAGS $DBUS_CFLAGS"
+- AC_CHECK_HEADER(dbus/dbus.h, dbus_found=yes, dbus_found=no)
+-
+- DBUS_LIBS=""
+- if (test "${prefix}" = "${dbus_prefix}"); then
+- test -d "${libdir}" && DBUS_LIBS="$DBUS_LIBS -L${libdir}"
+- else
+- test -d "${dbus_prefix}/lib64" && DBUS_LIBS="$DBUS_LIBS -L${dbus_prefix}/lib64"
+- test -d "${dbus_prefix}/lib" && DBUS_LIBS="$DBUS_LIBS -L${dbus_prefix}/lib"
+- fi
+-
+ LDFLAGS="$LDFLAGS $DBUS_LIBS"
+- AC_CHECK_LIB(dbus-1, dbus_error_init, DBUS_LIBS="$DBUS_LIBS -ldbus-1", dbus_found=no)
+- AC_CHECK_LIB(dbus-1, dbus_message_iter_get_basic, AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_GET_BASIC, 1, [Define to 1 if you have the dbus_message_iter_get_basic() function.]))
+-
+- CPPFLAGS=$ac_save_CPPFLAGS
+- LDFLAGS=$ac_save_LDFLAGS
+-
+ AC_SUBST(DBUS_CFLAGS)
+ AC_SUBST(DBUS_LIBS)
++ fi
+ ])
+
+ AC_DEFUN([AC_ARG_BLUEZ], [
diff --git a/recipes/bluez/bluez-utils-dbus/hcid-alignment-fix.patch b/recipes/bluez/bluez-utils-dbus/hcid-alignment-fix.patch
new file mode 100644
index 0000000000..276281c14e
--- /dev/null
+++ b/recipes/bluez/bluez-utils-dbus/hcid-alignment-fix.patch
@@ -0,0 +1,42 @@
+--- bluez-utils-2.20/hcid/dbus.c.orig 2005-09-21 11:27:26 +0200
++++ bluez-utils-2.20/hcid/dbus.c 2005-09-21 11:27:35 +0200
+@@ -120,6 +121,7 @@
+ DBusMessage *message;
+ #ifdef HAVE_DBUS_MESSAGE_ITER_GET_BASIC
+ uint8_t *addr = (uint8_t *) &ci->bdaddr;
++ uint32_t ci_out = ci->out;
+ #else
+ DBusMessageIter iter;
+ #endif
+@@ -138,7 +140,7 @@
+ bacpy(&req->bda, &ci->bdaddr);
+
+ #ifdef HAVE_DBUS_MESSAGE_ITER_GET_BASIC
+- dbus_message_append_args(message, DBUS_TYPE_BOOLEAN, &ci->out,
++ dbus_message_append_args(message, DBUS_TYPE_BOOLEAN, &ci_out,
+ DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE,
+ &addr, sizeof(bdaddr_t), DBUS_TYPE_INVALID);
+ #else
+@@ -261,6 +263,8 @@
+ DBusMessage *message;
+ #ifndef HAVE_DBUS_MESSAGE_ITER_GET_BASIC
+ DBusMessageIter iter;
++#else
++ int32_t tmp_rssi = rssi;
+ #endif
+ char *local_addr, *peer_addr;
+ bdaddr_t tmp;
+@@ -276,11 +280,12 @@
+ }
+
+ #ifdef HAVE_DBUS_MESSAGE_ITER_GET_BASIC
++
+ dbus_message_append_args(message,
+ DBUS_TYPE_STRING, &local_addr,
+ DBUS_TYPE_STRING, &peer_addr,
+ DBUS_TYPE_UINT32, &class,
+- DBUS_TYPE_INT32, &rssi,
++ DBUS_TYPE_INT32, &tmp_rssi,
+ DBUS_TYPE_INVALID);
+ #else
+ dbus_message_append_iter_init(message, &iter);
diff --git a/recipes/bluez/bluez-utils-dbus/hcid.conf b/recipes/bluez/bluez-utils-dbus/hcid.conf
new file mode 100644
index 0000000000..ab3ca2aaee
--- /dev/null
+++ b/recipes/bluez/bluez-utils-dbus/hcid.conf
@@ -0,0 +1,72 @@
+#
+# HCI daemon configuration file.
+#
+# $Id: hcid.conf,v 1.4 2004/04/29 20:14:21 holtmann Exp $
+#
+
+# HCId options
+options {
+ # Automatically initialize new devices
+ autoinit yes;
+
+ # Security Manager mode
+ # none - Security manager disabled
+ # auto - Use local PIN for incoming connections
+ # user - Always ask user for a PIN
+ #
+ security auto;
+
+ # Pairing mode
+ # none - Pairing disabled
+ # multi - Allow pairing with already paired devices
+ # once - Pair once and deny successive attempts
+ pairing multi;
+
+ # PIN helper
+ # pin_helper /usr/bin/bluepin;
+
+ # D-Bus PIN helper
+ dbus_pin_helper;
+}
+
+# Default settings for HCI devices
+device {
+ # Local device name
+ # %d - device id
+ # %h - host name
+ name "%h";
+
+ # Local device class
+ class 0x120112;
+
+ # Default packet type
+ #pkt_type DH1,DM1,HV1;
+
+ # Inquiry and Page scan
+ iscan enable; pscan enable;
+
+ # Default link mode
+ # none - no specific policy
+ # accept - always accept incoming connections
+ # master - become master on incoming connections,
+ # deny role switch on outgoing connections
+ #
+ #lm accept,master;
+ #
+ lm accept;
+
+ # Default link policy
+ # none - no specific policy
+ # rswitch - allow role switch
+ # hold - allow hold mode
+ # sniff - allow sniff mode
+ # park - allow park mode
+ #
+ #lp hold,sniff;
+ #
+ lp rswitch,hold,sniff,park;
+
+ # Authentication and Encryption
+ #auth enable;
+ encrypt enable;
+}
diff --git a/recipes/bluez/bluez-utils-dbus/smash.patch b/recipes/bluez/bluez-utils-dbus/smash.patch
new file mode 100644
index 0000000000..55cdbb7284
--- /dev/null
+++ b/recipes/bluez/bluez-utils-dbus/smash.patch
@@ -0,0 +1,11 @@
+--- bluez-utils-2.11/hcid/dbus.c.old 2004-12-31 16:35:12.000000000 +0000
++++ bluez-utils-2.11/hcid/dbus.c 2004-12-31 16:39:58.000000000 +0000
+@@ -89,6 +89,8 @@
+
+ memset(&pr, 0, sizeof(pr));
+ bacpy(&pr.bdaddr, &req->bda);
++ if (len > sizeof (pr.pin_code))
++ goto error;
+ memcpy(pr.pin_code, pin, len);
+ pr.pin_len = len;
+ hci_send_cmd(req->dev, OGF_LINK_CTL, OCF_PIN_CODE_REPLY,
diff --git a/recipes/bluez/bluez-utils.inc b/recipes/bluez/bluez-utils.inc
new file mode 100644
index 0000000000..298650a080
--- /dev/null
+++ b/recipes/bluez/bluez-utils.inc
@@ -0,0 +1,67 @@
+DESCRIPTION = "Linux Bluetooth Stack Userland Utilities."
+SECTION = "console"
+PRIORITY = "optional"
+DEPENDS = "gstreamer gst-plugins-base bluez-libs-${PV} libusb-compat dbus cups"
+PROVIDES = "bluez-utils-dbus"
+RPROVIDES_${PN} = "bluez-pan bluez-sdp bluez-utils-dbus"
+RREPLACES = "bluez-utils-dbus"
+RCONFLICTS_${PN} = "bluez-utils-nodbus"
+LICENSE = "GPL"
+
+SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \
+ file://hcid.conf \
+ file://hciattach-ti-bts.patch;patch=1 \
+ file://handle-eintr.patch;patch=1;status=applied"
+SRC_URI_append_r1000 = " file://hciattach.sh"
+SRC_URI_append_ghi270 = " file://hciattach.sh"
+
+# Almost all serial CF cards w/ manfid 0x0000,0x0000 seem to use the bcs protocol
+# Let's default to that instead of 'any' until further notice...
+SRC_URI += " file://default-manfid-0x0-to-bcps.patch;patch=1"
+
+S = "${WORKDIR}/bluez-utils-${PV}"
+
+EXTRA_OECONF = "--enable-initscripts --enable-bccmd --enable-bcm203x --enable-hid2hci --enable-cups"
+# --enable-obex enable OBEX support
+# --enable-alsa enable ALSA support
+# --enable-cups install CUPS backend support
+# --enable-bccmd install BCCMD interface utility
+# --enable-avctrl install Audio/Video control utility
+# --enable-hid2hci install HID mode switching utility
+# --enable-dfutool install DFU firmware upgrade utility
+
+inherit autotools update-rc.d
+
+INITSCRIPT_NAME = "bluetooth"
+INITSCRIPT_PARAMS = "defaults 23 19"
+
+do_install_append() {
+ install -d ${D}${base_sbindir} ${D}${base_bindir}/ ${D}${sysconfdir}/apm/event.d/
+ mv ${D}${sbindir}/* ${D}${base_sbindir}/
+ mv ${D}${bindir}/* ${D}${base_bindir}/
+ rmdir ${D}${bindir} ${D}${sbindir}
+ chmod u+s ${D}${base_sbindir}/hciattach ${D}${base_sbindir}/hciconfig
+ install -m 0644 ${WORKDIR}/hcid.conf ${D}${sysconfdir}/bluetooth/
+ install -m 0755 ${S}/daemon/.libs/passkey-agent ${D}${base_bindir}/
+}
+
+do_install_append_r1000() {
+ install -d ${D}${sysconfdir} ${D}${sysconfdir}/bluetooth
+ install -m 0755 ${WORKDIR}/hciattach.sh ${D}${sysconfdir}/bluetooth/hciattach
+}
+
+do_install_append_ghi270() {
+ install -d ${D}${sysconfdir} ${D}${sysconfdir}/bluetooth
+ install -m 0755 ${WORKDIR}/hciattach.sh ${D}${sysconfdir}/bluetooth/hciattach
+}
+
+CONFFILES_${PN} = "${sysconfdir}/bluetooth/hcid.conf ${sysconfdir}/bluetooth/rfcomm.conf \
+ ${sysconfdir}/default/bluetooth"
+
+PACKAGES =+ " bluez-cups-backend"
+
+FILES_${PN} += " ${libdir}/alsa-lib/*.so "
+FILES_${PN}-dev += " ${libdir}/alsa-lib/*.la "
+
+FILES_bluez-cups-backend = "${libdir}/cups/backend/bluetooth"
+RDEPENDS_bluez-cups-backend = "cups"
diff --git a/recipes/bluez/bluez-utils/handle-eintr.patch b/recipes/bluez/bluez-utils/handle-eintr.patch
new file mode 100644
index 0000000000..effe5d9696
--- /dev/null
+++ b/recipes/bluez/bluez-utils/handle-eintr.patch
@@ -0,0 +1,23 @@
+--- bluez-utils-3.9.org/tools/hciattach.c 2007-01-28 20:16:48.000000000 +0000
++++ bluez-utils-3.9/tools/hciattach.c 2007-02-12 16:50:49.000000000 +0000
+@@ -1135,7 +1256,7 @@
+ int main(int argc, char *argv[])
+ {
+ struct uart_t *u = NULL;
+- int detach, printpid, opt, i, n, ld;
++ int detach, printpid, opt, i, n, ld, err;
+ int to = 5;
+ int init_speed = 0;
+ int send_break = 0;
+@@ -1286,7 +1414,10 @@
+
+ while (!__io_canceled) {
+ p.revents = 0;
+- if (poll(&p, 1, 500))
++ err = poll(&p, 1, 500);
++ if (err < 0 && errno == EINTR)
++ continue;
++ if (err)
+ break;
+ }
+
diff --git a/recipes/bluez/bluez-utils/hcid.conf b/recipes/bluez/bluez-utils/hcid.conf
new file mode 100644
index 0000000000..a7164f6eb0
--- /dev/null
+++ b/recipes/bluez/bluez-utils/hcid.conf
@@ -0,0 +1,57 @@
+#
+# HCI daemon configuration file.
+#
+
+# HCId options
+options {
+ # Automatically initialize new devices
+ autoinit yes;
+
+ # Security Manager mode
+ # none - Security manager disabled
+ # auto - Use local PIN for incoming connections
+ # user - Always ask user for a PIN
+ #
+ security auto;
+
+ # Pairing mode
+ # none - Pairing disabled
+ # multi - Allow pairing with already paired devices
+ # once - Pair once and deny successive attempts
+ pairing multi;
+
+ # Default PIN code for incoming connections
+ passkey "1234";
+}
+
+# Default settings for HCI devices
+device {
+ # Local device name
+ # %d - device id
+ # %h - host name
+ name "%h (%d)";
+
+ # Local device class
+ class 0x120112;
+
+ # Default packet type
+ #pkt_type DH1,DM1,HV1;
+
+ # Inquiry and Page scan
+ iscan enable; pscan enable;
+
+ # Default link mode
+ # none - no specific policy
+ # accept - always accept incoming connections
+ # master - become master on incoming connections,
+ # deny role switch on outgoing connections
+ lm accept;
+
+ # Default link policy
+ # none - no specific policy
+ # rswitch - allow role switch
+ # hold - allow hold mode
+ # sniff - allow sniff mode
+ # park - allow park mode
+ lp rswitch,hold,sniff,park;
+}
diff --git a/recipes/bluez/bluez-utils/hid2hci_usb_init.patch b/recipes/bluez/bluez-utils/hid2hci_usb_init.patch
new file mode 100644
index 0000000000..ed15fd5a1b
--- /dev/null
+++ b/recipes/bluez/bluez-utils/hid2hci_usb_init.patch
@@ -0,0 +1,33 @@
+# Signed-off-by: Khem Raj <raj.khem@gmail.com>
+#
+# Use the new usb1 API for usb_init() and check for fails from
+# usb_init (). Currently we see a crash on a system which does
+# not have USB because usb_init() fails and it cleans up all initialized
+# data (e.g. ctx) which is used in subsequent calls to libusb
+# We return immediately if usb_init() fails for some reason.
+
+Index: bluez-4.24/tools/hid2hci.c
+===================================================================
+--- bluez-4.24.orig/tools/hid2hci.c 2008-10-25 23:40:34.000000000 -0700
++++ bluez-4.24/tools/hid2hci.c 2008-12-29 22:06:04.000000000 -0800
+@@ -337,7 +337,7 @@
+ int main(int argc, char *argv[])
+ {
+ struct device_info dev[16];
+- int i, opt, num, quiet = 0, mode = HCI;
++ int i, ret, opt, num, quiet = 0, mode = HCI;
+
+ while ((opt = getopt_long(argc, argv, "+01qh", main_options, NULL)) != -1) {
+ switch (opt) {
+@@ -361,8 +361,9 @@
+ argc -= optind;
+ argv += optind;
+ optind = 0;
+-
+- usb_init();
++ ret = libusb_init();
++ if (ret < 0)
++ return ret;
+
+ num = find_devices(mode, dev, sizeof(dev) / sizeof(dev[0]));
+ if (num <= 0) {
diff --git a/recipes/bluez/bluez-utils/ppoll-uclibc-arm-r0.patch b/recipes/bluez/bluez-utils/ppoll-uclibc-arm-r0.patch
new file mode 100644
index 0000000000..391a7ae3de
--- /dev/null
+++ b/recipes/bluez/bluez-utils/ppoll-uclibc-arm-r0.patch
@@ -0,0 +1,14 @@
+Index: bluez-utils-3.9/common/ppoll.h
+===================================================================
+--- bluez-utils-3.9.orig/common/ppoll.h 2007-05-17 17:42:23.000000000 +0200
++++ bluez-utils-3.9/common/ppoll.h 2007-05-17 17:43:18.000000000 +0200
+@@ -1,4 +1,8 @@
+-static inline int ppoll(struct pollfd *fds, nfds_t nfds,
++#ifdef ppoll
++#undef ppoll
++#endif
++#define ppoll bluez_ppoll
++static inline int bluez_ppoll(struct pollfd *fds, nfds_t nfds,
+ const struct timespec *timeout, const sigset_t *sigmask)
+ {
+ return poll(fds, nfds, timeout ? timeout->tv_sec * 1000 : 500);
diff --git a/recipes/bluez/bluez-utils/sbc-thumb.patch b/recipes/bluez/bluez-utils/sbc-thumb.patch
new file mode 100644
index 0000000000..3505426053
--- /dev/null
+++ b/recipes/bluez/bluez-utils/sbc-thumb.patch
@@ -0,0 +1,11 @@
+--- bluez/sbc/sbc_math.h~ 2008-03-05 20:18:03.000000000 +0000
++++ bluez/sbc/sbc_math.h 2008-10-27 13:39:27.000000000 +0000
+@@ -59,7 +59,7 @@
+
+ #define SBC_FIXED_0(val) { val = 0; }
+ #define MUL(a, b) ((a) * (b))
+-#ifdef __arm__
++#if defined(__arm__) && !defined(__thumb__)
+ #define MULA(a, b, res) ({ \
+ int tmp = res; \
+ __asm__( \
diff --git a/recipes/bluez/bluez-utils/uclibc-fix.patch b/recipes/bluez/bluez-utils/uclibc-fix.patch
new file mode 100644
index 0000000000..6d4753c2e5
--- /dev/null
+++ b/recipes/bluez/bluez-utils/uclibc-fix.patch
@@ -0,0 +1,46 @@
+Uclibc doesn't define or support speeds above 115200. So check the existence
+of the defines before allowing them to actually be used.
+
+Index: bluez-utils-3.9/tools/hciattach.c
+===================================================================
+--- bluez-utils-3.9.orig/tools/hciattach.c 2007-05-17 12:34:28.000000000 +1000
++++ bluez-utils-3.9/tools/hciattach.c 2007-05-17 12:40:20.000000000 +1000
+@@ -105,22 +105,38 @@
+ return B57600;
+ case 115200:
+ return B115200;
++#ifdef B230400
+ case 230400:
+ return B230400;
++#endif
++#ifdef B460800
+ case 460800:
+ return B460800;
++#endif
++#ifdef B500000
+ case 500000:
+ return B500000;
++#endif
++#ifdef B576000
+ case 576000:
+ return B576000;
++#endif
++#ifdef B921600
+ case 921600:
+ return B921600;
++#endif
++#ifdef B1000000
+ case 1000000:
+ return B1000000;
++#endif
++#ifdef B1152000
+ case 1152000:
+ return B1152000;
++#endif
++#ifdef B1500000
+ case 1500000:
+ return B1500000;
++#endif
+ default:
+ return B57600;
+ }
diff --git a/recipes/bluez/bluez-utils3.inc b/recipes/bluez/bluez-utils3.inc
new file mode 100644
index 0000000000..703788f0f8
--- /dev/null
+++ b/recipes/bluez/bluez-utils3.inc
@@ -0,0 +1,148 @@
+DESCRIPTION = "Linux Bluetooth Stack Userland Utilities."
+SECTION = "console"
+PRIORITY = "optional"
+DEPENDS = "gstreamer gst-plugins-base bluez-libs-${PV} libusb-compat dbus glib-2.0"
+PROVIDES = "bluez-utils-dbus"
+RPROVIDES_${PN} = "bluez-pan bluez-sdp bluez-utils-dbus"
+RREPLACES = "bluez-utils-dbus"
+RCONFLICTS_${PN} = "bluez-utils-nodbus"
+LICENSE = "GPL"
+
+FILESPATH = "${FILE_DIRNAME}/bluez-utils-${PV}:${FILE_DIRNAME}/bluez-utils"
+
+# ti patch should be sent it upstream!
+SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \
+ file://hcid.conf \
+ file://hciattach-ti-bts.patch;patch=1 \
+ file://sbc-thumb.patch;patch=1"
+
+
+S = "${WORKDIR}/bluez-utils-${PV}"
+
+inherit autotools update-rc.d
+
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --enable-alsa \
+ --enable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+# The config options are explained below:
+
+# --enable-obex enable OBEX support
+# --enable-alsa enable ALSA support, not needed for nokia770, nokia800 and om-gtao1
+# --enable-cups install CUPS backend support
+# --enable-bccmd install BCCMD interface utility
+# --enable-avctrl install Audio/Video control utility
+# --enable-hid2hci install HID mode switching utility
+# --enable-dfutool install DFU firmware upgrade utility
+
+# --enable-glib For systems that use and install GLib anyway
+# --disable-sdpd The sdpd is obsolete and should no longer be used. This of course requires that hcid will be started with -s to enable the SDP server
+
+#Following services can be enabled so far:
+# --enable-network
+# --enable-serial
+# --enable-input
+# --enable-audio
+# --enable-echo
+
+#There is no need to modify any init script. They will be started
+#automatically or on demand. Only /etc/bluetooth/*.service files should
+#be patched to change name or the autostart value.
+# --enable-configfile
+# --enable-initscripts
+
+#For even smaller -doc packages
+# --disable-manpages
+# --disable-pcmciarules
+
+#I haven't seen any embedded device with HID proxy support. So simply
+#disable it:
+# --disable-hid2hci
+
+OE_LT_RPATH_ALLOW = "any"
+OE_LT_RPATH_ALLOW[export]="1"
+
+do_install_append() {
+ install -d ${D}${base_sbindir} ${D}${base_bindir}/ ${D}${sysconfdir}/apm/event.d/
+ if [ "${sbindir}" != "${base_sbindir}" ]; then
+ mv ${D}${sbindir}/* ${D}${base_sbindir}/
+ rmdir ${D}${sbindir}
+ fi
+ if [ "${bindir}" != "${base_bindir}" ]; then
+ mv ${D}${bindir}/* ${D}${base_bindir}/
+ rmdir ${D}${bindir}
+ fi
+ chmod u+s ${D}${base_sbindir}/hciattach ${D}${base_sbindir}/hciconfig
+ install -m 0644 ${WORKDIR}/hcid.conf ${D}${sysconfdir}/bluetooth/
+ install -m 0644 ${S}/rfcomm/rfcomm.conf ${D}${sysconfdir}/bluetooth/
+ install -m 0755 ${S}/daemon/.libs/passkey-agent ${D}${base_bindir}/ ||true
+ install -m 0755 ${S}/test/.libs/passkey-agent ${D}${base_bindir}/ ||true
+}
+
+
+INITSCRIPT_NAME = "bluetooth"
+INITSCRIPT_PARAMS = "defaults 23 19"
+
+
+PACKAGES =+ "${PN}-compat"
+
+
+FILES_${PN} = " \
+ ${base_sbindir}/hcid \
+ ${libdir}/bluetooth \
+ ${sysconfdir}/init.d/bluetooth \
+ ${sysconfdir}/bluetooth/*.service \
+ ${sysconfdir}/bluetooth/hcid.conf \
+ ${sysconfdir}/default \
+ ${sysconfdir}/dbus-1 \
+ ${base_sbindir}/hciattach \
+ "
+
+FILES_${PN}-dbg += " \
+ ${libdir}/bluetooth/.debug \
+ ${libdir}/cups/backend/.debug \
+ ${libdir}/alsa-lib/.debug \
+ "
+
+FILES_${PN}-compat = " \
+ ${base_bindir}/sdptool \
+ ${base_bindir}/dund \
+ ${base_bindir}/rctest \
+ ${base_bindir}/ciptool \
+ ${base_bindir}/l2test \
+ ${base_bindir}/rfcomm \
+ ${base_bindir}/hcitool \
+ ${base_bindir}/pand \
+ ${base_bindir}/hidd \
+ ${base_bindir}/l2ping \
+ ${base_sbindir}/hciconfig \
+ ${base_sbindir}/bccmd \
+ ${base_sbindir}/hciemu \
+ ${base_sbindir}/hid2hci \
+ ${base_bindir}/passkey-agent \
+ ${sysconfdir}/bluetooth/rfcomm.conf \
+ "
+
+
+
+
+
+
+
+
+
+
+
diff --git a/recipes/bluez/bluez-utils_3.33.bb b/recipes/bluez/bluez-utils_3.33.bb
new file mode 100644
index 0000000000..dc098e3137
--- /dev/null
+++ b/recipes/bluez/bluez-utils_3.33.bb
@@ -0,0 +1,67 @@
+require bluez-utils3.inc
+
+PR = "r3"
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --enable-hidd \
+ --enable-pand \
+ --enable-dund \
+ --disable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ --enable-hidd \
+ --enable-obex \
+ --enable-pand \
+ --enable-dund \
+ --enable-avctrl \
+ --enable-hid2hci \
+ --enable-dfutool \
+ "
+
+CONFFILES_${PN} = " \
+ ${sysconfdir}/bluetooth/hcid.conf \
+ ${sysconfdir}/default/bluetooth \
+ "
+
+CONFFILES_${PN}-compat = " \
+ ${sysconfdir}/bluetooth/rfcomm.conf \
+ "
+
+PACKAGES =+ "bluez-audio"
+
+FILES_${PN} = " \
+ ${base_sbindir}/hcid \
+ ${libdir}/bluetooth/plugins/*.so \
+ ${sysconfdir}/init.d/bluetooth \
+ ${sysconfdir}/bluetooth/hcid.conf \
+ ${sysconfdir}/default \
+ ${sysconfdir}/dbus-1 \
+ ${base_sbindir}/hciattach \
+ "
+
+FILES_bluez-audio = " \
+ ${libdir}/bluetooth/plugins/libaudio.so \
+ ${libdir}/gstreamer-0.10/*.so \
+ "
+
+FILES_${PN}-dbg += " \
+ ${libdir}/bluetooth/plugins/.debug \
+ ${libdir}/gstreamer-0.10/.debug \
+ "
+
+FILES_${PN}-dev += " \
+ ${libdir}/bluetooth/plugins/*.la \
+ ${libdir}/gstreamer-0.10/*.la \
+ "
diff --git a/recipes/bluez/bluez-utils_3.36.bb b/recipes/bluez/bluez-utils_3.36.bb
new file mode 100644
index 0000000000..bd319e85f2
--- /dev/null
+++ b/recipes/bluez/bluez-utils_3.36.bb
@@ -0,0 +1,72 @@
+require bluez-utils3.inc
+
+PR = "r4"
+
+# removed hciattach-ti-bts.patch (landed upstream)
+SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \
+ file://hcid.conf \
+ file://sbc-thumb.patch;patch=1"
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --enable-hidd \
+ --enable-pand \
+ --enable-dund \
+ --disable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ --enable-hidd \
+ --enable-obex \
+ --enable-pand \
+ --enable-dund \
+ --enable-avctrl \
+ --enable-hid2hci \
+ --enable-dfutool \
+"
+
+CONFFILES_${PN} = " \
+ ${sysconfdir}/bluetooth/hcid.conf \
+ ${sysconfdir}/default/bluetooth \
+ "
+
+CONFFILES_${PN}-compat = " \
+ ${sysconfdir}/bluetooth/rfcomm.conf \
+ "
+
+PACKAGES =+ "bluez-audio"
+
+FILES_${PN} = " \
+ ${base_sbindir}/hcid \
+ ${libdir}/bluetooth/plugins/*.so \
+ ${sysconfdir}/init.d/bluetooth \
+ ${sysconfdir}/bluetooth/hcid.conf \
+ ${sysconfdir}/default \
+ ${sysconfdir}/dbus-1 \
+ ${base_sbindir}/hciattach \
+ "
+
+FILES_bluez-audio = " \
+ ${libdir}/bluetooth/plugins/libaudio.so \
+ ${libdir}/gstreamer-0.10/*.so \
+ "
+
+FILES_${PN}-dbg += " \
+ ${libdir}/bluetooth/plugins/.debug \
+ ${libdir}/gstreamer-0.10/.debug \
+ "
+
+FILES_${PN}-dev += " \
+ ${libdir}/bluetooth/plugins/*.la \
+ ${libdir}/gstreamer-0.10/*.la \
+ "
diff --git a/recipes/bluez/bluez.inc b/recipes/bluez/bluez.inc
new file mode 100644
index 0000000000..711ac383be
--- /dev/null
+++ b/recipes/bluez/bluez.inc
@@ -0,0 +1,95 @@
+DESCRIPTION = "Linux Bluetooth Stack Userland Utilities and libraries."
+SECTION = "console"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.bluez.org"
+LICENSE = "GPL"
+PR = "r0"
+
+DEPENDS = "gstreamer gst-plugins-base libusb1 dbus glib-2.0"
+PROVIDES = "bluez-utils-dbus"
+RPROVIDES_${PN} = "bluez-pan bluez-sdp bluez-utils-dbus"
+RREPLACES = "bluez-utils-dbus"
+RCONFLICTS_${PN} = "bluez-utils-nodbus"
+
+FILESPATH = "${FILE_DIRNAME}/bluez-utils-${PV}:${FILE_DIRNAME}/bluez-utils"
+
+S = "${WORKDIR}/bluez-${PV}"
+
+inherit autotools update-rc.d pkgconfig
+
+OE_LT_RPATH_ALLOW = "any"
+OE_LT_RPATH_ALLOW[export]="1"
+
+do_install_append() {
+ install -d ${D}${base_sbindir} ${D}${base_bindir}/ ${D}${sysconfdir}/apm/event.d/
+ if [ "${sbindir}" != "${base_sbindir}" ]; then
+ mv ${D}${sbindir}/* ${D}${base_sbindir}/
+ rmdir ${D}${sbindir}
+ fi
+ if [ "${bindir}" != "${base_bindir}" ]; then
+ mv ${D}${bindir}/* ${D}${base_bindir}/
+ rmdir ${D}${bindir}
+ fi
+ chmod u+s ${D}${base_sbindir}/hciattach ${D}${base_sbindir}/hciconfig
+ install -m 0644 ${WORKDIR}/hcid.conf ${D}${sysconfdir}/bluetooth/
+ install -m 0644 ${S}/rfcomm/rfcomm.conf ${D}${sysconfdir}/bluetooth/
+ install -m 0755 ${S}/daemon/.libs/passkey-agent ${D}${base_bindir}/ ||true
+ install -m 0755 ${S}/test/.libs/passkey-agent ${D}${base_bindir}/ ||true
+}
+
+
+INITSCRIPT_NAME = "bluetooth"
+INITSCRIPT_PARAMS = "defaults 23 19"
+
+
+PACKAGES =+ "${PN}-compat"
+
+
+FILES_${PN} = " \
+ ${base_sbindir}/hcid \
+ ${libdir}/bluetooth \
+ ${sysconfdir}/init.d/bluetooth \
+ ${sysconfdir}/bluetooth/*.service \
+ ${sysconfdir}/bluetooth/hcid.conf \
+ ${sysconfdir}/default \
+ ${sysconfdir}/dbus-1 \
+ ${base_sbindir}/hciattach \
+ "
+
+FILES_${PN}-dbg += " \
+ ${libdir}/bluetooth/.debug \
+ ${libdir}/cups/backend/.debug \
+ ${libdir}/alsa-lib/.debug \
+ "
+
+FILES_${PN}-compat = " \
+ ${base_bindir}/sdptool \
+ ${base_bindir}/dund \
+ ${base_bindir}/rctest \
+ ${base_bindir}/ciptool \
+ ${base_bindir}/l2test \
+ ${base_bindir}/rfcomm \
+ ${base_bindir}/hcitool \
+ ${base_bindir}/pand \
+ ${base_bindir}/hidd \
+ ${base_bindir}/l2ping \
+ ${base_sbindir}/hciconfig \
+ ${base_sbindir}/bccmd \
+ ${base_sbindir}/hciemu \
+ ${base_sbindir}/hid2hci \
+ ${base_bindir}/passkey-agent \
+ ${sysconfdir}/bluetooth/rfcomm.conf \
+ "
+
+HEADERS = "bluetooth.h bnep.h cmtp.h hci.h hci_lib.h hidp.h l2cap.h rfcomm.h sco.h sdp.h sdp_lib.h"
+
+do_stage_prepend() {
+ oe_libinstall -so -C lib libbluetooth ${STAGING_LIBDIR}
+
+ install -d ${STAGING_INCDIR}/bluetooth/
+ for f in ${HEADERS}
+ do
+ install -m 0644 include/$f ${STAGING_INCDIR}/bluetooth/$f
+ done
+}
+
diff --git a/recipes/bluez/bluez4/fix-dfutool-usb-declaration-mismatch.patch b/recipes/bluez/bluez4/fix-dfutool-usb-declaration-mismatch.patch
new file mode 100644
index 0000000000..b1ee510e8b
--- /dev/null
+++ b/recipes/bluez/bluez4/fix-dfutool-usb-declaration-mismatch.patch
@@ -0,0 +1,13 @@
+Index: bluez-4.27/tools/dfutool.c
+===================================================================
+--- bluez-4.27.orig/tools/dfutool.c
++++ bluez-4.27/tools/dfutool.c
+@@ -59,7 +59,7 @@
+ #endif
+
+ #ifdef NEED_USB_GET_BUSSES
+-static inline struct usb_bus *usb_get_busses(void)
++inline struct usb_bus *usb_get_busses(void)
+ {
+ return usb_busses;
+ }
diff --git a/recipes/bluez/bluez4/hid2hci_usb_init.patch b/recipes/bluez/bluez4/hid2hci_usb_init.patch
new file mode 100644
index 0000000000..ed15fd5a1b
--- /dev/null
+++ b/recipes/bluez/bluez4/hid2hci_usb_init.patch
@@ -0,0 +1,33 @@
+# Signed-off-by: Khem Raj <raj.khem@gmail.com>
+#
+# Use the new usb1 API for usb_init() and check for fails from
+# usb_init (). Currently we see a crash on a system which does
+# not have USB because usb_init() fails and it cleans up all initialized
+# data (e.g. ctx) which is used in subsequent calls to libusb
+# We return immediately if usb_init() fails for some reason.
+
+Index: bluez-4.24/tools/hid2hci.c
+===================================================================
+--- bluez-4.24.orig/tools/hid2hci.c 2008-10-25 23:40:34.000000000 -0700
++++ bluez-4.24/tools/hid2hci.c 2008-12-29 22:06:04.000000000 -0800
+@@ -337,7 +337,7 @@
+ int main(int argc, char *argv[])
+ {
+ struct device_info dev[16];
+- int i, opt, num, quiet = 0, mode = HCI;
++ int i, ret, opt, num, quiet = 0, mode = HCI;
+
+ while ((opt = getopt_long(argc, argv, "+01qh", main_options, NULL)) != -1) {
+ switch (opt) {
+@@ -361,8 +361,9 @@
+ argc -= optind;
+ argv += optind;
+ optind = 0;
+-
+- usb_init();
++ ret = libusb_init();
++ if (ret < 0)
++ return ret;
+
+ num = find_devices(mode, dev, sizeof(dev) / sizeof(dev[0]));
+ if (num <= 0) {
diff --git a/recipes/bluez/bluez4/sbc-thumb.patch b/recipes/bluez/bluez4/sbc-thumb.patch
new file mode 100644
index 0000000000..3505426053
--- /dev/null
+++ b/recipes/bluez/bluez4/sbc-thumb.patch
@@ -0,0 +1,11 @@
+--- bluez/sbc/sbc_math.h~ 2008-03-05 20:18:03.000000000 +0000
++++ bluez/sbc/sbc_math.h 2008-10-27 13:39:27.000000000 +0000
+@@ -59,7 +59,7 @@
+
+ #define SBC_FIXED_0(val) { val = 0; }
+ #define MUL(a, b) ((a) * (b))
+-#ifdef __arm__
++#if defined(__arm__) && !defined(__thumb__)
+ #define MULA(a, b, res) ({ \
+ int tmp = res; \
+ __asm__( \
diff --git a/recipes/bluez/bluez4_4.31.bb b/recipes/bluez/bluez4_4.31.bb
new file mode 100644
index 0000000000..5063950c94
--- /dev/null
+++ b/recipes/bluez/bluez4_4.31.bb
@@ -0,0 +1,60 @@
+DESCRIPTION = "Linux Bluetooth Stack Userland V4"
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS = "gst-plugins-base alsa-lib libusb-compat dbus-glib"
+HOMEPAGE = "http://www.bluez.org"
+LICENSE = "GPL"
+PR = "r3"
+
+SRC_URI = "\
+ http://www.kernel.org/pub/linux/bluetooth/bluez-${PV}.tar.gz \
+ file://fix-dfutool-usb-declaration-mismatch.patch;patch=1 \
+ file://sbc-thumb.patch;patch=1 \
+# file://hid2hci_usb_init.patch;patch=1 \
+"
+S = "${WORKDIR}/bluez-${PV}"
+
+inherit autotools pkgconfig
+
+OE_LT_RPATH_ALLOW = "any"
+OE_LT_RPATH_ALLOW[export] = "1"
+
+EXTRA_OECONF = "\
+ --enable-gstreamer \
+ --enable-alsa \
+ --enable-usb \
+ --enable-netlink \
+ --enable-tools \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --enable-dfutool \
+ --enable-hidd \
+ --enable-pandd \
+ --enable-dund \
+ --disable-cups \
+ --enable-test \
+ --enable-manpages \
+ --enable-configfiles \
+ --enable-initscripts \
+ --disable-pcmciarules \
+"
+
+do_install_append() {
+ install -m 0644 ${S}/audio/audio.conf ${D}/${sysconfdir}/bluetooth/
+ install -m 0644 ${S}/network/network.conf ${D}/${sysconfdir}/bluetooth/
+ install -m 0644 ${S}/input/input.conf ${D}/${sysconfdir}/bluetooth/
+}
+
+PACKAGES =+ "gst-plugin-bluez libasound-module-bluez"
+
+FILES_gst-plugin-bluez = "${libdir}/gstreamer-0.10/lib*.so"
+FILES_libasound-module-bluez = "${libdir}/alsa-lib/lib*.so"
+FILES_${PN} += "${libdir}/bluetooth/plugins/*.so"
+FILES_${PN}-dev += "\
+ ${libdir}/bluetooth/plugins/*.la \
+ ${libdir}/*/*.la \
+"
+FILES_${PN}-dbg += "\
+ ${libdir}/bluetooth/plugins/.debug \
+ ${libdir}/*/.debug \
+"
diff --git a/recipes/bluez/files/base.patch b/recipes/bluez/files/base.patch
new file mode 100644
index 0000000000..337c9aa73e
--- /dev/null
+++ b/recipes/bluez/files/base.patch
@@ -0,0 +1,33 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- bluez-utils-2.17/pcmcia/bluetooth~base.patch
++++ bluez-utils-2.17/pcmcia/bluetooth
+@@ -15,9 +15,16 @@
+
+ if [ -r ./shared ]; then . ./shared ; else . /etc/pcmcia/shared ; fi
+
++# Give the port some time to complete initialization
++sleep 5
++
+ # Get device attributes
+ get_info $DEVICE
+
++test "$DEVICE" = "ttyS7" && DEVICE="/dev/tts/7"
++test -z "$MANFID" && MANFID="bcsp"
++test "$MANFID" = "0000,0000" && MANFID="bcsp"
++
+ #
+ # Serial devices
+ #
+@@ -25,7 +32,7 @@
+ IRQ=`setserial /dev/$DEVICE | sed -e 's/.*IRQ: //'`
+ setserial /dev/$DEVICE irq 0 ; setserial /dev/$DEVICE irq $IRQ
+
+- /usr/sbin/hciattach $DEVICE $MANFID
++ /sbin/hciattach $DEVICE $MANFID
+ }
+ stop_serial() {
+ do_fuser -k -HUP /dev/$DEVICE > /dev/null
diff --git a/recipes/bluez/files/blueboxes.patch b/recipes/bluez/files/blueboxes.patch
new file mode 100644
index 0000000000..c429b06c06
--- /dev/null
+++ b/recipes/bluez/files/blueboxes.patch
@@ -0,0 +1,18 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- bluez-utils-2.14/pcmcia/bluetooth.conf~base
++++ bluez-utils-2.14/pcmcia/bluetooth.conf
+@@ -26,6 +26,10 @@
+ version "Brain Boxes", "Bluetooth PC Card"
+ bind "serial_cs" class "bluetooth"
+
++card "F+ Bluetooth_Card, BCSP"
++ manfid 0x0160, 0xaba0
++ bind "serial_cs" class "bluetooth"
++
+ card "IBM Bluetooth PC Card II"
+ version "IBM", "Bluetooth PC Card II"
+ bind "serial_cs" class "bluetooth"
diff --git a/recipes/bluez/files/bluetooth.conf b/recipes/bluez/files/bluetooth.conf
new file mode 100644
index 0000000000..872084702a
--- /dev/null
+++ b/recipes/bluez/files/bluetooth.conf
@@ -0,0 +1,13 @@
+#
+# additional cards for /etc/pcmcia/bluetooth.conf
+# Note for OE: This file is _appended_ to the stock
+# bluetooth.conf in bluez-utils, so no need to duplicate
+# entries for individual cards.
+#
+card "CSR BT01x0M Bluetooth CF Card"
+ version "Bluetooth BT0100M", "", ""
+ bind "serial_cs" class "bluetooth"
+
+card "Socket Bluetooth CF Card Rev. G"
+ manfid 0x0104, 0x0096
+ bind "serial_cs" class "bluetooth"
diff --git a/recipes/bluez/files/bluetooth.default b/recipes/bluez/files/bluetooth.default
new file mode 100644
index 0000000000..4817d38c60
--- /dev/null
+++ b/recipes/bluez/files/bluetooth.default
@@ -0,0 +1,37 @@
+# Bluetooth configuraton file
+
+# Start of hcid (allowed values are "true" and "false")
+HCID_ENABLE=true
+
+# Config file for hcid
+HCID_CONFIG="/etc/bluetooth/hcid.conf"
+
+# Start sdpd (allowed values are "true" and "false")
+SDPD_ENABLE=true
+
+# Start hidd (allowed values are "true" and "false")
+HIDD_ENABLE=true
+
+# Arguments to hidd
+HIDD_OPTIONS=""
+
+# Run hid2hci (allowed values are "true" and "false")
+HID2HCI_ENABLE=true
+
+# Bind rfcomm devices (allowed values are "true" and "false")
+RFCOMM_ENABLE=true
+
+# Config file for rfcomm
+RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf"
+
+# Start dund (allowed values are "true" and "false")
+DUND_ENABLE=false
+
+# Arguments to dund
+DUND_OPTIONS="--listen --persist"
+
+# Start pand (allowed values are "true" and "false")
+PAND_ENABLE=false
+
+# Arguments to pand
+PAND_OPTIONS="--listen --role NAP"
diff --git a/recipes/bluez/files/default-manfid-0x0-to-bcps.patch b/recipes/bluez/files/default-manfid-0x0-to-bcps.patch
new file mode 100644
index 0000000000..3d993543b3
--- /dev/null
+++ b/recipes/bluez/files/default-manfid-0x0-to-bcps.patch
@@ -0,0 +1,22 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- bluez-utils-2.16/tools/hciattach.c~default-manfid-0x0-to-bcps
++++ bluez-utils-2.16/tools/hciattach.c
+@@ -796,13 +796,12 @@
+ }
+
+ struct uart_t uart[] = {
++ { "bcsp", 0x0000, 0x0000, HCI_UART_BCSP, 115200, 115200, 0, bcsp },
+ { "any", 0x0000, 0x0000, HCI_UART_H4, 115200, 115200, FLOW_CTL, NULL },
+ { "ericsson", 0x0000, 0x0000, HCI_UART_H4, 57600, 115200, FLOW_CTL, ericsson },
+ { "digi", 0x0000, 0x0000, HCI_UART_H4, 9600, 115200, FLOW_CTL, digi },
+ { "texas", 0x0000, 0x0000, HCI_UART_H4, 115200, 115200, FLOW_CTL, texas },
+
+- { "bcsp", 0x0000, 0x0000, HCI_UART_BCSP, 115200, 115200, 0, bcsp },
+-
+ /* Xircom PCMCIA cards: Credit Card Adapter and Real Port Adapter */
+ { "xircom", 0x0105, 0x080a, HCI_UART_H4, 115200, 115200, FLOW_CTL, NULL },
+
diff --git a/recipes/bluez/files/hciattach_devlength.patch b/recipes/bluez/files/hciattach_devlength.patch
new file mode 100644
index 0000000000..8d84cb1b00
--- /dev/null
+++ b/recipes/bluez/files/hciattach_devlength.patch
@@ -0,0 +1,11 @@
+--- bluez-utils-2.21/tools/hciattach.c.orig 2005-12-15 16:29:55.000000000 +0100
++++ bluez-utils-2.21/tools/hciattach.c 2005-12-15 16:29:37.000000000 +0100
+@@ -973,7 +973,7 @@
+ int send_break = 0;
+ pid_t pid;
+ struct sigaction sa;
+- char dev[20];
++ char dev[25];
+
+ detach = 1;
+ printpid = 0;
diff --git a/recipes/bluez/files/no-user-include.patch b/recipes/bluez/files/no-user-include.patch
new file mode 100644
index 0000000000..8c1b1b6d6d
--- /dev/null
+++ b/recipes/bluez/files/no-user-include.patch
@@ -0,0 +1,18 @@
+Do not add -I/usr/include to the compile line just because we will
+install bluez-utils there says zecke...
+
+Index: bluez-utils-2.25/acinclude.m4
+===================================================================
+--- bluez-utils-2.25.orig/acinclude.m4 2006-05-18 12:39:57.473577920 +0200
++++ bluez-utils-2.25/acinclude.m4 2006-05-19 00:58:52.694599848 +0200
+@@ -69,7 +69,9 @@
+ ac_save_LDFLAGS=$LDFLAGS
+
+ BLUEZ_CFLAGS=""
+- test -d "${bluez_prefix}/include" && BLUEZ_CFLAGS="$BLUEZ_CFLAGS -I${bluez_prefix}/include"
++ if test "$cross_compiling" = no; then
++ test -d "${bluez_prefix}/include" && BLUEZ_CFLAGS="$BLUEZ_CFLAGS -I${bluez_prefix}/include"
++ fi
+
+ CPPFLAGS="$CPPFLAGS $BLUEZ_CFLAGS"
+ AC_CHECK_HEADER(bluetooth/bluetooth.h, dummy=yes, AC_MSG_ERROR(Bluetooth header files not found))
diff --git a/recipes/bluez/files/openmn/bluetooth.default b/recipes/bluez/files/openmn/bluetooth.default
new file mode 100644
index 0000000000..06c52d7960
--- /dev/null
+++ b/recipes/bluez/files/openmn/bluetooth.default
@@ -0,0 +1,37 @@
+# Bluetooth configuraton file
+
+# Start of hcid (allowed values are "true" and "false")
+HCID_ENABLE=true
+
+# Config file for hcid
+HCID_CONFIG="/etc/bluetooth/hcid.conf"
+
+# Start sdpd (allowed values are "true" and "false")
+SDPD_ENABLE=false
+
+# Start hidd (allowed values are "true" and "false")
+HIDD_ENABLE=false
+
+# Arguments to hidd
+HIDD_OPTIONS=""
+
+# Run hid2hci (allowed values are "true" and "false")
+HID2HCI_ENABLE=false
+
+# Bind rfcomm devices (allowed values are "true" and "false")
+RFCOMM_ENABLE=false
+
+# Config file for rfcomm
+RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf"
+
+# Start dund (allowed values are "true" and "false")
+DUND_ENABLE=false
+
+# Arguments to dund
+DUND_OPTIONS="--listen --persist"
+
+# Start pand (allowed values are "true" and "false")
+PAND_ENABLE=false
+
+# Arguments to pand
+PAND_OPTIONS="--listen --role NAP"
diff --git a/recipes/bluez/files/openmn/hcid.conf b/recipes/bluez/files/openmn/hcid.conf
new file mode 100644
index 0000000000..46a5d5fd54
--- /dev/null
+++ b/recipes/bluez/files/openmn/hcid.conf
@@ -0,0 +1,70 @@
+#
+# HCI daemon configuration file.
+#
+# $Id: hcid.conf,v 1.4 2004/04/29 20:14:21 holtmann Exp $
+#
+
+# HCId options
+options {
+ # Automatically initialize new devices
+ autoinit yes;
+
+ # Security Manager mode
+ # none - Security manager disabled
+ # auto - Use local PIN for incoming connections
+ # user - Always ask user for a PIN
+ #
+ security auto;
+
+ # Pairing mode
+ # none - Pairing disabled
+ # multi - Allow pairing with already paired devices
+ # once - Pair once and deny successive attempts
+ pairing multi;
+
+ # PIN helper
+ # pin_helper /bin/bluepin;
+
+ # D-Bus PIN helper
+ # dbus_pin_helper;
+}
+
+# Default settings for HCI devices
+device {
+ # Local device name
+ # %d - device id
+ # %h - host name
+ name "%h";
+
+ # Local device class
+ class 0x820100;
+
+ # Default packet type
+ #pkt_type DH1,DM1,HV1;
+
+ # Inquiry and Page scan
+ iscan enable; pscan enable;
+
+ # Default link mode
+ # none - no specific policy
+ # accept - always accept incoming connections
+ # master - become master on incoming connections,
+ # deny role switch on outgoing connections
+ #
+ lm accept,master;
+
+ # Default link policy
+ # none - no specific policy
+ # rswitch - allow role switch
+ # hold - allow hold mode
+ # sniff - allow sniff mode
+ # park - allow park mode
+ #
+ #lp hold,sniff;
+ #
+ lp rswitch,hold,sniff,park;
+
+ # Authentication and Encryption
+ auth enable;
+ encrypt enable;
+}
diff --git a/recipes/bluez/files/pkgconfig-add-gthread.patch b/recipes/bluez/files/pkgconfig-add-gthread.patch
new file mode 100644
index 0000000000..2dde6b81f5
--- /dev/null
+++ b/recipes/bluez/files/pkgconfig-add-gthread.patch
@@ -0,0 +1,50 @@
+Index: git/configure.in
+===================================================================
+--- git.orig/configure.in 2007-07-17 17:25:52.000000000 +0100
++++ git/configure.in 2007-07-17 17:25:52.000000000 +0100
+@@ -75,6 +75,10 @@
+ AC_SUBST(OPENOBEX_CFLAGS)
+ AC_SUBST(OPENOBEX_LIBS)
+
++PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= 2.10, dummy=yes, dummy=no)
++AC_SUBST(GTHREAD_CFLAGS)
++AC_SUBST(GTHREAD_LIBS)
++
+ AC_ARG_BLUEZ
+
+ AC_OUTPUT(Makefile compat/Makefile common/Makefile applet/Makefile properties/Makefile sendto/Makefile wizard/Makefile proximity/Makefile po/Makefile.in)
+Index: git/applet/Makefile.am
+===================================================================
+--- git.orig/applet/Makefile.am 2007-07-17 17:25:52.000000000 +0100
++++ git/applet/Makefile.am 2007-07-17 17:25:52.000000000 +0100
+@@ -4,12 +4,12 @@
+ bluetooth_applet_SOURCES = main.c
+
+ bluetooth_applet_LDADD = $(top_builddir)/compat/libcompat.a $(top_builddir)/common/libcommon.a \
+- @NOTIFY_LIBS@ @GCONF_LIBS@ @GTK_LIBS@ @HAL_LIBS@ @DBUS_LIBS@
++ @NOTIFY_LIBS@ @GCONF_LIBS@ @GTK_LIBS@ @HAL_LIBS@ @DBUS_LIBS@ @GTHREAD_LIBS@
+
+ nodist_bluetooth_applet_SOURCES = $(top_builddir)/common/passkey-agent-glue.h \
+ $(top_builddir)/common/auth-agent-glue.h
+
+-AM_CFLAGS = @DBUS_CFLAGS@ @HAL_CFLAGS@ @GTK_CFLAGS@ @GCONF_CFLAGS@ @NOTIFY_CFLAGS@ -DSYSCONFDIR=\"$(sysconfdir)\"
++AM_CFLAGS = @DBUS_CFLAGS@ @HAL_CFLAGS@ @GTK_CFLAGS@ @GCONF_CFLAGS@ @NOTIFY_CFLAGS@ @GTHREAD_CFLAGS@ -DSYSCONFDIR=\"$(sysconfdir)\"
+
+ INCLUDES = -I$(top_builddir)/common -I$(top_srcdir)/compat
+
+Index: git/properties/Makefile.am
+===================================================================
+--- git.orig/properties/Makefile.am 2007-07-17 17:28:11.000000000 +0100
++++ git/properties/Makefile.am 2007-07-17 17:28:44.000000000 +0100
+@@ -4,9 +4,9 @@
+ bluetooth_properties_SOURCES = main.c
+
+ bluetooth_properties_LDADD = $(top_builddir)/common/libcommon.a \
+- @GCONF_LIBS@ @GTK_LIBS@ @HAL_LIBS@ @DBUS_LIBS@
++ @GCONF_LIBS@ @GTK_LIBS@ @HAL_LIBS@ @DBUS_LIBS@ @GTHREAD_LIBS@
+
+-AM_CFLAGS = @DBUS_CFLAGS@ @HAL_CFLAGS@ @GTK_CFLAGS@ @GCONF_CFLAGS@
++AM_CFLAGS = @DBUS_CFLAGS@ @HAL_CFLAGS@ @GTK_CFLAGS@ @GCONF_CFLAGS@ @GTHREAD_CFLAGS@
+
+ INCLUDES = -I$(top_srcdir)/common
+
diff --git a/recipes/bluez/files/slugos/bluetooth.default b/recipes/bluez/files/slugos/bluetooth.default
new file mode 100644
index 0000000000..10f628e314
--- /dev/null
+++ b/recipes/bluez/files/slugos/bluetooth.default
@@ -0,0 +1,37 @@
+# Bluetooth configuraton file
+
+# Start of hcid (allowed values are "true" and "false")
+HCID_ENABLE=true
+
+# Config file for hcid
+HCID_CONFIG="/etc/bluetooth/hcid.conf"
+
+# Start sdpd (allowed values are "true" and "false")
+SDPD_ENABLE=true
+
+# Start hidd (allowed values are "true" and "false")
+HIDD_ENABLE=false
+
+# Arguments to hidd
+HIDD_OPTIONS=""
+
+# Run hid2hci (allowed values are "true" and "false")
+HID2HCI_ENABLE=false
+
+# Bind rfcomm devices (allowed values are "true" and "false")
+RFCOMM_ENABLE=true
+
+# Config file for rfcomm
+RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf"
+
+# Start dund (allowed values are "true" and "false")
+DUND_ENABLE=true
+
+# Arguments to dund
+DUND_OPTIONS="--listen --persist"
+
+# Start pand (allowed values are "true" and "false")
+PAND_ENABLE=true
+
+# Arguments to pand
+PAND_OPTIONS="--listen --role NAP"
diff --git a/recipes/bluez/files/slugos/hcid.conf b/recipes/bluez/files/slugos/hcid.conf
new file mode 100644
index 0000000000..46a5d5fd54
--- /dev/null
+++ b/recipes/bluez/files/slugos/hcid.conf
@@ -0,0 +1,70 @@
+#
+# HCI daemon configuration file.
+#
+# $Id: hcid.conf,v 1.4 2004/04/29 20:14:21 holtmann Exp $
+#
+
+# HCId options
+options {
+ # Automatically initialize new devices
+ autoinit yes;
+
+ # Security Manager mode
+ # none - Security manager disabled
+ # auto - Use local PIN for incoming connections
+ # user - Always ask user for a PIN
+ #
+ security auto;
+
+ # Pairing mode
+ # none - Pairing disabled
+ # multi - Allow pairing with already paired devices
+ # once - Pair once and deny successive attempts
+ pairing multi;
+
+ # PIN helper
+ # pin_helper /bin/bluepin;
+
+ # D-Bus PIN helper
+ # dbus_pin_helper;
+}
+
+# Default settings for HCI devices
+device {
+ # Local device name
+ # %d - device id
+ # %h - host name
+ name "%h";
+
+ # Local device class
+ class 0x820100;
+
+ # Default packet type
+ #pkt_type DH1,DM1,HV1;
+
+ # Inquiry and Page scan
+ iscan enable; pscan enable;
+
+ # Default link mode
+ # none - no specific policy
+ # accept - always accept incoming connections
+ # master - become master on incoming connections,
+ # deny role switch on outgoing connections
+ #
+ lm accept,master;
+
+ # Default link policy
+ # none - no specific policy
+ # rswitch - allow role switch
+ # hold - allow hold mode
+ # sniff - allow sniff mode
+ # park - allow park mode
+ #
+ #lp hold,sniff;
+ #
+ lp rswitch,hold,sniff,park;
+
+ # Authentication and Encryption
+ auth enable;
+ encrypt enable;
+}