I have read here that linux supports a large number of device drivers and by extension, it also supports a large number of devices connected via the USB port. Excerpt from that site:Linux today supports more hardware devices than any other operating system in the history of the world. It does this using a development model significantly different from the familiar Windows device driver model.Is there a list of all the different devices which are supported by linux? and/or list of devices which are connected via USB and supported by linux`?This is different from just finding out which device drivers are currently supported in a given distribution by using the commands lsmod, lspci and dmesg | grep <string> as the distribution providers only support few common drivers out of all the drivers supported by linux.
Where to find a list of device drivers supported by linux?
linux;drivers;usb drive
The lspci and lsusb commands just enumerates the devices connected to particular buses. They read id from the bus and use special file to map this ids to strings.The lsmod showns just list of linux kernel modules. Linux kernel module is part of linux kernel code which is loaded dynamically - this modules are not necessary drivers, it may be just any part of the kernel code. This mechanism is used to save memory and boot time and do not load all code on boot, to make kernel development easier (you can unload/modify/load parts of the kernel). As the device driver is one of good applications of this dynamic loading - it is used in most drivers. The non-driver example is iptables (the network filtering mechanism) there only parts are loaded which are actually requested by user.The dmesg is just a kernel text log - usually developer white something there in case of initialization, but this is entirely voluntary - so what you find there and which format is completely random.Complete lists of the supported hardware is hard thing to get. Kernel consists of very different parts made by different people and there is a lot of similar devices with different labels.Usually you can try to find if your device is supported on dedicated pages:supported printers are on the linux printer database http://www.openprinting.org/printers scanners are are sane page video card on http://www.x.org/wiki/Projects/Drivers/and so onThis is mainly because most things require not just kernel driver by also kind of userspace layer and there is kind of 'project' which does both parts with main interface in userspace.Most advanced list of the supported may be extracted from kernel code - there is usually list of pci/usb ids supported for each particular drivers - there is a way to extract it: http://www.cyberciti.biz/tips/linux-find-supported-pci-hardware-drivers.html. But if you have kernel module which has an ID in the list doesn't mean that device is fully supported or that you have userspace tools which allow you to use this module, or that this userspace tools exist in your particular distribution.Sometimes distribution vendors provide list of supported devices, but this is usually some small subset.For debian there is also list of pciid->kernel module mappings: https://wiki.debian.org/DeviceDatabase/PCI.Regarding usb devices, many things like cameras have kind of userspace drivers  via libusb - like cameras or so no. In such case you have no need in kernel driver at all.Also, don't forget that linux runs on near 20 architectures (imagine how many drivers are in billions of different android smart-phones), each with own huge set of drivers - and you'll see that total amount will easily beat every other knows OS.