【紹介動画も公開中】ムセンコネクト著書『Bluetooth無線化講座―プロが教える基礎・開発ノウハウ・よくあるトラブルと対策―』絶賛発売中

【実例から学ぶ】Bluetoothの16-bit UUIDsの取得方法

こんにちは、ムセンコネクトの三浦です。

現在、ムセンコネクトでは新しいプロジェクトをスタートしています。
(プロジェクトの中身は後ほど発表したいと思います。)

新しいプロジェクトでは16-bit UUIDsが重要な役割をすることになっています。
ということで、今回はBluetooth SIGの16-bit UUIDsを取得したときの実例を紹介したいと思います。

【注意事項】

ムセンコネクトが16-bit UUIDsを取得したのは2023年3月です。最新のBluetooth SIGのホームページでは取得の手順が変わっている可能性がありますのでご注意ください。

目次

16bit UUIDとは

16-bit UUIDsは、Bluetooth SIGによってSIGメンバー企業に割り当てられる固有の短縮されたUUIDです。
SIGメンバー企業がBluetooth SIGに申請すると16-bit UUIDsを購入(取得)することができます。

SIGメンバー企業が必ず取得しなければならないというものではありません。
実際に16-bit UUIDsが必要になるケースは少ないと思います。

Bluetooth SIGでは「16-bit UUIDs」と呼んでいますが、エンジニアは数字と「bit」の間にハイフンがあるのに若干違和感があるようです。
他のWebページなどでは「16bit UUID」と記載されることの方が多く、私も違和感を持ってしまう一人なので、以降は「16bit UUID」と呼ばせていただこうと思います。

「16bit UUID」はその名の通り16bit(2byte)の番号になります。
下記のサイトから確認したり、申請することができます。

そもそもUUID(Universally Unique Identifier)は、国際電気通信連合 (ITU)によって定義された128bit(16byte)の番号です。
誰でも自分で生成して、自社の製品に使うことができます。
正しいプロセスでUUIDを生成した場合、他の誰かが生成したUUIDとかぶることはないとされています。

他と重複しない一意な値ということで便利なUUIDですが、Bluetooth通信の中で「128bitでは長すぎて使いづらい」 ということがあります。

Bluetooth SIGの標準のプロトコルやサービスではこのUUIDを特別に16bitに短縮して利用します。Bluetooth SIGは16bitに短縮したUUIDを、重複して割り当ててしまわないように管理しています。

この16bitに短縮したUUIDは、Bluetooth SIGのメンバーが申請して費用を支払うと、特別に割り当ててもらうことができます。空いている番号を勝手に使うことは許されていません。

128bit-UUID(短縮していないUUID)

     00002AC6-0000-1000-8000-00805F9B34FB

32bit-UUID(32bitに短縮したUUID)

     00002AC6

16bit-UUID(16bitに短縮したUUID)

     2AC6

16bit UUIDは0x0000~0xffffの2バイトの数字となっています。

割り当て済みのUUIDのほとんどはBluetooth SIGが標準化のために割り当てたものです。ベンダー企業が申請して割り当てられた番号は0xFCBF~0xFEFFの241個となっています。(2023年3月時点)

16bit UUIDはBluetooth Low Energyのアドバタイズデータで使う場面が多いと思います。ベンダー企業がアドバタイズに自由にデータを載せて発信する用途に利用します。

Google社のEddystoneというビーコン規格でも利用されています。

16bit UUIDの利用

16bit UUIDを利用するシーンとして、Bluetooth Low Energyのアドバタイズがあります。

アドバタイズはAD Structureという複数の情報を含むことができますが、AD StructureとしてService Data(0x16)というAD Typeを選択した場合に、取得した16bit UUIDをデータフォーマットに設定します。

Service Data(0x16)はベンダーが自由に情報を設定できるデータタイプなので、各社のデータが混在しないようにユニークな16bit UUIDを含めて区別することになっています。

実は、Service Dataは128bit UUIDを利用することもできます(その場合は0x21を使います)。
31byteしかないアドバタイズデータ領域のうちUUIDだけで16byte(128bit)も使ってしまう為、送れるデータ量がかなり少なくなってしまいます。アドバタイズは常に発信する電波ですので、できるだけ送信するデータ量を減らして省電力に設計するのが鉄則です。16byte(128bit)もの余計なデータを常に発信するのはもったいない、ということで2byte(16bit)で済む16bit UUIDを活用するわけです。

Service Dataの使用例(Eddystoneのデータフォーマット)

よくある質問

本記事の作成者の見解です。

16bit UUIDはどのような時に必要になりますか?

アドバタイズデータの中に独自のデータ内容を含めたい場合に、Company IDを取得することが多いです。
Company IDを利用しても、アドバタイズデータの中に独自のデータ内容を含めることが出来ますが、大きな企業ではCompany IDの取得や管理が難しく利用しづらい場合があります。
16bit UUIDであればその製品やプロジェクトで取得するなど、ある程度小さな単位でも利用することが出来ます。

16bit UUIDを取得したら、データフォーマットや使い方を公開しなければならいないのでしょうか?

16bit UUIDを取得したからといって、データフォーマットや使い方を公開する必要はありません。
Eddystoneのようにデータフォーマットを公開して、世の中に広く使ってもらう場合もあります。

16bit UUIDの申請手順

ここからは、16bit UUIDを取得するまでの手順について記載します。(2023年3月時点)

申請の準備

Bluetooth SIG「Assigned Numbers(割り当て番号)」のページにアクセスします。

My Blue(Bluetooth SIGのアカウント)にログインした状態で「割り当て番号のサポート」ボタンをクリックします。

Assigned NumbersのHelp & Supportページが表示されます。

スクロールさせるとページの中盤に16bit UUIDの記述があります。

Googleさんに翻訳してもらいます。

 利用規約のPDFファイルへのリンクがあります。同意できる内容か確認しましょう。

申請の開始

それでは実際に申請の手続きをしていきたいと思います。

16bit UUIDのこの記載の中に「Bluetooth Support」のリンクがあるのでクリックします。

※2023年5月2日記述

どうもBluetooth SIGのこのリンクが間違っているのではないかと思います。
このページの16bit UUIDの記述の手前にCompany Identifiersの記述があります。その中の「How to request a Company Identifier」に記載がある「Bluetooth Support」をクリックしてみましょう。
「Submit a request」のページが表示されます。

申請内容の入力

“Description“欄には何を入力したら良いか迷うところですが、「Requesting Assigned Numbers」のページに記載されている1~6の内容に回答するようにしました。
翻訳サイトの力を借りながら英語で記載します。

確認メールの受信

Bluetooth SIGから自動応答で申請を受け付けた旨の確認メールが届きました。
この後サポートスタッフによる確認があるようです。


1日程度で受理されて、Bluetooth SIGのスタッフから以下のようなメールが届きました。

ご応募を完了していただきありがとうございます。支払いを行うには以下の手順に従ってください。
1.www.bluetooth.comにログインします。
2.Bluetooth SIG UUID 利用規約を確認し、署名します。
3.署名済みの使用条件のコピーをこのサポート チケットに添付します。
4.Bluetooth 製品ライセンス ページにアクセスします。
5.[製品] ドロップダウン メニューから[16 ビット UUID]を選択します。
6.[パッケージ ライセンス] ボックスから 1 つまたは 2 つの 16 ビット UUID を注文に追加します。
7.[注文の詳細] ボックスから[注文の表示と処理]を選択します。
支払いが完了すると、Bluetooth SIG スタッフが購入した UUID を提供し、UUID と関連する会社名を Bluetooth 割り当て番号ドキュメントに公開します。

申請の続き

My Blueの メニューから「My Support Requests」を選択します。

このフォームから、Bluetooth SIGの担当者とメッセージのやり取りができるようです。

メールと同じ内容が記載されています。
2項にUUIDの使用規約のPDFへのリンクが記載されていました。
使用規約の最後にサイン欄があるのでサインして、スキャンしたPDFファイルをSIGの担当者に送りました。

4項のリンクから、支払いのページに進むことができます。

Select LicenseのProductsのドロップダウンリストから「16-bit UUID」を選択します。

「One (1) 16-bit UUID $3,000」を選択します。

オーダー内容を確認し「View and Process Order」をクリックします。

EULA Signerに自分の名前が選択された状態で「Check Out」をクリックします。

「□ Accept the Terms of: Bluetooth-SIG-UUID-Terms-of-Use.pdf」にチェックし、「I Accept」をクリックします。

ようやく支払いの画面になりました。
クレジットカード番号など、必要事項を記入します。

無事に支払いが完了しました。

 Bluetooth SIGのスタッフからは2~5営業日で16bit UUIDが割り当てられるとのことでしたが、実際には1日程度で割り当てられ、取得できた16bit UUIDの番号をメールにて教えてくれました。

後日、Bluetooth SIGのAssigned Numbersの資料にも取得したUUIDの番号が反映されました。

よろしければシェアをお願いします
目次