bluez-utils (4.40-1) unstable; urgency=low

  This version includes a new hid2hci program which expects the vendor ID and
  product ID of the device to be switched to HID/HCI mode, this means the
  switching is no longer done in init script but via udev rules for supported
  devices. Adding new devices can be done by dropping rules into
  /etc/udev/rules.d/ similar to ones found in
  /lib/udev/rules.d/62-bluez-hid2hci.rules or by manually running hid2hci, see
  hid2hci(8) manpage for further information.

  This version also ships a simple commandline agent (bluetooth-agent) to do
  pairing on the command line 

 -- Filippo Giunchedi <filippo@debian.org>  Fri, 22 May 2009 15:21:35 +0200

bluez-utils (3.36-3) unstable; urgency=low

  This version includes an new d-bus policy with updated access control.
  As a result of this, only users of netdev group or which are in front of the
  computer (i.e. match the at_console="true" rule) are able to communicate
  with hcid via dbus. See also #510644.

 -- Filippo Giunchedi <filippo@debian.org>  Thu, 08 Jan 2009 18:35:38 +0100

bluez-utils (3.30-2) unstable; urgency=low

  This upstream version switches the service infrastructure from external
  processes to shared objects. Services (i.e. audio) are started automatically
  and do not require a .service file in /etc/bluetooth/. audio.service will be
  removed automatically by the upgrade unless modified.

 -- Filippo Giunchedi <filippo@debian.org>  Mon, 14 Apr 2008 17:34:21 +0200

bluez-utils (3.7-1) unstable; urgency=low

  This version reverts the /etc/bluetooth/passkeys infrastructure as agents for
  passkeys are not supposed to be system-wide.
  A bluez-passkey-gnome is provided as a passkey agent, plus there's a example
  passkey-agent in /usr/share/doc/bluez-utils/examples/passkey-agent.c 

 -- Filippo Giunchedi <filippo@debian.org>  Sat,  7 Oct 2006 11:43:09 +0200

bluez-utils (3.1-3) unstable; urgency=low

  This version includes a new management for outgoing passkey (PIN) requests
  while the incoming passkeys defaults to 1234 in /etc/bluetooth/hcid.conf.
  See README.Debian for further informations. 

 -- Filippo Giunchedi <filippo@debian.org>  Wed, 26 Jul 2006 11:37:14 +0200

bluez-utils (3.1-1) unstable; urgency=low

  This new upstream version removes the need for external pin helper, pin
  requests are handled via dbus.  The default pin (or now-called "passkey") is
  set to 1234 for backward compatibility.

  Also, udev rules for pcmcia card are included along with
  /lib/udev/bluetooth.sh (setserial required) in the bluez-pcmcia-support.

 -- Filippo Giunchedi <filippo@debian.org>  Wed, 26 Jul 2006 11:37:02 +0200

bluez-utils (2.24-1) unstable; urgency=low

  This version moves /etc/{init.d,default}/bluez-utils to
  /etc/{init.d,default}/bluetooth for LSB compilance.
  If local modifications are detected the new files will be installed with
  the ".dpkg-new" suffix

 -- Filippo Giunchedi <filippo@debian.org>  Wed,  7 Jun 2006 13:57:35 +0200

bluez-utils (2.19-1) unstable; urgency=high

  * Includes new D-BUS support: sends signals for inquiry results and
    remote name resolves.

  * Also adds support for device-specific SDP records.

 -- Edd Dumbill <ejad@debian.org>  Fri, 19 Aug 2005 01:12:02 +0100

bluez-utils (2.9-1) unstable; urgency=low

  * This release improves input device support: EPoX keyboards and
    their new HID presenters should now work correctly in report
    protocol mode.

 -- Edd Dumbill <ejad@debian.org>  Sun,  8 Aug 2004 15:19:24 +0100

bluez-utils (2.8-1) unstable; urgency=low

  * Users of dongles with HID proxy capability (this is where the dongle
    pretends to be a keyboard and mouse until it is switched into Bluetooth
    mode, allowing Bluetooth input devices to be used in BIOS etc.) are
    now supported.  The switch is made as part of the bluez-utils init
    script.

 -- Edd Dumbill <ejad@debian.org>  Mon, 14 Jun 2004 14:24:12 +0100

bluez-utils (2.7-1) experimental; urgency=low

  * Upstream has merged bluez-pan with this package.  You should
    remove the /etc/init.d/bluez-pan script, and use 
    /etc/default/bluez-utils to configure dund and pand, although
    for the moment the old /etc/default/bluez-pan is also read.

  * This source package now has Bluetooth printing support, which
    is built into the bluez-cups binary package.

  * DBUS support has been enabled in this build.  To use it, add
    'dbus_pin_helper' into the options section, and comment out
    the pin_helper.  DBUS-aware pin helpers such as that in
    bluez-pin will now be used.

  * Bluetooth HID devices (eg, mouse, keyboard) are now supported
    for Linux 2.6.6 or better running the hidp patch from bluez.org.
    If running these, set HIDD_ENABLED to 1 in /etc/default/bluez-utils
    to enable support, then run hidd --connect <bdaddr> to connect
    to your keyboard or mouse.

 -- Edd Dumbill <ejad@debian.org>  Wed, 26 May 2004 12:43:08 +0100

bluez-utils (2.6-1) experimental; urgency=low

  * Upstream has merged bluez-sdp with this package. The sdp tools
    are now in this package.  You should remove the /etc/init.d/bluez-sdp
    script.

  * All tools from /sbin now live in /usr/sbin: hciattach hciconfig
    hcid l2ping.

 -- Edd Dumbill <ejad@debian.org>  Thu,  6 May 2004 11:58:16 +0100

bluez-utils (2.4-4) unstable; urgency=high

  * If you still use the old 'bluepin' PIN assistant: note it has moved
    from /bin/ to /usr/bin/.  You will need to update your hcid.conf
    accordingly.  Even better, install bluez-pin and use the helper from
    there instead.
  * hcitool has also moved to /usr/bin, and l2ping to /sbin.

 -- Edd Dumbill <ejad@debian.org>  Wed, 15 Jan 2004 18:37:32 +0000

bluez-utils (2.4-3) unstable; urgency=low

  * If you're using devfsd and a recent Linux kernel (2.4.22 or later, or
    2.6.x), remove the file /etc/devfs/devices.d/bluez and run update-devfsd.
    This will stop your system complaining when devfsd is started.  This
    package no longer installs that file, but you must remove it yourself.
    If you need it in future, you can find it in /usr/share/doc/bluez-utils.

 -- Edd Dumbill <ejad@debian.org>  Wed, 14 Jan 2004 21:14:35 +0000

bluez-utils (2.4-1) unstable; urgency=low

  * The rfcomm program has changed slightly: you now need a "bind yes"
    in each entry in /etc/bluetooth/rfcomm.conf to ensure they are bound
    at startup time.  See man rfcomm for more details.

 -- Edd Dumbill <ejad@debian.org>  Thu,  1 Jan 2004 18:38:35 +0100

bluez-utils (2.3-2) unstable; urgency=low

  * This package now depends on a new PIN helper bluez-pin.  If you are
    upgrading this package and want to use the new helper instead of the
    default one (highly recommended) then alter your pin_helper line in
    /etc/bluetooth/hcid.conf to specify /usr/bin/bluez-pin.

 -- Edd Dumbill <ejad@debian.org>  Thu, 28 Aug 2003 12:38:35 +0100
