'ndiswrapper' written in C, not Perl

I am still on holiday, and don't have the hardware to test this. Help requested!

In this thread, PANZERKOPF posted an ndiswrapper.c that was obtained from the GeexBox Linux project:

I am looking again at being able to build Puppy distros without Perl. Currently, we have a cutdown Perl in all puppies, needed by ndiswrapper, pplog, one of the partview variants, don't know if anything else.

The ndiswrapper package has /usr/sbin/ndiswrapper, a Perl script. This was the original reason that we were forced to introduce Perl into Puppy.

Note, if we take out cutdown-Perl, the full Perl will still be in the 'devx' SFS, as required for compiling source packages.

I would like to know if the ndiswrapper executable written in C, that PANZERKOPF found, works. Could you test it with your hardware?
There is one issue apparently, the *.inf file must not have multi-byte characters (unicode) -- it would be good if the program could detect that rather than just fail. But, are there any such .inf files out there?

Alternatively, we can pre-process such a .inf file, remove multi-byte chars. I posted how to do that here:

The compiled binary is posted to the Forum. Gunzip it, make sure the executable flags are set, and place it at /usr/sbin. Remove prior files at /etc/ndiswrapper then try your wireless hardware:

Feedback will be greatly appreciated!

Posted on 20 Jan 2012, 7:37


Posted on 20 Jan 2012, 12:30 by dingo
successful in Puppy 3.01
woof woof

I use puppy 3.01 everyday. I just tested this executable and it worked fine on my

netgear WG311v3 wireless adapter with XP drivers

on HP d530c computer

(before to try I removed ndiswrapper perl script from /usr/sbin)

thanks for Puppy 3.01 it is the best OS I used in my life, it only lacks ipv6, but I'll try to recompile in order to can use puppy 3.01 also in ipv6 age, forever and ever in my life

Posted on 21 Jan 2012, 6:52 by ozsouth
Ndiswrapper tests
Tested 1 year old onboard Atheros 9285 (PCI-Exp) & 6 year old Netgear WG111NA (usb), in Lupu-528
(puppy driver modules skiplisted).

If I simply substitute the new ndiswrapper, no problems.

Starting from scratch (all ndiswrapper files removed), Atheros segfaults, Netgear loads, but ndiswrapper switches -l & -m inactive,
meaning /etc/modules.d/ndiswrapper.conf needs creating with manual entry 'alias wlan1 ndiswrapper'. Dhcpcd then run manually - works!

This has potential.

Posted on 21 Jan 2012, 8:58 by jc24
I think printing uses perl as well

Posted on 21 Jan 2012, 8:08 by technosaurus
Fortunately I have never needed this, but I thought I would take a look anyways.
Its not really that complex and most of the code can map directly into shell (actually a lot of stuff would be easier in shell), so it would be fairly simple to just port the perl directly to shell ...

even better would be to use lspci, lsusb etc and this data:
to automatically get the stuff (just one big long case statement really)

Posted on 22 Jan 2012, 16:26 by disciple
cups and perl
This might sound familiar:

> Aaarrgh! Pakt has just reminded me that CUPS needs Perl! So, before we can dump Perl, any Perl scripts in CUPS would also have to be rewritten

Posted on 22 Jan 2012, 23:14 by bing crosby
off topic XMBC on Raspberry
However off topic:

Would like to let you know that Dutch tweakers show the XMBC mm suite on Raspberry ..


Scroll down for the youtube demo - in English.

Posted on 24 Jan 2012, 8:09 by BarryK
Re cups and perl
As far as I know, it was only the foomatic-filters package that had a Perl script, /usr/bin/foomatic-rip, but as from version 4.x that was rewritten in C.

However, I just looked through foomatic-filters 4.0.7, and there is still a Perl script, /usr/lib/cups/backend/beh, which is an error-handler script.

However, 'beh' is a small script, someone with a bit of Perl capability (not me!) could convert that to Ash script for us. technosaurus?

Is there any other CUPS-related Perl script?

Posted on 25 Jan 2012, 5:57 by technosaurus
unfortunately I only have a basic understanding of perl - if someone could at least document what each code block is doing, it would go a long way (google already periodically thinks I'm a bot)

here is a (maybe outdated) list of perl scripts in {/usr}/{s}bin
align bones_diff.pl cups-genppdupdate ndiswrapper newroot width c_rehash dirsplit fixmswrd.pl foomatic-gswrapper foomatic-rip glib-mkenums isohybrid ispellaff2myspell lss16toppm md5pass mp_doccer mtrace normalize-mp3 normalize-ogg perlbug perldoc perlivp perlthanks pnmquant ppmquant ppmrainbow ppmtolss16 sha1pass

btw, this is how I found them (I use a variant of this a lot - works for many filetypes, even non-scripts like PNG XPM etc...)
A=/initrd/pup_ro2 && for x in $A/bin/* $A/sbin/* $A/usr/sbin/* $A/usr/bin/* ; do read LINE <$x; case "$LINE" in *perl*)echo ${x##*/};;esac; done|tr "\n" " "

Posted on 25 Jan 2012, 7:01 by BarryK
Re finding Perl scripts
Good, but you have done that with the 'devx' loaded.

It will be a shorter list without 'devx', but still formidable for us who don't know Perl. We will need to find a friendly Perl coder who will convert them to shell script for us.

Posted on 25 Jan 2012, 7:56 by technosaurus
rere: perl scripts
Yes, the devx was loaded, that's why I prepended the mount path to my mounted pup.sfs. the list was much longer with the devx loaded, but I am still using an older version of wary, so some may be already removed in newer versions. Still it may be useful to know about them even if they aren't needed ... For package templates and such.

Posted on 25 Jan 2012, 8:02 by BarryK
rerere perl scripts
Oh, I didn't look close enough at your search code.

Hmmm, rather a lot of scripts. Perhaps we won't be getting rid of perl-tiny anytime soon -- it is about 1MB I think.