# 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-70030-13/topic/bluez-hfp.html#section-rmp-dgv-mcc-08-25-24-1227-32-765) and [configure the DUT for HFP client functions](https://docs.qualcomm.com/doc/80-70030-13/topic/bluez-hfp.html#section-nlh-q3v-mcc-08-25-24-1246-29-767). ## Connect a remote device To connect a remote device, run the following command from the `bluetoothctl` menu: connect Copy to clipboard **Parameters** `` is the Bluetooth address of the remote device. **Example** To connect to a paired remote device with `` `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 [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 Copy to clipboard **Parameters** `` 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 Copy to clipboard **Parameters** `` 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 Copy to clipboard **Parameters** `` is the Bluetooth address of the remote device. **Example** To disconnect a paired remote device with `` `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: Jun 15, 2026 [Previous Topic Verify HFP functions](https://docs.qualcomm.com/bundle/publicresource/80-70030-13/topics/bluez-hfp.md) [Next Topic Perform Bluetooth HFP audio gateway functions](https://docs.qualcomm.com/bundle/publicresource/80-70030-13/topics/bluez-perform-bluetooth-hfp-ag-functions.md)