Tekninen viite lukupiirtimen BLE-palvelun ja karakteristiikan UUID-rakenteesta, sisältäen SIG-hyväksytyt 16-bittiset ja valmistajakohtaiset 128-bittiset UUID-tunnukset.

Lähetetty: helmi 18, 2026 - 36 Näyttökerrat

Lukupiirtimen BLE-palvelun karakteristiikan UUID-suunnittelu: GATT-kaavio OID-tapauksille ja OTA-päivityksille

Kohderyhmä: Mobiilisovelluskehittäjät, sulautettujen laiteohjelmistojen vastaavat sekä brändipuolen SDK-omistajat, joiden on integroitava lukukynän BLE GATT -skeema isäntäsovellukseensa ja jotka tarvitsevat ymmärrystä siitä, mitkä karakteristiikat ovat SIG:n hyväksymiä 16-bittisiä UUID-tunnuksia (yhteensopivia) ja mitkä valmistajakohtaisia 128-bittisiä UUID-tunnuksia (omisteisia), sekä miten skeema kehittyy laiteohjelmistoversioiden välillä rikkomatta jo käytössä olevia sovelluksia.

Jokainen kahdelta tehtaaltamme vuodesta 2023 lähtien toimitettu lukukynä on mainostanut samaa BLE-palvelusignatuuria: 16-bittinen SIG:n hyväksymä Human Interface Device -palvelun UUID 0x1812 sekä valmistajakohtainen 128-bittinen palvelun UUID, jota isäntäsovellus käyttää tunnistaakseen kynän Smart Reading Pen -brändätyksi laitteeksi. Näiden palveluiden sisällä on 11 karakteristiikkaa, joista 6 on SIG:n hyväksymiä ja 5 valmistajakohtaisia. GATT-tietokanta vie 1,8 KB ROM-muistia Q6/Q8-laiteohjelmistossa 3.3.1 ja 1,4 KB F8-laiteohjelmistossa 3.1.2.

Tämä artikkeli käy läpi jokaisen UUID:n skeemassa, selittää miksi kukin niistä on SIG:n hyväksymä tai valmistajakohtainen, sekä dokumentoi säännöt, joita noudatamme laajentaessamme skeemaa uudelle OEM-asiakkaalle, jotta olemassa olevat 230+ jakelijasovellukset eivät rikkoudu.

1. Miksi GATT-skeemalla on ylipäänsä väliä

BLE-oheislaite ilman dokumentoitu GATT-skeemaa on musta laatikko. Isäntäsovelluksen täytyy arvata, mikä karakteristiikka tekee mitäkin. Kulutuselektroniikkateollisuudessa tämä on yleisin syy ”sovellus ei löydä kynää” -tukipyyntöihin. Yli 47 000 toimitetun yksikön joukossa skeemaan liittyvät tukipyynnöt ovat pudonneet 4,2 %:sta kaikista tukipyynnöistä vuonna 2023 vain 0,7 %:iin vuonna 2026, pääasiassa siksi, että toimitamme nyt jäädytetyn skeeman versioiduilla laajennuksilla.

Q6/Q8-laiteohjelmiston 3.3.1 käyttämä skeema on GATT-skeema v3.0, viimeksi päivitetty 2025-11. Edellinen v2.x-skeema toimitettiin K7/KF1-laiteohjelmistossa 1.9.5. v2.x:ää vastaan kirjoitetut sovellukset toimivat edelleen v3.0:aa vasten, koska lisäämme vain karakteristiikkoja, emme koskaan poista niitä, emmekä koskaan muuta karakteristiikan UUID-tunnusta.

2. Ylätason palvelurakenne

Kynä mainostaa kolmea palvelua ensisijaisten palveluiden listassaan:

Palvelu UUID Tyyppi Pakollinen
Generic Access 0x1800 SIG 16-bittinen Kyllä
Generic Attribute 0x1801 SIG 16-bittinen Kyllä
Human Interface Device 0x1812 SIG 16-bittinen Kyllä
Smart Reading Pen Vendor Service 8E0C0001-7B3C-4F8E-9F4D-2C8B5A1E0001 Valmistajakohtainen 128-bittinen Kyllä
Battery Service 0x180F SIG 16-bittinen Kyllä
Device Information 0x180A SIG 16-bittinen Kyllä

Generic Access (0x1800) ja Generic Attribute (0x1801) ovat pakollisia jokaisella BLE-oheislaitteella. Ne tarjoavat laitteen nimen, ulkonäön ja palvelumuutosindikaation. Human Interface Device (0x1812) on HOGP-palvelu, joka välittää OID-painallusraportit. Vendor Service sisältää omisteiset karakteristiikkamme. Battery (0x180F) ja Device Information (0x180A) ovat SIG:n standardoimia palveluita, joita jokainen isäntäalusta odottaa.

Kynä mainostaa koko ensisijaisten palveluiden listan yhdessä AD-paketissa, kun MTU sen sallii. F8:ssa (BLE 5.1, MTU 247) kaikki kuusi mahtuvat mukaan. Vanhemmissa K7/KF1-radioissa (MTU 23) AD-pakettiin mahtuu vain kaksi, ja loput isäntä löytää palveluiden haun kautta.

3. HID-palvelun (0x1812) karakteristiikat

HID-palvelu tarjoaa kuusi karakteristiikkaa:

Karakteristiikka UUID Ominaisuudet Huomautukset
HID Information 0x2A4A Luku bcdHID, bCountryCode, liput
Report Map 0x2A4B Luku Deskriptorikokoelma TC-058:sta
Protocol Mode 0x2A4E Luku, Kirjoitus Report vs Boot
HID Control Point 0x2A4C WriteWithoutResponse Keskeytä / Jatka
Raportti (Viite 1) 0x2A4D Notify, Write, WriteWithoutResponse OID-painallusraportti
Raportti (Viite 2) 0x2A4D Notify Audion VU-mittari

Yhtä UUID:a 0x2A4D käytetään uudelleen kahdelle raportille, koska HID-palvelu sallii useita Report-ominaisuuksia, jotka tunnistetaan niiden Report Reference -kuvaimen avulla. Q6/Q8-malleissa käytämme kahta Report-ominaisuutta: ensimmäinen on TC-058:ssa kuvattu OID-painallusraportti, ja toinen on audion VU-mittari (isäntäsovellus käyttää sitä pienen VU-ilmaisimen näyttämiseen TTS-toiston aikana).

4. Valmistajakohtaisen palvelun ominaisuudet

Valmistajakohtaisen palvelun UUID on 8E0C0001-7B3C-4F8E-9F4D-2C8B5A1E0001. 128-bittinen UUID luotiin SHA-1-tiivisteellä yhtiömme nimestä ja kiinteästä etuliitteestä. Valmistajakohtaisen palvelun sisällä on viisi ominaisuutta:

Ominaisuus UUID Ominaisuudet Käyttötarkoitus
Brändin tunniste 8E0C0002-7B3C-4F8E-9F4D-2C8B5A1E0001 Read Pysyvä 4-tavuinen bränditunniste
Sanakirjan tila 8E0C0003-7B3C-4F8E-9F4D-2C8B5A1E0001 Read, Notify Parhaillaan ladattu kielipaketti
Audion hallinta 8E0C0004-7B3C-4F8E-9F4D-2C8B5A1E0001 Write Äänenvoimakkuus, mykistys, EQ-esiasetus
Telemetria 8E0C0005-7B3C-4F8E-9F4D-2C8B5A1E0001 Notify, Indicate Lokitiedot, virhekoodit
OTA-hallinta 8E0C0006-7B3C-4F8E-9F4D-2C8B5A1E0001 Write, Indicate Laiteohjelmistopäivityksen käynnistys

Kukin ominaisuus noudattaa SIG-käytäntöä: 128-bittinen UUID, jossa on yhteinen etuliite (8E0C0000-7B3C-4F8E-9F4D-2C8B5A1E0000) ja 16-bittinen ilmentymän tunniste. Ilmentymän tunnisteen 4 viimeistä tavua koodaavat ominaisuuden numeron. Tämä tekee UUID:ista visuaalisesti helposti selattavia BLE-skannaussovelluksessa.

5. Akkupalvelu (0x180F)

Akkupalvelu tarjoaa yhden ominaisuuden:

Ominaisuus UUID Ominaisuudet Käyttötarkoitus
Akun varaustaso 0x2A19 Read, Notify 0–100 % varaus

Kynä mainostaa akun varaustasoa 1 Hz:n taajuudella Q6/Q8-laiteohjelmistolla 3.3.1. ADC-näyte keskiarvoistetaan 4 näytteen yli kohinan poistamiseksi. Yli 5 %:n muutos käynnistää välittömän ilmoituksen; pienemmät erot kootaan 1 Hz:n jaksotettuun ilmoitukseen. Isäntäsovellus voi myös tehdä manuaalisen lukukyselyn.

Huomaa, että akun ominaisuuden arvo on prosentteina, ei millivoltteina, SIG-määrityksen mukaisesti. Millivolttiluennat tarjotaan erillisen valmistajakohtaisen ominaisuuden 8E0C0010-7B3C-4F8E-9F4D-2C8B5A1E0001 kautta suunnitteludiagnostiikkaa varten.

6. Laitetietopalvelu (0x180A)

Laitetietopalvelu tarjoaa:

Ominaisuus UUID Ominaisuudet Arvo Q6/Q8:ssa
Valmistajan nimi 0x2A29 Read "Smart Reading Pen Mfg Co."
Mallinumero 0x2A24 Lue "Q8"
Sarjanumero 0x2A25 Lue Perusyksikön 12-merkkinen ASCII
Laitteistoversio 0x2A26 Lue "Rev. D"
Laiteohjelmistoversio 0x2A26 Lue "3.3.1"
Ohjelmistoversio 0x2A28 Lue "Build 8642"
Järjestelmätunnus 0x2A23 Lue OUI + perusyksikön UUID

Mallinumero-ominaisuutta käyttää isäntäsovellus ladataakseen oikean käyttöliittymäteeman. Emme sijoita tähän henkilötietoja (ei MAC-osoitetta järjestelmätunnuksessa; järjestelmätunnus on yrityksen OUI ja perusyksikön satunnainen UUID).

7. Isäntäsovelluksen noudattama etsintämenettely

Hyvin käyttäytyvä isäntäsovellus noudattaa tätä järjestystä:

  1. Etsi mainospakettia, jonka palveluiden UUID-luettelossa on 0x1812.
  2. Muodosta yhteys 15 ms yhteysvälillä, 0 ms orjan viiveellä ja 4 s valvonta-ajalla.
  3. Pyydä MTU-vaihtoa; hyväksy enintään 247.
  4. Hae kaikki ensisijaiset palvelut.
  5. Hae kullekin palvelulle kaikki ominaisuudet.
  6. Lue kullekin ominaisuudelle Characteristic Presentation Format -kuvaaja.
  7. Tilaa ilmoitukset arvoille 0x2A4D (OID-painallus) ja 8E0C0005 (telemetria).
  8. Lue akun varaustaso (0x2A19) ja laitetiedot.

Huonosti käyttäytyvä sovellus muodostaa yhteyden oletusparametreilla ja yrittää heti kirjoittaa. Näemme tämän 14 %:ssa ensimmäisen osapuolen isäntäsovelluksista. Tuloksena on, että yhteyden vakiintuminen kestää noin 3 s noin 300 ms sijaan. Laadunvarmistuspisteemme palkitsee sovellukset, jotka noudattavat menettelyä.

8. Skeeman laajennuskäytäntö

Laajennamme GATT-skeemaa kolmen säännön mukaisesti:

  1. Älä koskaan poista ominaisuutta. Kun UUID on kerran toimitettu tuotantolaiteohjelmistossa, se pysyy skeemassa alustan koko elinkaaren ajan. Vanhat sovellukset jatkavat sen lukemista ja jättävät arvon huomiotta.
  2. Älä koskaan muuta UUID:tä. UUID on 128-bittinen tunniste. Sen muuttaminen rikkoo jokaisen sovelluksen, joka on tallentanut sen.
  3. Lisää uudet ominaisuudet seuraavaan vapaaseen instanssitunnukseen. Toimittajapalvelulla on 256 instanssitunnusta varattuna (0x0001–0x0100). Kun lisäämme uuden ominaisuuden, valitsemme seuraavan vapaan tunnuksen ja kasvatamme skeeman pikkuversiota.

Skeema v3.0 (nykyinen) käyttää instanssitunnuksia 0x0001–0x0010. Skeema v4.0 (suunniteltu L5-laiteohjelmistoon 4.3.0) käyttää instanssitunnuksia 0x0011–0x0020 uusille luokkahuonetilan telemetriaan liittyville ominaisuuksille.

9. Suorituskyky: etsintäaika

Vaihe Aika Q6/Q8 Aika F8 Aika K7/KF1
Yhteys ensimmäiseen palveluun 95 ms 110 ms 145 ms
Kaikki palvelut löydetty 280 ms 330 ms 520 ms
Kaikki ominaisuudet löydetty 410 ms 490 ms 880 ms
CCCD-kuvaajien luku 220 ms 280 ms 480 ms
MTU-vaihto 38 ms 42 ms 65 ms
Ensimmäisen parin kokonaisaika 1.04 s 1.25 s 2.1 s

Isäntäsovellus, joka suorittaa kaiken tämän alle sekunnissa, on ”nopea”; 1,5 s on ”normaali”; yli 2 s on ”heikko”. Kaikki 38 sisäistä iOS-/Android-/Windows-viitesovellustamme sijoittuvat alle 1,5 sekuntiin.

10. Mallien välinen skeemaero

Ominaisuus Q6/Q8 F8 K7/KF1 L5 T2/Y6 P2
HID 0x2A4D (OID) Kyllä Kyllä Kyllä Kyllä Kyllä Kyllä
HID 0x2A4D (VU) Kyllä Ei Ei Kyllä Kyllä Ei
Akku 0x2A19 Kyllä Kyllä Kyllä Kyllä Kyllä Kyllä
Brändin tunnus 8E0C0002 Kyllä Kyllä Kyllä Kyllä Kyllä Kyllä
Sanakirjan tila 8E0C0003 Kyllä Kyllä Kyllä Kyllä Kyllä Kyllä
Ääniohjaus 8E0C0004 Kyllä Ei Ei Kyllä Kyllä Ei
Telemetria 8E0C0005 Kyllä Kyllä Kyllä Kyllä Kyllä Kyllä
OTA-ohjaus 8E0C0006 Kyllä Kyllä Kyllä Kyllä Kyllä Kyllä
Valmistajan ääni VU 8E0C0007 Kyllä Ei Ei Kyllä Kyllä Ei
Valmistajan testitila 8E0C0008 Kyllä Kyllä Ei Kyllä Kyllä Ei
Valmistajan luokkahuonetila 8E0C0009 Ei Ei Ei Kyllä Kyllä Ei

Vain mallit L5, T2 ja Y6 sisältävät luokkahuonetilan ominaisuudet, koska näitä malleja myydään koulutuskanavaan. K7/KF1 on yhden käyttäjän kotikäyttöön tarkoitettu kynä, joten luokkahuoneominaisuudet puuttuvat siitä.

11. Laiteohjelmistoversioiden välinen skeemaero

Laiteohjelmisto Skeemaversio Lisäys Poisto Yhteensopiva
K7 1.9.0 2.0 — — Skeema 2.0
K7 1.9.5 2.1 8E0C0006 OTA — Skeema 2.0, 2.1
F8 3.1.0 2.5 8E0C0007 VU — Skeema 2.5
F8 3.1.2 2.5.1 — — Schema 2.5
Q6/Q8 3.3.0 3.0 8E0C0008 Test — Schema 3.0
Q6/Q8 3.3.1 3.0 — — Schema 3.0
L5 4.2.0 3.1 8E0C0009 Classroom — Schema 3.1
T2/Y6 2.6.4 3.1 — — Schema 3.1

Schema on taaksepäin ja eteenpäin yhteensopiva: Schema 2.0:aa vastaan kirjoitettu sovellus voi muodostaa yhteyden kynään, jossa on Schema 3.1 -laiteohjelmisto, ja lukea kaikki Schema 2.0 -ominaisuudet; uudet ominaisuudet ohitetaan yksinkertaisesti.

12. Brändikohtaisten UUID-tunnusten varaaminen

ODM-asiakas voi pyytää brändikohtaisia ominaisuuksia. Varaamme ne alueelta 0x0100–0x01FF. Asiakas valitsee tältä alueelta 16 instanssitunnusta, ja me rekisteröimme ne GATT-skeeman manifestiin. Manifesto on YAML-tiedosto laiteohjelmistovarastossa; se sisältää luettelon kaikista instanssitunnuksista, ominaisuuden nimen, ominaisuusbitin, koon ja alkuarvon. CI epäonnistuu, jos kaksi asiakasta pyytää samaa instanssitunnusta.

Q6/Q8-laiteohjelmiston 3.3.1 manifestissa on 318 tällä hetkellä varattua brändikohtaista aluetta. Voimme ottaa vastaan 13 lisää ennen kuin 0x0100–0x01FF-alue loppuu ja meidän on laajennettava alueeseen 0x0200.

13. GATT-tietokannan pakkauskikka

GATT-tietokanta voidaan litistää 1,8 KB:n möykyksi ROM-muistiin. Käyttämämme muoto:

[uint16 service_count]
jokaiselle palvelulle:
  [uint16 service_uuid_type] [128-bit UUID]
  [uint16 characteristic_count]
  jokaiselle ominaisuudelle:
    [uint16 char_uuid_type] [128-bit UUID]
    [uint8 properties]
    [uint8 value_size]
    [uint8 descriptor_count]
    jokaiselle deskriptorille:
      [uint16 desc_uuid_type] [128-bit UUID]
      [uint8 payload_size] [payload]

Möykky luodaan laiteohjelmiston rakennusaikana Python-skriptillä, joka lukee YAML-manifestin. Kokonaiskustannus ROM-muistissa on 1 824 tavua Q6/Q8-laiteohjelmistossa 3.3.1. F8 säästää 384 tavua yhdistämällä HID-palvelun 5 ominaisuuteen 6 sijaan (ei Audio VU:ta).

14. Jokaiselle skeemalle ajettava validointipaketti

Tarkistus Työkalu Hyväksymiskriteeri
UUID:n yksilöllisyys Python CI -skripti Ei kaksoiskappaleita UUID-tunnuksia manifestissa
Skeeman taakse- ja eteenpäin yhteensopivuus Mukautettu Python-kehys Schema N+1 voidaan jäsentää skeemana N
Havaitsemisaika Saleae + Wireshark Alle 1,5 s Q6/Q8:lla
Akun ilmoitustaajuus Logiikka-analysaattori Täsmälleen 1 Hz ±5 %
OTA-ominaisuus CI-skripti OTA-ominaisuus on kaikissa tuotannon laiteohjelmistoissa

Skeema, joka ei läpäise jotakin näistä tarkistuksista, hylätään. Vuodesta 2023 lähtien 86 laiteohjelmistojulkaisusta 4 on hylätty tässä portissa.

GATT Database Size (bytes)

16. Aiheeseen liittyvää luettavaa


Pyydä tarjous – saat nopean vastauksen tehtaalta

Frequently Asked Questions

Voinko käyttää eri vendor-palvelun UUID:ta kuin 8E0C0001-...0001?
Vain jos olet valmis forkkaamaan laiteohjelmiston ja toimittamaan brändilukitun SKU:n. Emme suosittele tätä, koska kaikki olemassa olevat isäntäsovellukset suodattavat täsmälleen tällä 128-bittisellä UUID:lla erottaakseen Smart Reading Pen -laitteen yleisistä BLE-oheislaitteista. Eri UUID tekee kynästä näkymättömän olemassa oleville 230+ jakelijasovelluksille.
Mikä on suurin ominaisuuksien (characteristics) määrä, jonka kynä voi tuoda esiin?
Teoriassa 65 535 per palvelu. Käytännössä GATT-blokin ROM-budjetti Q6/Q8-malleissa on 2,4 KB ja käytämme tällä hetkellä 1,8 KB, joten tilaa jää noin 80 lisäominaisuudelle 8 tavun koossa. Lisäys on build-aikainen päätös.
Tukeeko kynä GATT Caching -ominaisuutta (BT 5.1)?
Kyllä. Q6/Q8-laiteohjelmisto 3.3.1 ja L5-laiteohjelmisto 4.2.0 tukevat BT 5.1:ssä esiteltyä GATT Caching -ominaisuutta. Tietokannan hash näytetään Generic Attribute -palvelussa. F8-mallissa (BT 5.1) hash lasketaan, mutta sitä ei näytetä, koska BLE-pino ei tue Change-Aware Client -ominaisuutta.
Miten lisään brändikohtaisen ominaisuuden (characteristic)?
Lähetä pyyntö myyntiyhteyshenkilöllesi, joka sisältää: ominaisuuden nimen, ominaisuudet (properties), arvon koon ja yhden rivin kuvauksen. Suunnittelutiimimme allokoi 16 instanssitunnusta väliltä 0x0100-0x01FF, rekisteröi ne YAML-manifestiin ja toimittaa laiteohjelmistopäivityksen 6 viikon kuluessa. MOQ on 3 000 yksikköä per SKU.
Miksi Audio Control -ominaisuus on vendor-define eikä SIG Audio Input Control (0x1843)?
SIG Audio Input Control Service on suunniteltu kuulokkeille mikrofonin reititystä varten. Lukukynän audio-ohjaus on volume/EQ/mute-esiasetus, joka ei sovi SIG-palvelumalliin. Määrittelimme oman 4-tavuisen ohjausformaatin. Katso TC-024 audiovahvistimen suunnittelua varten.
Ostoskorisi
Sivustomme käyttökokemus paranee evästeiden ansiosta. Evästekäytäntö
Chat on WhatsApp