📶

【令和最新版 macOS Tahoe対応】MacとAndroid端末をUSBテザリングで繋ぐ方法

に公開

スマホのテザリング機能を使って出先や移動中でもパソコンでインターネットを利用するのはすっかり当たり前の時代になりました。
もちろんMacも例外ではなく、Wi-Fiを使ってスマホからテザリングできます。

ただし、MacにAndroid端末でテザリングをする場合、USB経由で有線テザリングすることはできません。

最近のmacOSはAndroidのUSBテザリングに非対応

バリバリ使われてるものなのに意外な事実です。
なんと、最近のmacOSではAndroidがUSBテザリングをする際に利用するプロトコル「RNDIS」(Remote Network Driver Interface Specification)に対応していません。

もともとRNDISはマイクロソフトが開発したプロトコルで、USB等でWindowsにネットワーク接続を提供できるようにするものです。
そのためWindowsマシンであれば特別なドライバーなしでAndroid端末と有線テザリングをすることができます。Windows 11でもできます。

一方macOSは最初からRNDISに非対応です。ではなぜ「最近のmacOS」と書いたのかというと、macOS Venturaまでは「HoRNDIS」というサードパーティのRNDISドライバが使えたからです。
しかし、ドライバの要件が年々強化され、デジタル署名がないものはNGとなるなど制限が強化されて使えなくなりました。

であれば、Android側のテザリング方式には新しいものは存在しないのでしょうか?

PixelではCDC-NCMをテザリングで使用している

実は、Google PixelならMacとUSBテザリングすることができます。
なぜかというと「CDC-NCM」(Communication Device Class - Network Control Model protocol)という、USBを利用するネットワークデバイスをUSBのクラスとして定義し、共通化を図ったプロトコルを使用しているからです。
macOSはこのプロトコルには対応しており、ほとんどのUSB有線LANアダプターをドライバーなしで利用することができます。

Pixel以外ではCDC-NCMによるUSBテザリングは使えないのでしょうか?

――――結論、使えます。

Pixel以外のAndroid端末でMacにテザリングできるようにする

動作条件

Android 13.0以降 かつ CDC-NCM対応(USB有線LANアダプターが利用可能であること)
macOS 11.0 (Big Sur)以降

Android端末に関しては、ベンダーやモデルによって対応可否がかなりバラついている印象です。
CDC-NCMに対応していることを確認する確実な方法としては、USB有線LANアダプターを繋いで利用できるかどうかになります。

その他方法としては、ADBでsvc usb getGadgetHalVersion を実行し V1.2 より大きい数字が表示されれば対応していることが確認できます。コマンドそのものがエラーで実行できないときは非対応の可能性が高いです。このあと実行するコマンドも実行できないかもしれません。

なお、私が検証を行った端末は以下です。

Sony Xperia 1 VII (Android 15) ✅️
Sony Xperia 5 IV (Android 14) ✅️
Motorola moto g53y 5G (Android 14) ❌️ (有線LANアダプター利用不可)

検証Mac: MacBook Air (2022, M2)、macOS Tahoe (26.0.1)

1. ADBでPCと接続しコマンドを実行

ADBをまだインストールしていない場合はbrewを使って簡単にインストールできます。

brew install android-platform-tools

CDC-NCMを有効にするコマンドを実行します。

adb shell svc usb setFunctions ncm

一度USB接続が切断されます。

2. Android端末でイーサネットテザリングを有効にする

Androidのテザリング設定を見ると、普通PCに繋いだだけではグレーアウトしたままの「イーサネットテザリング」が切り替えできるようになります。オンにトグルして、有効にします。

※切り替えできず、いきなりイーサネットテザリングが有効になっている場合もあります

3. Macでインターフェースが増えていることを確認する

Mac側で ifconfig と打ってインターフェース一覧を出してみると、最後に en○○ というインターフェースが増えているはずです。これがAndroid端末から来ているものになります。

確認したいあれこれ

有線LANじゃないのにリンク速度の欄に2500Base-T <full-duplex>と表示されています。
つまり、端末がCDC-NCMを使ってネットワークアダプターを名乗っていることになります。面白いです。
※USB 5Gbpsで接続した場合。USB 480Mbpsで接続すると100baseTXと表示されます。

MACアドレスはランダムでハードウェア固有ではありません。
Xperiaの場合、IPv6に対応していません。

Android端末の中に建てたスピードテストサーバーで測ってみたところ、このような結果になりました。
これなら5Gの性能を活かすことができます。ミリ波が効果発揮しそうです。

USB 480Mbpsで測ったところ次のような結果になりました。

おわりに

確かに最近のスマホのWi-Fiはテザリング高速化してきています。
近年のハイエンド機種では5/6GHz帯を使い、Wi-Fi 6(E)で1200Mbps〜2400Mbpsでリンクできる機種も存在します。
ただし、無線である以上どうしても安定性は少し落ちますし、5GモデムとWi-Fiモデムが同時に動作するためパフォーマンスの低下も考えられます。
ミッションクリティカルなとき、2.4GHz帯でしかテザリングできないけど速度が欲しいときに有線テザリングはまだまだ有効です。
少しでもお役に立てれば幸いです。

記事の作成のきっかけとなった情報源:
https://x.com/isukkaw/status/1931383732860272734

Discussion