Windows10 で Bluetoothイヤホン が aptX で接続されているかを確認する

Windows10 の標準機能では、aptX で接続されているのか、SBC で接続されているのかを確認できない。

なんだか Bluetooth だと遅延が大きい気がするのでaptX対応のハズだけど、SBCなのか？と疑って確認方法を調べたのでメモとして残しておく。

# 参考サイト：
How to Check Which Bluetooth A2DP Audio Codec Is Used on Windows
https://helgeklein.com/blog/how-to-check-which-bluetooth-a2dp-audio-codec-is-used-on-windows/

Audio over Bluetooth: most detailed information about profiles, codecs, and devices
https://habr.com/en/post/456182/

Collecting the trace
https://gist.github.com/PatrickLang/71ef34da68c174380c8927940850db6d


#必要ソフトウェア：
Windows Performance Analyzer | Microsoft Docs
https://docs.microsoft.com/ja-jp/windows-hardware/test/wpt/windows-performance-analyzer

ADK をダウンロードして、インストーラで「Windows パフォーマンスツールキット」にチェックを入れてインストール


# 手順

##１：Bluetooth イヤホンの接続を切る

何故か私の環境ではイヤホン接続済みだとログがうまく取れないことが多かったので


##２：Powershell を管理者権限で起動

管理者権限無いとログが取れないようです

##３：ログ取得開始

PowerShell 画面で以下を実行します
やっていることは
　・マイドキュメントに移動して
　・必要なファイルを github から落としてきて
　・ログ取得を開始

```powershell
cd $env:homepath
cd Documents
wget https://github.com/Microsoft/busiotools/raw/master/bluetooth/tracing/BluetoothStack.wprp -outfile .\BluetoothStack.wprp
wpr.exe -start BluetoothStack.wprp!BluetoothStack -filemode
```

##４：Bluetooth イヤホンを接続

確認したい Bluetooth イヤホンを Windows10 に接続します


##５：音源を流す

Bluetoothイヤホンに何か音を流します。
Youtube でも 動画ファイルでも何か音をイヤホンに流します。
　・・何故か Google Meet ではうまくログが取れなかったですが。。何故だろう。。

##６：２～３分音を流したらログ取得終了

Powershell 画面で以下を実行します
（終了したら PowerShell 画面は閉じてもＯＫ）

```powershell
wpr.exe -stop trace-1.etl
```

１分程度だとうまくログが取れていないことが多かったです
２～３分より長くとると、ログが大きくなって確認に時間がかかっちゃいます


##７：Windows Performance Analyzer で取得したログを開く

マイドキュメントを開いて、保存されている trace-1.etl をダブルクリック
Windows Performance Analyzer が立ち上がって、ログを開いてくれるハズ

![WPA-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153259/c3286382-0a38-ea88-0ead-877e05488d78.png)




※ 画面キャプチャはファイル名違います。。スミマセン


##８：解析画面を開く

１．左上の System Activity をクリックすると、下にビロっと表示が広がって
２．広がった Generic Events をカチカチっとすると、右に大きく内容が表示されます
　　・・ちょっと待ったないと Generic Events は読み込み中の状態になってます

![WPA-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153259/a91cb009-ccbd-2aee-a916-84696b7efe14.png)


##９：接続 Codec を検索

開いた画面上部の虫眼鏡から検索
検索文字列に　A2dp　を入力して［Find All］を実行

![WPA-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153259/34eaa8f3-3547-e67b-a04d-3373509fe01e.png)


##１０：Codec を確認

もし SBC で接続している場合は　［ A2dpSetSbcBitrate　］ってログが出てくるようです

![WPA-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153259/0bb23742-4676-d476-4fa1-86da36cf0ace.png)

もし AAC で接続している場合は　［ A2dpSetAacBitrate　］ってログが出てくるようです
　※ キャプチャなし（手持ちに SBC、AAC のみってデバイス無かったです）

AptX で接続している場合は ［ A2dpSetAptX・・・］ って出てくれれば良いんですが、出ないようです。
　※ 手持ち環境のみの確認

代わりに ［ A2dpAvailableRemoteCodec ］ を見ると、接続デバイスで対応している Codec 一覧が出てます。
見るべきは以下３部分
・A2dpStandardcodecID(Field 2)
・A2dpVendorID(Field 3)
・A2dpVendorCodecID(Field 4)

| A2dpStandardcodecID | A2dpVendorID | A2dpVendorCodecID |Codec|
|:----------:|:-----------:|:------------:|:----------:|
|0|0|0|SBC|
|2|0|0|AAC|
|255|79|1|aptX|
|255|215|36|aptX HD|

ってことらしいです
　※ ここ情報：　https://habr.com/en/post/456182/
　※ リンク先は16進数表記になってます


検証で利用したのは Anker の Soundcore Liberty Air 2
https://www.ankerjapan.com/products/a3910
対応コーデックは　AAC / SBC / aptX　ですが、ログ内容を見ると

| A2dpStandardcodecID | A2dpVendorID | A2dpVendorCodecID |
|:----------:|:-----------:|:------------:|
|255|215|37|
|255|215|38|
|255|10|260|

と、参考サイトにはない値があります。。
でも、255 の 79 で aptX がサポートされていて、

［ A2dpStreaming ］ の行を見ると、Streaming が 255 の 79 で実行されているので　aptX で音が流れてる（Streaming）ってことでいいですよね。きっと

![WPA-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153259/2b89bbd5-4201-196c-5340-3326383a8bc7.png)


----

スッキリしない結果となりましたが、SBCではなく aptX で接続されているようで良かった。。かな
Meet で遅延を感じるのは・・相手方の誰かがなんか遅延が大きいからなのかな