Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Introducing the Linux Hardware Guide
The Linux-Hardware-Guide provides a knowledge base and hardware compatibility list to Linux users and Linux starters in a convenient way. It is developed as self-financing Open Source project and evolved in 2012 from the hardware articles of the no longer existing online magazine "LinuxNetMag".
The Linux-Hardware-Guide tests and rates all types of hardware for their Linux compatibility for the knowledge base. A test report is created for each investigated hardware component and, if necessary, additional Linux configuration help is provided. Furthermore, Linux users can add their own hardware to the database and transmit hardware details and test results with a dedicated scan software. This allows creating a broad data basis and semi-automatic filling of the knowledge base. The Linux-Hardware-Guide is not limited to a single Linux distribution but instead tries to support all distributions and as many Linux users as possible. Currently, it supports 27 different Linux distributions. Additionally, the Linux-Hardware-Guide facilitates the knowledge transfer between Linux users who have exactly the same hardware under operation, because problem finding and solving often is much easier if someone else with exactly the same hardware is available.
All types of hardware can be added to the knowledge base, as long at its usage is somehow related to Linux or Linux can be installed on it, e.g., routers with Linux firmware installed. Hence, in addition to standard components like mainboards and laptops the Linux-Hardware-Guide also includes Linux configuration advice for more exotic hardware like blood glucose meters or weather stations. Hardware can also be added even if it already has officially been discontinued, because even than the compatibility information for this hardware component can still be of interest to other Linux users. The components can be added by a dedicated scan script which identifies the locally connected hardware and creates the corresponding knowledge base entry for the Linux-Hardware-Guide, if necessary.
In case a Linux users is searching for new and Linux compatible hardware he can configure the Linux-Hardware-Guide to show only hardware components that are supported by Linux and are available in his country. This is made possible by linking the Linux-Hardware-Guide knowledge base with data bases of external hardware suppliers. This linking allows us to show the availability of components for certain countries and selling markets, present actual market prices for these countries, and record price trends for hardware components. This feature allows the Linux user to filter out in the search results all the components that are not available or not compatible. Currently, such linking to selling markets is available for 11 countries including USA, UK, France, Spain, Italy, and Germany. These markets are available under www.linux-hardware-guide.com except for the German market, which has a dedicated web address under www.linux-hardware-guide.de.
The knowledge base currently contains 2.578 hardware components with 5374 user ratings of their Linux compatibility and 900 user comments describing its compatibility in more details. Until now 840 hardware scans were uploaded to the database from 27 recognized distributions (and 96 different variants of these distribution, e.g., Ubuntu 15.10, 16.04, 64bit, 32bit ...). Most of these scans (i.e. 486 scans in total) were uploaded from Ubuntu distributions.
Add hardware to the Linux-Hardware-Guide
The Linux-Hardware-Guide relies on Linux users who upload their hardware data to the knowledge base and rate its Linux compatibility. Over the years we learned that this only works if we make the process as convenient as possible to encourage as many users as possible. Entering new hardware information was automated in many aspects because otherwise creating an up-to-date knowledge base would be nearly impossible. This automation is achieved by a dedicated Open Source script which scans the hardware and uploads the scan results to the Linux-Hardware-Guide. This scan script gathers several system related data:
- 'lspci' to identify the mainboard, additional PCI components, and the corresponding drivers which are used by the Linux kernel for this components
- 'lsusb' to identify components connected via USB
- 'Xorg.log' is used to recognize the compatibility of graphic cards and human interface devices
- 'dmesg' allows us to recognize several hardware components and their compatibility (e.g., hard drives, webcams)
- '/proc/cpuinfo' to identify the CPU or APU and the compiler flags that are supported
The gathered data is made anonymous, i.e. MAC addresses and IP addresses and other sensitive data is removed from the log files, before they get uploaded to the Linux-Hardware-Guide. Received by the servers of the Linux-Hardware-Guide this data is automatically analyzed and identified hardware components are compared with existing entries of the knowledge base. A web page is created for each upload and allows to rate the hardware and to comment on its Linux compatibility. There, you can also leave tips for other users regarding necessary configurations steps that might be needed to make the hardware work under Linux.Figure: Example of an uploaded hardware scan
Hardware components which are new to the knowledge base are reviewed by one of the members of the Linux-Hardware-Guide, the corresponding hardware description is modified, if needed, and published afterwards.
Add your hardware data with one scan
Whoever wants to add his hardware components to the knowledge base can download the script from GitHub, e.g., under console with the console program wget:
This scripts collects all data and transfers it to the Linux-Hardware-Guide by
At the end of the scan a URL is shown where the scan results can be viewed, hardware compatibility can be rated, and comments can be left. The script uses the library libwww-perl. If not already installed under your distribution, this library can be installed under Debian and Debian based distributions like Ubuntu by
sudo apt-get install libwww-perl
Enter your hardware data with regular scans
Under Ubuntu and other Debian based distribution the scan software can also be installed as a background service, which automatically informs the Linux-Hardware-Guide if a new hardware component is connected. Under Ubuntu, this version of the scan software can be installed via the package manager by adding the corresponding repository to the Ubuntu system:
sudo add-apt-repository ppa:linux-hardware-guide/ppa
sudo apt-get update
Afterwards, an installation of the scan software by the package manager is possible with the following command
sudo apt-get install linux-hardware-guide
The first hardware scan is executed immediately. The scan results can be viewed with the program “LHG Connector” which can be found under Ubuntu's Dash or can be started by the command
Your hardware profile
The Linux-Hardware-Guide tries to connect Linux users of same hardware because it is much more promising to successfully help each other while using exactly the same hardware and possibly the same Linux distribution. Therefore, users can create a hardware profile which lists all the components that they use or for which they would like to provide configuration support to other Linux users. Registered users can manage all these components under the menu entry "My Hardware Profile". New components can simply be added to this profile from the overview page that is provided after a hardware scan or via each hardware article of the Linux-Hardware-Guide.
Figure: Typical LHG hardware profile
Open Source - Participation and software development
Without going into too many details of the used infrastructure (basically, we use Ubuntu, Apache, NGINX, MySQL for our services) at least some info regarding the used software:
The content management system which provides the front-end to the users of the Linux-Hardware-Guide bases on Wordpress. The visualization of the collected data for each hardware component and the communication between the users base on own or adapted Wordpress plugins. The software of the Linux-Hardware-Guide is published at GitHub under an Open Source licence and is under constant development. Everyone is invited to participate and to modify the code, which mainly bases on PHP. Thanks to the well documented plugin interface of Wordpress the Linux-Hardware-Guide is quite flexible and new features can quickly be added by enhancing the existing plugins or by adding a completely new plugin to the CMS.
However, even if you are not a programmer there are also other ways to support the Linux-Hardware-Guide:
- Add Hardware: The easiest way to support the Linux-Hardware-Guide is by adding new hardware components. Furthermore, rating hardware or leaving comments and configuration tips for hardware articles that you use under Linux can help other users a lot. You can also inform us via the comment sections of each page of updates regarding hardware compatibility if an article is not up-to-date any more.
- Language localization: The Linux-Hardware-Guide tries to be useful for as many users as possible, worldwide. Therefore, we provide our pages and texts in several languages. However, we do not have native speakers in our team for all of them and consequently, several translations are incomplete. Most article descriptions and configuration tips are provided in English and can be translated from our members into other languages. We therefore are always grateful if someone can support us for a certain language.
Design: We are mainly programmers but not good designers. We therefore appreciate every support or advice regarding our web site's design. If you would like to work on this aspect of the page you are welcome to do so. One of our aims for the version 1.2 of the Linux-Hardware-Guide is to get rid of the dedicated mobile version of the web page (available at m.linux-hardware-guide.com) and use a "Responsive Design" instead.
If you would like to contribute to the Linux-Hardware-Guide you probably will need some guidance at the beginning. For this, we created a mailing list where ideas can be exchanged and the other members of the team can help you. Yyou can also report bugs in our public Issue Tracker if you have a GitHub account.
Financing of the project
From the beginning of the project there was the idea that this hardware knowledge base should finance itself. Too many Linux Hardware Compatibility Lists have been created in the past and vanished, because administration and development of such a service needs many resources. Even the Linux Hardware Compatibility Lists that were initiated by companies like RedHat, SuSE, or Ubuntu were discontinued in the meantime because it is such a huge task to keep the up-to-date.
Due to the self-financing of the project we want to ensure that the Linux-Hardware-Guide can run on a long-term (i.e. that all server costs are covered) but also urgent services can be bought (e.g., services of translation bureaus can be purchased, if no community supporters are found). Furthermore, we had to learn that many hardware manufacturers are not really interested in the Linux market and are not willing to provide test hardware without fees.
The financing of the Linux-Hardware-Guide mainly bases on collaborations with hardware distributors. Due to its many international branches, Amazon has the biggest portfolio in our hardware database. However, there are also other hardware distributors linked. These collaborations allow us to receive a commission with each hardware component which is bought through our web page but additionally also allows us to access the product databases of these hardware distributors. These databases are needed to provide up-to-date information like product availability, prices, and price trends for the corresponding selling markets.
Additionally, the Linux-Hardware-Guide has a donation program which distributes its profit (i.e. after the server rent has been paid) to other Linux- & FOSS projects. All users of the Linux-Hardware-Guide can decide how the donations should be split and therefore each user automatically becomes a sponsor of the project that he likes to support. Depending on how active a user contributes to the Linux-Hardware-Guide he collects Karma points. The more Karma points he has the more influence the user has on how the donations are split between the Linux- & FOSS projects. Additionally, every hardware scan, even from unregistered users, automatically results in a donation to the Linux distribution from which this hardware data was uploaded (if the Linux distribution accepts donations).Figure: Distribution of donations to other Linux- & FOSS projects (see up-to-date distribution)
- Linux-Hardware-Guide international page: www.linux-hardware-guide.com
- Linux-Hardware-Guide German page: www.linux-hardware-guide.de
- GitHub page of LHG web service: https://github.com/cptpike/linuxhardwareguide
- Issue tracker: https://github.com/cptpike/linuxhardwareguide/issues
- Hardware Scan Script GitHub page: https://github.com/paralib5/lhg_scanner
- Mailing list: https://lists.sourceforge.net/lists/listinfo/linuxhardwareguide-mailinglist
This text and its figures were created under Creative Commons License and can be found at https://github.com/cptpike/linuxhardwareguide/wiki/Introducing-the-Linux-Hardware-Guide.