Android: Install ADB drivers for any device without OEM drivers

Figure 1. Android Robot

Figure 1. Android Robot

Well, I started my Android development on a Samsung I9100 Galaxy S II. I never had any trouble getting ADB to work on Microsoft Windows since I had the drivers from Samsung which was already installed due to my previous Cyanogenmod installation process. Afterwards, I received a Nexus 7 and a bit latter a Nexus 5 which became my primary development device of choice. Google did a good job by providing ADB drivers for All Nexus devices inside the SDK or as a small separate download on Android Developers website which was very easy to install. The trouble began when my development process involved testing my applications and games on devices other than Nexus ones I had. For some manufacturers I was never able to find the drivers. Finding the correct driver for each device was a huge pain until I found a solution that became a remedy for all my troubles getting ADB to work with any Android device, even without the OEM drivers. It even became my preferred alternative to manufacturer’s provided ADB drivers for all my other devices till this day, since I hate the bloat-ware and useless crap they provide along with their drivers which is inevitable to install anyway.

In the rest of this post I’m going to share my easy solution with you:

1. First you have to download Google USB driver which is a small download around 8 MB in size and extract it somewhere. If you have the Android SDK installed it usually resides inside <sdk root>\extras\google\usb_driver\. So, you do not have to download it separately in that case.

Figure 2. The Android SDK Manager with the Google USB Driver selected

Figure 2. The Android SDK Manager with the Google USB Driver selected

2. Now, you have to find your device’s hardware ID. In order to do that, the first step involves turning on Android Debugging on your device. On some devices it is known as ADB Debugging, USB Debugging or something similar. On your Android device, go to Settings > Developer Options and you should find it there, then check it. If you do not have Developer Options inside Settings, you must go to Settings > About Phone and tap on Build Number 7 times repeatedly. A pop-up should appear and tell you that you have enabled developer options. Now, go back to Settings and you will find it there right before About Phone.

3. Then, connect your device to your Windows PC and on your PC go to Control Panel > Device Manager. You will find your device with a yellow exclamation mark. As an example, on one of my devices it’s ‘TP9.7-1500DC’ and on the other one it’s ‘IdeaTab S6000’ or simply ‘Android’ for another device (check Figure 3. below). Right click on your Android device name with yellow exclamation mark and click Properties. A window with a few tabs will appear. Go to the Details tab and inside Property combo box look for Hardware Ids and select it. You will find the Hardware Ids inside the Value section below the Property combo box that you’ve just used to find the IDs (Figure 4.). Now, right click on one of the IDs inside the Value box and hit Select All to select all the Hardware Ids. After selecting all the IDs, once more right click on one of the selected IDs and choose Copy. You’ve just got all the Hardware Ids for your Android device.

Figure 3. Unknown Android device with a yellow exclamation mark inside Windows Device Manager

Figure 3. Unknown Android device with a yellow exclamation mark inside Windows Device Manager

Figure 4. Extracted Hardware Ids for unknown Android device from Windows Device Manager

Figure 4. Extracted Hardware Ids for unknown Android device from Windows Device Manager

Here is a list of some of my devices with their Hardware Ids:

Example Hardware Ids
;Nexus 4
USB\VID_18D1&PID_4EE2&REV_0228&MI_01
USB\VID_18D1&PID_4EE2&MI_01

;Motorola Moto G
USB\VID_22B8&PID_2E76&REV_0228&MI_02
USB\VID_22B8&PID_2E76&MI_02
;Motorola Networking Interface
USB\VID_22B8&PID_2E82&REV_0228&MI_01
USB\VID_22B8&PID_2E82&MI_01

;i.onik TP9.7-1500DC Retina
USB\VID_2207&PID_0006&REV_0222
USB\VID_2207&PID_0006

;Sony Xperia M Dual C2005
USB\VID_0FCE&PID_519B&REV_0228&MI_01
USB\VID_0FCE&PID_519B&MI_01

;Lenovo IdeaTab S6000-H
USB\VID_17EF&PID_75E2&REV_0255&MI_01
USB\VID_17EF&PID_75E2&MI_01

;Samsung Galaxy S4 GT-I9500
USB\VID_04E8&PID_6860&REV_0400&ADB
USB\VID_04E8&PID_6860&ADB
USB\SAMSUNG_MOBILE&ADB
USB\SAMSUNG_MOBILE&MI_03
USB\Vid_04E8&Pid_6860&MI_03
USB\Vid_04E8&Pid_6860&Class_FF&SubClass_42&Prot_01
USB\SAMSUNG_MOBILE&Class_FF&SubClass_42&Prot_01

;Samsung Galaxy S4-mini GT-I9190
USB\VID_04E8&PID_6860&REV_0400&ADB
USB\VID_04E8&PID_6860&ADB
USB\SAMSUNG_MOBILE&ADB
USB\SAMSUNG_MOBILE&MI_01
USB\Vid_04E8&Pid_6860&MI_01
USB\Vid_04E8&Pid_6860&Class_FF&SubClass_42&Prot_01
USB\SAMSUNG_MOBILE&Class_FF&SubClass_42&Prot_01

;HUAWEI G610-U20
USB\VID_12D1&PID_1038&REV_0255&MI_01
USB\VID_12D1&PID_1038&MI_01

;HUAWEI U8950-1
USB\VID_12D1&PID_1038&REV_0231&MI_01
USB\VID_12D1&PID_1038&MI_01

;Samsung Note 10.1 SM-P6012
USB\VID_04E8&PID_6860&REV_0400&ADB
USB\VID_04E8&PID_6860&ADB
USB\SAMSUNG_MOBILE&ADB
USB\SAMSUNG_MOBILE&MI_03
USB\Vid_04E8&Pid_6860&MI_03
USB\Vid_04E8&Pid_6860&Class_FF&SubClass_42&Prot_01
USB\SAMSUNG_MOBILE&Class_FF&SubClass_42&Prot_01

;HTC Desire 616 dual sim Android Phone
USB\VID_0BB4&PID_0EDD&REV_0216&MI_01
USB\VID_0BB4&PID_0EDD&MI_01

4. In this step make a copy of your Google USB Driver that you’ve just downloaded or took from your Android SDK folder. There must be a file named android_winusb.inf inside that folder. Open that up inside your favorite text editor. It utilizes Windows INF format. An untouched copy of that file looks like this:

android_winusb.inf
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
;
; Android WinUsb driver installation.
;
[Version]
Signature           = "$Windows NT$"
Class               = AndroidUsbDeviceClass
ClassGuid           = {3F966BD9-FA04-4ec5-991C-D326973B5128}
Provider            = %ProviderName%
DriverVer           = 08/28/2014,11.0.0000.00000
CatalogFile.NTx86   = androidwinusb86.cat
CatalogFile.NTamd64 = androidwinusba64.cat

[ClassInstall32]
Addreg = AndroidWinUsbClassReg

[AndroidWinUsbClassReg]
HKR,,,0,%ClassName%
HKR,,Icon,,-1


[Manufacturer]
%ProviderName% = Google, NTx86, NTamd64


[Google.NTx86]

;Google Nexus One
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_0D02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_0D02&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E11
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E12&MI_01

;Google Nexus S
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E21
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E22&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E23
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E24&MI_01

;Google Nexus 7
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4E40
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E42&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E44&MI_01

;Google Nexus Q
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_2C10
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_2C11

;Google Nexus (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4EE0
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE4&MI_02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE6&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE7

;Google Glass
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_9001
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_9001&MI_01

;Project Tango (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4D00
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D02&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D04&MI_02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D06&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D07


[Google.NTamd64]

;Google Nexus One
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_0D02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_0D02&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E11
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E12&MI_01

;Google Nexus S
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E21
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E22&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E23
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E24&MI_01

;Google Nexus 7
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4E40
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E42&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E44&MI_01

;Google Nexus Q
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_2C10
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_2C11

;Google Nexus (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4EE0
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE4&MI_02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE6&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE7

;Google Glass
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_9001
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_9001&MI_01

;Project Tango (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4D00
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D02&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D04&MI_02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D06&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D07


[USB_Install]
Include = winusb.inf
Needs   = WINUSB.NT

[USB_Install.Services]
Include     = winusb.inf
AddService  = WinUSB,0x00000002,WinUSB_ServiceInstall

[WinUSB_ServiceInstall]
DisplayName     = %WinUSB_SvcDesc%
ServiceType     = 1
StartType       = 3
ErrorControl    = 1
ServiceBinary   = %12%\WinUSB.sys

[USB_Install.Wdf]
KmdfService = WINUSB, WinUSB_Install

[WinUSB_Install]
KmdfLibraryVersion  = 1.9

[USB_Install.HW]
AddReg  = Dev_AddReg

[Dev_AddReg]
HKR,,DeviceInterfaceGUIDs,0x10000,"{F72FE0D4-CBCB-407d-8814-9ED673D0DD6B}"

[USB_Install.CoInstallers]
AddReg    = CoInstallers_AddReg
CopyFiles = CoInstallers_CopyFiles

[CoInstallers_AddReg]
HKR,,CoInstallers32,0x00010000,"WdfCoInstaller01009.dll,WdfCoInstaller","WinUSBCoInstaller2.dll"

[CoInstallers_CopyFiles]
WinUSBCoInstaller2.dll
WdfCoInstaller01009.dll

[DestinationDirs]
CoInstallers_CopyFiles=11

[SourceDisksNames]
1 = %DISK_NAME%,,,\i386
2 = %DISK_NAME%,,,\amd64

[SourceDisksFiles.x86]
WinUSBCoInstaller2.dll  = 1
WdfCoInstaller01009.dll = 1

[SourceDisksFiles.amd64]
WinUSBCoInstaller2.dll  = 2
WdfCoInstaller01009.dll = 2

[Strings]
ProviderName                = "Google, Inc."
SingleAdbInterface          = "Android ADB Interface"
CompositeAdbInterface       = "Android Composite ADB Interface"
SingleBootLoaderInterface   = "Android Bootloader Interface"
WinUSB_SvcDesc              = "Android USB Driver"
DISK_NAME                   = "Android WinUsb installation disk"
ClassName                   = "Android Device"

5. Look for [Google.NTx86] and [Google.NTamd64] sections inside the file. Remember the Hardware Ids that we have just copied to clipboard? We have to add them to the end of these sections to be able to install the driver on both x86 and x64 versions of Windows. But the point is, you cannot simply paste them here. For each line of hardware ID we’ve got, we have to add ’%CompositeAdbInterface% = USB_Install, ‘ at the beginning of them. Optionally you can add comments starting with a semicolon ’;’ character for each device. OK, if this is all confusing, considering my previously provided list of Hardware Ids, the modified file looks like this (I’m sure it’s self-explanatory if you look for my comments and compare them to both the original file and the list of Hardware Ids):

android_winusb.inf
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
;
; Android WinUsb driver installation.
;
[Version]
Signature           = "$Windows NT$"
Class               = AndroidUsbDeviceClass
ClassGuid           = {3F966BD9-FA04-4ec5-991C-D326973B5128}
Provider            = %ProviderName%
DriverVer           = 08/28/2014,11.0.0000.00000
CatalogFile.NTx86   = androidwinusb86.cat
CatalogFile.NTamd64 = androidwinusba64.cat

[ClassInstall32]
Addreg = AndroidWinUsbClassReg

[AndroidWinUsbClassReg]
HKR,,,0,%ClassName%
HKR,,Icon,,-1


[Manufacturer]
%ProviderName% = Google, NTx86, NTamd64


[Google.NTx86]

;Google Nexus One
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_0D02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_0D02&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E11
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E12&MI_01

;Google Nexus S
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E21
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E22&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E23
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E24&MI_01

;Google Nexus 7
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4E40
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E42&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E44&MI_01

;Google Nexus Q
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_2C10
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_2C11

;Google Nexus (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4EE0
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE4&MI_02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE6&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE7

;Google Glass
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_9001
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_9001&MI_01

;Project Tango (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4D00
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D02&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D04&MI_02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D06&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D07

;
; MY DEVICES HARDWARE IDS / X86 / START
;

;Nexus 4
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2&REV_0228&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2&MI_01

;Motorola Moto G
%CompositeAdbInterface%     = USB_Install, USB\VID_22B8&PID_2E76&REV_0228&MI_02
%CompositeAdbInterface%     = USB_Install, USB\VID_22B8&PID_2E76&MI_02
;Motorola Networking Interface
%CompositeAdbInterface%     = USB_Install, USB\VID_22B8&PID_2E82&REV_0228&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_22B8&PID_2E82&MI_01

;i.onik TP9.7-1500DC Retina
%CompositeAdbInterface%     = USB_Install, USB\VID_2207&PID_0006&REV_0222
%CompositeAdbInterface%     = USB_Install, USB\VID_2207&PID_0006

;Sony Xperia M Dual C2005
%CompositeAdbInterface%     = USB_Install, USB\VID_0FCE&PID_519B&REV_0228&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_0FCE&PID_519B&MI_01

;Lenovo IdeaTab S6000-H
%CompositeAdbInterface%     = USB_Install, USB\VID_17EF&PID_75E2&REV_0255&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_17EF&PID_75E2&MI_01

;Samsung Galaxy Note Edge
;SAMSUNG_Android
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&REV_0400&MI_03
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&MI_03
;CDC Serial
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&REV_0400&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&MI_01

;Samsung Galaxy S4 GT-I9500
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&REV_0400&ADB
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&ADB
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&ADB
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&MI_03
%CompositeAdbInterface%     = USB_Install, USB\Vid_04E8&Pid_6860&MI_03
%CompositeAdbInterface%     = USB_Install, USB\Vid_04E8&Pid_6860&Class_FF&SubClass_42&Prot_01
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&Class_FF&SubClass_42&Prot_01

;Samsung Galaxy S4-mini GT-I9190
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&REV_0400&ADB
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&ADB
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&ADB
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&MI_01
%CompositeAdbInterface%     = USB_Install, USB\Vid_04E8&Pid_6860&MI_01
%CompositeAdbInterface%     = USB_Install, USB\Vid_04E8&Pid_6860&Class_FF&SubClass_42&Prot_01
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&Class_FF&SubClass_42&Prot_01

;HUAWEI G610-U20
%CompositeAdbInterface%     = USB_Install, USB\VID_12D1&PID_1038&REV_0255&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_12D1&PID_1038&MI_01

;HUAWEI U8950-1
%CompositeAdbInterface%     = USB_Install, USB\VID_12D1&PID_1038&REV_0231&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_12D1&PID_1038&MI_01

;Samsung Note 10.1 SM-P6012
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&REV_0400&ADB
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&ADB
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&ADB
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&MI_03
%CompositeAdbInterface%     = USB_Install, USB\Vid_04E8&Pid_6860&MI_03
%CompositeAdbInterface%     = USB_Install, USB\Vid_04E8&Pid_6860&Class_FF&SubClass_42&Prot_01
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&Class_FF&SubClass_42&Prot_01

;HTC Desire 616 dual sim Android Phone
%CompositeAdbInterface%     = USB_Install, USB\VID_0BB4&PID_0EDD&REV_0216&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_0BB4&PID_0EDD&MI_01

;
; MY DEVICES HARDWARE IDS / X86 / END
;


[Google.NTamd64]

;Google Nexus One
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_0D02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_0D02&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E11
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E12&MI_01

;Google Nexus S
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E21
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E22&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E23
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E24&MI_01

;Google Nexus 7
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4E40
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E42&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E44&MI_01

;Google Nexus Q
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_2C10
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_2C11

;Google Nexus (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4EE0
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE4&MI_02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE6&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE7

;Google Glass
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_9001
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_9001&MI_01

;Project Tango (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4D00
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D02&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D04&MI_02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D06&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4D07

;
; MY DEVICES HARDWARE IDS / X64 / START
;

;Nexus 4
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2&REV_0228&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2&MI_01

;Motorola Moto G
%CompositeAdbInterface%     = USB_Install, USB\VID_22B8&PID_2E76&REV_0228&MI_02
%CompositeAdbInterface%     = USB_Install, USB\VID_22B8&PID_2E76&MI_02
;Motorola Networking Interface
%CompositeAdbInterface%     = USB_Install, USB\VID_22B8&PID_2E82&REV_0228&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_22B8&PID_2E82&MI_01

;i.onik TP9.7-1500DC Retina
%CompositeAdbInterface%     = USB_Install, USB\VID_2207&PID_0006&REV_0222
%CompositeAdbInterface%     = USB_Install, USB\VID_2207&PID_0006

;Sony Xperia M Dual C2005
%CompositeAdbInterface%     = USB_Install, USB\VID_0FCE&PID_519B&REV_0228&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_0FCE&PID_519B&MI_01

;Lenovo IdeaTab S6000-H
%CompositeAdbInterface%     = USB_Install, USB\VID_17EF&PID_75E2&REV_0255&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_17EF&PID_75E2&MI_01

;Samsung Galaxy Note Edge
;SAMSUNG_Android
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&REV_0400&MI_03
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&MI_03
;CDC Serial
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&REV_0400&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&MI_01

;Samsung Galaxy S4 GT-I9500
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&REV_0400&ADB
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&ADB
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&ADB
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&MI_03
%CompositeAdbInterface%     = USB_Install, USB\Vid_04E8&Pid_6860&MI_03
%CompositeAdbInterface%     = USB_Install, USB\Vid_04E8&Pid_6860&Class_FF&SubClass_42&Prot_01
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&Class_FF&SubClass_42&Prot_01

;Samsung Galaxy S4-mini GT-I9190
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&REV_0400&ADB
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&ADB
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&ADB
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&MI_01
%CompositeAdbInterface%     = USB_Install, USB\Vid_04E8&Pid_6860&MI_01
%CompositeAdbInterface%     = USB_Install, USB\Vid_04E8&Pid_6860&Class_FF&SubClass_42&Prot_01
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&Class_FF&SubClass_42&Prot_01

;HUAWEI G610-U20
%CompositeAdbInterface%     = USB_Install, USB\VID_12D1&PID_1038&REV_0255&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_12D1&PID_1038&MI_01

;HUAWEI U8950-1
%CompositeAdbInterface%     = USB_Install, USB\VID_12D1&PID_1038&REV_0231&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_12D1&PID_1038&MI_01

;Samsung Note 10.1 SM-P6012
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&REV_0400&ADB
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&ADB
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&ADB
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&MI_03
%CompositeAdbInterface%     = USB_Install, USB\Vid_04E8&Pid_6860&MI_03
%CompositeAdbInterface%     = USB_Install, USB\Vid_04E8&Pid_6860&Class_FF&SubClass_42&Prot_01
%CompositeAdbInterface%     = USB_Install, USB\SAMSUNG_MOBILE&Class_FF&SubClass_42&Prot_01

;HTC Desire 616 dual sim Android Phone
%CompositeAdbInterface%     = USB_Install, USB\VID_0BB4&PID_0EDD&REV_0216&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_0BB4&PID_0EDD&MI_01

;
; MY DEVICES HARDWARE IDS / X64 / END
;


[USB_Install]
Include = winusb.inf
Needs   = WINUSB.NT

[USB_Install.Services]
Include     = winusb.inf
AddService  = WinUSB,0x00000002,WinUSB_ServiceInstall

[WinUSB_ServiceInstall]
DisplayName     = %WinUSB_SvcDesc%
ServiceType     = 1
StartType       = 3
ErrorControl    = 1
ServiceBinary   = %12%\WinUSB.sys

[USB_Install.Wdf]
KmdfService = WINUSB, WinUSB_Install

[WinUSB_Install]
KmdfLibraryVersion  = 1.9

[USB_Install.HW]
AddReg  = Dev_AddReg

[Dev_AddReg]
HKR,,DeviceInterfaceGUIDs,0x10000,"{F72FE0D4-CBCB-407d-8814-9ED673D0DD6B}"

[USB_Install.CoInstallers]
AddReg    = CoInstallers_AddReg
CopyFiles = CoInstallers_CopyFiles

[CoInstallers_AddReg]
HKR,,CoInstallers32,0x00010000,"WdfCoInstaller01009.dll,WdfCoInstaller","WinUSBCoInstaller2.dll"

[CoInstallers_CopyFiles]
WinUSBCoInstaller2.dll
WdfCoInstaller01009.dll

[DestinationDirs]
CoInstallers_CopyFiles=11

[SourceDisksNames]
1 = %DISK_NAME%,,,\i386
2 = %DISK_NAME%,,,\amd64

[SourceDisksFiles.x86]
WinUSBCoInstaller2.dll  = 1
WdfCoInstaller01009.dll = 1

[SourceDisksFiles.amd64]
WinUSBCoInstaller2.dll  = 2
WdfCoInstaller01009.dll = 2

[Strings]
ProviderName                = "Google, Inc."
SingleAdbInterface          = "Android ADB Interface"
CompositeAdbInterface       = "Android Composite ADB Interface"
SingleBootLoaderInterface   = "Android Bootloader Interface"
WinUSB_SvcDesc              = "Android USB Driver"
DISK_NAME                   = "Android WinUsb installation disk"
ClassName                   = "Android Device"

6. Now we are good to go. With Settings > Developer Options > Android Debugging checked and your device still connected, go back to your Control Panel > Device Manager on your PC and right click on your Android device name with the yellow exclamation mark, then choose Update Driver Software… and follow the on-screen instructions. It will ask for your driver’s location and you must provide it with the modified driver’s directory. If you’ve done everything right, Windows should be able to detect the device and warn you with the following window (Figure 5.):

Figure 5. Windows Security: Windows can't verify the publisher of this driver software

Figure 5. Windows Security: Windows can't verify the publisher of this driver software

7. This happens because by comparing the hash of the file, Windows knows that the file has changed. And since these changes are not from Google, for security reasons, it warns the user. We know we changed that file, right? So, proceed with the installation by hitting the Install this driver software anyway button. Note on Windows 8, 8.1 and probably 10, due to stricter security policies you won’t be able to install the modified driver, even though you have chose Install this driver software anyway option. We will come to that later, and I’ll show you a way to bypass that too.

8. Once more check Control Panel > Device Manager to see if the driver installation was successful (Figure 6.).

Figure 6. Device Manager: Successfully recognized ADB driver

Figure 6. Device Manager: Successfully recognized ADB driver

9. The last step is to verify whether ADB recognizes the Android device or not, using adb devices command (Figure 7.):

Figure 7. Recognized device by ADB inside the command line

Figure 7. Recognized device by ADB inside the command line

Windows 8 / 8.1 / 10 instructions: OK, if you are on Windows 8 or newer versions of Windows, disable Driver Signature Enforcement before installing the modified driver by following these steps (note that it requires a reboot on your PC):

Step 1: Press WIN_KEY+C to open the Charm menu or by moving your mouse courser to the lower right edge of the screen and then click the gear icon also known as Settings:

Figure 8. Disabling driver signature enforcement on Microsoft Windows - step 1

Figure 8. Disabling driver signature enforcement on Microsoft Windows - step 1

Step 2: Select Change PC Settings:

Figure 9. Disabling driver signature enforcement on Microsoft Windows - step 2

Figure 9. Disabling driver signature enforcement on Microsoft Windows - step 2

Step 3: Select Update and Recovery:

Figure 10. Disabling driver signature enforcement on Microsoft Windows - step 3

Figure 10. Disabling driver signature enforcement on Microsoft Windows - step 3

Step 4: Select Recovery, then Restart now in the Advanced startup section:

Figure 11. Disabling driver signature enforcement on Microsoft Windows - step 4

Figure 11. Disabling driver signature enforcement on Microsoft Windows - step 4

Step 5: Click on Troubleshoot button:

Figure 12. Disabling driver signature enforcement on Microsoft Windows - step 5

Figure 12. Disabling driver signature enforcement on Microsoft Windows - step 5

Step 6: Click on Advanced options button:

Figure 13. Disabling driver signature enforcement on Microsoft Windows - step 6

Figure 13. Disabling driver signature enforcement on Microsoft Windows - step 6

Step 7: Click on Startup Settings button:

Figure 14. Disabling driver signature enforcement on Microsoft Windows - step 7

Figure 14. Disabling driver signature enforcement on Microsoft Windows - step 7

Step 8: Click on Restart button to reboot your PC:

Figure 15. Disabling driver signature enforcement on Microsoft Windows - step 8

Figure 15. Disabling driver signature enforcement on Microsoft Windows - step 8

Step 9: After rebooting your PC you will see the following screen. Press F7 on your keyboard to boot with Driver Signature Enforcement feature disabled:

Figure 16. Disabling driver signature enforcement on Microsoft Windows - step 9

Figure 16. Disabling driver signature enforcement on Microsoft Windows - step 9

Step 10: Go to Control Panel > Device Manager and proceed to the driver installation as described in the main driver installation process, steps 6 to 9 (where you’ll get the Windows Security warning, Figure 5.). Please note that after rebooting your PC, Driver Signature Enforcement will be enabled again. So, you don’t have to enable it manually.