見出し画像

WindowsからワイヤレスヘッドホンでaptX HDやLDAC再生する方法(仮想BTトランスミッター 仮)

たぶんずっと暫定版。自分用のメモの残骸desu。

他の方法

有料のAlternative A2DP Driverを購入して使えば簡単にWindowsでLDAC、aptX HD、SBC(XQ)接続が出来ます。体験版があるので5分位でインストールして再起動して設定して試せます。体験版導入後7日以内?なら6ドルで購入出来ます。
私も購入して使っていますが超おすすめです。この記事の手順は…orz

詳しい方法はMasatakaさんのインストールと設定のブログがわかりやすいです。


目的

現時点(2022/09)ではWindows11/10でBluetoothワイヤレスオーディオを接続するとSBC/AAC(Win11)/aptXのみでaptX HD/LDACコーデックでの接続が出来ないのでBTトランスミッターを買わずにUSB BluetoothアダプタでなんとかしてLDAC接続aptX HD接続したい。ついでにSBCの音質向上も。

この様な感じで動作

Windows→仮想サウンドデバイスからPCMデータをLANへマルチキャスト(Port4010)→家内LAN→仮想PCのUbuntu→レシーバーアプリ→Pulseaudioへ再生→Bluetoothヘッドホンに指定のA2DPコーデックで送信して再生。
電波状況が良くないと途切れることがあるのでPCと同じ部屋で聴くのを推奨

注意事項

・以下の構築手順はパソコン中級者以上想定で記述しています。
セキュアブートが無効 または レジストリの追加が必須
・セキュリティ対策等は考慮していないので自己責任で。
・Linux関連の箇所はよく理解せずに転記しているのでメモ扱いということで…

必要環境

PC:
・Windows11 / 10 (運用時:メモリ 2GB、ディスク容量 20GB 使用)
USB Bluetoothアダプタ:
Linuxで認識する USB Bluetoothアダプタ(BT4.0以上)
 アマゾンで購入したUSB-BT5.0アダプタ(RTL8761Bチップ)を使用。
ソフトウェア:
※商用利用や再配布しなければ個人で使うには大丈夫そうです。
・仮想PC VMware Workstation 16 Player(非営利目的で個人的に利用する場合は無償)
・仮想ネットワークサウンドカード Scream(使用無料:Ms-PLライセンス)
・Linux Ubuntu 22.04 ja(使用無料:GPLとその他ライセンス)
想定作業時間:
・1時間~2時間

Windowsの設定

Screamの導入

セキュアブートの無効化 または レジストリの追加 を行う
手順:Download and install
https://github.com/duncanthrax/scream#download-and-install

仮想サウンドデバイスのScreamのScream4.0.zipを以下からダウンロード
https://github.com/duncanthrax/scream/releases

Scream4.0.zipファイルを解凍して Install-x64.bat  を管理者として実行してインストール
・仮想サウンドデバイス Scream(WDM) がインストールされる

Vmware Workstation 16 Playerの導入

VMware Workstation Player 16を以下ページ最下部のダウンロードから入手
・VMware Workstation 16.2.3 Player for Windows 64-bit Operating Systems
https://www.vmware.com/jp/products/workstation-player.html

ダウンロードしたVMware Workstation 16 Playerをインストール
・起動時の更新確認とエクスペリエンス参加はお好みで。

物理LANデバイスの優先設定

物理LANデバイスのインターフェイスメトリックを2に変更して最優先になるように設定

手順:Change Network Adapter Priorities in Windows 10
https://www.ghacks.net/2016/12/02/change-network-adapter-priorities-in-windows-10/

再起動

Windowsを再起動後に仮想サウンドデバイスが止まらなければOKです。
・動かない場合、音量等を変更すると固まります。

仮想サウンドデバイスの設定

仮想サウンドデバイスのサンプルレートとビット深度を 24ビット, 96000 Hzに設定
仮想サウンドデバイスを規定に設定

☆☆☆ Windowsでの設定はここまでで終了です ☆☆☆

Ubuntu 22.04の設定

USB Bluetoothアダプタを外す

PCにUSB Bluetoothアダプタを接続している場合は外しておきます

Vmware Workstation 16 にubuntu 22.04 ja の導入

Ubuntu22.04のISOファイル(ubuntu-ja-22.04-desktop-amd64.iso)を以下リンクからダウンロード
https://www.ubuntulinux.jp/download/ja-remix

スタートメニューからVmware Workstation 16 Player(以下VMware)を起動
初回起動の選択肢で「非営利目的で…」を選択して「続行」「完了」
VMwareが起動したら「新規仮想マシンの作成」ボタン押下
作成ウィザードへようこそ:イメージファイルを選択してダウンロードしたisoファイルを指定して「次へ」
簡易インストール情報:4箇所に入力して「次へ」
仮想マシン名の名前:仮想マシン名の入力とフォルダを選択(空き20GB必要)して「次へ」
ディスク容量の指定:そのまま「次へ」
仮想マシンを作成する準備完了:「完了」ボタン押下
「サイドチャンネルの暖和~」が表示された場合は「今後、このヒントを表示しない」をチェックして「OK」押下

~ Ubuntuの自動インストールが開始されるので放置して待つ (10分位で完了)~
※自動インストールされない場合は適当に次へを押して進める。
Ubuntuのログイン画面が表示されたら右上の電源オフから電源をオフします。
取り外し可能デバイスの表示は「OK」押下。VMwareが終了します。

仮想マシン設定の編集

スタートメニューからVMwareを起動します。
作成した仮想マシンを選択して「仮想マシン設定の編集」押下

ハードウェア
・メモリの「この仮想マシンのメモリ」を 2048 に変更
・CD/DVD2 (SATA)の「起動時に接続」のチェックを外す
・CD/DVD (SATA)の「起動時に接続」のチェックを外す
・フロッピーの「起動時に接続」のチェックを外す
・ネットワークアダプタの「NAT」を「ブリッジ」に変更して「アダプタの設定」ボタン押下
ブリッジの自動設定:LANに接続している物理ネットワークアダプタのみチェックして「OK」押下
ハードウェア
・USBコントローラの「すべてのUSB入力デバイスを表示する」をチェック
・USBコントローラの「Bluetoothデバイスを仮想マシンと共有」のチェックを外す
・サウンドカードの「起動時に接続」のチェックを外す
・ディスプレイの「3Dグラフィックスのアクセラレーション」のチェックを外す
・「OK」ボタン押下

「仮想マシンの再生」押下でUbuntuを起動します。
Ubuntuのログイン画面が表示されたらユーザー名をクリックしてログインします。

Ubuntuの初回設定と更新

初回ログイン時に表示されるので以下を設定
オンラインアカウント:「スキップ」
Ubuntuの改善を支援:「いいえ」「次へ」
Ubuntuへようこそ:「次へ」
準備完了:「完了」

Ubuntuの更新

「ソフトウェアの更新」が表示されるまで1分位待つ。
表示されたら「今すぐインストール」押下で更新を行う(5分位)
再起動の確認が表示されたら「すぐに再起動」押下で再起動する。
再起動後、ログイン画面が表示されたらログインする

Bluetoothのapt-X HDとLDAC対応の追加

デスクトップ左下の「アプリケーション表示する」から「端末」を起動

端末で下記コマンドを入力(コピペ)して実行。パスワード入力があれば入力

sudo apt install -y gstreamer1.0-plugins-bad

続行しますか?が表示されたら、Enterキー押下で続行。

Pulseaudioの設定

sudo nano /etc/pulse/daemon.conf

nice-level = -20
default-fragments-size-msec = 5
default-sample-format = s24le
default-sample-rate = 96000
上書き保存して閉じる。

PulseAudio 音量調節 をインストール
UbuntuSoftwareを起動。
検索から PulseAudio 音量調節 をインストール

コンパイル用 cmake 導入

端末からコマンドを入力

sudo apt install cmake

続行しますか? [Y/n]が表示されたらEnterキー押下で続行。

Screamレシーバーをコンパイル

sudo apt-get install libpulse-dev

続行しますか? [Y/n]が表示されたらEnterキー押下で続行。
Pulseライブラリがインストールされる

以下のページをFirefoxで開いてScreamのソースファイル( scream-4.0.tar.gz )をダウンロード 
https://github.com/duncanthrax/scream/releases

ダウンロードが出来たらFirefoxは閉じる

scream-4.0.tar.gzファイルを開いて /scream-4.0/Receivers/unix/ フォルダをホームに展開して ScreamR にリネーム

端末からコマンドを入力

cd ScreamR
cmake .

以下が表示される

dashi@ubuntu:~$ cd ScreamR/
dashi@ubuntu:~/ScreamR$ cmake .
-- The C compiler identification is GNU 11.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2") 
-- Checking for module 'libpulse-simple'
--   Found libpulse-simple, version 15.0
-- Checking for module 'alsa'
--   No package 'alsa' found
-- Checking for module 'jack'
--   No package 'jack' found
-- Checking for module 'soxr'
--   No package 'soxr' found
-- Checking for module 'libpcap'
--   No package 'libpcap' found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dashi/ScreamR

端末からコマンドを入力

make

以下が表示される

dashi@ubuntu:~/ScreamR$ make
Scanning dependencies of target scream
[ 16%] Building C object CMakeFiles/scream.dir/scream.c.o
[ 33%] Building C object CMakeFiles/scream.dir/network.c.o
[ 50%] Building C object CMakeFiles/scream.dir/shmem.c.o
[ 66%] Building C object CMakeFiles/scream.dir/raw.c.o
[ 83%] Building C object CMakeFiles/scream.dir/pulseaudio.c.o
[100%] Linking C executable scream
[100%] Built target scream

実行ファイル scream が作成される。

Ubuntuを再起動
一度Ubuntuを再起動します。

BTアダプタとBTヘッドホンの接続

USB Bluetoothアダプタを接続

PCにUSB Bluetoothアダプタを接続します。

VMwareウィンドウの左上の「Player」→「取り外し可能デバイス」→(接続したBTアダプタの名称)→「接続(ホストから切断)」をクリック

USBデバイスがホストから切断され~」が表示されたら「OK」押下「次のデ
バイスは、ステータスバーを使用して~」が表示されたら「OK」押下

Bluetoothオーディオデバイスを接続

デスクトップ左下の「アプリケーション表示する」から「設定」を起動
左リスト:Bluetoothをクリックして表示する。

Bluetoothがオンになっているのを確認する。オフになっている場合はオンにする。
なおBTアダプタがUbuntuで認識出来ていない場合はUbuntu未対応かドライバが必要なので頑張ってなんとか認識させる。(^_^)/

BTヘッドホンの電源をいれてペアリング待機状態にする。
BTヘッドホンの名称が表示されたらクリックしてペアリングする。
ペアリングが上手くいかない場合は設定のBluetoothをオフ/オンしてみる。

左リスト:サウンドをクリックして表示する。
出力:出力デバイスにペアリングしたBTヘッドホン名になっているか確認
システムの音量が最大になっているので半分位に下げる。

Bluetoothコーデックの選択
デスクトップ左下の「アプリケーション表示する」から「PulseAudio 音量調節」を起動
音量調節の設定の Codec: からaptx HDやLDACコーデックを選択する。


☆☆☆ Ubuntuでの設定はここまでで終了です ☆☆☆

Screamを接続して音楽を再生する

UbuntuのScreamレシーバーを起動

2回目以降はまずVMwareからUbuntuを起動、ログイン、BTアダプタをホストから切断、BTオン、BTヘッドホンと接続をします。

端末からコマンドを入力してScreamレシーバーを起動して待機状態にする。

./ScreamR/scream

設定の左リスト:サウンドの音量レベルに「Scream」が追加されればOK

WindowsからScream再生

Windows11の規定サウンドデバイスを仮想サウンドデバイスに変更する。
音楽プレイヤー等で再生して繋いだBluetoothヘッドホンで音が出ればOKです。
レシーバーに繋がるとUbuntuの端末に以下の文字列が表示されます

Switched format to sample rate 96000, sample size 24 and 2 channels.

これで仮想BTトランスミッターの構築と再生が完了です。お疲れ様でした。

参考:プレイヤー等からWasapi排他で再生する場合はEventでなくPushにすると再生出来ました。

再生状態の切断と終了方法

Ubuntu
BTヘッドホンの電源をオフにしてUbuntuと切断します。
Ubuntuから電源をオフにしてVMwareを終了します。(またはVMwareでゲストをサスペンドでも可)
Windows
Windowsの規定サウンドデバイスを任意の物に変更します。(規定のままだとネットワークにマルチキャストしたままになるため)

Ubuntuで設定しておくと便利かも設定

設定
電源:省電力:ブラックスクリーンを「しない」
ユーザー:ロック解除を押下、自動ログインをオン

自動起動するアプリケーション
ADD押下、Name:適当、Command: ./ScreamR/scream で登録しておくと次回起動以降は裏でレシーバーが動作する。

構築環境で視聴してみての感想

LDACかaptX HD非対応デバイスでもほぼ全機種で音質向上が期待出来るSBC XQが良い。
コーデック以外に遅延時間は追加されているはずだが余り気にならないので環境による増加分は割りと低遅延かも。

使用機種
・Fiio UTWS1(SBC/AAC/aptX)
・Mpow H20(SBC/AAC/aptX/aptX HD)
・Panasonic RP-HD600N(SBC/AAC/aptX/aptX HD/LDAC)

上手く動作しない場合

仮想サウンドデバイスが有効になっているのに通信していない場合

Windows11の他のネットワークデバイスに送信している可能性があるので出力したいネットワークカードの優先順位(メトリック)を設定する。

BTオンでもヘッドホンが繋がらない場合

BTデバイスの接続方法はUbuntuでの繋ぎ方をググったほうが早く解決出来るかも。
・BTヘッドホンとのペアリングはすぐに繋がらない時があるので10秒位待ってみる。BTヘッドホン名をクリックしてみる。
・設定のBTをオフオンしてみる。
・ペアリング以降に自動でつながらない場合は設定のBTヘッドホン名をクリックすると別ウィンドウが表示されてペアリング削除をしてから再ペアリングをしてみる。

環境構築時に回避した内容

・WindowsからScreamでユニキャスト設定も出来るが仮想サウンドデバイス起動時に受け先が存在していないとオーディオシステムごとハングアップするのでマルチキャストで使用。
・VMwareからUbuntuをインストールする時に仮想マシン設定をデフォルトから変更してインストールするとUSBデバイスの切り替えが出来なくなるのでインストール後に仮想マシン設定を変更するようにした。

参考資料

仮想ネットワークサウンドカード Scream
https://github.com/duncanthrax/scream

Working Solution for LDAC from Windows
https://www.reddit.com/r/SonyHeadphones/comments/jebd31/

Audio quality of SBC XQ Bluetooth audio codec
http://soundexpert.org/articles/-/blogs/audio-quality-of-sbc-xq-bluetooth-audio-codec

pulseaudio-modules-bt
https://github.com/EHfive/pulseaudio-modules-bt

Bluetooth A2DP SBC Codec Bitrate Calculator
https://btcodecs.valdikss.org.ru/sbc-bitrate-calculator/

Bluetooth A2DP SBC/aptX online encoder
https://btcodecs.valdikss.org.ru/sbc-encoder/

Alternative A2DP Driver
https://www.bluetoothgoodies.com/a2dp/

更新履歴

2022.4.7 初回
2022.4.8 Pulseaudioの遅延軽減と最大優先度化の手順追加、参考リンク追加
2022.4.12 サンプルレートとビット深度を96kHz/24bit設定に統一
2022.4.20 構築環境で視聴してみての感想を追加
2022.4.22 LDACのビット深度設定の変更(s32→f32)
2022.9.29 Ubuntu 22.04での環境に変更
2022.12.24 Alternative A2DP Driverでのブログ記事を掲載
2023.1.29 Wasapi排他再生について追記

この記事が気に入ったらサポートをしてみませんか?