Solved Building a hardware database: how to list system hardware?

I'm relatively new to FreeBSD, and I had trouble getting the hardware on my laptop to work. I was thinking about building a new desktop from scratch, but I could not find a compatibility table for the various components.

I'm thinking of giving back by starting a compatibility database for system hardware, but in order to get started, but I have a few questions before getting started.
  • Is there interest in a database like this?
  • Has someone already started something like this? I found some info on the wiki, but it didn't seem very extensive.
  • What's the best way of detecting installed hardware?
I'm thinking of making a simple utility that detects hardware, asks the user what works OOTB, what works after configuration and what doesn't work. For now, I think I'll focus on system hardware, but I probably want to get into peripherals as well (e.g. USB WiFi drivers)

I found pciconf(8) and a few other utilities linked from there (ioctl(2) is probably what I want long term). Is there something else that I should be looking into for this type of project? I think I need a user-friendly term, interface (PCI, SATA, etc) and chipset on the device.
 
I'm relatively new to FreeBSD, and I had trouble getting the hardware on my laptop to work. I was thinking about building a new desktop from scratch, but I could not find a compatibility table for the various components.

I'm thinking of giving back by starting a compatibility database for system hardware, but in order to get started, but I have a few questions before getting started.
  • Is there interest in a database like this?
  • Has someone already started something like this? I found some info on the wiki, but it didn't seem very extensive.
  • What's the best way of detecting installed hardware?
I'm thinking of making a simple utility that detects hardware, asks the user what works OOTB, what works after configuration and what doesn't work. For now, I think I'll focus on system hardware, but I probably want to get into peripherals as well (e.g. USB wifi drivers)

I found pciconf(8) and a few other utilities linked from there (ioctl(2) is probably what I want long term). Is there something else that I should be looking into for this type of project? I think I need a user-friendly term, interface (PCI, SATA, etc) and chipset on the device.

It would be great to get to know FreeBSD first before buying hardware, but that is rarely the case. There are two things I would like to mention here:
1) Every release has its hardware notes page: https://www.freebsd.org/where.html
FreeBSD runs on a lot of hardware.
2) And this, which is very important: Many more people should work with the people here (there is also a little test proposed to send in your hardware information):
https://wiki.freebsd.org/Laptops
I tested a Macbook Air mid 2011 and a Thinkpad E540
 
How or to whom did you send the results of your tests? I opened a PR concerning the lack of a way to submit them to the Wiki…
On the lower right corner on that page there is a name, Alexey.... to which I sent the information.
A probably better address would have been: freebsd-wireless@freebsd.org .
I could boot both laptops with the 11.0-CURRENT image. It was a great feeling to run regularly FreeBSD on a laptop :).
 
Thanks BSDBernd, I had not seen there was a a mail address. Anyway, I still think that providing a more visible link will be a good idea, I’ll ping Alexey.
 
It would be great to get to know FreeBSD first before buying hardware, but that is rarely the case.

I know it well enough to estimate what I need, what I don't know is what hardware is compatible. I actually read the hardware notes page, but for things like wifi, it's difficult to match up chipsets to actual products (finding anything but Realtek proved very difficult). I find myself looking at sites like wikidevi.com to find out chipset information for products I find online. Also, not all products are created equal (I want HostAP support). For users unfamiliar with hardware, this can be a very daunting task.

I was actually very surprised about how much actually worked OOTB! I'm coming from Linux, and even there I've learned to research my hardware first.

2) And this, which is very important: Many more people should work with the people here (there is also a little test proposed to send in your hardware information):
https://wiki.freebsd.org/Laptops
I tested a Macbook Air mid 2011 and a Thinkpad E540

Interesting, this page has changed a bit since I last looked at it. My main complaint with the FreeBSD wiki is that it doesn't seem to be editable by everyone. That's why I was thinking an automated process would be a better method (and a bit easier for new users).

On the lower right corner on that page there is a name, Alexey.... to which I sent the information.
A probably better address would have been: freebsd-wireless@freebsd.org .

I looked for an email address to send my information to, but I wasn't able to find it. I did notice the link at the bottom right, but it wasn't obvious that I should send the information there, since he was just the last editor. Sending hardware information by email is also one extra step that may prevent users from actually sending in hardware information, so reducing the amount of time the user has to invest may result in better reporting numbers.

I do think the wiki is a good start, but I think there should be something a bit more searchable. For example, let's say the laptop I'm interested in is not on the list, but I'm able to check the components before I buy. Currently I'd have to browse each laptop and see if any of the hardware matches, which is a bit time consuming.

I actually bought my laptop (Lenovo T430) specifically for Linux and FreeBSD compatibility, but information was less available then (I think 9.1 was just released) and several things didn't work OOTB. I fixed a few things (e.g. WITH_NEW_XORG to get hardware acceleration to work), but I didn't know where to report my hardware or look up information about how to debug things like suspend/resume, brightness and battery. I know FreeBSD isn't designed as a desktop system, so I tried PC-BSD and had similar issues, so I figured it was a limitation of available drivers.

I really want to help out, but I really don't know where to start, which is why I thought I might be able to help with this particular pain point. I love my FreeBSD servers, and I'd really like to love a FreeBSD laptop/desktop.
 
.....
I really want to help out, but I really don't know where to start ....

I know exactly what you mean. There was an interview with the developer Adrian Chadd on the BSD Now show 55 (http://www.bsdnow.tv/episodes/2014_09_17-the_promised_wlan) and there he hints to things that users can do. There I heard for the first time of the wiki page for laptops. I really love FreeBSD, and that for many reasons, so I like to help out where I can. At our university, at the computer science department, students have to do several software projects during their study. I thought that it would be great if such students could contribute to the userland here and there instead of doing imaginary software projects.

On the WIFI wiki page https://wiki.freebsd.org/WiFi , there are several projects open for coding :).
 
First thing I want to say about a laptop (and generally hardware!) is that they cannot be identified by their model/product names. There are sometimes hundreds of different Thinkpads with different hardware inside listed under a certain model name like "T60". I have also found wireless PCI cards with the same name and chipsets of different manufacturers and I also found a netbook that has the same model name but has a different wireless chipset (totally incompatible and can be only identified when you look up some numbers on labels in the battery bay, I found out later).

The most reasonable thing to do is to get pciconf vendor and device IDs (if you want to know about USB support, get also the vendor/product IDs with usbconfig). When I want to buy hardware I always check PCI devices. And even when Windows is pre-installed, you can go to the device manager and look them up in a somehow cryptic string.
 
First thing I want to say about a laptop (and generally hardware!) is that they cannot be identified by their model/product names.

I ran into the same thing. I was just about to buy a USB wireless card because, according to my research, it had an Atheros chipset. I looked it up on wikidevi.com and found out it did have an Atheros chipset, but in the latest revision it was changed to Realtek. The model number of the device did not change but the chipset did. Here's the page for reference.

That's why I thought a hardware database would be awesome. I'm hoping that the chipset, revision and other identifying information can be queried from the hardware so if there's a match, a user could be very confident they have the same chip as is reported in the database. Devs looking for something to do in terms of supporting hardware that users actually have can just look in the database to see how many users have reported owning that exact hardware.
 
One last thing, is there interest in having a tool to report installed hardware? Is there interest in a more searchable hardware compatibility database?

Reporting tools that automatically send the results anywhere are always a security concern. That was always my concern with the bsdstats.org tool. Not that I have any doubts about them, it's just that a database which could have an IP address along with the hardware and ports installed could be a gold mine for security exploiters.

A searchable hardware database: yes, absolutely. Let me see which versions support some hardware, and with which drivers or ports. Or select a FreeBSD version to filter only supported hardware.
 
I am absolutely for a database, something that helps developers and users at the same time. May be you test your hardware like
proposed here:
https://wiki.freebsd.org/Laptops
and then send in your data via your account here in this forum. These data will then automatically be analysed and put into the database.

Edit: I had to change the text.
Edit2: A second change ..
 
Reporting tools that automatically send the results anywhere are always a security concern. That was always my concern with the bsdstats.org tool. Not that I have any doubts about them, it's just that a database which could have an IP address along with the hardware and ports installed could be a gold mine for security exploiters.

A searchable hardware database: yes, absolutely. Let me see which versions support some hardware, and with which drivers or ports. Or select a FreeBSD version to filter only supported hardware.

If I do create such a tool, I'll make sure to have an option to output metadata to a file instead of automatically pushing. This way the user could upload from another IP address if the hardware is somewhere critical (i.e. data center or something). This should hopefully elide concerns about security.

I'll probably also make reporting available as a manual process as well (e.g. for plug-in testing of external devices).

I am absolutely for a database, something that helps developers and users at the same time. May be you test your hardware like proposed here:
https://wiki.freebsd.org/Laptops
and then send in your data via your account here in this forum. These data will then automatically be analysed and put into the database.

That sounds reasonable and probably where I'll start. If all goes well, perhaps a similar tool could be made for the other BSDs as well. I basically want something like the now defunct laptop compatibility site (http://laptop.bsdgroup.de/freebsd/), but easy to download a copy in case the service goes under.

I'm not going to promise that I'll actually build such a tool, but I wanted to make sure that there was enough community support behind it to make it a worthwhile effort. FreeBSD already has the best documentation around for the base system (sometimes I prefer the Arch Wiki for ports), so it might as well have the best documentation for hardware support.
 
Hello all :)

(I must say I'm a total newbie..)

Many documents with overlapping content is bad.

The already-available "Hardware" section in the Handbook is ok, except:
  1. It is not visually structured (too long) - not really a big deal.
  2. It does not list some drivers (at least hardware monitoring like aibs, amdtemp).
If you have time and energy, how about finding and updating the source that generates that page?

(Sorry, I'm not commenting your idea of that user utility, but my comment is about its motivation - your first paragraph)
 
Many documents with overlapping content is bad.

The already-available "Hardware" section in the Handbook is ok, except:
  1. It is not visually structured (too long) - not really a big deal.
  2. It does not list some drivers (at least hardware monitoring like aibs, amdtemp).
If you have time and energy, how about finding and updating the source that generates that page?

Perhaps I could start with that, but I've found it very difficult to find a device with certain capabilities that works on FreeBSD before I buy. It's a bit of an arduous process that involves searching several different websites and cross-comparing with the FreeBSD handbook/release notes. I'm a relatively advanced user, and if it's difficult for me, it would be especially difficult for new users. Also, "support" can mean completely different things and is typically not black and white.

I have two main goals:
  1. Make it easier to find hardware that works with FreeBSD
  2. Make it easier to report support/workarounds for new hardware
The first may be solved by contributing to the existing documentation, but I feel that the best way to keep the documentation up-to-date is to reduce the barrier to contribution. Right now, you have to run a few commands, send that in an email (which isn't well documented ATM) and wait for someone to review/post it (I imagine the review/post is not automated). This may sound simple, but for me it was a very real barrier, and I didn't want to do it for each piece of hardware I wanted to test. And this was for the wiki! For the handbook, the review process may take an entire release, especially if the hardware only works on STABLE or CURRENT.

I think such a database needs to be maintained by users becomes "unsupported" hardware can often be made to work mid-release via a patch or partial functionality may work with another driver.

I do see your point, and I think a user-maintained database could be very helpful in maintaining the handbook. The handbook would remain the official documentation, while the hardware database is a record of real-world use. It could also show how common a piece of hardware is, which is useful in all manner of ways.

I will definitely get in touch with the developers first though to determine the best course of action.
 
Back
Top