This is a quick note on wireless networking on Gentoo GNU/Linux with a dual-core AMD 64-bit processor. It’s not hard to do, but the choices for hardware are more limited.
First, installing Gentoo is just as easy as a standard installation. There is a separate installation document for it. All I needed to do was follow the instructions. I’m not expert with Gentoo, but I’ve installed it a half-dozen times or so since 2002… if it’s not easy for you, wait 4 years and try again ;-)
Here’s my hardware:
- ECS KV2 Extreme Socket 939 VIA K8T800 Pro ATX AMD Motherboard
- ASUS V9520-X/TD/64 Geforce FX5200 64MB DDR AGP 4X/8X Low Profile Video Card
- Sunbeam PSU-CGMI450-US-SV ATX 450W Silver Tri Mirrored X-Plug Modular Power Supply
- VANTEC Clear 18″ ATA 66/100/133 IDE Round Cable, 2-Connector Model CBL-100IDE18-CS
- AMD Athlon 64 3700+ San Diego 1GHz FSB Socket 939 Processor Model ADA3700BNBOX (dual core, 2.2GHz)
- Patriot Signature 2GB (2 x 1GB) 184-Pin DDR SDRAM DDR 400 (PC 3200) Unbuffered System Memory Model PSD2G400KH
- Western Digital Raptor WD360GD 36.7GB 10,000 RPM Serial ATA150 Hard Drive
- Seagate Barracuda 7200.8 ST3250823AS 250GB 7200 RPM Serial ATA150 Hard Drive
- 2 Pioneer Beige IDE DVD Burners, Model DVR-110 D
- COOLER MASTER Centurion 5 CAC-T05-UW Black Aluminum Bezel, SECC Chassis ATX Mid Tower Computer Case
I bought it all from NewEgg for about $900 and paid my brother’s friend for his time helping me choose the hardware and install it (actually, that was my brother’s friend’s brother). If you want similar help, by the way, send me an email and I’ll hook you up with him. I’d have been lost without his guidance.
As you can see, I forgot a network card! Oops! So I went to a local store and bought something that looked pretty standard. I looked online for it first, but I should have spent more time figuring out compatibility, because as I found out, it’s not guaranteed on AMD64.
I bought a Linksys WRT54G, which has an RT2500 chipset. For those who don’t know, it is the chipset — the guts of the card — which really matters. Most cards have a chipset that may be found in any number of other cards, all of which use the same driver. And manufacturers often change the chipset, sometimes to something totally different, which may be completely unsupported and nothing at all like the original (from a device driver point of view). I thought this chipset was going to be a breeze because the manufacturer has open-sourced the drivers (thank you!). Unfortunately, I found out it’s not supported on more exotic platforms, including mine.
I searched around on the Gentoo forums, and found a lot of weird stories of things working sometimes and not working other times; and I even had the bizarre experience of the card working for me, for just a few minutes. But there are two things in the way of full support: a) 64-bit processor and b) two of them (dual core). The RT2500 chip can be coaxed to work, apparently completely sporadically, in non-SMP mode. In other words, if you build your kernel without SMP support so it only uses one of the two cores, sometimes the drivers will compile. And, when that happens, sometimes the hardware will work and sometimes not. I paid too much for this machine to use half of my processor, so that wasn’t good enough for me even if I could have gotten it to work reliably without SMP.
After some banging of the head against the wall, I returned the card and got one with an Atheros chipset. The card is a D-Link DWL-G510, hardware version B1, firmware version 2.11. Again, you may buy exactly the same card and find a different chip in it, so there are no guarantees. But there is no problem getting the card to work if it has the Atheros chipset.
I built the 2.6.15-gentoo-r4 kernel with SMP support and built in the encryption routines used by the card:
Processor type and features --->
[*] Symmetric multi-processing support
Cryptographic options ---> (I enabled them all)
then did emerge madwifi-driver (version 0.1443.20060207) and followed the instructions for setting up the ath0 interface via udev (version 079-r1). These are well documented at many websites, including the Gentoo forums, but the output of emerge is really all you need. I didn’t need to create the interface via a command as the instructions say; I was able to just let udev create it at boot.
Then all I needed to do was modprobe ath_pci and the interface appeared! Of course this module can be added to /etc/modules.autoload.d/kernel-2.6. Finally, I configured the network’s settings for my access point.
After this bump in the road, it’s been smooth sailing. The network works great — better than my DSL, that’s for sure. And I have to say, this machine absolutely flies. It probably has a lot to do with the large L1 cache (and everything else for that matter). Look at this:
tigger ~ # time emerge xorg-x11 [snip...] real 24m59.155s user 18m3.664s sys 6m27.860s
Needless to say, there are no problems running Firefox on this machine.
Technorati Tags:No Tags
Yeah, Gentoo is a very nice Linux.
I also have a WLAN card with an Atheros chipset and it works fine since the day I bought it. No problems at all.
The MadWifi project does great work, and with emerge there shouldn’t be a problem to install the kernel module.
But if you upgrade your kernel, don’t forget to rebuild the atheros module. The last time I did an upgrade I wondered why there was no internet connection afterwards ;-)
Nice weblog, good opinions, I like it.
Greets from Dresden,
Karsten
This is very silly, but I found out after many months that I actually chose a single-core processor, thinking it was dual-core. The processor I listed is NOT dual-core. Everything else about this article remains true, though. If my processor were dual-core, nothing would change.
can any one slove this
In the MadWiFi v.0.9.2 source code it appears that the function ath_calibrate() is called periodically. This function calls ath_hal_getrfgain() and if it returns HAL_RFGAIN_NEED_CHANGE, the function ath_reset() is called. AL_RFGAIN_NEED_CHANGE may mean that new gain values must be loaded, but ath_reset() does many other things including dropping any enqueued frames. As we don’t have a datasheet for PHY chip of Atheros PHY (5112), we are not sure but it seems it refers to ath_hal_getrfgain() (as defined in openHAL sources). Could you explain ath_hal_getrfgain() functionality of current HAL(not openHAL), and why does it need a full device reset?
if some one gets the answer mail me at nikvoodoo@gmail.com