HEADS UP: ndis(4) updated, please test

Sascha Wildner saw at online.de
Wed Sep 7 13:40:54 PDT 2011


Hello,

I just pushed an upgrade of ndis(4) and have this to say about it:

First of all, be warned that USB adapter support is unstable, which means,  
it might attach, it might even "ifconfig up" or something similar but will  
likely panic on either. But I plan to look into that.

PCI adapters (and maybe PC Card adapters), on the other hand, work like a  
charm (at least those four which Max Herrgard and I tested), if (and most  
likely only if) you turn off ioapic via loader.conf: hw.ioapic_enable=0.  
As I wrote in the commit message, I don't know why this is so, and it is  
kinda hard to debug because the symptom is that the box will freeze  
completely after a short while without doing so. This was observed on two  
different boxes with all cards tested.

That said, if you are still interested, here are some instructions to get  
you started:

* You'll need to upgrade world and kernel to current master.

* You'll need the Windows drivers for the card, obviously. Actually,  
Windows XP drivers (either 32 bit or 64 bit, depending on your DragonFly  
architecture). Server 2003 drivers might work but it is not tested.  
Specifically, you will need the .sys and .inf files for the card. You'll  
also need firmware files if they are needed for the card (ending in .bin).  
Check the CD-ROM that came with the card or look on the net. You might  
find that they come as a .cab or .exe file. In this case "cabextract" or  
"unshield" from pkgsrc might help to extract them. Also, 7zip is sometimes  
able to extract those files. Another Windows program that has shown good  
results is the "Universal Extractor". If all that fails, please mail me or  
poke me on the #dragonflybsd IRC channel on EFNet and we might be able to  
figure it out (I might have it already or we can install it in a VM and  
locate the files, for example). Getting hold of the drivers can sometimes  
be the most difficult part of getting going with ndis(4).

* Once you have the files, run "ndisgen foo.inf foo.sys" on them (replace  
"foo" accordingly). ndisgen(8) is an interactive script. Follow the  
instructions, remember to specify the firmware files too (if needed) and  
if all goes well, it will compile the driver/firmware module(s) for you.  
Sometimes it will error on a specific line of the .inf file. Go and check  
that line in the editor. Errors can have various reasons. Sometimes it's a  
missing newline at the end of the file's last line, sometimes a missing  
semicolon, sometimes something else. If you can't figure out what to fix,  
again, mail me or contact me in IRC, or here.

* After a successful run of ndisgen you'll find one or more .ko files in  
the current dir. Move the one named *_sys.ko to /boot/kernel and move any  
remaining *.ko files (should be there if there was firmware to convert) to  
/compat/ndis.

Now you are ready to use the driver the usual way. kldload it, set up the  
wlan and test. For example, given a valid wpa_supplicant config, the  
following might work:

In /boot/loader.conf:

foo_sys_load=yes #replace foo with your module name

In /etc/rc.conf:

wlans_ndis0="wlan0"
ifconfig_wlan0="up DHCP WPA"
It might be wise to first load the module manually and play with it a  
little bit.

If all attaches and sets up properly, you will very likely notice that the  
box will freeze after a while. If this happens (and I've never seen it not  
happening), add "hw.ioapic_enable=0" to /boot/loader.conf. The card should  
then work.

In any case: I'm interested in all results you people have with it.

Have fun,
Sascha




More information about the Users mailing list