I've got the same card and it's working flawlessly with the driver from ipw3945.sf.net, but so far I haven't needed the monitor mode. To be more precise, I used the ebuilds available in Gentoo (which automatically build everything from source) marked as stable (ipw3945 1.05, ipw3945-ucode 1.13, ipw3945d 1.7.18).
According to the documentation (README.ipw3945), monitor mode is enabled but not supported (release 1.0.5), so this could explain why it doesn't work with the pre-compiled modules you tried. As far as I can see you've got two options:
1) Get the latest and greatest pre-compiled packages (e.g. at rpmfind.net) and try "modprobe ip23945 mode=2" (I guess you already found that option in README.ipw3945).
2) Try building from source again.
It's a bit tricky because apparently you need to have a kernel with IEEE 802.11 support disabled and use the stack from
http://ieee80211.sourceforge.net (I'm using version 1.1.13, again from Gentoo). Which probably means you have to compile the kernel yourself. This is not too hard and there are many guides and HOWTOS available, for example
here (but you might want to grab one specific to your current distribution). However this usually does take some hours the first time you do it. When configuring the kernel, make sure you disable
Networking -> Generic IEEE 802.11 Networking Stack (CONFIG_IEEE80211), but enable wireless extensions at
Device Drivers -> Network device support -> Wireless LAN drivers [...] (CONFIG_NET_RADIO).
Next, install the ieee80211 package I mentioned above. There's an INSTALL document provieded in the tarball, but it's also described in the ipw3945 INSTALL file.
Finally, unpack the ipw3945 stuff and edit the Makefile of the main package. Make sure there's a line reading
Code:
CONFIG_IPW3945_MONITOR=y
and it's not commented out. Install everything as per INSTALL file in the same package.
Theoretically, you have now got a driver with monitor support, so when doing the
./load step mentioned in the INSTALL file you can specify the mode option:
Code:
# ./load debug=0 mode=2
If this works, you'll want to add a line
Code:
options ipw3945 mode=2
to
/etc/modprobe.conf. Beware that this file is usually auto-generated; there should be instructions at the top of it detailing where to put that line and how to regenerate the file.
I hope this helps you figure it out, but feel free to post back if you encounter problems.