wireless + ndis on Compaq TC1000 revisited

John Nielsen lists at jnielsen.net
Sun Feb 4 01:59:52 UTC 2007

On Saturday 03 February 2007 02:05, John Nielsen wrote:
> This is a bit of a followup to my post of over a year ago:
> http://lists.freebsd.org/pipermail/freebsd-stable/2005-November/020289.ht
> I've been playing with FreeBSD on the TC1000 Tablet PC again lately and
> brought it up to 6-STABLE. Compaq still has the same (Windows) drivers
> for the built-in wlan device as they did the last time, and it still
> doesn't work with ndis (ndisgen succeeds but the module causes a panic
> when it is loaded).
> However today I was able to locate an alternate driver for the card on
> one of the "secondhand" Windows driver websites. It's an NDIS 5.1 driver
> that works with my hardware under Windows XP, but it doesn't seem
> terribly modern (it comes with its own utility for setting the wireless
> settings).
> Under FreeBSD, ndisgen produced a module without any problem, and this
> one _doesn't_ case a panic when loaded. And it only sometimes causes a
> panic when trying to configure the interface (possibly just a race
> condition at boot).
> I'm now able to configure the interface and see it associate on both
> ends. When I attempt to get a DHCP lease, the DHCP server sees the
> request and sends an offer but the tablet never receives it for some
> reason. So it seems I can send (on Layer 2 at least) but not receive.
> Layer 3 doesn't work in either direction, presumably because the tablet
> never gets any ARP replies.
> I'm wondering if anyone has any experience with similar situations and/or
> ideas for workarounds or troubleshooting strategies (or even vague
> theories). The files I'm using are netvnpci.inf and
> pcifvnet.sys--a "FastVNET PCI 11M Network Adapter driver" from ATMEL.

In case anyone's interested (Milan O, are you out there?), I got this 
working (for basic values of "working"). I didn't actually get anywhere 
with the NDIS 5.1 (WinXP) driver, but I can send _and_ receive using the 
NDIS 5.0 (Win2k) driver. The driver is a pseudo-ethernet driver (from the 
days before Windows had 802.11 support) so it has some warts, but working 
is better than not, IMO.

I actually had the same problem with this one as I did with the other one 
(could send but not receive) until I disabled usbd. No idea why that 
matters, but running usbd definitely makes the driver stop receiving 
packets. This might be related to the issues I was having with the XP 
driver, but the same workaround (disabling usbd) didn't have any effect 
with that one.

For anyone who might want to do the same thing, here's what I did:

Download Atmeldrivers.zip (9.7M) from DriverGuide.com (registration 
Extract and go to the "USB Adapter/Driver and Utility/Drivers/PCI/win982k" 
Run ndisgen using NETVNpci.INF and pcifvnet.sys.
Copy the resultant pcifvnet_sys.ko into /boot/modules.
Add 'pcifvnet_sys_load="YES"' to /boot/loader.conf.
Add 'ifconfig_ndis0="DHCP"' to /etc/rc.conf.
Create an /etc/rc.early file with contents similar to this:
  sysctl dev.ndis.0.ESSID="myssid"
  ifconfig ndis0 up
  sleep 5
Apply the attached patch to src/sys/dev/if_ndis/if_ndis.c, then rebuild and 
reinstall the ndis and if_ndis modules. This might be optional (not 100% 
sure), but without it you'll get lots of complaints about unknown ethernet 
speeds. The patch just tells the driver to treat all the wireless speeds as 

I'm not sure if setting the ESSID is necessary or even useful, since the 
card will associate fine without it. I also don't know if or how well WEP 
works using the registry-key sysctls.

I'm still open to thoughts on why the WinXP driver wouldn't work or why this 
one only works without usbd, but I'm probably done messing with it for a 
little while at least.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: if_ndis.c.patch
Type: text/x-diff
Size: 454 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20070204/507d3f37/if_ndis.c.bin

More information about the freebsd-stable mailing list