--- /dev/null
+[nosetests]
+cover-package=gitbuildsys
--- /dev/null
+#!/usr/bin/python -tt
+# vim: ai ts=4 sts=4 et sw=4
+#
+# Copyright (c) 2012 Intel, Inc.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; version 2 of the License
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc., 59
+# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+"""Functionality tests of gbs import."""
+
+import os
+import shutil
+import unittest
+import tempfile
+import imp
+
+from functools import wraps
+
+from nose.tools import eq_, raises
+
+from gbp.git.repository import GitRepository
+
+GBS = imp.load_source("gbs", "./tools/gbs").Gbs
+
+def with_data(fname):
+ """
+ Parametrized decorator for testcase methods.
+ Gets name of the directory or file in tests/testdata/
+ Copies it to the temporary working directory and
+ runs testcase method there.
+ Adds fname as a parameter for the testcase method
+
+ """
+ def decorator(func):
+ """Decorator itself."""
+ @wraps(func)
+ def wrapper(*args, **kwargs):
+ """Main functionality is here."""
+ obj = args[0] # TestCase object
+ # Copy required data(fname) to object temporary directory
+ fpath = os.path.join(obj.cdir, "./tests/testdata", fname)
+ if os.path.isdir(fpath):
+ shutil.copytree(fpath, os.path.join(obj.tmp, fname))
+ else:
+ shutil.copy(fpath, obj.tmp)
+ # Append fname to testcase method parameters
+ args = list(args)
+ args.append(fpath)
+ args = tuple(args)
+ return func(*args, **kwargs)
+ return wrapper
+ return decorator
+
+class TestImport(unittest.TestCase):
+ """Test help output of gbs commands"""
+
+ def __init__(self, method):
+ super(TestImport, self).__init__(method)
+ self.gbs = GBS().main
+
+ def setUp(self):
+ self.tmp = tempfile.mkdtemp(prefix="test-gbs-import-")
+ shutil.copy('.gbs.conf', self.tmp)
+ self.cdir = os.getcwd()
+ os.chdir(self.tmp)
+
+ def tearDown(self):
+ os.chdir(self.cdir)
+ shutil.rmtree(self.tmp)
+
+ @with_data("ail-0.2.29-2.3.src.rpm")
+ def test_import_srcrpm(self, srcrpm):
+ """Test importing from source rpm."""
+ eq_(self.gbs(argv=["gbs", "import", srcrpm]), None)
+ repo = GitRepository("./ail")
+ eq_(repo.get_local_branches(), ['master', 'upstream'])
+ eq_(repo.get_tags(), ['upstream/0.2.29', 'vendor/0.2.29-2.3'])
+
+ @with_data("bluez_unpacked")
+ def test_import_spec(self, srcdir):
+ """Test importing from spec."""
+ eq_(self.gbs(argv=["gbs", "import",
+ os.path.join(srcdir, 'bluez.spec')]), None)
+ repo = GitRepository("./bluez")
+ eq_(repo.get_local_branches(), ['master', 'upstream'])
+ eq_(repo.get_tags(), ['upstream/4.87', 'vendor/4.87-1'])
+
+ #raise Exception(os.listdir('./bluez'))
+
+ @with_data("ail-0.2.29-2.5.src.rpm")
+ def test_running_from_git_tree(self, srcrpm):
+ """Test running gbs import from git tree."""
+ # Create empty git repo
+ repo = GitRepository.create("./repo_dir")
+ os.chdir(repo.path)
+ eq_(self.gbs(argv=["gbs", "import", srcrpm]), None)
+ eq_(repo.get_local_branches(), ['master', 'upstream'])
+ eq_(repo.get_tags(), ['upstream/0.2.29', 'vendor/0.2.29-2.5'])
+
+ #raise Exception(os.listdir('./bluez'))
+
+ @with_data("app-core-1.2-19.3.src.rpm")
+ def test_set_author_name_email(self, srcrpm):
+ """Test --author-name and --author-email command line options."""
+ eq_(self.gbs(argv=["gbs", "import", "--author-name=test",
+ "--author-email=test@otctools.jf.intel.com",
+ srcrpm]), None)
+ repo = GitRepository("./app-core")
+ eq_(repo.get_local_branches(), ['master', 'upstream'])
+ eq_(repo.get_tags(), ['upstream/1.2', 'vendor/1.2-19.3'])
+
+ @with_data("ail-0.2.29-2.3.src.rpm")
+ def test_specify_upstream(self, srcrpm):
+ """Test --upstream command line option."""
+ eq_(self.gbs(argv=["gbs", "import", "--upstream=upstream",
+ srcrpm]), None)
+ repo = GitRepository("./ail")
+ eq_(repo.get_local_branches(), ['master', 'upstream'])
+ eq_(repo.get_tags(), ['upstream/0.2.29', 'vendor/0.2.29-2.3'])
+
+ @raises(SystemExit)
+ @with_data("bison-1.27.tar.gz")
+ def test_is_not_git_repository(self, tarball):
+ """Test raising exception when importing tarball outside of git."""
+ self.gbs(argv=["gbs", "import", tarball])
+
+ @raises(SystemExit)
+ @with_data("bad.src.rpm")
+ def test_error_reading_pkg_header(self, srcrpm):
+ """Test raising exception when importing from bad package."""
+ self.gbs(argv=["gbs", "import", srcrpm])
+
+ @raises(SystemExit)
+ @with_data("bad.spec")
+ def test_cant_parse_specfile(self, spec):
+ """Test raising exception when importing from non-parseable spec."""
+ self.gbs(argv=["gbs", "import", spec])
+
+ @raises(SystemExit)
+ def test_missing_argument(self):
+ """Test raising exception when running gbs without any arguments."""
+ self.gbs(argv=["gbs", "import"])
+
+ @raises(SystemExit)
+ def test_too_many_arguments(self):
+ """Test raising exception when running gbs with too many arguments."""
+ self.gbs(argv=["gbs", "import", "1", "2"])
+
+ @raises(SystemExit)
+ def test_path_doesnt_exist(self):
+ """Test raising exception when running gbs with not existing path."""
+ self.gbs(argv=["gbs", "import", "I don't exist!"])
--- /dev/null
+PKG_NAME := bluez
+SPECFILE = $(addsuffix .spec, $(PKG_NAME))
+YAMLFILE = $(addsuffix .yaml, $(PKG_NAME))
+
+include /usr/share/packaging-tools/Makefile.common
+
--- /dev/null
+#!/bin/sh
+#
+# chkconfig: 345 50 83
+# description: Bluetooth services for service discovery, authentication, \
+# Human Interface Devices, etc.
+#
+### BEGIN INIT INFO
+# Required-Start: $syslog messagebus
+# Short-Description: Bluetooth services
+# Description: Bluetooth services for service discovery, authentication,
+# Human Interface Devices, etc.
+### END INIT INFO
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+[ -e /etc/sysconfig/bluetooth ] && . /etc/sysconfig/bluetooth
+
+start()
+{
+ echo -n $"Starting Bluetooth services:"
+ daemon /usr/sbin/bluetoothd
+ RETVAL=$?
+ [ $RETVAL = 0 ] && touch /var/lock/subsys/bluetoothd
+ [ "$HID2HCI_ENABLE" = "true" ] && hid2hci --tohci > /dev/null 2>&1 || :
+ touch /var/lock/subsys/bluetooth
+ echo ""
+ return $RETVAL
+}
+
+stop()
+{
+ echo -n "Stopping Bluetooth services:"
+ [ "$HID2HCI_UNDO" = "true" ] && hid2hci --tohid > /dev/null 2>&1 || :
+ killproc bluetoothd
+ RETVAL=$?
+ rm -f /var/lock/subsys/bluetooth
+ rm -f /var/lock/subsys/bluetoothd
+ echo ""
+ return $RETVAL
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ force-reload|restart|reload)
+ stop
+ start
+ ;;
+ try-restart|condrestart)
+ [ -e /var/lock/subsys/bluetooth ] && (stop; start)
+ ;;
+ status)
+ status bluetoothd
+ RETVAL=$?
+ ;;
+ *)
+ echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
+ exit 3
+ ;;
+esac
+
+exit $RETVAL
--- /dev/null
+--- bluez-4.28/src/textfile.c~ 2009-02-11 03:01:06.000000000 -0800
++++ bluez-4.28/src/textfile.c 2009-02-11 03:01:06.000000000 -0800
+@@ -271,7 +271,7 @@
+ flock(fd, LOCK_UN);
+
+ close:
+- fdatasync(fd);
++// fdatasync(fd);
+
+ close(fd);
+ errno = err;
--- /dev/null
+* Thu Feb 10 2011 Zheng wu <wu.zheng@intel.com> - 4.87
+- upgrade to 4.87 for BMC #13393
+- ver 4.87:
+ Fix issue with initialization when adapter is already up.
+ Fix issue with attribute server MTU and incoming connections.
+ Fix issue with duplicate characteristics after discovery.
+
+* Fri Jan 21 2011 Zheng wu <wu.zheng@intel.com> - 4.86
+- upgrade to 4.86 for BMC #12691
+- ver 4.86:
+ Revert wrong fix for SDP PDU size error response.
+ Fix various memory leaks in A2DP and AVDTP support.
+ Add Routing property to MediaTransport interface
+ Add proper tracking mechanism to NREC status.
+ Add READ_BLOB_REQUEST support to attribute server.
+
+* Thu Jan 13 2011 Martin Xu <martin.xu@intel.com> - 4.85
+- upgrade to 4.85
+- to partly support Bluetooth LE feature, FEA #7110
+
+* Thu Jan 6 2011 Zhang Qiang<qiang.z.zhang@intel.com> 4.84
+- Upgrade to 4.84
+
+* Mon Oct 25 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.76
+- Add disable-hal-plugin.patch to fix BMC#7676.
+
+* Mon Oct 25 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.76
+- Add Fix-crash-in-Manager.GetProperties.patch to fix BMC#7772.
+
+* Mon Oct 18 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.76
+- Upgrade to 4.76
+
+* Thu Sep 30 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.70
+- Add powered.patch to make sure the initial power status aligned
+ with connman's requirement.
+
+* Fri Aug 27 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.70
+- Upgrade to 4.70
+
+* Mon Jul 26 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.69
+- Add more binary test programs into bluez-test sub-package.
+
+* Mon Jul 19 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.69
+- Upgrade to 4.69
+
+* Thu Jul 15 2010 Anas Nashif <anas.nashif@intel.com> - 4.66
+- Install udev rules into /lib/udev (bmc #3424)
+
+* Tue Jul 13 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.66
+- Add a sub-package for test scripts.
+- Corrected bluez.yaml to avoid spectacle's warnings.
+
+* Wed Jun 30 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.66
+- Upgrade to 4.66
+- Remove unnecessary patch correct-ref.patch
+- Switch to build with Spectacle
+
+* fri jun 4 2010 zhu yanhai <yanhai.zhu@linux.intel.com> 4.65
+- add correct-ref.patch to fix bmc#1882
+
+* Thu Jun 3 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.65
+- Upgrade to 4.65
+
+* Tue Apr 27 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.63
+- Enable HFP without oFono binding in Trunk. Because IVI and Netbooks don't have a
+ physical modem, we just build BlueZ with the default dummy telephony driver.
+ (BMC#400). This will make MeeGo BlueZ be able to play HFP HS and AG role.
+
+* Mon Apr 12 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.63
+- Upgrade to 4.63. As the HSP part is under changes in upstream, this upgrade
+ will potentially improve HSP performance (BMC#65, BMC#400, BMC#402)
+- Refresh no-crash-if-no-modem.path: use the hotifx from upstream to
+ replace my home made one. (BMO#8991)
+
+* Tue Mar 9 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.62
+- Upgrade to 4.62, which also fix bluez-hcidump build failure.
+
+* Sat Feb 27 2010 Anas Nashif <anas.nashif@intel.com> - 4.61
+- Spec cleanup
+
+* Thu Feb 25 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.61
+- Upgrade to 4.61
+
+* Tue Feb 2 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.60
+- Upgrade to 4.60
+
+* Tue Jan 12 2010 Zhu Yanhai <yanhai.zhu@linux.intel.com> 4.58
+- add no-crash-if-no-modem.patch to fix MB#8991.
+
+* Fri Dec 4 2009 Martin Xu <martin.xu@intel.com> 4.58
+- upgrade to 4.58
+
+* Fri Dec 4 2009 Martin Xu <martin.xu@intel.com> 4.56
+- add set_RememberPowered_as_false.patch to partly fix bug #6835
+
+* Tue Oct 28 2009 Martin Xu <martin.xu@intel.com> 4.56
+- add disable_HFP_at_audio_conf.patch to fix bug# 7236
+
+* Tue Oct 13 2009 Martin Xu <martin.xu@intel.com> 4.56
+- Upgrade to 4.56
+- update bluez-fsync.patch
+
+* Thu Sep 17 2009 Yi Yang <yi.y.yang@intel.com> 4.50
+- Remove a duplicate but wrong udev rule for dell mice (MB#5316)
+
+* Fri Aug 27 2009 Martin Xu <martin.xu@intel.com> 4.50
+- Upgrade to 4.50
+- Add --with-telephony=ofono to enable HFP telephony plugins See Bug #5486
+- Add ofono as runtime requirements
+
+* Fri Aug 7 2009 Martin Xu <martin.xu@intel.com> 4.47
+- Upgrade to 4.47
+- Remove HFP patch, the patch has been included in 4.47
+
+* Wed July 1 2009 Todd Brandt <todd.e.brandt@intel.com> 4.40
+- Added Forrest Zhao's HFP support patch. Fixes a crash when using org.bluez.HeadsetGateway
+
+* Thu June 4 2009 Martin Xu <martin.xu@intel.com> 4.40
+- Upgrade to 4.40
+- Remove fix-alsa-bluez-plugin-poll-revents-err.patch, the fix has been done in alsa-lib-1.0.20
+
+* Mon May 25 2009 Anas Nashif <anas.nashif@intel.com> 4.38
+- Fixed ChangeLog
+
+* Fri May 8 2009 Martin Xu <martin.xu@intel.com> 4.38
+- Upgrade to 4.38
+
+ Tue Apr 28 2009 <martin.xu@intel.com> 4.36
+- Upgrade to 4.36
+
+* Fri Apr 3 2009 <martin.xu@intel.com> 4.30
+- add patch fix-alsa-bluez-plugin-poll-revents-err.patch to fix a2dp error
+
+ Fri Feb 13 2009 Anas Nashif <anas.nashif@intel.com> 4.30
+- Update to 4.30
+
+* Tue Feb 10 2009 Arjan van de Ven <arjan@linux.intel.com> 4.28
+- disable f(data)sync calls in bluetoothd
+
+* Mon Feb 9 2009 Arjan van de Ven <arjan@linux.intel.com> 4.28
+- update to 4.28
+- don't start the daemon from the initscript
+
+* Thu Dec 11 2008 Anas Nashif <anas.nashif@intel.com> 4.22
+- fastinit replaces initscripts
+
+* Thu Dec 11 2008 - Martin Xu <martin.xu@intel.com>
+- Upgrade to bluez-4.22
+
+* Tue Dec 09 2008 Anas Nashif <anas.nashif@intel.com> 4.18
+- Change BR for gstreamer plugins
+
+* Fri Nov 25 2008 - Martin Xu <martin.xu@intel.com>
+- Remove "Provides bluez-utils-*"
+
+* Fri Nov 11 2008 - Martin Xu <martin.xu@intel.com>
+- initialized bluez-4.18 package
Group: Applications/System
License: GPLv2+
URL: http://www.bluez.org/
-Source0: http://www.kernel.org/pub/linux/bluetooth/%{name}-%{version}-tizen.tar.bz2
+Source0: http://www.kernel.org/pub/linux/bluetooth/%{name}-%{version}.tar.gz
Source1: bluetooth.init
Source100: bluez.yaml
Patch0: bluez-fsync.patch
--- /dev/null
+Name: bluez
+Summary: Bluetooth utilities
+Version: 4.87
+Release: 1
+Group: Applications/System
+License: GPLv2+
+URL: http://www.bluez.org/
+Sources:
+ - http://www.kernel.org/pub/linux/bluetooth/%{name}-%{version}.tar.gz
+ - bluetooth.init
+Patches:
+ - bluez-fsync.patch
+ - remove-duplicate-wrong-udev-rule-for-dell-mice.patch
+ - enable_HFP.patch
+ - powered.patch
+ - install-test-scripts.patch
+ - install-more-binary-test.patch
+ - disable-hal-plugin.patch
+Description: |
+ Utilities for use in Bluetooth applications:
+ --ciptool
+ --dfutool
+ --hcitool
+ --l2ping
+ --rfcomm
+ --sdptool
+ --hciattach
+ --hciconfig
+ --hid2hci
+
+ The BLUETOOTH trademarks are owned by Bluetooth SIG, Inc., U.S.A.
+
+Requires:
+ - bluez-libs = %{version}
+ - dbus >= 0.60
+ - hwdata >= 0.215
+ - ofono >= 0.2
+
+PkgConfigBR:
+ - dbus-1
+ - libusb
+ - alsa
+ - udev
+ - sndfile
+ - glib-2.0
+ - gstreamer-plugins-base-0.10
+ - gstreamer-0.10
+
+PkgBR:
+ - flex
+Configure: reconfigure
+ConfigOptions:
+ - --enable-cups
+ - --enable-hid2hci
+ - --enable-dfutool
+ - --enable-bccmd
+ - --enable-hidd
+ - --enable-pand
+ - --enable-dund
+ - --enable-gstreamer
+ - --enable-alsa
+ - --enable-usb
+ - --enable-tools
+ - --enable-test
+ - --with-telephony=dummy
+Builder: make
+SubPackages:
+ - Name: libs
+ Summary: Libraries for use in Bluetooth applications
+ Group: System/Libraries
+ Description: Libraries for use in Bluetooth applications.
+
+ - Name: libs-devel
+ Summary: Development libraries for Bluetooth applications
+ Group: Development/Libraries
+ Description: |
+ bluez-libs-devel contains development libraries and headers for
+ use in Bluetooth applications.
+ Requires:
+ - bluez-libs = %{version}
+
+ - Name: cups
+ Summary: CUPS printer backend for Bluetooth printers
+ Group: System/Daemons
+ Description: This package contains the CUPS backend
+ Requires:
+ - bluez-libs = %{version}
+ - cups
+
+ - Name: alsa
+ Summary: ALSA support for Bluetooth audio devices
+ Group: System/Daemons
+ Description: This package contains ALSA support for Bluetooth audio devices
+ Requires:
+ - bluez-libs = %{version}
+
+ - Name: gstreamer
+ Summary: GStreamer support for SBC audio format
+ Group: System/Daemons
+ Description: This package contains gstreamer plugins for the Bluetooth SBC audio format
+ Requires:
+ - bluez-libs = %{version}
+
+ - Name: test
+ Summary: Test Programs for BlueZ
+ Group: Development/Tools
+ Description: Scripts for testing BlueZ and its functionality
+ Requires:
+ - bluez-libs = %{version}
+ - dbus-python
+ - pygobject2
--- /dev/null
+diff -Nur old/src/main.conf new/src/main.conf
+--- old/src/main.conf 2010-10-25 16:23:53.000000000 +0800
++++ new/src/main.conf 2010-10-25 16:26:03.000000000 +0800
+@@ -59,3 +59,7 @@
+ # Enable the GATT Attribute Server. Default is false, because it is only
+ # useful for testing.
+ AttributeServer = false
++
++
++# Disable the HAL plugin here since MeeGo has removed hald.
++DisablePlugins=hal
--- /dev/null
+diff -Nur old/audio/audio.conf new/audio/audio.conf
+--- old/audio/audio.conf 2009-10-31 15:18:09.000000000 +0800
++++ new/audio/audio.conf 2010-04-26 12:37:02.000000000 +0800
+@@ -3,7 +3,7 @@
+ # This section contains options which are not specific to any
+ # particular interface
+ [General]
+-
++Enable=Gateway
+ # Switch to master role for incoming connections (defaults to true)
+ #Master=true
+
+diff -Nur old/Makefile.am new/Makefile.am
+--- old/Makefile.am 2010-03-26 03:27:55.000000000 +0800
++++ new/Makefile.am 2010-04-26 12:36:43.000000000 +0800
+@@ -211,7 +211,7 @@
+ man_MANS = src/bluetoothd.8
+
+ if CONFIGFILES
+-conf_DATA += src/main.conf
++conf_DATA += src/main.conf audio/audio.conf
+ endif
+
+ EXTRA_DIST += src/genbuiltin src/bluetooth.conf \
--- /dev/null
+diff -Nur old/Makefile.tools new/Makefile.tools
+--- old/Makefile.tools 2010-05-23 20:47:19.000000000 +0800
++++ new/Makefile.tools 2010-07-26 17:50:02.000000000 +0800
+@@ -135,7 +135,7 @@
+
+ bin_PROGRAMS += test/l2test test/rctest
+
+-noinst_PROGRAMS += test/gaptest test/sdptest test/scotest \
++bin_PROGRAMS += test/gaptest test/sdptest test/scotest \
+ test/attest test/hstest test/avtest test/ipctest \
+ test/lmptest test/bdaddr test/agent \
+ test/btiotest test/test-textfile
--- /dev/null
+diff -Nur old/Makefile.am new/Makefile.am
+--- old/Makefile.am 2010-05-23 20:47:19.000000000 +0800
++++ new/Makefile.am 2010-07-13 15:22:47.000000000 +0800
+@@ -304,6 +304,31 @@
+ dist_udev_SCRIPTS = scripts/bluetooth_serial
+ endif
+
++
++test_scripts = test/apitest \
++ test/hsplay \
++ test/hsmicro \
++ test/list-devices \
++ test/monitor-bluetooth \
++ test/simple-agent \
++ test/simple-service \
++ test/test-adapter \
++ test/test-audio \
++ test/test-device \
++ test/test-discovery \
++ test/test-input \
++ test/test-manager \
++ test/test-network \
++ test/test-serial \
++ test/test-service \
++ test/test-telephony
++
++
++if TEST
++testdir = ${pkglibdir}/test
++test_SCRIPTS = ${test_scripts}
++endif
++
+ EXTRA_DIST += doc/manager-api.txt \
+ doc/adapter-api.txt doc/device-api.txt \
+ doc/service-api.txt doc/agent-api.txt \
--- /dev/null
+diff -Nur old/src/main.conf new/src/main.conf
+--- old/src/main.conf 2010-08-25 13:10:02.000000000 +0800
++++ new/src/main.conf 2010-09-26 17:28:39.000000000 +0800
+@@ -32,10 +32,10 @@
+
+ # What value should be assumed for the adapter Powered property when
+ # SetProperty(Powered, ...) hasn't been called yet. Defaults to true
+-InitiallyPowered = true
++InitiallyPowered = false
+
+ # Remember the previously stored Powered state when initializing adapters
+-RememberPowered = true
++RememberPowered = false
+
+ # Use vendor, product and version information for DID profile support.
+ # The values are separated by ":" and VID, PID and version.
--- /dev/null
+diff --git a/scripts/bluetooth-hid2hci.rules b/scripts/bluetooth-hid2hci.rules
+index 1b231d1..c834957 100644
+--- a/scripts/bluetooth-hid2hci.rules
++++ b/scripts/bluetooth-hid2hci.rules
+@@ -8,7 +8,7 @@
+ # 413c:8154
+ # 413c:8158
+ # 413c:8162
+-ACTION=="add", ENV{ID_VENDOR}=="413c", ENV{ID_CLASS}=="mouse", ATTRS{bmAttributes}=="e0", KERNEL=="mouse*", RUN+="/usr/sbin/hid2hci --method dell -v $env{ID_VENDOR} -p $env{ID_MODEL} --mode hci"
++# udev 144 or later has covered these Dell mice, so unnecessary to have a duplicate but wrong rule.
+
+ # Logitech devices
+ ACTION=="add", ENV{ID_VENDOR}=="046d", ENV{ID_MODEL}=="c703" RUN+="/usr/sbin/hid2hci --method logitech -v $env{ID_VENDOR} -p $env{ID_MODEL} --mode hci"