RFCOMM_PPPD(8) MidnightBSD System Manager’s Manual RFCOMM_PPPD(8)

NAME

rfcomm_pppd — RFCOMM PPP daemon

SYNOPSIS

rfcomm_pppd −c [−dh] −a address −C channel −l label −u N
rfcomm_pppd −s
[−dhS] [−a address] −C channel −l label

DESCRIPTION

The rfcomm_pppd daemon is a simple wrapper daemon that allows to use standard ppp(8) on RFCOMM connection. It can operate in two modes: client and server.

In the client mode, rfcomm_pppd opens an RFCOMM connection to the specified server’s BD_ADRR and channel. Once RFCOMM connection is established, rfcomm_pppd executes ppp(8) in −direct mode with the specified label. The ppp(8) in its turn operates over the RFCOMM connection just like it would operate over the standard serial port thus allowing user to ‘‘dial out’’ and connect to the Internet.

In the server mode, rfcomm_pppd opens an RFCOMM socket and listens for incoming connections from remote clients. Once the new incoming connection is accepted, rfcomm_pppd forks and executes ppp(8) in −direct mode with the specified label. The ppp(8) in its turn operates over the RFCOMM connection just like it would operate over the standard serial port thus providing network connectivity to remote clients.

The options are as follows:

−a address

In the client mode, this required option specifies the address of the remote RFCOMM server. In the server mode, this option can be used to specify the local address to listen on. By default, server will listen on ANY address. The address can be specified as BD_ADDR or name. If name was specified then the rfcomm_pppd utility will attempt to resolve the name via bt_gethostbyname(3).

−C channel

In both client and server modes, this required option specifies RFCOMM channel to connect to or listen on. In the server mode, RFCOMM channel should be a number between 1 and 30. In the client mode, RFCOMM channel could either be a number between 1 and 30 or a service name. Supported service names are: DUN (for DialUp Networking service) and LAN (for LAN Access Using PPP service). If service name was specified instead of numeric RFCOMM channel then rfcomm_pppd utility will try to obtain RFCOMM channel for the service via Service Discovery Protocol.

−c

Act as an RFCOMM client. This is the default mode.

−d

Do not detach from the controlling terminal, i.e., run in foreground.

−h

Display usage message and exit.

−l label

In both client and server modes, this required option specifies which ppp(8) label will be used.

−S

In the server mode, register the Serial Port (SP) service in addition to the LAN Access Using PPP (LAN) service. It appears that some cell phones are using the so-called ‘‘callback mechanism’’. In this scenario, the user is trying to connect his cell phone to the Internet, and user’s host computer is acting as the gateway server. It seems that it is not possible to tell the phone to just connect and start using the LAN service. Instead, the user’s host computer must ‘‘jump start’’ the phone by connecting to the phone’s SP service. What happens next is the phone kills the existing connection and opens another connection back to the user’s host computer. The phone really wants to use LAN service, but for whatever reason it looks for the SP service on the user’s host computer. This brain damaged behavior was reported for Nokia 6600 and Sony/Ericsson P900.

−s

Act as an RFCOMM server.

−u N

This option maps directly onto −unit ppp(8) command line option and tells rfcomm_pppd to instruct ppp(8) to only attempt to open /dev/tunN. This option only works in the client mode.

PPP CONFIGURATION

Important Notes on PPP Configuration
Special attention is required when adding new RFCOMM configurations to the existing PPP configuration. Please keep in mind that PPP will always execute commands in the ‘‘default’’ label of your /etc/ppp/ppp.conf file. Please make sure that the ‘‘default’’ label only contains commands that apply to every other label. If you need to use PPP for both dialing out and accepting incoming RFCOMM connections, please make sure you have moved all commands related to dialing out from the ‘‘default’’ section into an appropriate outgoing label.

RFCOMM Server
One of the typical examples is the LAN access. In this example, RFCOMM connection is used as a null-modem connection between client and server. Both client and server will start talking PPP right after RFCOMM connection was established.

rfcomm-server:
set timeout 0
set lqrperiod 10
set ifaddr 10.0.0.1 10.0.0.2 255.255.255.0
enable lqr
accept lqr
# Do not use PPP authentication. Assume that
# Bluetooth connection was authenticated already
disable pap
deny pap
disable chap
deny chap

RFCOMM Client
The rfcomm_pppd utility supports both LAN and DUN (Dial-Up Networking) access. The client’s configuration for the LAN access is very similar to server’s and might look like this.

rfcomm-client:
enable lqr
accept lqr
set dial
set timeout 0
disable iface-alias
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
# Do not use PPP authentication. Assume that
# Bluetooth connection was authenticated already
deny pap
disable pap
deny chap
disable chap

The client’s configuration for the DUN access is different. In this scenario, the client gets connected to the virtual serial port on the server. To open a PPP session, client must dial a number. Note that by default ppp(8) will not execute any configured chat scripts. The force-scripts option can be used to override this behavior. The example of such configuration is shown below.

rfcomm-dialup:
# This is IMPORTANT option
enable force-scripts

# You might want to change these
set authname
set authkey
set phone "*99***1#"

# You might want to adjust dial string as well
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
\"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
set login
set timeout 30
enable dns
resolv rewrite

set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
add default HISADDR

Note that by adjusting the initialization string, one can make CSD (Circuit Switched Data), HSCSD (High Speed Circuit Switched Data) or GPRS (General Packet Radio Service) connection. The availability of the particular connection type depends on the phone model and service plan activated on the phone.

EXIT STATUS

The rfcomm_pppd utility exits 0 on success, and >0 if an error occurs.

EXAMPLES

rfcomm_pppd -s -a 00:01:02:03:04:05 -C 1 -l rfcomm-server

This command will start rfcomm_pppd in the server mode. The RFCOMM server will listen on local address 00:01:02:03:04:05 and channel 1. Once the incoming connection has been accepted, rfcomm_pppd will execute ppp(8) in −direct mode with ‘‘rfcomm-server’’ label.

rfcomm_pppd -c -a 00:01:02:03:04:05 -C 1 -l rfcomm-client

This command will start rfcomm_pppd in the client mode. rfcomm_pppd will try to connect to the RFCOMM server at 00:01:02:03:04:05 address and channel 1. Once connected, the rfcomm_pppd will execute ppp(8) in −direct mode with ‘‘rfcomm-client’’ label.

CAVEAT

The rfcomm_pppd utility in server mode will try to register Bluetooth LAN Access Over PPP service with local SPD daemon. If local SDP daemon is not running the rfcomm_pppd utility will exit with error.

SEE ALSO

rfcomm_sppd(1), bluetooth(3), ng_btsocket(4), ppp(8), sdpcontrol(8), sdpd(8)

AUTHORS

Maksim Yevmenkin 〈m_evmenkin@yahoo.com〉

MidnightBSD 0.3 February 4, 2003 MidnightBSD 0.3