macOS Catalina を再インストールしたら TEAC A-H01 が正常に動作しなくなった。 正確には、音は出るがノイズがひどく、音が途切れて聞こえるという状態になった。

TEAC のページで各製品の動作検証の結果が公開されており、 A-H01 については Catalina では動作しないとされている。

https://teac.jp/jp/support/news/6129

しかし、備考にこんなことが書いてある。

※1 Catalinaでは、ドライバーをインストールすることができません。 Mojave以前にドライバーをインストール済みの状態で、Catalinaにアップデートした場合は使用できます。

うーん。 たしかに、 Mojave から Catalina にアップデートしたあとは、音は正常に出ていた。

アップデートした場合に動くのなら、クリーン インストールした Catalina でもどうにかして動かせるだろうと思い調べてみました。 その結果、無理やりドライバーをインストールすることで、音が正常に出るようになりました。

注意

本記事の内容を試す際は自己責任でお願いいたします。

原因調査

http://audio.teac.com/product/a-h01/downloads/Mac Driver Install Guide によると、 ドライバが正常にインストールされている場合は System Extensions の一覧に TEAC USB Audio が現れるらしい。

ドライバの pkg を実行すると、インストーラーは最後まで実行でき、一見インストールに成功したように見える。 しかし、 System Report で extensions の一覧を確認してみると、 TEAC USB Audio は一覧に含まれていない…

pkg の中身を展開して、どうやってドライバをインストールしているのか見てみる。

# pkg ファイルを展開
% xar -xf TEAC\ USB\ HS\ Audio\ KEXT\ Install\ Package\ 273.4.2.pkg

# インストール用のスクリプトっぽい
# gzip らしいので展開して中身を見てみる
% file teacusbaudio.pkg/Scripts
teacusbaudio.pkg/Scripts: gzip compressed data, from Unix, original size modulo 2^32 1024

スクリプトでは、ドライバの kext ファイルを /System/Library/Extensions に配置しているようだ。

# スクリプトの内容を抜粋
cp -R /Library/Documentation/TEAC/TeacUSBAudio.kext /System/Library/Extensions
chown -R root:wheel /System/Library/Extensions/TeacUSBAudio.kext
touch /System/Library/Extensions

teacusbaudio.pkg/Payload (gzip) を展開すると TeacUSBAudio.kext が得られる。 スクリプトと同じコマンドを実行してみると、 Read-only file system のメッセージが表示されコピーできなかった。

% cp -R TeacUSBAudio.kext /System/Library/Extensions
cp: TeacUSBAudio.kext: unable to copy extended attributes to 
/System/Library/Extensions/TeacUSBAudio.kext: Read-only file system

どうやら Catalina では、システムが読み取り専用の別ボリュームに切り出されているらしい。 この仕組みによって kext ファイルが配置できなくなったと考えられます。

https://support.apple.com/ja-jp/HT210650

「旧 OS からアップグレードした場合は動作する」というのは、おそらくこの仕組みが導入される前に置かれた kext が、 Catalina にアップグレードした際にそのまま引き継がれるからだと思われます。

リカバリーモードで kext を配置してみる

リカバリーモードでは /System/Library/Extensions にファイルを置けるとの情報を得たので試してみました。 Command + R を押しながら Mac を再起動し、ターミナルからコマンドを実行して kext を配置します。

# ボリュームの名前を確認
df -h

# kext ファイルをコピー
# Macintosh HD - Data から Macintosh HD にコピーする
cp -R /Volumes/Macintosh\ HD\ -\ Data/<path-to-kext-file>/TeacUSBAudio.kext \
    /Volumes/Macintosh\ HD/System/Library/Extensions

# インストール スクリプトと同様に owner を変更

chown -R root:wheel /Volumes/Macintosh\ HD/System/Library/Extensions/TeacUSBAudio.kext
touch /Volumes/Macintosh\ HD/System/Library/Extensions

# Mac を再起動
reboot

再起動後 System Extension Blocked のメッセージが表示された。

Security & Privacy で extention の読み込みを許可し、 System Report を確認してみると…

TeacUSBAudio が一覧に現れるようになりました。 この状態で適当に音楽を再生してみたところ、ノイズや途切れはなく音が出ることが確認できました。

ということで、クリーン インストールした Catalina でも A-H01 を動かすことができました。 公式ではサポートされていない方法なので、試す際は完全に自己責任となります。 同じ状況の方がどれだけいるのかわかりませんが、参考になりましたら幸いです。