概要
- Android でCDC Ethernetが動作しない主な理由
- ethX/usbX インターフェース名の違いによる認識問題
- サポートされるUSB Ethernetアダプタの調査方法
- カーネル設定 から対応チップセットを確認する手順
- CDC Ethernet規格とAndroidの対応状況
AndroidでCDC Ethernetが動作しない理由
- Android のEthernetTrackerサービスは、 ethX と名付けられたインターフェースのみ認識
- LinuxのCDC Ethernetドライバ は、 usbX というインターフェース名で作成
- このため、CDC Ethernetアダプタは Android標準環境では動作不可
- config_ethernet_iface_regex の値を変更(root化が必要)以外に回避策なし
AndroidでのUSB Ethernetアダプタの対応状況
- Androidには USB Ethernetアダプタのサポート あり
- 対応チップセットを搭載したアダプタを選ぶことで 設定メニューが有効化
- 対応チップセットの情報は公式に公開されていない場合が多い
- サポート可否は 他ユーザーの報告やフォーラム情報 頼み
- 端末メーカーが純正アクセサリとして販売していれば高確率で動作
サポートアダプタの調査手順
-
Linuxカーネルの設定 でサポートされるアダプタを確認
-
カーネル設定ファイルの取得方法
- USBデバッグ有効化 と ADB(Android Debug Bridge)インストール
- adb shell で端末にシェルアクセス
- USBポートを使うため、 ADBをWi-Fi経由 に切り替え
- adb tcpip 5555 でポート変更
- adb connect [IPアドレス]:5555 で再接続
- uname -a でカーネルバージョンやアーキテクチャ確認
-
新しい端末の場合
- Googleが公開する Android Common Kernel を参照
- arch/arm64/configs/gki_defconfig などの設定ファイルを確認
-
古い端末の場合
- メーカーが公開している カーネルソース から設定ファイルを探す
- 例:Samsungなら opensource.samsung.com で取得
- /proc/config.gz が利用可能なら adb shell zcat /proc/config.gz で直接取得
カーネル設定の確認方法
- 設定ファイル内で USB_NET をgrep
- 例:
grep USB_NET my_kernel_config
- 例:
- CONFIG_USB_NET_○○=y ならドライバがカーネルに内蔵
- CONFIG_USB_NET_○○=m ならモジュールとして利用可能な可能性
- is not set の場合は未サポート
CDC Ethernet規格の概要
- CDC(Communications Device Class) はUSBデバイスの標準規格
- EEM (Ethernet Emulation Model):シンプルで低スペック向け
- ECM (Ethernet Control Model):より高性能
- NCM (Network Control Model):さらに高速化を実現
- Linuxは CDC Ethernet規格のホスト・デバイス両対応
- 標準化で 専用ドライバ不要 を目指す設計
まとめ
- Android ではCDC Ethernetアダプタは 標準状態で動作不可
- 理由は インターフェース名の不一致
- サポート可否は カーネル設定 で確認
- 公式対応アダプタ や 実績のある製品 の利用が推奨
- root化やカーネル改造 以外での回避は困難