https://naba-san.hatenablog.com/


Xperia acroの純正USBテザリング on XP (tetherxp.inf)

root取って一通りやらかした所でXP機でテザリングしようとした。テザリングと言っても別にspモードへガンガンパケットを流したいとかではなくて、無線LANの調子が悪いパソコンのアダプタ代わりに使いたかったんだけど‥

Windows Vista/7は標準ドライバでデバイスを認識するが、XPの場合はドライバを手動で導入しなければならず、ちょっと躓いた‥そのときのお話をまとめておきます。やるべき事はarcもacroもrayも同じです。

現在ではXperia 2011 series全機でテザリングできるようになっています。

ドライバの準備(tether.inf)

実はXPでのAndroid純正テザリングの際は、「tetherxp.inf」というINFファイルだけ準備してやるだけで事足ります。ファイルはググったら情報がヒットします。ドライバ本体はXPの標準ライブラリが利用できます。

但し、端末製品によってハードウェアID‥正確にはベンダーを示すVIDと製品を示すPIDが異なり、一般に流通している「tetherxp.inf」はXperia acroどころか日本で正規に流通する端末の大半に対応しません。従って、手動でこれを書き換えてやる必要がありました。

Xperia acro SO-02Cの場合、VIDとPIDは下記の通り設定すると良いでしょう。

[AndroidDevices]
; Xperia acro SO-02C without adb
%AndroidDevice% = RNDIS, USB\VID_0FCE&PID_714F
; Xperia acro SO-02C with adb
%AndroidDevice% = RNDIS, USB\VID_0FCE&PID_814F

[AndroidDevices.NT.5.1]
; Xperia acro SO-02C without adb
%AndroidDevice% = RNDIS.NT.5.1, USB\VID_0FCE&PID_714F
; Xperia acro SO-02C with adb
%AndroidDevice% = RNDIS.NT.5.1, USB\VID_0FCE&PID_814F

デバッグ接続(adb)の有無によって製品IDが変化するのは、Android全般の仕様です。


Xperia arc SO-01CやXperia acro IS11S、Xperia ray SO-03Cなどには、それぞれ別のPIDが振られていると思うのですが、情報が見つけられませんでした。これらはWindowsのデバイスマネージャから不明なデバイスを確認することで参照することができますので、必要ならそちらを参照して自力で書き換えると良いでしょう*1。(※情報提供にご協力頂ける方がいらっしゃいましたら、コメントを頂ければ上記へ追記致します。)


結果として出来上がるINFはこんな具合になってるはず。

; MS-Windows driver config matching some basic modes of the
; Linux-USB Ethernet/RNDIS gadget firmware:
;
;  - RNDIS plus CDC Ethernet ... this may be familiar as a DOCSIS
;    cable modem profile, and supports most non-Microsoft USB hosts
;
;  - RNDIS plus CDC Subset ... used by hardware that incapable of
;    full CDC Ethernet support.
;
; Microsoft only directly supports RNDIS drivers, and bundled them into XP.
; The Microsoft "Remote NDIS USB Driver Kit" is currently found at:
;   http://www.microsoft.com/whdc/hwdev/resources/HWservices/rndis.mspx


[Version]
Signature           = "$CHICAGO$"
Class               = Net
ClassGUID           = {4d36e972-e325-11ce-bfc1-08002be10318}
Provider            = %Android%
Compatible          = 1
MillenniumPreferred = .ME
DriverVer           = 03/30/2004,0.0.0.0
; catalog file would be used by WHQL
;CatalogFile         = Android.cat

[Manufacturer]
%Android%          = AndroidDevices,NT.5.1

[AndroidDevices]
; Google Nexus One without adb
%AndroidDevice%    = RNDIS, USB\VID_18D1&PID_4E13
; Google Nexus One with adb
%AndroidDevice%    = RNDIS, USB\VID_18D1&PID_4E14
; Google Nexus S without adb
%AndroidDevice%    = RNDIS, USB\VID_18D1&PID_4E23
; Google Nexus S with adb
%AndroidDevice%    = RNDIS, USB\VID_18D1&PID_4E24
; HTC Sapphire without adb
%AndroidDevice%    = RNDIS, USB\VID_0BB4&PID_0FFE
; HTC Sapphire with adb
%AndroidDevice%    = RNDIS, USB\VID_0BB4&PID_0FFC
; Motorola Sholes without adb
%AndroidDevice%    = RNDIS, USB\VID_22B8&PID_41E4
; Motorola Sholes with adb
%AndroidDevice%    = RNDIS, USB\VID_22B8&PID_41E5
; Xperia acro SO-02C without adb
%AndroidDevice%    = RNDIS, USB\VID_0FCE&PID_714F
; Xperia acro SO-02C with adb
%AndroidDevice%    = RNDIS, USB\VID_0FCE&PID_814F

[AndroidDevices.NT.5.1]
; Google Nexus One without adb
%AndroidDevice%    = RNDIS.NT.5.1, USB\VID_18D1&PID_4E13
; Google Nexus One with adb
%AndroidDevice%    = RNDIS.NT.5.1, USB\VID_18D1&PID_4E14
; Google Nexus S without adb
%AndroidDevice%    = RNDIS.NT.5.1, USB\VID_18D1&PID_4E23
; Google Nexus S with adb
%AndroidDevice%    = RNDIS.NT.5.1, USB\VID_18D1&PID_4E24
; HTC Sapphire without adb
%AndroidDevice%    = RNDIS.NT.5.1, USB\VID_0BB4&PID_0FFE
; HTC Sapphire with adb
%AndroidDevice%    = RNDIS.NT.5.1, USB\VID_0BB4&PID_0FFC
; Motorola Sholes without adb
%AndroidDevice%    = RNDIS.NT.5.1, USB\VID_22B8&PID_41E4
; Motorola Sholes with adb
%AndroidDevice%    = RNDIS.NT.5.1, USB\VID_22B8&PID_41E5
; Motorola Sholes with adb
%AndroidDevice%    = RNDIS.NT.5.1, USB\VID_22B8&PID_41E5
; Xperia acro SO-02C without adb
%AndroidDevice%    = RNDIS.NT.5.1, USB\VID_0FCE&PID_714F
; Xperia acro SO-02C with adb
%AndroidDevice%    = RNDIS.NT.5.1, USB\VID_0FCE&PID_814F

[ControlFlags]
ExcludeFromSelect=*

; Windows XP specific sections -----------------------------------

[RNDIS.NT.5.1]
Characteristics = 0x84   ; NCF_PHYSICAL + NCF_HAS_UI
BusType         = 15
DriverVer           = 03/30/2004,0.0.0.0
AddReg          = RNDIS_AddReg_NT, RNDIS_AddReg_Common
; no copyfiles - the files are already in place

[RNDIS.NT.5.1.Services]
AddService      = USB_RNDIS, 2, RNDIS_ServiceInst_51, RNDIS_EventLog

[RNDIS_ServiceInst_51]
DisplayName     = %ServiceDisplayName%
ServiceType     = 1 
StartType       = 3 
ErrorControl    = 1 
ServiceBinary   = %12%\usb8023.sys    
LoadOrderGroup  = NDIS
AddReg          = RNDIS_WMI_AddReg_51

[RNDIS_WMI_AddReg_51]
HKR, , MofImagePath, 0x00020000, "System32\drivers\rndismp.sys"

; Windows 2000 and Windows XP common sections --------------------

[RNDIS_AddReg_NT]
HKR, Ndi,               Service,        0, "USB_RNDIS"
HKR, Ndi\Interfaces,    UpperRange,     0, "ndis5" 
HKR, Ndi\Interfaces,    LowerRange,     0, "ethernet"

[RNDIS_EventLog]
AddReg = RNDIS_EventLog_AddReg

[RNDIS_EventLog_AddReg]
HKR, , EventMessageFile, 0x00020000, "%%SystemRoot%%\System32\netevent.dll"
HKR, , TypesSupported,   0x00010001, 7

; Common Sections -------------------------------------------------

[RNDIS_AddReg_Common]
HKR, NDI\params\NetworkAddress, ParamDesc,  0, %NetworkAddress%
HKR, NDI\params\NetworkAddress, type,       0, "edit"
HKR, NDI\params\NetworkAddress, LimitText,  0, "12"
HKR, NDI\params\NetworkAddress, UpperCase,  0, "1"
HKR, NDI\params\NetworkAddress, default,    0, " "
HKR, NDI\params\NetworkAddress, optional,   0, "1"

[SourceDisksNames]
1=%SourceDisk%,,1

[SourceDisksFiles]
usb8023m.sys=1
rndismpm.sys=1
usb8023w.sys=1
rndismpw.sys=1
usb8023k.sys=1
rndismpk.sys=1

[DestinationDirs]
RNDIS_CopyFiles_98    = 10, system32/drivers
RNDIS_CopyFiles_ME    = 10, system32/drivers
RNDIS_CopyFiles_NT    = 12

[Strings]
ServiceDisplayName    = "USB Remote NDIS Network Device Driver"
NetworkAddress        = "Network Address"
Android               = "Android"
AndroidDevice         = "Android USB Ethernet/RNDIS"
SourceDisk            = "Ethernet/RNDIS Driver Install Disk"

追加したものをこの辺に置いておきます。


ググって出てくるファイルの中には、改行コードがLFのものがあるので、必要に応じてメモ帳以外のエディタを予め準備しておいて下さい。

*1:ちなみに、PIDの追記はXperiaに限らずUSBテザリング対応Android 2.x端末において利用可能かと思います。