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

Re: Lijst met ondersteunde devices genereren



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.


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.)

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.

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.


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.

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);

===================================


Reply to: