# General Attribute Profile

GATT is a service framework that uses ATT to discover services, and to read and write
characteristic values on a peer device.

To perform Bluetooth Low Energy GATT server or client functions, you must first complete the steps in the following procedure.

## Set up device for Bluetooth Low Energy GATT functions

**Prerequisites**

- Enable SSH to access your host device. For instructions, see [Sign in using SSH](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/how_to.html#use-ssh).
- Place the DUT and the remote device in the Bluetooth vicinity.

**Procedure**

1. Run the SSH in command prompt using the following command:

ssh root@<device_IP_address>
        Copy to clipboard

    **Example**

    If the IP address of the device is `10.92.160.222`, run the following command:

ssh root@10.92.160.222
        Copy to clipboard
2. Connect to the SSH by entering the following password:

oelinux123
        Copy to clipboard
3. Open the Bluetooth test application by running the following command:

bluetoothctl
        Copy to clipboard

    You can perform a few GATT functions like connecting and scanning through the main menu options of bluetoothctl.

    **Sample output**

sh-5.1# bluetoothctl
        Agent registered        uetoothd...
        [CHG] Controller 22:22:F1:C1:99:C0 Pairable: yes
        Copy to clipboard
4. Enable Bluetooth by running the following command:

power on
        Copy to clipboard

    **Sample output**

[bluetooth]# power on
        [CHG] Controller 22:22:F1:C1:99:C0 Class: 0x007c0000
        Changing power on succeeded
        [CHG] Controller 22:22:F1:C1:99:C0 Powered: yes
        Copy to clipboard
5. Go to the **GATT submenu** by running the following command:

menu gatt
        Copy to clipboard

    **Sample output**

[bluetooth]# menu gatt
        Menu gatt:
        Available commands:
        -------------------
        list-attributes [dev/local]                       List attributes
        select-attribute <attribute/UUID/local> [attribute/UUID] Select attribute
        attribute-info [attribute/UUID]                   Select attribute
        read [offset]                                     Read attribute value
        write <data=xx xx ...> [offset] [type]            Write attribute value
        acquire-write                                     Acquire Write file descriptor
        release-write                                     Release Write file descriptor
        acquire-notify                                    Acquire Notify file descriptor
        release-notify                                    Release Notify file descriptor
        notify <on/off>                                   Notify attribute value
        clone [dev/attribute/UUID]                        Clone a device or attribute
        register-application [UUID ...]                   Register profile to connect
        unregister-application                            Unregister profile
        register-service <UUID> [handle]                  Register application service.
        unregister-service <UUID/object>                  Unregister application service
        register-includes <UUID> [handle]                 Register as Included service in.
        unregister-includes <Service-UUID> <Inc-UUID>     Unregister Included service.
        register-characteristic <UUID> <Flags=read,write,notify...> [handle] Register application characteristic
        unregister-characteristic <UUID/object>           Unregister application characteristic
        register-descriptor <UUID> <Flags=read,write...> [handle] Register application descriptor
        unregister-descriptor <UUID/object>               Unregister application descriptor
        back                                              Return to main menu
        version                                           Display version
        quit                                              Quit program
        exit                                              Quit program
        help                                              Display help about this program
        export                                            Print environment variables
        Copy to clipboard

    - For GATT server functions, see [Perform Bluetooth Low Energy GATT server functions](https://docs.qualcomm.com/doc/80-70020-13/topic/bluez-perform-bluetooth-low-energy-gatt-server-functions.html#bluez-perform-bluetooth-low-energy-gatt-server-functions).
    - For GATT client functions, see [Perform Bluetooth Low Energy GATT client functions](https://docs.qualcomm.com/doc/80-70020-13/topic/bluez-perform-bluetooth-low-energy-gatt-client-functions.html#bluez-perform-bluetooth-low-energy-gatt-client-functions).

## Next steps

- [Perform Bluetooth Low Energy GATT server functions](https://docs.qualcomm.com/doc/80-70020-13/topic/bluez-perform-bluetooth-low-energy-gatt-server-functions.html)
You can perform Bluetooth Low Energy GATT server functions using the **GATT submenu** options and `bluetoothctl` commands.
- [Perform Bluetooth Low Energy GATT client functions](https://docs.qualcomm.com/doc/80-70020-13/topic/bluez-perform-bluetooth-low-energy-gatt-client-functions.html)
You can perform Bluetooth Low Energy GATT client functions using the **GATT submenu** options and `bluetoothctl` commands.

Last Published: Jun 26, 2025

[Previous Topic
General Access Profile](https://docs.qualcomm.com/bundle/publicresource/80-70020-13/topics/bluez-gap.md) [Next Topic
Perform Bluetooth Low Energy GATT server functions](https://docs.qualcomm.com/bundle/publicresource/80-70020-13/topics/bluez-perform-bluetooth-low-energy-gatt-server-functions.md)