 OK, so this is talk about hardware, improving the hardware support for, especially user point of view. And it's all about making hardware report, putting stuff in database and doing something like it's on for software and popularity contest or just find another name so we actually know what are the devices used by all users and how well we support it. When it comes to supporting some hardware, obviously there are two aspects. The first is the help streams have to support the given device. We need to have a driver. And then to support this device, even though it's in the current, it's released, we have to configure this device. Obviously, nowadays, configuring a device is usually very transparent for the user. I mean, we're very far away from Linux 2.0 or Linux 1.0 where you have to write your modules files where you have to configure Xorg very in very complex way. But so usually it's a maintainer who does the job. But to some extent, the user may sometimes have to do some task on his system to get better support for the hardware. By the way, I've made it so we have quite some time for questions and comments. So if you have some, just don't hesitate. There's probably a microphone somewhere here. Okay, so we have different populations which have different needs when it comes to improving the hardware support. I've put the user first. I've put the developer. It's really three different kinds of use. For each supported distribution, we need to know how many people use a given hardware. Just to know where we should focus, what we should test, which scenario is the most sensible to test. That's really useful. Also, it can be used to say, hey, we are not supporting, we don't have anything to support, maybe a webcam inside of your laptop. People don't really need it, but if a lot of users have maybe such a webcam, we might be interested in providing such support. Then the developer wants to know if a given device is supported by a given distribution because we are now providing some backpots and also, obviously, to release a given distribution. So when we freeze the distribution, we want to make sure we support common devices. And really getting into how it's supported, it's not just a matter of do we have a driver, but if every user have to make a configuration to get the device to work and we can automate it, it's cool. So again, if we have some kind of popcorn which is capable of saying, we have 50% of our user which the driver is loaded and 50% for which it's not loaded, maybe we can do something to avoid the user to have to configure a system. So having those figures are really helpful to improve the situation. It can be also because hardware support is such a large topic, we'll see it later. We might also be able to test actually the device and say, does my audio device actually provide, output some sound. So user needs, the user wants to buy hardware, he wants to know if it works. So user wants to install Dubian on existing hardware and he just says, should I take stable or testing or what else, or will I be able to get better support? So he doesn't have to download three times a distribution to actually install it, especially for new hardware, I mean. So that's the kind of question the user has obviously. And to some extent some device will always require some configuration, hopefully the less the better, but maybe installing some non-free firmware or just saying for a printer which paper size you want, that's the kind of configuration. We can do it automatically. We also have the vendors, they have in the talk last year about some vendors being interested in having some regression tests to say, does my device work with some famous Linux distribution? That's also a need they have. They want to know which distribution is supposed to work. And if they're capable of getting those information quickly, they are more likely to advertise the fact that, hi, we believe that Debian works on your system. They may choose to officially support or not the hardware, but if they have an easy way to test it, I mean, it's likely that they would advertise it. If we can provide automatically some URL, so provider can say, just go to this page and you have some database which are getting to be updated. That's also something that would interest them. As we've seen, the hardware support is something kind of wide area for the different use that are going to be made and how we can collect those information. Typically, I've come to divide this in three areas, especially when it comes to make a tool to improve the situation. On one side, this is the part which really interests me is to have some periodical inventory of the user. I mean, if the user wants to provide such data to Debian. So we know which devices are currently used. This is really exactly what popcorn is doing for software. We also could want to provide some automatic testing either for windows, for users. We could imagine that some user would be very interesting having a Debian Live CD with the latest KNL to have improved hardware support, getting into a shop, booting on that CD and having automatic tests. That would be nice. Also, that user maybe can boot on this CD and go online and say, okay, this one is not working, but you will just have to do this and this and it's going to work. So automatic testing is another area which has different needs and requirements. And then to improve hardware support, we might also want to ask for user feedback. Detecting if a sound guard is actually working is sometimes a bit tricky because maybe it's playing but the sound is muted or it's all going to the less speaker. So having some feedback from the user is also a source of information to improve hardware support. As you'll see later during this talk, I'm really focusing on this first part. And currently, I couldn't find a tool which really fits this needs. There are some tools to do some testings. There are some tools which focus on getting user feedback which could be useful too, but I believe it's not because we already have such tools in some way. If we get the user feedback, we have the bug tracking systems, we have mailing lists, obviously, where people can just come and say, this device is working. And they provide an installation report and say, this device works. So the user feedback, we have it. It's not the main part of an interest. Doing automatic testings is really something which is very interesting. I personally don't have the skills to do those tests. And I believe that's another problem. Collecting existing devices is really important. So I'm focusing on the first part right now. Why hardware database? Because if we want to be something which we can easily query, getting user to the mailing list and say, just search inside the mailing list is not very easy. And then from the mailing list, we might want to point, I mean, even if the user finds a bug report, we want to have something which provides synthetic information and not having to pass a whole bunch of mails over the time. So having those data, or many data, as much as we can over the time in the database helps. It doesn't prevent having installation reports or linking it to our installation report. Also, some people, I mean, if you go to IRC channels, it's like, can you pass this file and then can you pass this file? We could improve this situation too by just saying, I have uploaded the configuration of my system and you can just go and click on this URL and you will see all the details about my system, DMI information, PCI information. Maybe in the future, we might want to allow the user to easily upload some log files. What we can't really do at the moment, especially automatically, we can't advertise and say we support those devices and we don't support those devices. We'll see many who have something but it requires manual maintenance and it's not fun. It's difficult for us to say, okay, Vendor, we have lots of users who choose your device but are not happy because they have to install the firmware which is not available and it causes problems. Hey, Luke, you have a competitor which is doing pretty well on the Linux market because he supports much better Linux than you do and if you are providing more support for the Linux community, you could get more customers. There are obviously many more things we could do if we could process the database and retrieve information out of the data. In any... Sorry. Since Tobian Boot exists, people send bird reports either for device which works or device which doesn't work and this work already pretty well. There's a lot of traffic on this list and people really play the game. For those who don't know, I suppose there's not so many... Bird reports are typically like this where it's a mix of... Automatically... The installation report provides some information that are automatically gathered from this local system and then the user can put its feedback. So we have very useful information about the system, how it was configured and then the enumeration of the PCI devices and the user here could say, okay, this is working, this is working, this is working and yeah, cool. Is the video streamed currently or... If people are watching the video over the streams, you can get the slides from the... from the patrons of the talk. It's downloadable and available. Do you have some questions so far? I'd like to know if the script installation report also uses the information from DMI decode. It does if it's installed on the system, which is installed by default. Okay, I think this is for me very important because when I buy new hardware I cannot ask somebody at the shop can you give me the output of Alice PCI? I only know it's some sort of mainboard or some sort of notebook and I think it's very nice to have this information mostly also on the installation reports. Yeah. Because I think this is what the end user is seeing. If he wants to buy a piece of hardware he only sees this is a Lenovo or ASA or whatever hardware and nobody sees the Alice PCI IDs. We could... I'm pretty sure there's lots of people who are interested in WINDOW in Debian but have some skills in Windows environment and could provide some scripts to extract appropriate information even though what you said is... knowing the name of the system is very useful. If I go back to... I hope there's no sensitive... Here it was stripped by the user but if DMI decode is available the information will be retrieved. For those who don't know DMI is a standard to publish information about the locale system of the hardware and it's more like documentation built into the hardware than actually a way of probing the device. But it's very useful because we really know that this is an HP notebook, this model. How do we support... What do we have for support in... for hardware support in... This one is pretty huge so maybe I'm going to use to open it locally. We have a wiki page which extracts the information from the canal and just publish it. Yeah, here it is. And so if a user know... This is more like for advanced users who already knows and do a LSPCI, gets a PCI ID device ID and if they Google or whatever search engine they use for the PCI device they can reach this page which really is... Because each module lists which device it handles and can sanitize it and publish it and this is what it's dispatched about and then we have some links. So maybe... So this device it's handled by the module IWL3945 and we have a mechanism to medically link to the wiki page which documents what could be done if anything for this given wireless adapter. Useful. Something I would like to see that we are currently missing and would be a great enhancement also from this database is that we currently have very good hardware support in most notebooks but what I remember from last year's talk from Intel the less watts initiative well, I've gathered from that talk and from the running power top some advice, for example you don't need a webcam, it's supported just remove the module and you're saving to watts. Things like that could be also automated if they were in a database so profiles for low power consumption and so on could be done because those tools are meant for users like cost currently and they are out of the reach most of the audience. Yeah, you're correct and we can really what we can do is something because here it's name let me see, it's name the page is named device database but yeah, okay it's generated automatically but it really has to do with the database and we can create a database with automatically link to say, this device is supported by this driver so just have a look at this with your page for hints on how to use it we have the same for USB USB is a little bit more difficult because it's sometimes supported by user launch tools like for smart cards but we can still extract the information so here again it's an extraction of the package oops formatting issue with all the devices which is published and we have some information of which package supports this module because currently we have no tool to say user, okay you have this smart card reader you should install this package to get a good support I know there's some work for this topic but that's something we need and by publishing those information the user can easily find which package you can install there are some tools you can find on the internet which are aimed to improve hardware support one quite well known is port which is initially originally from federal project it's used by reddit it's used by opensuse since version 11 it's a tool which is nice because it has both a GUI and a cron job so the cron job can send data periodically and the GUI can be used to ask the user about how work it's working how well it's working from this this tool is apparently used to provide to help reddit to certify the hardware one problem I found it in this tool is that it requires Python which basically means it doesn't work in Debian installer and as we'll see later in this project I really wanted to be able as soon as possible to let the user report on the other way query information to see what should I do to weigh in one way so it's I'm trying to install Debian but the hard disk is not supported so the user should still be able to upload the information and say my device doesn't work on the long term we could also imagine the opposite, the user is in front of his computer and says I can't install my computer because it seems the hard disk is not supported so if the user was capable of querying a website and say the database okay there's something wrong just let me know why my hard disk is not supported and the user could have the web page probably rendered in text and displayed in Debian installer and maybe that page could say you just have to do this so it works or you have to download this version of Debian or you have to configure your BIOS in this way because many users just don't have many computers at home to be able to browse on one computer actually install on the other so it means you have to oh it doesn't work, I have this error message I write it down, I reboot I connect with my previous operating system oh this error message, okay I should do this and we try again you probably experienced that Ubuntu Ubuntu used to have a product named HWDB they don't seem to include it anymore since Debian but they have a very interesting tool which is also Python based which is really about getting certified hardware and it's probably meant to be automatic and it's very very interesting but again it's Python based and it doesn't have anything like automatic and periodic data collection to know which is currently used something like busybox but not busybox obviously I'll come back to you there is some other tools I couldn't find any which really fit what I wanted to do hardware for Linux is a very interesting initiative because it has a very simple script with unfortunately some C codes to be able to report and look up if a device is supported it's meant to be multi-distribution it's really minimalist obviously they don't well made it in a way so each distribution builds its own database and be able to connect to its own websites or wiki or whatever that's an interesting small script for collection they provide some information that's quite interesting they have a quite good website it's probably something let's say we want t60 no excuse me I'm not on the right search page yeah the user can browse and see all the devices and get some hints of what is working, what isn't working for a maintainer it's interesting because you can search a device and say what which system use this device there are some interesting aspects in this website really it's their own thing which is meant to publish their own data and one thing we want is to be able to point user pages and we want to be able to say in these pages you should do this in the BIAN to fix your problem okay there are some other tools as I mentioned open source use has switched to smolt actually smolt was initially meant to be cross distribution they haven't reached this goal yet but it's interesting we haven't been to this website it's interesting too because you have a list of devices and at some point you can click on a link and get to a wiki page which explains what you should do to get better support for this hardware where with that again this website has some interesting features to search supported devices when you browse it's pretty well done okay so why yet another tool as I explained we want to report existing this system and existing device and collect all the information we want to have as many as possible information in the long run we say we want gmi decode because that's what's a user know PCI information because that's an effective way to know what's inside the machine ideally we would like to have this reported on the first boot so the user could give some feedback maybe and we very soon have those information even if the user just try one on the system on this page when there are three stars it's probably something we really want I consider we want it really and two stars it's not so important one star it wasn't the focus the main focus of my project so we want to be able which device we are installed we want to report weekly so we don't just know oh some people have had this device at some point we want to know are they still using it currently we wanted to run on a very wide range of setups we have embedded derivatives like embedded which are really tiny and they probably still want to have some to be able to run this device this this tool so they know how many people use that product it doesn't have to be how to specific it should be possible to report either if the network is broken or the hard disk is not what I mean broken when the network connectivity doesn't work or when the hard disk doesn't when the user can't store data so it should be quite flexible and it should be easy for the user to submit his report when something doesn't work and obviously it's meant to be useful to improve hardware support it's not just collecting data for collecting data and this is where I hope some of you could will have some feedback on where we should focus at some point I think it's the whole thing could become something really useful so the user just don't have to go to passbin and you know an IRC channel and say okay this is this file my LSPCI got this and LSPCI dash V 0 to 0.8 I mean the user don't want to do it so if we can make it easier for them to report what's their system so other people can help them that would be great how have I designed my project so far I'm collecting data from three sources I am analyzing the packages like I used to in the wiki page so I get the kernel I get all the aliases in the kernel I will see and say okay we are supposed to support all those devices then the second step the second source of data is to have a tool to on the live system to query the device that are on this system we also fetch some information from external sources like PCI IDs have the description of PCI put all that in the database let the user query the database so any system or any device or any driver we support can be seen and the user can actually find it so a user should be able to say okay I am going to run Debian Leni with this device work a developer wants to know okay what are the devices supported handled by these modules and with all three sources of information we can have a pretty good overview for those of you who have used genics for a while or computers for a while before it was very difficult to know which devices were handled by the given driver because it was really probing the devices nowadays PCI USB buses and so on just expose the list of devices they are supporting we can enumerate it because we can enumerate it the package themselves usually contain a list or some logics to know which device are supported and this is why here we can just collect the information from existing packages we can get as we see on the wiki page we can just interrogate the canal modules and know which devices are supported by this canal this is how it's done typically as you probably all know a module in enuix has aliases and ok so oh yes I can't the aliases you see in this list are the magic thing in the canal to know that a device which vandoid v 4x0 8086 is intel and then you have d and 4x0 10df this is a PCIID and the canal can know that it has to load the driver e1000e so we can just query all those devices in the same way other tools which handle hardware usually have a way to list the supported devices so here for smart cards which is using the userlandtools libusb in the file which contains a list of supported devices you have the vandoid you have the PCIID you have a description so again we can just collect those information put it in the database and automatically say to the user this device should work on your system obviously the canal exposes the device which are currently connected to the system you can also usually know which driver use handles a given device this has been really improved ccfs now if you want to analyze a live system the PCI we're over oh shit sorry okay the PCIID again the PCIID is exposing so as I mentioned we get all the information the class of device PCIID to identify this device and finally it exposes which driver is using it we have some other source of information from the canal from DMI data so the tool the tool on which I have worked is a tool which is a corrector, it's written in shell script so it's and it should be 100% busybox compatible so we can integrate it in DI later it should be able to fall back if one tool to query is not available we should try another way because we really want to make sure we capture all the data we can regarding the current install device the output is put is in XML file because we want to be able to add more and more information over time without having to modify all the tools other way previously is obviously a concern serial numbers for support can be a problem we want to make sure we filter this out properly also give the user the choice, the level of privacy he wants to preserve that's a project I have restarted I think 4 times I restarted this project with different point of view and wondering what was the best way to achieve it can you read? you probably can't see it with the colors is it better? so we just generate an XML file with all the data which we have created in it we also obviously want to make sure we know which distribution the people are using I'm still not sure I think we probably want to include the list of packages on the system too much and maybe at some time say all the people who use this device seems to have this package even this package has a low popcorn or that's an idea from Peter Panoski I'll just keep it because I want your different point of view as a user as a developer, maybe as upstream on what would be the most useful information and should we have focus on hardware testing on collecting the device as a kind of hardware popcorn so I have some suggestions of what this tool should focus on doing I'm very interested how many of you are maintaining some packages which involve hardware support directly? I've got a question about how to detect that sound is working can that done be via a script or does the user have to check a box where I can hear something we really have three areas when we want to improve hardware support and collect how the device is working currently my project is focused on the first part which is collecting the list of data I use I think some tools are very interesting because they are concerning actually testing the hardware but it requires to have some high level language or bigger installations to be able to perform those tests usually it's half automated and it requires user intervention my experiences with sound is that there's no problem to get the kernel driver for the audio device I'm using but then the audio device needs some certain kernel module settings because of the audio codec often you have the same sound chip but the codecs in the audio chips are very different and you need very different option to function at all so if you have the wrong settings the kernel recognizes the sound chip but you don't hear anything and that's where having a website exposing properly all those information is interesting because we can point the user and say you are using this device and this driver and you are used on those systems and we can have a link specific for okay you have snd Intel something for me and you're using ThinkPad so just visit you can visit this page where it has information and here we can document that you should use this option for the kernel this is really basically what I want to do is to be able to point the user to source documentation in some way and telling it that this PCI ID is handle about this device making some automatic tests is another topic which I think would be very useful to have some people working on it but it's already such a huge project one other thing do you know there's a web site kmuto.jp which also have the hardware list maybe we should include some of the machine of the information or database into this thing yes I'm aware we talk together with maybe he wants to do something about all that hi okay I've developed Devian HCL page since four years ago my idea is simple I'm going to provide the module PCI map so at this time I got 13,000 over reports very nice so my next target is USB it would be nice if we can use the LS USB same as the LS PCI unfortunately imagined so maybe Franklin helped me yeah it's one thing I think this web page is very useful maybe we should make it sort of official Devian web page it's actually pretty well documented PCI Devian I think it should be enough HCL yeah with the space HCL and then Devian no just search for it I haven't visited for a while it's yeah it's a similar effort it's all about getting it in the channel and pushing the data some it's a large project I was very happy to know that I couldn't make it so we can talk about it and I'm expecting to get some feedback from him and see how we can maybe I can just join my colleague who I need to expand and it's really all about one thing that would make that page a lot more useful to me and a feature I've been missing I would actually know when the driver appeared in the Linux kernel I would like to know that in 2618 for example this ODU card started working that means of course you have to keep track of all the kernel version numbers in Devian and map that to modules but it would make it possible for me to look up a given laptop or a given machine and know which Linux and that's something I wanted to point it out is that making the Collector is rather the easy part of the game and really what is really tough is the website to I mean once we have all those data of people reporting and saying my laptop has all those devices and those drivers are loaded and maybe my ETC modules have those files and you know and then we have also imported we over so we're going to have to finish very quickly what is difficult is to do some data mining and expose it in a way which is useful for the user and user can be there and user, the developer or whoever and that's exactly it Peter? Yes, this is the page if some people have interest in this topic we can meet, if you have ideas I'm around all the time the Collector still needs to be improved I'm not creating some stuff we need some more work on getting the information from inside the package so for instance currently I'm not analyzing the module assistant kernel modules that we should compile and get them and extract the information I haven't investigated anything about supporting non-intel platforms which doesn't necessarily DMI information sometimes it's in the ETC ProxyPure info there's lots of what to be done on the website to expose the data and then to be able to analyze and say I have this PCI ID it's in this version of Debian in this kernel and it's working for most people it could be integrated in Debian Live to expose some it would be nice to have a live CD so people can just boot it in a shop and upload the information to consult them later it would be nice to have some windows or macOS so people can again go to a shop download this small tool and get the information and upload them to the website as I said small is something really nice small gives you an ID so it's a URL and you just pass this URL on the website and people can go and see your report if you have published it so there's lots of stuff to be done obviously as long as the first step is to build the database I hope I can finish it before squeeze so we have something to collect the data which is really version 1.0 please you have some more questions? ok I'll update this wiki page which is currently dummy but hardware database on the wiki will be the page where we're going to impact the status of this project thank you for your attention