Pavel> the first vendor entry to be processed! I'm assuming that
Pavel> the code is supposed to exit if parseVendor() failed and keep
Pavel> going if it succeeded. Maybe it's better not to exit in
Pavel> either case, but to keep going.
The script is rather simple minded. It doesn't quite follow INF file
specification. It would be nice to have proper parser, as per the
Pavel> %fuzzlist doesn't keep the bus number. Instead, the global
Yes, that is a bug.
Pavel> $bus variable is used, which caused broken links. The patch
Pavel> introduces a separate hash %buslist that keeps the bus data
Pavel> for every device referenced in %fuzzlist. Maybe %fuzzlist
Pavel> and %buslist should be integrated into one array, but I'm
Pavel> trying to keep my patch simple.
Alternately, after installing .conf files for all devices of the form
vendorid.deviceid.subvendorid.subdeviceid.bus.conf, we can link each
of those to corresponding vendorid.deviceid.bus.conf if one doesn't
exist. With this, we don't need to keep track of fuzzlist.
Pavel> The "Manufacturer" section contains quoted names on the right
Pavel> hand side. The quotes are removed after splitting the
Pavel> string. Fortunately, there are no commas inside the quotes,
Pavel> but ideally, quoted commas should be ignored.
This was done to handle some .inf files where sections are commented
out. My guess is that in Windows, the installer (Wizard!) that comes
with driver would identify which version of Windows (XP/NT/2000 etc)
is running, uncomment the sections corresponding to that version and
install with that.
Pavel> In the vendor sections, the ID needs to be subjected to
Pavel> string substitution.
Pavel> The patch is attached.
Thanks. Committed to svn.
Does Agere card work? I just installed the .inf file with the patch
and it seems to copy many files (.dll, .exe, .cpl and many .sys
files). I believe this driver uses only one .sys file, depending on
the vendor of card. If so, the current approach of bunching all .sys
files into one driver is probably not the right thing - probably we
should have one directory for each device ID in /etc/ndiswrapper and
each directory contains settings, .sys file(s) in it. Moreover, the
current approach of installing all devices may not be necessary:
Depending on which device is used by driver, we can install drivers
for that device - some drivers (e.g., this Agere driver Intel
Centrino), are from chipset manufacturer for all devices from all
vendors that use this chipset. We generate many .conf files for these
A GUI frontend for specifying where driver files (.inf and .sys) exist
and selecting for which devices the user wants to install drivers
would be nice.
loadndisdriver loads all .sys files when ndiswrapper asks to load the
driver (some drivers, e.g., RNDIS need multiple .sys files). If Agere
indeed works for you, you may want to get rid of all but the needed
.sys file(s) in /etc/ndiswrapper/wlagsall; loadndisdriver ignores
.exe, .dll, .cpp, .cnt, .hlp, and .inf files installed.