# Perform Bluetooth HFP client functions

Source: [https://docs.qualcomm.com/doc/80-70017-13/topic/bluez-perform-bluetooth-hfp-client-functions.html](https://docs.qualcomm.com/doc/80-70017-13/topic/bluez-perform-bluetooth-hfp-client-functions.html)

You can perform HFP client functions using the `bluetoothctl` menu and
            `ofono/test` tools.

Before you begin, [set up your device](https://docs.qualcomm.com/doc/80-70017-13/topic/bluez-hfp.html#bluez-hfp__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-70017-13/topic/bluez-hfp.html#bluez-hfp__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:6BCopy 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-callsCopy 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 heard. 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-callsCopy 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 = 0Copy 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/voicecall01Copy 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:6BCopy 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

**Parent Topic:** [Hands-Free Profile](https://docs.qualcomm.com/doc/80-70017-13/topic/bluez-hfp.html)

Last Published: Dec 26, 2024

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