[SOLVED] Does the kernel contain drivers for all the devices listed in "usb.ids"?
Linux - HardwareThis forum is for Hardware issues.
Having trouble installing a piece of hardware? Want to know if that peripheral is compatible with Linux?
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Not all the devices with a usb id (which is a number) have a module written for them by open source developers (which is an involved process). Not all the modules written are of high enough coding standards to be included in the kernel.
Realtek, for example have made more wifi chips than you or I have had hot dinners. Yet they don't support linux, and many linux drivers that have emerged don't get past Linus Torvalds and get included in the kernel. There's a number of Realtek linux wifi drivers on github contributed by various folks. Nvidia is another example. I presume this applies to other manufacturers also.
Basically usb.ids is just a list of all known IDs used in USB devices. It is updated from your distributions package manager but flows down from here: http://www.linux-usb.org/usb-ids.html
What is displayed in the output of the lsusb command comes from that list.
There are drivers that CAN be modules but are normally just compiled in directly that support a communication device standard and support multiple different devices of the same general type. If one of these serves well, there may never be a specific module written for devices in that class because there will never be a need for one.
Is there a specific reason for your question, or are you just curious? (Both good reasons for asking.)
Is there a specific reason for your question, or are you just curious? (Both good reasons for asking.)
On a Chinese forum, a member said (in Chinese) that the kernel included a driver for Realtek RTL8188EUS and "RTL8188EUS" existed in "usb.ids". Therefore, I wondered whether the kernel had drivers for all the devices listed in the file.
What is displayed in the output of the lsusb command comes from that list.
On my Linux, the output of "lsusb" does not contain the name of my USB speakers, which have been working fine.
In the following output, "Bus 003 Device 007" refers to my USB speakers.
Code:
Matthew_Wai@My-PC:~$ lsusb
Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 007: ID 18c3:6255
Bus 003 Device 006: ID 0781:5591 SanDisk Corp. Ultra Flair
Bus 003 Device 004: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 003 Device 005: ID 0951:1666 Kingston Technology DataTraveler 100 G3/G4/SE9 G2
Bus 003 Device 003: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 003 Device 002: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
There is a system set up in the kernel where 'unworthy' code can be compiled. I believe the Makefile can employ a 'make-C' instruction, compile with kernel headers, and end up in /lib/modules/kernel-version/misc/. These get used like other modules, but every time you update the kernel, you have to remake the module, because they're non transferable.
The realities of electronics mean that generic parts can be used, which are kernel supported. There's also a very low price point to meet. It stands to reason that parts would be generic
The realities of electronics mean that generic parts can be used, which are kernel supported. There's also a very low price point to meet. It stands to reason that parts would be generic
In the future, assuming I have to buy a new pair of USB speakers, how can I know whether generic parts are used before I purchase it?
I have never heard of a speaker needing a driver or module. Have you?
Yes, and often. But it has become quite rare since about 2004. Even before that it was more often the sound card or audio integrated circuit that needed a special driver. Generalizing those (was that in 2008?) and splitting our subsystems (and then the UDEV device detection and support) really made life easier for the users in that regard.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.