Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
136 views
in Technique[技术] by (71.8m points)

ios - Why its so hard to get GATT specifications for hearing devices?

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.

question from:https://stackoverflow.com/questions/65854681/why-its-so-hard-to-get-gatt-specifications-for-hearing-devices

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...