.\"
.\"	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; either version 2 of the License, or
.\"	(at your option) any later version.
.\"
.\"	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., 675 Mass Ave, Cambridge, MA 02139, USA.
.\"
.\"
.TH RFCOMM 1 "APRIL 28, 2002" "" ""

.SH NAME
rfcomm \- RFCOMM configuration utility
.SH SYNOPSIS
.BR "rfcomm
[
.I options
] <
.I command
> <
.I dev
>
.SH DESCRIPTION
.B rfcomm
is used to set up, maintain, and inspect the RFCOMM configuration
of the Bluetooth subsystem in the Linux kernel. If no
.B command
is given, or if the option
.B -a
is used,
.B rfcomm
prints information about the configured RFCOMM devices.
.SH OPTIONS
.TP
.BI -h
Gives a list of possible commands.
.TP
.BI -a
Prints information about all configured RFCOMM devices.
.TP
.BI -r
Switch TTY into raw mode (doesn't work with "bind").
.TP
.BI -i " <hciX> | <bdaddr>"
The command is applied to device
.BI -A
Enable authentication.
.BI -E
Enable encryption.
.BI -S
Secure connection.
.BI -M
Become the master of a piconet.
.I
hciX
, which must be the name or the address of an installed Bluetooth
device. If not specified, the command will be use the first
available Bluetooth device.
.TP
.BI -A
Enable authentification
.TP
.BI -E
Enable encryption
.TP
.BI -S
Secure connection
.TP
.BI -M
Become the master of a piconet
.TP
.BI -L " <seconds>"
Set linger timeout
.SH COMMANDS
.TP
.BI show " <dev>"
Display the information about the specified device.
.TP
.BI connect " <dev> [bdaddr] [channel]"
Connect the RFCOMM device to the remote Bluetooth device on the
specified channel. If no channel is specified, it will use the
channel number 1. This command can be terminated with the key
sequence CTRL-C.
.TP
.BI listen " <dev> [channel] [cmd]"
Listen on a specified RFCOMM channel for incoming connections.
If no channel is specified, it will use the channel number 1, but
a channel must be specified before cmd. If cmd is given, it will be
executed as soon as a client connects. When the child process
terminates or the client disconnect, the command will terminate.
Occurrences of {} in cmd will be replaced by the name of the device
used by the connection. This command can be terminated with the key
sequence CTRL-C.
.TP
.BI watch " <dev> [channel] [cmd]"
Watch is identical to
.B listen
except that when the child process terminates or the client
disconnect, the command will restart listening with the same
parameters.
.TP
.BI bind " <dev> [bdaddr] [channel]"
This binds the RFCOMM device to a remote Bluetooth device. The
command does not establish a connection to the remote device, it
only creates the binding. The connection will be established right
after an application tries to open the RFCOMM device. If no channel
number is specified, it uses the channel number 1.
.TP
.BI release " <dev>"
This command releases a defined RFCOMM binding.

If
.B all
is specified for the RFCOMM device, then all bindings will be removed.
.SH AUTHOR
Written by Marcel Holtmann <marcel@holtmann.org>.
.br
