Marshall Uxbridgeスマートスピーカーからスマート機能を取り除く
(tomscii.sig7.se)- 廃棄されていた Marshall Uxbridge Voice 2台を、Bluetooth・音声ガイダンスなしの アナログRCA入力 ベースのバイアンプ・ステレオペアへ改造
- 元の構成はLinkplayボード、Amlogic A113X SoC、無線モジュール、ESMT AD85050 Class Dアンプに依存しており、約 300msの遅延 のため近接ステレオ試聴には不向きだった
- 新しい回路は18V単一電源で LM833 4次Linkwitz-Rileyアクティブクロスオーバー と LM1875Tリニアパワーアンプ を用い、ウーファーとツイーターを個別に駆動
- XSchem・ngspiceシミュレーション、ブレッドボード試作、実際のUxbridge PSUとスピーカー負荷、トーンジェネレーター、音楽のA/B試聴で設計を検証し、約 35Hz まで満足できる低域補償を実現
- 完成品はスマート機能を取り除いた密閉型アナログスピーカーとなり、KiCADハードウェア設計とXSchem/ngspiceファイルは MITライセンス で公開
廃棄されていたスマートスピーカー2台をステレオペアに改造
- Marshall Uxbridge Voiceスマートスピーカー2台が、ほぼ新品のような状態で見つかった
- 1台は黒、もう1台は白だった
- 電源を入れると「NOW IN SETUP MODE. FOLLOW THE INSTRUCTIONS IN YOUR DEVICE’S COMPANION APP.」という音声ガイダンスが流れた
- Debian stableを入れたLinuxデスクトップで
blueman-managerを使うと、Bluetoothスピーカーとして接続し音楽を再生できた - 小型にもかかわらず低域は深く力強く、高域は明瞭で細かかった
- ただし中域がへこんだいわゆる「disco smile」傾向があり、標準EQ設定の影響かもしれないと考えた
- 2台をステレオペアとして使おうとしたが、標準状態ではコンピューターが同時にBluetooth接続できるのは1台だけだった
- 動画視聴時には有線ヘッドホンに比べて約 300msの遅延 があり、2台間の遅延差はステレオイメージングを損なうおそれがあった
- 音楽再生中に「CONNECTION UNSUCCESSFUL. CHECK YOUR APP FOR INSTRUCTIONS AND TRY AGAIN.」という音声ガイダンスが割り込んできたため、スマート機能の除去が目標になった
- 最終目標は、Bluetoothも遅延も音声ガイダンスもなく、背面に アナログRCAライン入力 を1つだけ備えたステレオスピーカーだった
Uxbridgeの内部構造と既存の電子部品
- 背面のPhillipsネジ6本を外し、薄いレバーでこじ開けるとエンクロージャ内部にアクセスできる
- 気密性確保のためエアシールフォームが使われており、かなりきつく組み合わさっていた
- メインの電子回路は背面板に固定された基板にあり、ウーファー下の独立したPSUから大きなJSTプラグで給電されていた
- 小さなJSTプラグ2個はそれぞれウーファーとツイーターに接続されていた
- 上部の音量・トーンコントロール、マイク、ボタン、前面下部のRGB LED用の補助基板がフラットケーブルで接続されていた
- メイン基板には Linkplay と書かれたドーターボードが挿さっていた
- Amlogic A113X SoC、メモリチップ、無線モジュールを含むOEMスマートスピーカーモジュールのようだった
- 無線モジュールから出た線は、背面板上部の左右近くにある2つのパッチアンテナにつながっていた
- オーディオアンプは ESMT AD85050 ベースで、TI TAS5727系Class Dパワーアンプに似た48ピンチップに見えた
- 2チャネル構成でツイーターとウーファーをそれぞれ駆動していた
- 両ドライバーとも約4Ωと測定された
- 配線を追ってみると、I2C制御、I2S 2チャネルのデジタルオーディオストリーム、3.3V電源はすべてドーターボードから来ていた
- 問題の音声ガイダンスも同じボードが生成していた
既存ボードを活かそうとした試みと断念
- 当初は、PSUとスピーカーの間にある既存電子回路一式を捨てるのは無駄に思えたため、既存のパワーアンプを活用しようとした
- ドーターボードを外すと何も動作せず、I2C・I2S・電源への依存構造と一致していた
- ESMTチップのLINP、LINN、AGNDラインに細線をはんだ付けし、アナログ入力の注入を試した
- LINPをアンバランス駆動し、LINNをGNDに落としても音は出なかった
- チップの保護・シャットダウン機構が働いたようだった
- ブレッドボード上のop-ampでバランス駆動回路を仮組みすると音は出て、ノイズ・歪み・干渉も目立たなかった
- ただし駆動されたのはウーファーだけで、ツイーターは別チャネルに接続されていた
- この方式では、ウーファーとツイーターそれぞれにバランス・オーディオ入力2本が必要だった
- 多数のパッチワイヤと追加回路を狭いエンクロージャに収める必要があり、I2C設定をキャプチャしてマイコンで再現する方法や、I2S入力を直接駆動する方法にも不確定要素が多かった
- 最終的に既存ボードの維持はやめ、電子回路を全面交換 する方針に切り替えた
新しいアナログ・バイアンプ設計
- 新設計の要件は、既存PSUの 18V DC単一電源、背面RCAライン入力、密閉構造の維持、約2kHzのクロスオーバー、追加EQ/スピーカー補償、そしてウーファー用・ツイーター用のパワーアンプ2基だった
- パワーアンプには、単一電源動作用のリファレンス回路がある LM1875T を選択
- 4Ωドライバーを駆動する
- 想定ピーク出力はドライバーあたり約5Wで、実際には主にウーファー側に関係する
- 近接試聴と静かな部屋では十分な出力と見なした
- クロスオーバーには4次 Linkwitz-Riley 構成を採用
- 同一のSallen-Key低域通過または高域通過フィルター2段を直列接続する
- スロープは24dB/octaveで、理論上クロスオーバー帯域で両チャネルの合成が0dBになる利点がある
- op-ampには LM833 を選択
- 15MHzのgain-bandwidth、7V/μsのslew rate、4.5nV/√Hzの電圧ノイズという仕様を持つ
- デュアルop-ampなので、1個で完全なLinkwitz-Riley高域通過または低域通過フィルターを構成できる
- 単一電源でop-amp回路を動作させるため、仮想グラウンドを使用
- ウーファー経路とツイーター経路の分離を保ち、仮想グラウンド経由のクロストークを減らすため、仮想グラウンドは2系統に分けた
フィルター回路とシミュレーション
- 入力信号はC1を通してAC結合され、R1・R2で電源中点レベルにバイアスされる
- C2、R3、ライン入力を駆動するソースインピーダンスは1次ローパスフィルターを構成し、ソースインピーダンス600Ω時の遮断周波数は約 50kHz
- 入力フォロワU1A直前でRF干渉を除去するための構成である
- ツイーター経路は、U2BとU2AまわりのSallen-Key高域通過フィルター2段で構成される
- 4次Linkwitz-Riley高域通過フィルターとして動作する
- 出力TWR_INがツイーターのパワーアンプを駆動する
- ウーファー経路は、U1Bまわりのlow-shelvingフィルターから始まる
- ウーファーの低域ロールオフを補償するため、低域をブーストする
- その後、U3A・U3BまわりのLinkwitz-Riley低域通過フィルターを経てWFR_INがウーファーのパワーアンプを駆動する
- XSchemとngspiceで周波数応答と位相応答を検証した
- 電気的クロスオーバー周波数は 2kHz
- 合成出力にはわずかな盛り上がりがあるが、試聴ではウーファーの高域ロールオフがクロスオーバー付近の電気的な山をおおむね相殺していた
- SPICE上では2kHzでツイーター出力の位相がウーファーより約 19° 遅れていた
- これは約26μsの遅延で、音速340m/s換算で約9mmの音響経路差に相当する
- 実際の配置ではツイーターのほうがウーファーよりリスナーに少し近くなる可能性があり、符号が逆の幾何学的経路差が生じる
- ドライバー特性が不明で音響環境も制御できないため、別途allpassによる遅延補償は入れなかった
パワーアンプと出力条件
- ツイーター用・ウーファー用パワーアンプはいずれも LM1875T の単一電源リファレンス回路に従う
- 電圧ゲインは安定性向上のため20に設定
- 2025年10月の更新で、R15とR19を20kΩから10kΩに変更してゲインを20へ引き上げた
- 設計文書と画像はこの変更を反映するよう更新された
- ツイーターアンプとウーファーアンプでは、一部のコンデンサ値が異なる
- ツイーターは使用周波数帯域の関係でより高いコーナー周波数を許容できるため、より小さく安価な部品が使えた
- 出力カップリングコンデンサにはオーディオ用の高品質部品を選んだ
- J3とJ4の出力コネクタ極性は互いに逆になっている
- Uxbridgeのドライバーケーブルに使われているJSTコネクタが互いに逆極性で圧着されているためである
- 元のPSUはLM1875の電源範囲としては低めに近い
- 低い電源電圧は出力を制限するが、発熱も抑える
- 想定される発熱は最大でも数W、アイドル時は1W未満の一部にとどまる
試作とチューニング
- 回路全体をブレッドボードで組み、実際のスピーカーに接続して検証した
- テスト用Uxbridgeから元の電子回路を取り外した
- スピーカー線を延長し、Bluetoothボタンがあった小さな穴から外へ引き出した
- 背面板を閉じ、穴をテープでできるだけ塞いで、実際の密閉エンクロージャに近い状態で評価した
- 実際のUxbridge PSUを使い、回路とPSUの互換性問題がないか確認した
- オンラインのトーンジェネレーターで通常動作、ドライバー極性、クロスオーバー帯域のレベル、ウーファーのロールオフ補償フィルターを調整した
- 満足できる結果は約 35Hz まで得られ、元のUxbridgeと同程度だった
- 音楽試聴でもA/Bテストを行った
- 一方は新回路で密閉エンクロージャ内のスピーカーを駆動
- もう一方は完全な元のUxbridgeをBluetooth再生した
- 数日間の比較の結果、新回路のほうがよりフラットで精密な音だと判断した
- 特に元のUxbridgeで薄く感じられた中域が改善されたと評価した
- 発熱はヒートシンクの温度を指で触って確認した
- 計画していたTO-220用ヒートフィンは、長時間維持しにくいほどの大音量時にのみかなり熱くなった
- 密閉エンクロージャ内にさらに大きなヒートシンクを入れる必要はないと判断した
PCBと機構設計
- PCBでは既存ボードのサイズとネジ穴パターンに合わせることが重要だった
- 回路は小さく複雑さも低いため、事実上ほぼ片面配線に近い構成にできた
- ほぼすべての配線は部品面にある
- 部品面の残り領域と、はんだ面の大部分はグラウンドプレーンで埋めた
- ヒートシンク下にはサーマルビアを入れ、PCBも熱拡散と放熱に参加させた
- SMTを使えばPCB面積を半分ほどにできたが、ブレッドボードで使っていた汎用部品をそのまま使う方を選んだ
- 新しいPCBサイズは元のパネルの約半分になった
- 既存ケーブルをそのまま使うため、コネクタ互換性も合わせた
- DC電源コネクタはJST-VHと特定して購入した
- スピーカーコネクタはJST-XAで、新品入手が難しかったため、元のボードからソケットを外して新PCBにはんだ付けした
- 試作ではピッチの近いJST-XHを使ったが、XHにはXAのロック機構がない
- オーディオ入力には2ピンJST-PHコネクタとパネル取り付けRCAジャックを使用
- RCAジャックは元のBluetoothボタンがあった直径6.5mmの穴に固定した
- 背面はホットグルーで埋めて気密性を保った
- 組み立て中、PCBの縁が内部のプラスチック製ネジ柱と干渉した
- 元のパネル左端にある小さな切り欠きを、新ボードの外形に入れ忘れたのが原因だった
- プラスチック柱を約 2mm やすりで削り、粉を掃除機で吸い取って組み立てを完了した
結果と公開資料
- 完成した2台のスピーカーは、スマート機能のない アナログRCA入力 ベースのステレオペアになった
- 数週間にわたり複数のアルバムを繰り返し聴いた結果、元のUxbridgeより忠実度が大きく向上したと評価した
- スピーカーを実負荷として含めた状態でアクティブフィルターを調整したことが、より良い周波数応答に寄与したと考えている
- 低出力で動作するリニアパワーアンプは、ノイズや歪みが少ない可能性があると判断した
- 明瞭なステレオイメージングも高忠実度の信号の一部とみなした
- オーディオ帯域のアナログ電子回路は、高出力や極微小信号のような極端な条件を除けば、現代の半導体でかなり高い水準まで実現するのは難しくないという結論に至った
- KiCADハードウェア設計、XSchemワークスペース、ngspiceシミュレーションファイルは オンラインリポジトリ で公開されている
- 公開資料は MITライセンス 条件で配布される
1件のコメント
Hacker News のコメント
PCB まで設計するつもりなら、I2S 入力をデジタルで駆動する方法も検討に値する
AD85050 のデータシートをざっと見ると内部 DSP 機能があり、Marshall がすでにドライバーとエンクロージャーに合わせてチューニングしている可能性が高い
アクティブスピーカーが比較的安価なハードウェアでもそこそこ良く聞こえる理由は、ハードウェアの欠点を補正する後処理が裏でかなり入っているから
AD85050 にはステレオ I2S 入力があるので、クロスオーバーがアンプチップ内部で行われていた可能性もあるし、Amlogic SoC で処理されていた可能性もある
後者なら、ボードに別途 DSP チップを入れるか、I2C で AD85050 を設定して適切なローパス/ハイパスフィルターを追加する必要があり、面倒な構成になりかねない
2 チャンネル A/D コンバーターを前段に置けば、単一のアナログ入力を両チャンネルに複製したステレオ I2S にしてアンプを駆動できる
USB 入力は、2 台のスピーカーで本物のステレオをやるにはソフトウェア側のルーティングが必要でずっと複雑になるし、SPDIF は信号を分岐して各スピーカーに SPDIF-to-I2S 変換チップを入れる形なら可能だが、左右チャンネルを分離する方法は依然として必要
AD85050 の I2C ベースのミキシング機能がここで役に立つかもしれない
もちろん、これらすべてがそもそもアンプを設計するより大仕事になる可能性もあり、結局はアナログ側を掘り下げたいのか、デジタル側を掘り下げたいのか次第
アンプは Raspberry Pi の店で買った 1 ドル未満のクラス D アンプで、処理は一切なかった
箱が頑丈で密閉されていてスピーカーが良ければ、思った以上にすごい結果が出る
DSP をもっと単純なアンプに替えれば、ドライバーとエンクロージャー自体から出るより細かな音が得られ、より聴きやすい体験になるかもしれない
ドライバーはその箱のサイズに対してかなりフルサイズに見えるし、耳につく特性は簡単なイコライザーでも調整可能
より動的なアプローチは、失敗すると聴感上おかしな音色を作ってしまうことがある
現代の DSP は魔法のようだが、欠点をリアルタイムで隠すより、欠点が見えるオーディオパイプラインのほうを好む
Harman Kardon の「スマート」スピーカーで、頭脳にあたる別のドーターボードがあり、それが壊れている構造
すでに制御信号は把握しており、ESP32 で I2S 出力を駆動する新しいドーターボードも設計した
あとは、音声をモノラルにダウンミックスし、左右チャンネルをツイーター/ベース出力として DSP 処理する方法を見つけるか、既存のコードを探す必要がある
関連する助けや手掛かりがあるとありがたい
そしてその通りで、「Going all-in」の直前の段落が I2S 駆動のアイデアを扱っている
ただし ESMT チップに送る I2C 設定もリバースエンジニアリングする必要があったはず
昔カーオーディオ好きだった人たちにはかなり面白い分野
このスピーカーを持っているが、スマート機能がどれほど腹立たしいか信じられないほど
家で電話しているだけで、スピーカーが命令されたと勘違いする
“SORRY. YOUR DEVICE IS NOT CONNECTED TO THE INTERNET. PLEASE CHECK YOUR BLUETOOTH SETTINGS AND TRY AGAIN.” が最大音量で流れる
電子技術者ではないが、この信じがたいほど馬鹿げた機能をオフにする方法を本当に知りたい
たぶんこのコメントの上のどこかにリンクされているはず
ハンマーを使えばいい
ただしその場合、代わりに “THE BLUETOOTH DEVICE IS READY TO PAIR” が流れるリスクがある
それでも JieLi SoC など一部のシリーズでは、案内音声を差し替える方法を見つけた人たちもいる
最近、スマート TV を馬鹿にする方法もあるのか気になっていた
個人的には “stupify” という名前のほうが気に入っている
設定の過程で Google TV、カメラ、マイクのような「スマート」機能をオンにするか、ネットワークに接続するかを聞かれ、全部いいえを選んだ
それ以来、Apple TV ボックス用のただの画面としてだけ動作している
使いたい映像入力を選び、好みの入力機器を接続して、その後 TV リモコンを二度と使わなければいい
LinkPlay A31 に OpenWRT を載せるプロジェクトがあるので、中身を実質的に総入れ替えするより簡単かもしれない
https://github.com/hn/linkplay-a31
これは、スピーカー設計の経験があまりない電子工学者のアプローチのように見える
きちんとしたクロスオーバーを設計するには、ドライバーの Thiele/Small パラメータ、エンクロージャー容量、バッフル設計など、多くの要素を考慮する必要がある
単に LTspice でクロスオーバーを回して終わり、というわけにはいかず、VituixCad のほうがより適切な解決策だ
そして実測も必要になる
アナログ・クロスオーバーがあってリバースエンジニアリングできるなら、アンプと「スマート」なゴミを置き換えるのは簡単だが、DSP で処理していた構造ならすぐに難しくなる
単一のフルレンジドライバーでも同じことだ
既製の「標準」クロスオーバーやウェブサイトの計算機を使えばよい、という話でもない
それでもハードウェアを生かしたのは良いことだ
良い耳と忍耐力は、特に趣味の作業では高価な実験機材のかなりの部分を代替できる
Google Nest Audio スピーカーをいくつか持っていて、音は素晴らしいが Bluetooth スピーカーと同じ問題があり、普通のスピーカーに変えるための 3.5mm 入力端子もない
オーディオの知識は最低限で、基本的な電子工学だけ知っている人がこうした改造をするには、どんな方法がよいのか気になる
「低音は締まっていて深く、サイズのわりにはずっと深かった。高音は明瞭でディテールがあった」というような感想は、ブランド名が耳に与える影響をよく示している
突然、小さなプラスチック箱と SBC Bluetooth コーデックの組み合わせまで素晴らしく聞こえるようになる
「ディスコスマイル」のように中域がへこんだ音がしたが、消費者向けのデフォルトのイコライザー設定のせいにした、という部分はもっと単純に説明できる
Marshall だから中域がへこんでいるのだ
少なくとも 1970 年代半ばまで、場合によっては JCM800 の時代までも、Marshall は主な競合である Fender や Vox より 中域の多いアンプとして知られていた
ただし、ほぼすべてのギターアンプの「ニュートラル」設定では、ある程度中域が抜けている
人々がその音を好み、伝統的な音だと考えているからだ
ミキシングコンソールに直接つないで演奏する場合でも、中域を少し削ることがほとんど常に見られ、それがエレキギターと結びつけて想起される音なのだ
古典的な Rakoit Linkplay モジュール系が出てきた
Arylic Up2Stream Amp にも A31 系が入っているが、小さなドーターボード上で Linux を動かす完全な Linux コンピューターだと知って、かなり興味深かった
ただ、U-Boot、Linux、その他の GNU コンポーネントについて GNU GPL を守っていない一方で、「マルチルームストリーミングソフトウェアを安定して統合するのはかなり複雑だ」といった説明をしているのは残念だ
自分で 1 つ入手してハックし、Amlogic チップ入りのモジュールに OpenWrt や他の Linux ディストリビューションを載せられるか見てみるのもありだろう
別のファームウェアでフラッシュすることはできそうだ
私の LinkPlay A31 モジュールには Arylic ソフトウェアの代わりに、そのチップ向けの小さな OpenWrt イメージを載せたが、私の場合チップは MT7628 で、実質的にはルーター SoC だった
標準の Linux と U-Boot を使いつつ、キャリアボード上の DSP 補助プロセッサと通信するいくつかのカスタムバイナリ、管理とアプリ制御用のウェブサーバー、そして中核動作を担う rootApp というカスタムバイナリを載せた構成に見える
このデバイスを知らない人のために言うと、Marshall アンプのような見た目だが、高さ 9 インチの Bluetooth スピーカーだ
価格が気になる
スピーカーは無料だったとしても 240 ドル相当で、PCB 製作は安くなさそうだし、コンデンサもかなり大きい
100x100mm までの 2 層 PCB 5 枚は、全世界への送料込みでわずか 3.50 ドルだ
標準仕様から外れると高くなるが、それでも基板 1 枚あたり数ドル程度だ
https://jlcpcb.com/
この回路で最も大きな電解コンデンサは、数量 1 個で 1 個あたり 3.29 ドルだが、高級な「オーディオグレード」の Nichicon コンデンサだからだ
同じサイズの一般グレードのコンデンサなら、日本ブランドで 1.68 ドル、中国ブランドでもよければ 0.36 ドルまで下がる
捨てられたスピーカーを拾ってきて、熟練した作業を何十時間もかけて内部を交換するのは、正直おかしなことだ
この規模のプロジェクトを顧客に請求するなら、おそらく数千ドルは取るだろう
それでも趣味に文句は言えない
明らかにコストではなく、楽しさと nerd cred を最適化する作業だ
組み立て費用は分からないが、全体で 20 ドルを超えたら驚くと思う