ver 2.11:
	Various cleanups to avoid inclusion of kernel headers.
	Fix output when the CUPS backend is called without arguments.
	Fix problems with a 64 bit userland.
	Use Bluetooth library functions if available.
	Use standard numbering scheme of SDP record handles.
	Add a master option to the hidd.
	Add support for changing the link key of a connection.
	Add support for requesting encryption on keyboards.
	Add support for revision information of Digianswer devices.
	Add support for the Zoom, IBM and TDK PCMCIA cards.
	Add checks for the OpenOBEX and the ALSA libraries.
	Add experimental mRouter support.

	Note:
	This version needs at least bluez-libs-2.11

ver 2.10:
	Use a define for the configuration directory.
	Fix string initialization for flags translation.
	Check for usb_get_busses() and usb_interrupt_read().
	Add optional support for compiling with PIE.
	Make installation of the init scripts optional.
	Make compiling with debug information optional.
	Don't override CFLAGS from configure.

	Note:
	This version needs at least bluez-libs-2.10

ver 2.9:
	Retry SDP connect if busy in the CUPS backend.
	Use packet type and allow role switch in hcitool.
	Use the functions from the USB library for hid2hci.
	Add Broadcom firmware loader.
	Add EPoX endian quirk for buggy keyboards.
	Update the autoconf/automake scripts.

	Note:
	This version needs at least bluez-libs-2.9

ver 2.8:
	Use LIBS and LDADD instead of LDFLAGS.
	Use HIDP subclass field for HID boot protocol.
	Set olen before calling getsockopt() in pand.
	Restore signals for dev-up script.
	Add PID file support for pand.
	Add size parameter to expand_name() in hcid.
	Add support for audio source and audio sink SDP records.
	Add support for HID virtual cable unplug.
	Add support for AmbiCom BT2000C card.

	Note:
	This version needs at least bluez-libs-2.8

ver 2.7:
	Add support for getting the AFH channel map.
	Add support for AFH mode.
	Add support for inquiry mode.
	Add Bluetooth backend for CUPS.
	Add the hid2hci utility.
	Add the hidd utility.
	Add the pand utility.
	Add the dund utility.
	More endian bug fixes.
	Give udev some time to create the RFCOMM device nodes.
	Release the TTY if no device node is found.
	New startup script for the Bluetooth subsystem.
	Update to the autoconf stuff.

	Note:
	This version needs at least bluez-libs-2.7

ver 2.6:
	Change default prefix to /usr.
	Add manpages for hcid and hcid.conf.
	Add the sdpd server daemon.
	Add the sdptool utility.
	Add the ciptool utility.

	Note:
	This version needs at least bluez-libs-2.6

ver 2.5:
	hcitool changes:
		Support for requesting authentication.
		Support for setting connection encryption.
		Fix some endian problems.
	hciconfig changes:
		Show revision information for Broadcom devices.
		Replace unprintable characters in device name.
	hcid changes:
		Add D-Bus support for PIN request.
		Report an error on PIN helper failure.
		Fix some 64-bit problems.
	Update bluepin script for GTK2.

ver 2.4:
	hcitool changes:
		Increase number of inquiry responses.
		Support for transmit power level.
		Minor updates.
	hciconfig changes:
		Display all 8 bytes of the features.
		Add support for reading and writing of IAC.
		Correct decoding class of device.
		Use Ericsson revision command for ST Microelectronics devices.
		Display AVM firmware version with 'revision' command.
		New code for CSR specific revision information.
	hciattach changes:
		Support for ST Microelectronics specific initialization.
		Support for 3Com card version 3.0.
		Support for TDK, IBM and Socket cards.
		Support for initial baud rate.
	Update man pages.
	Fixes for some memory leaks.

ver 2.3:
	hciconfig changes:
		CSR firmware version is now displayed by 'revision' command.
		Voice command is working properly on big endian machines.
	hciattach changes:
		Added support for Texas Bluetooth modules.
		Added support for high UART baud rates on Ericsson modules.
		BCSP initialization fixes.
	Support for role switch command (hcitool).
	RFCOMM config file parser fixes.
	Update man pages.
	Removed GLib dependency.

ver 2.2:
	Support for voice settings (hciconfig).
	Minor hcitool fixes.
	Improved configure script.
	Added Headset testing tool.
	Updated man pages.
	RPM package.

ver 2.1:
	Improved BCSP initialization (hciattach).
	Support for displaying link quality (hcitool).
	Support for changing link supervision timeout (hcitool).
	New RFCOMM TTY configuration tool (rfcomm).
	Minor fixes and updates.

ver 2.0:
	BCSP initialization (hciattach).
	Minor hciconfig fixes.	

ver 2.0-pr13:
	Support for multiple pairing modes.
	Link key database handling fixes.

ver 2.0-pre12:
	Removed max link key limit. Keys never expire.
	Link key database is always updated. Reread PIN on SIGHUP (hcid).
	Bluetooth script starts SDPd, if installed.
	Other minor fixes.

ver 2.0-pre11:
	Improved link key management and more verbose logging (hcid).
	Fixed scan command (hcitool).

ver 2.0-pre10:
	Support for reading RSSI, remote name and changing
	connection type (hcitool). 
	Device initialization fixes (hcid).
	Other minor fixes and improvements.
	Build environment cleanup and fixes.

ver 2.0-pre9:
	Improved bluepin. Working X authentication.
	Improved hcitool. New flexible cmd syntax, additional commands.
	Human readable display of the device features.

ver 2.0-pre8:
	Additional hciconfig commands. Support for ACL and SCO MTU ioctls.
	Support for Inventel and COM1 UART based devices.
	Minor hcitool fixes.
	Improved l2test. New L2CAP test modes.
	Minor cleanup.

ver 2.0-pre7:
	Bluetooth utilities is now a separate package.
	New build environment uses automake.
	Moved all config files and security data to /etc/bluetooth.
	Various cleanups.

	Note:
	Please move your /etc/hcid.conf to /etc/bluetooth

ver 2.0-pre6:
	Improved hcitool.
	l2test minor output fixes.
	hciattach opt to display list of supported devices.

ver 2.0-pre2:
	Additional HCI library functions.
	Improved CSR baud rate initialization.
	PCMCIA scripts fixes and enhancements.
	Documentation update.
	
ver 2.0-pre1:
	New UART initialization utility.
	Hot plugging support for UART based PCMCIA devices.
	SCO testing utility.
	New authentication utility (bluepin).
	Minor fixes and improvements.
