I finally bit the bullet and decided to troubleshoot my problem with wireless on an old Toshiba Satellite laptop that someone had given me. The battery is stuffed and I have to keep it plugged in to use it, but it will be a handy little device to sit on a table somewhere so I can have internet access in another room.
Anyway, I had it working just fine using an ethernet cable directly connected into the back, but I had never managed to get the wireless working.
First I used lspci:
[random@myhost ~]$ lspci | grep -i net
09:02.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
09:04.0 Ethernet controller: Atheros Communications Inc. AR2413 802.11bg NIC (rev 01)
Apparently I have an Atheros 2413 chip.
Check if the module was loaded by the kernel:
[random@myhost ~]$ sudo modprobe -l | grep ath
According to the Arch wiki guide the ath5k drivers should be good. Modprobe shows them as loaded, so I don’t need to worry about that.
I set up netcfg with the netprofile ‘homewireless’ according the Arch wiki guide. I bring the network up and I hit a problem straight away.
I can ping http://www.google.com but I can’t browse any websites. When I ssh into the laptop I can ls very small directories, but if there are too many entries then it stops listing the directory. Running htop in ssh gives me a black screen.
Eventually I figure I’m connected, but I don’t seem to be getting a very fast transfer rate. In fact the transfer rate seems to be almost negligible.
Time to google for some answers.
Answer is a workaround, not a solution. It seems there is a bug with 2413 hardware and ath5k drivers. If you load the module with the option nohwcrypt then it browses fine. Otherwise it won’t browse.
So I unload my ath5k module:
sudo rmmod ath5k
Then I load the ath5k module with the nohwcrypt option:
sudo modprobe ath5k nohwcrypt
Then I take the network down:
sudo netcfg down homewireless
Then I bring the network up again:
sudo netcfg up homewireless
And wuala!, web browsing is working.
To automate this at boot time you can add this line to a file in /etc/modprobe.d/
options ath5k nohwcrypt
The file you add it to can be your /etc/modprobe.d/modprobe.conf file if you like. That is the choice I made.