Why do we need an ADB driver in Windows but not in Linux?

I have been working on Android for the past few months in Windows. To run my project on my Samsung device I had to install Kies first. Similarly for my LG device there is a LG ADB driver, and another for HTC.

But when I shifted to Ubuntu Linux recently, I didn't require any other drivers like Kies and ADB. I was able to debug directly without any third party driver. Why is that?

I know it is something very common, but I haven't found anything which explains why this is the case.

  • added update #2 to my answer
    – geffchang
    Commented Aug 17, 2013 at 13:37

3 Answers 3


Chor WaiChun mentioned this on a locked question you posted on StackOverflow:

I've seen somewhere stated that this behaviour is because both android and linux run on same kernel, and same situation goes to developing android on mac. Both OS runs in very similar OS kernel with Android, that is why they don't need any drivers. These are just something I remembered seeing from other threads, can't give 100% sure

UPDATE #1: The Android site also mentions this:

If you are developing on Windows and would like to connect an Android-powered device to test your applications, then you need to install the appropriate USB driver. ...

If you're developing on Mac OS X or Linux, then you probably don't need to install a USB driver. To start developing with your device, read Using Hardware Devices.

UPDATE #2: There's a comment on StackOverflow regarding libusb. I think this may be the reason why Linux does not need additional drivers.

Actually adb under Linux accesses USB devices using libusb without any specific kernel driver. Also adb has a list of vendor IDs which it is allowed to use, but this does not explain the problem in question, because vendor IDs for both phones are the same. And in case of permission problems due to missing udev rules adb devices clearly shows “no permissions” in the list, so this is also not the cause of this problem.

  • my question is why? Do you have some links and all so that i can get total idea, +1 for the answer though!
    – hemantsb
    Commented Aug 17, 2013 at 4:23

I am unsure why Linux doesn't typically require a specific ADB driver.

However, there is a "universal" Windows USB ADB driver that works with most Android devices. It was developed by Koushik Dutta (Koush), a famous Android developer who works on ClockworkMod. It should work quite well for you. Download here: http://koush.com/post/universal-adb-driver

  • I think you misunderstood my question, My question is why is this behavior , And i know about universal ADB driver.
    – hemantsb
    Commented Aug 17, 2013 at 4:24

As others already responded, in linux there is common USB driver, which adb uses. It seems that in Windows there is no common USB driver, so adb uses the "provided" driver - different for every device/manufacturer.

  • 1
    In Windows there's no universal driver pre-installed. There's one available however, as Neil pointed out. On the other side: There's no Kies on Linux, so you need no Kies driver #D
    – Izzy
    Commented Jan 17, 2014 at 11:39

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .