Is there any way to install Atheros e2400 drivers?

24,165

Solution 1

I am posting this from my Skylake MSI Z170A GAMING M5 build using my Killer E2400 on Ubuntu Gnome! Below are the (more or less) simple steps I used to get it working.

First we'll follow some instructions from Ubuntu

sudo apt-get build-dep linux-image-$(uname -r)
sudo apt-get install git
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-vivid.git

That git URL is for 15.04 Vivid Vervet. You would replace vivid with your release codename. That last step can take a little while, so relax and bask in the knowledge that your E2400 will soon be working.

Once that is finished, we'll modify the alx driver to include our E2400 (feel free to use your text editor of choice)

cd ubuntu-vivid/drivers/net/ethernet/atheros/alx/
sudo -H gedit reg.h

Find the line defining ALX_DEV_ID_E2200 (you can just search for E2200), and add this below it

#define ALX_DEV_ID_E2400                0xe0a1

Next,

sudo -H gedit main.c

Again, find E2200, and after the lines { PCI_VDEVICE(ATTANSIC, ALX_DEV_ID_E2200), .driver_data = ALX_DEV_QUIRK_MSI_INTX_DISABLE_BUG }, add

{ PCI_VDEVICE(ATTANSIC, ALX_DEV_ID_E2400),
  .driver_data = ALX_DEV_QUIRK_MSI_INTX_DISABLE_BUG },

Now, all that's left is to make and install the drivers

make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
sudo make -C /lib/modules/$(uname -r)/build M=$(pwd) modules_install
sudo modprobe -r alx
sudo depmod
sudo modprobe -v alx

Note: You after executing the last line, you should see the module load from ...extra/alx.ko If you do not, you may need to rename the alx.ko that it did find to alx.ko.bak or something of the sort, and run the last three commands again.

Your E2400 should now appear for your networking enjoyment!

Solution 2

Update for Ubuntu 14.04 (Trusty):

According to chili555's comment on a similar question that device is supported by the kernel shipped with Ubuntu 16.04. Luckily one can upgrade to the same kernel in Ubuntu 14.04 via LTS/HWE upgrades:

  1. Install the kernel packages:

    sudo apt install linux-generic-lts-xenial
    
  2. Reboot the machine. The newly installed kernel should be the new default boot option for Grub.

More info: Ubuntu Wiki – LTS Enablement Stack


Original post (still applicable to other Ubuntu releases before 16.04)

Short of applying the appropriate patch and recompiling the affected kernel module, you may be able to register new PCI device IDs (documentation) with existing device drivers:

Writing a device ID to this file will attempt to dynamically add a new device ID to a PCI device driver. This may allow the driver to support more hardware than was included in the driver's static device ID support table at compile time. The format for the device ID is: VVVV DDDD SVVV SDDD CCCC MMMM PPPP. That is Vendor ID, Device ID, Subsystem Vendor ID, Subsystem Device ID, Class, Class Mask, and Private Driver Data. The Vendor ID and Device ID fields are required, the rest are optional. Upon successfully adding an ID, the driver will probe for the device and attempt to bind to it. For example:

# echo "8086 10f5" > /sys/bus/pci/drivers/foo/new_id

So in this case, you should be good with:

sudo modprobe alx
echo 1969 e0a1 | sudo tee /sys/bus/pci/drivers/alx/new_id >/dev/null

I guessed the driver name alx from the patch mentioned in the comments. If it's not the right driver module name, search for an alternative.

Solution 3

I made a DKMS version of this using source code from the 4.4 kernel

Instructions are:

sudo apt-get install git dkms build-essential linux-headers-generic
git clone https://github.com/jeremyb31/alx.git
sudo dkms add ./alx
sudo dkms build alx/2.0
sudo dkms install alx/2.0

Reboot

I have tested this in the old 3.13.0-24 kernel and it works along with 4.2 which correctly states that this is exactly the same as the module present in the kernel

Share:
24,165

Related videos on Youtube

Dylan Westra
Author by

Dylan Westra

Updated on September 18, 2022

Comments

  • Dylan Westra
    Dylan Westra over 1 year

    I have a new motherboard: MSI Z170A GAMING M5. This motherboard has an Atheros killer e2400 Ethernet controller. When I do lspci -nn, I get:

    03.00.0 Ethernet controller [0200]: Qualcomm Atheros Device [1969:e0a1] (rev 10)
    

    Google didn't seem to know the answer. Only a similar unsolved problem on the openSUSE forum.

    • yuyichao
      yuyichao over 8 years
    • user3081568
      user3081568 over 8 years
      I see the patch posted by yuyichao... comments.gmane.org/gmane.linux.network/376851 But how do I install it?
    • Dylan Westra
      Dylan Westra over 8 years
      Well... it seems promising :) having patience i geuss?
    • yuyichao
      yuyichao over 8 years
      Since I'd like to try the git kernel because of skylake graphics, I compiled my own kernel. With the patch above, I am currently using the Killer e2400 controller with no problem
    • PitaJ
      PitaJ over 8 years
      @yuyichao how do I use this patch?
  • David Foerster
    David Foerster over 8 years
    As you're (nearly) a reputation 1 user: if this answers your question, don't forget to click the grey ☑ under the "0" at the left of this text to accept it, which means "yes, this answer is valid"!
  • Fabby
    Fabby over 8 years
    We're still waiting 1 day later, so this isn't a complete answer (yet), so I voted for it to be deleted...
  • BattleDingo
    BattleDingo over 8 years
    Finally got a chance to try this out. Updated my answer to include step by step instructions. Works like a charm :)
  • Austin Pray
    Austin Pray over 8 years
    You are a life saver.
  • BattleDingo
    BattleDingo over 8 years
    FYI - worked out of the box on Ubuntu Gnome 15.10
  • bioShark
    bioShark over 8 years
    How could you do a sudo apt-get install when your network card is not working?
  • bluefang05
    bluefang05 over 8 years
    A couple of ways: If your WIFI is working, you could use that. Personally, I tether to my cellhpone via USB.
  • VeLKerr
    VeLKerr over 8 years
    pwd shows current working directory. Does it matter, from which directory I run make -C /lib...? What is the right directory, which I have to run the command from?
  • VeLKerr
    VeLKerr over 8 years
    When I run first make command, I'm getting an error: pastebin.
  • bluefang05
    bluefang05 over 8 years
    Nice solution that doesn't involve building any drivers! Didn't even need a reset.
  • bluefang05
    bluefang05 over 8 years
    Also, I had to sudo chmod 777 /sys/bus/pci/drivers/alx/new_id first. Then I had to use sudo for all of the other commands too.
  • David Foerster
    David Foerster over 8 years
    Don't change the access permissions of kernel parameters to world-writable unless you know what you're doing! Instead you should write to these files as super-user by either a) first starting a super user shell (sudo -i) and then running the above commands or b) use sudo modprobe alx && echo 1969 e0a1 | sudo tee /sys/bus/pci/drivers/alx/new_id to open the file as super-user.