diff --git a/en_US.ISO8859-1/books/handbook/advanced-networking/chapter.sgml b/en_US.ISO8859-1/books/handbook/advanced-networking/chapter.sgml index 18bc4821b0..126e4cc541 100644 --- a/en_US.ISO8859-1/books/handbook/advanced-networking/chapter.sgml +++ b/en_US.ISO8859-1/books/handbook/advanced-networking/chapter.sgml @@ -1075,7 +1075,7 @@ wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 - Clients + 802.11b Clients Almost all 802.11b wireless cards are currently supported under FreeBSD. Most cards based on Prism, Spectrum24, Hermes, @@ -1083,8 +1083,119 @@ wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 IBSS (ad-hoc, peer-to-peer, and BSS) mode. - + + 802.11a & 802.11g Clients + + The &man.ath.4; device driver supports 802.11a and 802.11g. + If your card is based is based on an Atheros chipset, you may + be able to use this driver. + + Unfortunately, there are still many vendors that do not + provide schematics for their drivers to the open source + community because they regard such information as trade + secrets. Consequently, the developers of FreeBSD and other + operating systems are left two choices-- develop the drivers by + a long and pain-staking process of reverse engineering or using + the existing driver binaries available for the + µsoft.windows; platforms. Most developers, including those + involved with FreeBSD, have taken the latter approach. + + Thanks to the contributions of Bill Paul (wpaul), as of + FreeBSD 5.3-RELEASE there is "native" + support for the Network Driver Interface Specification + (NDIS). The FreeBSD NDISulator (otherwise known as Project Evil) + takes a &windows; driver binary and basically tricks it into + thinking it is running on &windows;. This feature is still + relatively new, but most test cases seem to work + adequately. + + In order to use the NDISulator, you need three things: + + + + Kernel sources + + + &windowsxp; driver binary + (.SYS extension) + + + &windowsxp; driver configuration file + (.INF extension) + + + + You may need to compile the &man.ndis.4; mini port driver + wrapper module. As root: + + &prompt.root; cd /usr/src/sys/modules/ndis +&prompt.root; make && make install + + Locate the files for your specific card. Generally, they can + be found on the included CDs or at the vendors' websites. In the + following examples, we will use + W32DRIVER.SYS and + W32DRIVER.INF. + + The next step is to compile the driver binary into a + loadable kernel module. To accomplish this, as + root, go into the + if_ndis module directory and copy the + Windows driver files into it: + + &prompt.root; cd /usr/src/sys/modules/if_ndis +&prompt.root; cp /path/to/driver/W32DRIVER.SYS ./ +&prompt.root; cp /path/to/driver/W32DRIVER.INF ./ + + We will now use the ndiscvt utility to + create the driver definition header + ndis_driver_data.h to build the + module: + + &prompt.root; ndiscvt -i W32DRIVER.INF -s W32DRIVER.SYS -o ndis_driver_data.h + + The and options specify + the configuration and binary files, respectively. We use the + option because the + Makefile will be looking for this file when it + comes time to build the module. + + + Some &windows; drivers require additional files to operate. You + may include them with ndiscvt by using the + option. Consult the &man.ndiscvt.8; manual page + for more information. + + + Finally, we can build and install the driver module: + + &prompt.root; make && make install + + To use the driver, you must load the appropriate modules: + + &prompt.root; kldload ndis +&prompt.root; kldload if_ndis + + The first command loads the NDIS miniport driver wrapper; + The second loads the actual network interface. Check + &man.dmesg.8; to see if there were any errors loading. If all + went well, you should get output resembling the + following: + + ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1 +ndis0: NDIS API version: 5.0 +ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5 +ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps +ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps + + From here you can treat the ndis0 device + like any other wireless device (e.g. wi0) and + consult the earlier sections of this chapter. + + + +