NAME
btsco
—
Bluetooth SCO Audio
SYNOPSIS
btsco* at bthub?
audio* at audiobus?
DESCRIPTION
Thebtsco
driver provides support for Bluetooth SCO
(Synchronous connection-oriented) Audio devices through the
audio(4) driver.
The btsco
driver must be configured at run
time with the
btdevctl(8) program. The following properties are used by the
btsco
driver during autoconfiguration:
- local-bdaddr
- Local device address.
- remote-bdaddr
- Remote device address.
- service-name
- The
btsco
driver matches the ‘HF’ and ‘HSET’ services. For the ‘HF’ service, thebtsco
device will, on open(2), listen for incoming connections from the remote device. Otherwise,btsco
will attempt to initiate a connection to the remote device. - rfcomm-channel
- This integer value is not used directly, but will be stored and passed via
the
BTSCO_INFO
ioctl as below:
SCO connections require a baseband connection between the two
devices before they can be created. The btsco
driver
does not create this, but can provide information to facilitate an
application setting up a control channel prior to use, via the
BTSCO_INFO
ioctl(2) call on the mixer device, which returns a
btsco_info structure as follows:
#include <dev/bluetooth/btsco.h> struct btsco_info { bdaddr_t laddr; /* controller bdaddr */ bdaddr_t raddr; /* headset bdaddr */ uint8_t channel; /* RFCOMM channel */ int vgs; /* mixer index speaker */ int vgm; /* mixer index mic */ }; #define BTSCO_INFO _IOR('b', 16, struct btsco_info)
The btsco
driver can be configured to act
in Connect or Listen mode. In Connect mode, the
btsco
driver will initiate a connection to the
remote device on an
open(2) call, whereas in Listen mode,
open(2) will block until the remote device initiates the
connection.
SEE ALSO
bthset(1), ioctl(2), audio(4), bluetooth(4), bthub(4), btdevctl(8)
HISTORY
The btsco
driver was written for
NetBSD 4.0 by Iain Hibbert
under the sponsorship of Itronix, Inc.
BUGS
btsco
takes no notice of the HCI Voice
Setting in the Bluetooth controller, and this must be 0x0060 (the default)
as alternate values are currently unsupported.