# Perform Bluetooth HFP client functions

You can perform HFP client functions using the `bluetoothctl` menu and `ofono/test` tools. Bluetooth HFP client functions include connecting or disconnecting to a remote device and managing phone calls over Bluetooth. You can dial a phone number, answer or reject incoming calls, and list active calls using HFP client functions.

## Prerequisites

Before you begin, [set up your device](https://docs.qualcomm.com/doc/80-70023-13/topic/bluez-hfp.html#section-rmp-dgv-mcc-navyanka-08-25-24-1227-32-765) and [configure the DUT for HFP client functions](https://docs.qualcomm.com/doc/80-70023-13/topic/bluez-hfp.html#section-nlh-q3v-mcc-navyanka-08-25-24-1246-29-767).

## Connect a remote device

To connect a remote device, run the following command from the `bluetoothctl` menu:

connect <bt_address>
    Copy to clipboard

**Parameters**

`<bt_address>` is the Bluetooth address of the remote device.

**Example**

To connect to a paired remote device with `<bt_address>` `F8:7D:76:9D:9B:6B`, run the following command:

connect F8:7D:76:9D:9B:6B
    Copy to clipboard

**Sample output**

[bluetooth]# connect F8:7D:76:9D:9B:6B
    Attempting to connect to F8:7D:76:9D:9B:6B
    (CHG) Device F8:7D:76:9D:9B:6B Connected: yes
    [NEW] Endpoint /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/sep3
    [NEW] Endpoint /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/sep4
    [NEW] Endpoint /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/sep5
    [NEW] Endpoint /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/sep6
    (NEW) Endpoint /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/sep1
    (NEW) Endpoint /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/sep2
    [NEW] Transport /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/sep1/fd0
    Connection successful
    [NEW] Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 [default]
    [NEW] Item /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0/Filesystem /Filesystem
    [NEW) Item /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0/NowPlaying /NowPlaying
    [CHG) Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Type: Audio
    [CHG] Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Subtype: None
    [CHG] Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Status: stopped
    [CHG] Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Browsable: yes
    [CHG] Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Searchable: yes
    [CHG) Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Playlist: /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0/NowPlaying
    (CHG) Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Name: Music
    [CHG] Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Repeat: off
    [CHG] Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Shuffle: off
    [NEW] Folder /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0
    [CHG] Device F8:7D:76:9D:9B:6B ServicesResolved: yes
    (CHG) Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Duration: 0x00000000 (0)
    (CHG) Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Genre:
    [CHG] Player /org/blwez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Title:
    [CHG] Player /org/blwez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Item: /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player@/NowPlaying/item18446749073709551615
    [CHG] Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 TrackNumber: 0x00000000 (0)
    [CHG] Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Artist:
    (CHG) Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 NumberOfTracks: 0x00000000 (0)
    [CHG) Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Album:
    [NEW] Item /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0/NowPlaying/item18446744073709551615 <unknown>
    [CHG] Player /org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/player0 Position: 0x00000000 (0)
    [MyDeviceA]#
    Copy to clipboard

## Dial a phone number

To dial a phone number, run the following command from the `ofono/test` menu:

./dial-number <phone_number>
    Copy to clipboard

**Parameters**

`<phone_number>` is the phone number that you want to dial.

**Sample output**

sh-5.1# ./dial-number 7123456789
    Using modem /hfp/org/bluez/hci0/dev_F8_7D_76_9D_9B_6B
    /hfp/org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/voicecall01
    sh-5.1#
    Copy to clipboard

## Answer an incoming call

To answer an incoming call, run the following command from the `ofono/test` menu:

./answer-calls
    Copy to clipboard

**Sample output**

sh-5.1# ./answer-calls
    [ /hfp/org/bluez/hci0/dev_F8_7D_76_9D_9B_6B ]
    [ /hfp/org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/voicecall01 ] incoming
    sh-5.1# |
    Copy to clipboard

Note

If you are on a call, an echo is audible. This is a known behavior in software with a BlueZ stack.

## List active calls

To list the active calls, run the following command from the `ofono/test` menu:

./list-calls
    Copy to clipboard

**Sample output**

sh-5.1# ./list-calls
    [ /hfp/org/bluez/hci0/dev_F8_7D_76_9D_9B_6B ]
    [ /hfp/org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/voicecall01 ]
          State = incoming
          LineIdentification = +917123456789
          Name =
          Multiparty = 0
          RemoteHeld = 0
          RemoteMultiparty = 0
          Emergency = 0
    Copy to clipboard

## Reject or disconnect a call

To reject or disconnect a call, run the following command from the `ofono/test` menu:

./hangup-call <call_path>
    Copy to clipboard

**Parameters**

`<call_path>` is the call path of the active call.

**Example**

To hang up a call with the path `/hfp/org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/voicecall01`, run the following command:

./hangup-call /hfp/org/bluez/hci0/dev_F8_7D_76_9D_9B_6B/voicecall01
    Copy to clipboard

## Disconnect a remote device

To disconnect a remote device, run the following command from the `bluetoothctl` menu:

disconnect <bt_address>
    Copy to clipboard

**Parameters**

`<bt_address>` is the Bluetooth address of the remote device.

**Example**

To disconnect a paired remote device with `<bt_address>` `F8:7D:76:9D:9B:6B`, run the following command:

disconnect F8:7D:76:9D:9B:6B
    Copy to clipboard

**Sample output**

[MyDeviceA]# disconnect
    Attempting to disconnect from F8:7D:76:9D:9B:6B
    [CHG] Device F8:7D:76:9D:9B:6B ServicesResolved: no
    Successful disconnected
    [CHG] Device F8:7D:76:9D:9B:6B Connected: no
    [bluetooth]#
    Copy to clipboard

Last Published: Dec 15, 2025

[Previous Topic
Verify HFP functions](https://docs.qualcomm.com/bundle/publicresource/80-70023-13/topics/bluez-hfp.md) [Next Topic
Perform Bluetooth HFP audio gateway functions](https://docs.qualcomm.com/bundle/publicresource/80-70023-13/topics/bluez-perform-bluetooth-hfp-ag-functions.md)