I’m trying to find bluetooth GATT specifications for glucose meters and hearing devices.
But the only thing I’ve found is
https://www.bluetooth.com/specifications/gatt/removed/
or some older repositories on git hub.
Is bluetooth not free for anyone?
I want to develop a simple volume control for hearing devices for example I can scan it here and find out:
Service: <CBService: 0x100606f20, isPrimary = NO, UUID = Device Information>
Service: <CBService: 0x1005747d0, isPrimary = NO, UUID = Battery>
Service: <CBService: 0x100574b90, isPrimary = NO, UUID = 7D74F4BD-C74A-4431-862C-CCE884371592>
Service: <CBService: 0x100574b30, isPrimary = NO, UUID = 8341F2B4-C013-4F04-8197-C4CDB42E26DC>
Service: <CBService: 0x100606fe0, isPrimary = NO, UUID = 14293049-77D7-4244-AE6A-D3873E4A3184>
Service: <CBService: 0x100607020, isPrimary = NO, UUID = 56772EAF-2153-4F74-ACF3-4368D99FBF5A>
Service: <CBService: 0x100607060, isPrimary = NO, UUID = 0A23AE62-C4C2-43D1-87B1-E8C83839A063>
<CBCharacteristic: 0x10056f9f0, UUID = Manufacturer Name String, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x10056e6d0, UUID = Model Number String, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x10056e440, UUID = Hardware Revision String, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x10056e4a0, UUID = Firmware Revision String, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x100572130, UUID = Software Revision String, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x100606120, UUID = Battery Level, properties = 0x12, value = (null), notifying = NO>
... has read
... has notify
<CBCharacteristic: 0x100708c60, UUID = 24E1DFF3-AE90-41BF-BFBD-2CF8DF42BF87, properties = 0x12, value = (null), notifying = NO>
... has read
... has notify
<CBCharacteristic: 0x100608100, UUID = 8D17AC2F-1D54-4742-A49A-EF4B20784EB3, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x1006060b0, UUID = C97D21D3-D79D-4DF8-9230-BB33FA805F4E, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x100608410, UUID = 497EEB9E-B194-4F35-BC82-36FD300482A6, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x100608470, UUID = F3F594F9-E210-48F3-85E2-4B0CF235A9D3, properties = 0x1A, value = (null), notifying = NO>
... has write
... has read
... has notify
<CBCharacteristic: 0x10056e650, UUID = 6AC46200-24EA-46D8-A136-81133C65840A, properties = 0x1A, value = (null), notifying = NO>
... has write
... has read
... has notify
<CBCharacteristic: 0x100572190, UUID = 21FF4275-C41D-4486-A0E3-DC11138BCDE6, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x100573fd0, UUID = A391C6F1-20BB-495A-ABBF-2017098FBC61, properties = 0x1A, value = (null), notifying = NO>
... has write
... has read
... has notify
<CBCharacteristic: 0x100574030, UUID = ADC3023D-BFD2-43FD-86F6-7AE05A619092, properties = 0x12, value = (null), notifying = NO>
... has read
... has notify
<CBCharacteristic: 0x100574090, UUID = A28B6BE1-2FA4-42F8-AEB2-B15A1DBD837A, properties = 0xA, value = (null), notifying = NO>
... has write
... has read
<CBCharacteristic: 0x100574340, UUID = 7BE94A55-8D91-4592-BC0F-EA3664CCD3A9, properties = 0xA, value = (null), notifying = NO>
... has write
... has read
<CBCharacteristic: 0x1005703d0, UUID = 9C12A3DB-9CE8-4865-A217-D394B3BC9311, properties = 0xA, value = (null), notifying = NO>
... has write
... has read
<CBCharacteristic: 0x1005743a0, UUID = 16438C66-E95A-4C6F-8117-A6B745BD86FC, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x100574400, UUID = 4656D3AC-C2DF-4096-96E7-713580B69CCD, properties = 0x1A, value = (null), notifying = NO>
... has write
... has read
... has notify
<CBCharacteristic: 0x100574460, UUID = 76B3DB1F-44C4-46CC-A7B5-E9CE7DFBEF50, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x1005746a0, UUID = 98924A39-6559-40A8-B302-3C8E40DBF834, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x10045f4a0, UUID = 0188BF66-463A-405D-91FD-0B8940B92254, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x10045f500, UUID = 2BDCAEBE-8746-45DF-A841-96B840980FB7, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x10045f560, UUID = 2BDCAEBE-8746-45DF-A841-96B840980FB8, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x10045f600, UUID = 30E69638-3752-4FEB-A3AA-3226BCD05ACE, properties = 0x1A, value = (null), notifying = NO>
... has read
... has notify
... has write
<CBCharacteristic: 0x100574700, UUID = F44A04D5-E0C6-4AD7-85D5-87D5AA33C9C6, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x1005744c0, UUID = E129F344-FC51-4A4A-8C97-08D4326030C6, properties = 0x4, value = (null), notifying = NO>
<CBCharacteristic: 0x100575070, UUID = 8B789F9B-2963-4307-88CE-26D042933800, properties = 0x10, value = (null), notifying = NO>
... has notify
<CBCharacteristic: 0x100574560, UUID = 4048127C-9DE7-4B8C-968E-8C6995C23800, properties = 0x4, value = (null), notifying = NO>
<CBCharacteristic: 0x1005745e0, UUID = 6001A31E-EF5E-4F27-A07C-31B9EE328286, properties = 0x10, value = (null), notifying = NO>
... has notify
<CBCharacteristic: 0x1005704a0, UUID = 82E7D06B-65DA-4D78-99CB-BAF9635D8E6F, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x100570530, UUID = E24FAC83-B5A8-4B9B-8FDA-803FFFB0C21C, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x1005707a0, UUID = D28617FE-0AD5-40C5-A04A-BC89051FF755, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x100570890, UUID = 5F35C43D-E0F4-4DA9-87E6-9719982CD25E, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x100570590, UUID = 353ECC73-4D2C-421B-AC1C-8DCB35CD4477, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x1005750d0, UUID = 6D5758A1-D4AF-4B32-B95E-1E6992454F4F, properties = 0xC, value = (null), notifying = NO>
... has write
<CBCharacteristic: 0x100575130, UUID = DCBE7A3E-A742-4527-AEB5-CD8DEE63167F, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x100570640, UUID = 68BFA64E-3209-4172-B117-F7EAFCE17414, properties = 0x1A, value = (null), notifying = NO>
... has notify
... has read
... has write
<CBCharacteristic: 0x100570710, UUID = BBA1C7F1-B445-4657-90C3-8DBD97361A0C, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x100575190, UUID = 42E940EF-98C8-4CCD-A557-30425295AF89, properties = 0x12, value = (null), notifying = NO>
... has notify
... has read
<CBCharacteristic: 0x1005751f0, UUID = 535442F7-0FF7-4FEC-9780-742F3EB00EDA, properties = 0x1E, value = (null), notifying = NO>
... has notify
... has read
... has write
<CBCharacteristic: 0x100575270, UUID = 1454E9D6-F658-4190-8589-22AA9E3021EB, properties = 0x1E, value = (null), notifying = NO>
... has notify
... has read
... has write
<CBCharacteristic: 0x100575370, UUID = E5892EBE-97D0-4F97-8F8E-CB85D16A4CC1, properties = 0x1E, value = (null), notifying = NO>
... has notify
... has read
... has write
<CBCharacteristic: 0x1005753d0, UUID = 60415E72-C345-417A-BB2B-BBBA95B2C9A3, properties = 0x1E, value = (null), notifying = NO>
... has notify
... has read
... has write
<CBCharacteristic: 0x100575430, UUID = 9215A295-B813-483F-9F85-B700D0B7BC75, properties = 0x1E, value = (null), notifying = NO>
... has notify
... has read
... has write
<CBCharacteristic: 0x1005754b0, UUID = 6E557876-CCC4-40E0-8C2D-651542C5AD3D, properties = 0x1E, value = (null), notifying = NO>
... has notify
... has read
... has write
<CBCharacteristic: 0x100575530, UUID = 50632720-4C0F-4BC4-960A-2404BDFDFBCA, properties = 0x1E, value = (null), notifying = NO>
... has notify
... has read
... has write
<CBCharacteristic: 0x1005755b0, UUID = 58BBCCC5-5A57-4E00-98D5-18C6A0408DFD, properties = 0x12, value = (null), notifying = NO>
... has notify
... has read
<CBCharacteristic: 0x1005752f0, UUID = D01AB591-D282-4EF5-B83B-538E0BF32D85, properties = 0x12, value = (null), notifying = NO>
... has notify
... has read
<CBCharacteristic: 0x100575700, UUID = BC6829C4-B750-48E6-B6F4-48EC866A1EFB, properties = 0x2, value = (null), notifying = NO>
... has read
<CBCharacteristic: 0x100575780, UUID = 51939BB6-A635-4B1E-903B-76CD9DFF3FAC, properties = 0x1E, value = (null), notifying = NO>
... has notify
... has read
... has write
<CBCharacteristic: 0x100575800, UUID = 786FF607-774D-49D6-80A5-A17E08823D91, properties = 0xC, value = (null), notifying = NO>
... has write
<CBCharacteristic: 0x100575880, UUID = D5D0AFFB-35B8-4FDC-A50B-F777C90293B8, properties = 0x12, value = (null), notifying = NO>
... has notify
... has read
<CBCharacteristic: 0x100575900, UUID = 6EFAB52E-3002-4764-9430-016CEF4DFC87, properties = 0x4, value = (null), notifying = NO>
<CBCharacteristic: 0x100575990, UUID = 34DFC7CB-5252-430B-BA6D-DF2FE87914E7, properties = 0x10, value = (null), notifying = NO>
... has notify
<CBCharacteristic: 0x100575a10, UUID = EBEE6F69-70B6-4BB9-B13B-9BA84953C233, properties = 0x1E, value = (null), notifying = NO>
... has write
... has notify
... has read
<CBCharacteristic: 0x100575ab0, UUID = 62DCC92F-59C2-4228-9A11-C85F18773530, properties = 0xC, value = (null), notifying = NO>
... has write
But there’s no dictionary available to get deeper information about the characteristic structure.
The hearing device is an Amplifon ampli-connect B 5 VS.
Any help or advice are appreciate.
3
Answers
Bluetooth.com no longer provides the XML viewer in their website. You need to download the profile as a PDF file.
eg:
for CGMP – https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=310501
for CGMS – https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=310502
basically, just go to https://www.bluetooth.com/specifications/gatt/ and click on the 1.0.1 number for instance.
is this what you’re looking for? The Specs / Profile?
Unfortunately, over the last couple of years, the bluetooth.com has become much more difficult to search. They’ve done away with a lot of the viewers, and you have to read PDFs. But the data is still there.
For hearing aids that support LE Audio, see the Volume Control Profile and Service. For the actual characteristic values, see the 16-bit UUID Numbers Document. For example, the Volume Control service is 0x1844 and the Volume State characteristic is 0x2B7D. See the docs for details (it’s not that complicated, but it’s not obvious, either).
Many hearing aids do not use LE Audio, however. The first I believe were released in 2014 or so. Many use HFP and/or A2DP, which Core Bluetooth provides no access to. There is no supported way to change the volume in that case. (You can play games with a hidden MPVolumeView and programmatically find the slider and move it around, and I’ve done that for some products, but I really don’t recommend it. It’s incredibly fragile and unsupported.) HFP is generally used for phone calls, and is designed for voice. A2DP provides much higher-quality audio, generally for music. Devices that support either will show up in the iPhone’s control panel automatically in most cases (depending on how the AVAudioSession is configured).
The device you’ve shown here has a bunch of 128-bit UUIDs, which strongly suggests a custom protocol, probably intended for use by an audiologist with manufacturer-provided software. Proprietary BLE protocols are very common in the earbud space (which is where I work), and from what I know of hearing aids, I expect they’re very common there as well.
I’m working myself to control volume (and many others features) of my Hearing Aid (Cochlear Nucleus) for nodejs and cordova/capacitor support.
The volume control you’re looking is at Service:
with Characteristic
From there, you can write
0x00
(lowest volume) to0xFF
(highest volume).I hope that helps. I’m also having trouble finding specifications, I only found this one by doing reverse engineer.