I'm running one of the Bluez examples on a raspberry pi 3 B+.
Output from using bluetoothctl
then running show
shows that some GATT services are available:
Name: raspberrypi
Alias: raspberrypi
Class: 0x400000
Powered: yes
Discoverable: no
Pairable: yes
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control (0000110e-0000-1000-8000-00805f9b34fb)
UUID: SIM Access (0000112d-0000-1000-8000-00805f9b34fb)
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
UUID: Battery Service (0000180f-0000-1000-8000-00805f9b34fb)
UUID: Heart Rate (0000180d-0000-1000-8000-00805f9b34fb)
UUID: Vendor specific (12345678-1234-5678-1234-56789abcdef0)
Modalias: usb:v1D6Bp0246d052B
Discovering: no
Discovering the services on an iPhone or a Mac will display the battery service, heart rate service and vendor specific service. On an Android device however only the Generic Attribute Profile
and Generic Access Profile
are found. Android devices used so far are a Motorola Moto G3, Sony Xperia XZ2 and a Huawei P20 Pro. Using LightBlue and BLE Scanner for service discovery.
Additional information
/lib/systemd/system/bluetooth.service has the --experimental
flag set.
The Huawei phone has had no issues connecting to other bluetooth low energy devices in the past which leads me to think this isn't necessarily an Android problem.