[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Lijst met ondersteunde devices genereren



op 09-10-14 14:47, Jan-Rens Reitsma schreef:
> On 10/08/2014 11:58 AM, Paul van der Vlis wrote:
>> op 08-10-14 06:30, Geert Stappers schreef:
>>> On Wed, Oct 01, 2014 at 01:52:11PM +0200, Paul van der Vlis wrote:
>>>> op 01-10-14 13:33, Jan-Rens Reitsma schreef:
>>>>
> <knip>
>>>> Je kunt daar de ID's wel vinden, maar je weet niet of er een driver
>>>> voor
>>>> in Linux zit.
>>>>
>>>> Dat kun je wel achterhalen met mijn lijst, door te zoeken op een
>>>> device-id of een beschrijving. Als hij te vinden is wordt hij in
>>>> meer of
>>>> mindere mate door dat Linux kernel ondersteund.
>>>>
>>>> Verder kun je met mijn lijst achterhalen welke driver de ondersteuning
>>>> biedt.
> 
> Dan kan een bezoeker in elk geval de naam vinden van de driver die hij
> zoekt. Als er voor zijn device geen driver op de lijst staat dan weet
> hij dat er in een bepaalde kernel (nog) geen driver voor zijn device is.

Tenzij er een generieke driver is.
Zo zullen er nog wel wat meer mitsen en maren zijn.

Ik denk bijvoorbeeld dat het op het moment vooral geschikt is voor USB
en PCI, en minder voor andere types devices, bijvoorbeeld firewire of HDMI.

>>> Zie ook https://www.h-node.org/   een project van de FSF.
>>
>> H-node is zeker interessant. Maar volgens mij niet vergelijkbaar met de
>> lijst die ik gegenereerd heb.
>>
>> Hoe bruikbaar mijn lijst in de praktijk is, zal zich nog moeten bewijzen.
> 
> De lijst lijkt mij heel bruikbaar maar hij is erg lang. Ik zou (met een
> CGI-script) een front-end voor de lijst plakken. Bezoekers hoeven alleen
> de gegevens van een driver voor een bepaalde VID:PID combinatie van een
> PCI- of USB-device te weten.
> 
> Het is niet moeilijk om daar een CGI-script voor te schrijven. Het werkt
> veel sneller en het scheelt een berg overbodig datatransport. (De
> lijsten zijn ongeveer 1 MB.)

Dat zou zinnig kunnen zijn.

>> Voordeel lijkt me dat hij automatisch gegenereerd wordt, en dat de kans
>> op menselijke fouten daardoor kleiner is.
>>
>> Verder lijkt me dat hij "compleet" is voor een bepaald kernel. Als een
>> device er niet in staat, weet je dat er geen ondersteuning is.
>>
> 
> Dan lijkt het mij handig om voor (de laatste versies van) alle
> beschikbare kernels zo'n lijst te genereren. De gegevens uit de
> verschillende lijsten kun je in een database onderbrengen waarin ze snel
> opgezocht kunnen worden.

Wat ook heel interessant is, is een doorzoekbaar systeem te maken van
kernel submits. In het verleden heb ik wel vele changelogs gedownload en
dan doorzocht, om zo te kunnen zien of er nog wijzigingen in een
bepaalde driver waren.

>> Ik zal de link hier nogmaals noemen:
>> http://www.vandervlis.nl/devices/
>>
>> Ik heb de lijst nu van twee kernels. Wat me opvalt is dat er in het
>> nieuwe kernel (3.16.0) behoorlijk veel meer unieke devices ondersteund
>> worden dan in het oude (3.2.0-4):
>> 6752 USB devices (was 5942), 4993 PCI devices (was 4212).
>>
>>>>> Ik weet niet of deze lijsten altijd compleet en up-to-date zijn.
>>>>
>>>> Dat zijn ze niet.
>>>
>>> Mooi toch. Het betekent dat er ontwikkeling is.
> 
> De 148f:7601 device ID van wifi-usb adapter van Rene staat bijvoorbeeld
> op de usb.ids lijst vermeld als Ralink Technology, Corp. MT7601U
> Wireless Adapter terwijl er (nog) geen Linux-driver voor die
> wifi-adapter bestaat.

Inderdaad.

>> Er komen steeds nieuwe devices bij, dus je zult altijd bezig blijven...
> 
> Het up-to-date houden van de databases is gemakkelijk te automatiseren.
> Hieronder vind je een stukje Perl waarmee je de drivers uit de lijsten
> kunt verwijderen die niet voor PCI- of USB-devices bedoeld zijn.

Ik heb de indruk dat er nog wel meer gesleuteld moet worden, volgens mij
gaat er bijvoorbeeld wat mis als het bedrijf onbekend is.
Ik moet de scripts zelf ook eigenlijk publiceren.

Maar eerst weinig tijd nu...

Groet,
Paul.

>> Groet,
>> Paul.
> 
> Groeten,
> Jan-Rens.
> 
> ===================================
> #!/usr/bin/perl
> use strict;
> 
> my($fname,$srcdir,$dstdir,$prev);
> my(@inlines,@outlines);
> 
> $srcdir = "raw-data";
> $dstdir = "stripped-data";
> #$fname = "3.16-0.bpo.2-amd64";
> $fname = "3.2.0-4-amd64";
> 
> open(DATA, "< $srcdir/$fname")
>     or die "Couldn't open $fname for reading: $!";
> 
> LINE: while(<DATA>) {
>     next LINE if $_ =~ /^This/;
>     push(@inlines,$_);
> }
> 
> close(DATA);
> 
> $prev = $inlines[0];
> 
> foreach (@inlines) {
>     if ($_ =~ /^PCI/
>         || $_ =~ /^USB/
>         || $_ =~ /^[0-9a-f][0-9a-f][0-9a-f][0-9a-f][ ]/) {
>         if ($prev =~ /^\/lib/) {
>             push(@outlines,$prev);
>         }
>         push(@outlines,$_);
>     }
>     $prev = $_;
> }
> 
> open(DATA, "> $dstdir/$fname")
>     or die "Couldn't open $fname for writing: $!";
> 
> print DATA @outlines;# or die "Can't write to $fname: $!"; }
> 
> close(DATA);
> 
> ===================================
> 
> 





-- 
Paul van der Vlis Linux systeembeheer, Groningen
http://www.vandervlis.nl


Reply to: