A while back I picked up an ECS 945GCD-M motherboard to replace my dead VIA board that was running my RAID server. The board is pretty nice, sitting there completely silent, running 64-bit Ubuntu and packing far more power than the board it was replacing. But it has one glaring problem; the network card on the thing didn't work out of the box in Linux. I had been running a cheap USB network card I had laying around, but it was slow and I hated that I couldn't get it working. So, I set out to make the onboard Atheros AR8131M chipset work.
Google will give you a plethora of guides for compiling the drivers (this one is probably the best), but I just couldn't get things to load. It was also never clear what version of the drivers I should be trying to run. Most tutorials made reference to 126.96.36.199, some to 188.8.131.52, but the current version (at the time of this writing) is 184.108.40.206. In the end, though, that's the version I did manage to get working. Here's how I did it:
- Grab the v220.127.116.11 driver from the
Atheros siteDead link, copy is here
- UPDATE: version 18.104.22.168
- Locate the file on your computer, then make a new directory (name it anything, AR8131 will work) and move that file there
- Decompress the file
- Enter the resulting src directory
Once you're in there, it's time to start that terminal magic! One note; if you've already added another network card to your machine, the Atheros card may be eth1, not eth0. This was the case for me, and I'll treat all the instructions here as though that's the case for you too. If it's not, just change eth1 to eth0.
make && sudo make install sudo modprobe atl1e sudo ifconfig eth1 up sudo dhclient eth1
UPDATE: If you're getting an error saying
missing autoconf.h, try following the instructons from this post. It's kind of a dirty hack, but it works.
At this point, the machine will try to assign an IP address for the card. This may or may not work; for me, it did not. To get mine working, I simply restarted the networking init script. Before that though, let's add the following to /etc/network/interfaces
# The secondary network interface auto eth1 iface eth1 inet dhcp
And lastly, restart the network on the machine (you CAN reboot, but there's no need) via
sudo /etc/init.d/networking restart.
At this point, you should have your network card up and running with an IP address assigned by your DHCP server or router. If not, keep hunting I guess, but you should at least be very close!