Installing ixgbe driver on Ubuntu Server 14.04 LTS

This guide is loosely based on the this post but I was unable to complete the installation because of the following error:

hendri@techedemic: /var/tmp/ixgbe-4.1.2/src $ dmesg
[12270.405508] ixgbe: Unknown symbol vxlan_get_rx_port (err 0)
[12428.182904] ixgbe: Unknown symbol vxlan_get_rx_port (err 0)
[13448.131090] ixgbe: Unknown symbol vxlan_get_rx_port (err 0)
[18947.596474] ixgbe: Unknown symbol vxlan_get_rx_port (err 0)
[18975.603555] ixgbe: Unknown symbol vxlan_get_rx_port (err 0)

So, here follows the same guide, but with the missing steps I needed to complete the installation.
As a reference, I was running Kernel 3.13.0-20 before this.

Step 1: Move Ubuntu to the Hardware Enablement LTS stack. This is LTS safe. See this link

# install packages
sudo apt-get install linux-generic-lts-utopic xserver-xorg-lts-utopic libegl1-mesa-drivers-lts-utopic xserver-xorg-video-all-lts-utopic xserver-xorg-input-all-lts-utopic
# reboot system into latest running kernel as installed by above packages
sudo init 6

Step 2: Download the latest version of the ixgbe driver. At the time of this writing, it is 4.1.2
The working directory in this example is /var/tmp

user@techedemic:/var/tmp$ cd /var/tmp
user@techedemic:/var/tmp$ wget

Step 3: Extract files

user@techedemic:/var/tmp$ tar -zxvf ixgbe-4.1.2.tar.gz

Step 4: Build the driver/module

user@techedemic:$ cd /var/tmp/ixgbe-4.1.2/src
user@techedemic:/var/tmp/ixgbe-4.1.2/src$ sudo make clean #not required but advisable
user@techedemic:/var/tmp/ixgbe-4.1.2/src$ sudo make
user@techedemic:/var/tmp/ixgbe-4.1.2/src$ sudo make install

Step 5: View module details for the newly built module. Pay special attention to the ‘depends’ section

user@techedemic:/var/tmp/ixgbe-4.1.2/src$ modinfo ./ixgbe.ko
filename:       /var/tmp/ixgbe-4.1.2/src/./ixgbe.ko
version:        4.1.2
license:        GPL
description:    Intel(R) 10 Gigabit PCI Express Network Driver
author:         Intel Corporation, <>
srcversion:     11CE41D9B741B44F4507285
alias:          pci:v00008086d000015ADsv*sd*bc*sc*i*
alias:          pci:v00008086d00001560sv*sd*bc*sc*i*
alias:          pci:v00008086d00001558sv*sd*bc*sc*i*
alias:          pci:v00008086d0000154Asv*sd*bc*sc*i*
alias:          pci:v00008086d00001557sv*sd*bc*sc*i*
alias:          pci:v00008086d0000154Fsv*sd*bc*sc*i*
alias:          pci:v00008086d0000154Dsv*sd*bc*sc*i*
alias:          pci:v00008086d00001528sv*sd*bc*sc*i*
alias:          pci:v00008086d000010F8sv*sd*bc*sc*i*
alias:          pci:v00008086d0000151Csv*sd*bc*sc*i*
alias:          pci:v00008086d00001529sv*sd*bc*sc*i*
alias:          pci:v00008086d0000152Asv*sd*bc*sc*i*
alias:          pci:v00008086d000010F9sv*sd*bc*sc*i*
alias:          pci:v00008086d00001514sv*sd*bc*sc*i*
alias:          pci:v00008086d00001507sv*sd*bc*sc*i*
alias:          pci:v00008086d000010FBsv*sd*bc*sc*i*
alias:          pci:v00008086d00001517sv*sd*bc*sc*i*
alias:          pci:v00008086d000010FCsv*sd*bc*sc*i*
alias:          pci:v00008086d000010F7sv*sd*bc*sc*i*
alias:          pci:v00008086d00001508sv*sd*bc*sc*i*
alias:          pci:v00008086d000010DBsv*sd*bc*sc*i*
alias:          pci:v00008086d000010F4sv*sd*bc*sc*i*
alias:          pci:v00008086d000010E1sv*sd*bc*sc*i*
alias:          pci:v00008086d000010F1sv*sd*bc*sc*i*
alias:          pci:v00008086d000010ECsv*sd*bc*sc*i*
alias:          pci:v00008086d000010DDsv*sd*bc*sc*i*
alias:          pci:v00008086d0000150Bsv*sd*bc*sc*i*
alias:          pci:v00008086d000010C8sv*sd*bc*sc*i*
alias:          pci:v00008086d000010C7sv*sd*bc*sc*i*
alias:          pci:v00008086d000010C6sv*sd*bc*sc*i*
alias:          pci:v00008086d000010B6sv*sd*bc*sc*i*
depends:        ptp,dca,vxlan
vermagic:       3.16.0-45-generic SMP mod_unload modversions
parm:           InterruptType:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default IntMode (deprecated) (array of int)
parm:           IntMode:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default 2 (array of int)
parm:           MQ:Disable or enable Multiple Queues, default 1 (array of int)
parm:           DCA:Disable or enable Direct Cache Access, 0=disabled, 1=descriptor only, 2=descriptor and data (array of int)
parm:           RSS:Number of Receive-Side Scaling Descriptor Queues, default 0=number of cpus (array of int)
parm:           VMDQ:Number of Virtual Machine Device Queues: 0/1 = disable, 2-16 enable (default=8) (array of int)
parm:           max_vfs:Number of Virtual Functions: 0 = disable (default), 1-63 = enable this many VFs (array of int)
parm:           VEPA:VEPA Bridge Mode: 0 = VEB (default), 1 = VEPA (array of int)
parm:           InterruptThrottleRate:Maximum interrupts per second, per vector, (0,1,956-488281), default 1 (array of int)
parm:           LLIPort:Low Latency Interrupt TCP Port (0-65535) (array of int)
parm:           LLIPush:Low Latency Interrupt on TCP Push flag (0,1) (array of int)
parm:           LLISize:Low Latency Interrupt on Packet Size (0-1500) (array of int)
parm:           LLIEType:Low Latency Interrupt Ethernet Protocol Type (array of int)
parm:           LLIVLANP:Low Latency Interrupt on VLAN priority threshold (array of int)
parm:           FdirPballoc:Flow Director packet buffer allocation level:
                        1 = 8k hash filters or 2k perfect filters
                        2 = 16k hash filters or 4k perfect filters
                        3 = 32k hash filters or 8k perfect filters (array of int)
parm:           AtrSampleRate:Software ATR Tx packet sample rate (array of int)
parm:           FCoE:Disable or enable FCoE Offload, default 1 (array of int)
parm:           LRO:Large Receive Offload (0,1), default 1 = on (array of int)
parm:           allow_unsupported_sfp:Allow unsupported and untested SFP+ modules on 82599 based adapters, default 0 = Disable (array of int)
parm:           dmac_watchdog:DMA coalescing watchdog in microseconds (0,41-10000), default 0 = off (array of int)
parm:           vxlan_rx:VXLAN receive checksum offload (0,1), default 1 = Enable (array of int)

Step 6: Load the vxlan module

user@techedemic:/var/tmp/ixgbe-4.1.2/src$ sudo modprobe vxlan

Step 7: Install the module. If successful there should be no output.

user@techedemic:/var/tmp/ixgbe-4.1.2/src$ sudo insmod ./ixgbe.ko

Step 8: Run dmesg and check to see if new interfaces are detected after loading the new module. Example output included below

user@techedemic:/var/tmp/ixgbe-4.1.2/src$ dmesg
[19097.752081] Intel(R) 10 Gigabit PCI Express Network Driver - version 4.1.2
[19097.752090] Copyright (c) 1999-2015 Intel Corporation.
[19097.752414] ACPI Warning: \_SB_.PCI0.BR2C._PRT: Return Package has no elements (empty) (20140424/nsprepkg-126)
[19099.110658] ixgbe 0000:03:00.0: irq 85 for MSI/MSI-X
                                 <-----snipped for easier reading----->
[19099.110835] ixgbe 0000:03:00.0: irq 101 for MSI/MSI-X
[19099.335410] ixgbe 0000:03:00.0 eth0: MAC: 5, PHY: 6, PBA No: 020000-000
[19099.335422] ixgbe 0000:03:00.0: 00:25:90:5d:0f:7e
[19099.335432] ixgbe 0000:03:00.0 eth0: Enabled Features: RxQ: 16 TxQ: 16 FdirHash RSC vxlan_rx
[19099.354019] ixgbe 0000:03:00.0 eth0: Intel(R) 10 Gigabit Network Connection
[19101.100611] ixgbe 0000:03:00.1: irq 102 for MSI/MSI-X
                                 <-----snipped for easier reading----->
[19101.100790] ixgbe 0000:03:00.1: irq 118 for MSI/MSI-X
[19101.321945] ixgbe 0000:03:00.1 eth1: MAC: 5, PHY: 6, PBA No: 020000-000
[19101.321959] ixgbe 0000:03:00.1: 00:25:90:5d:0f:7f
[19101.321969] ixgbe 0000:03:00.1 eth1: Enabled Features: RxQ: 16 TxQ: 16 FdirHash RSC vxlan_rx
[19101.341933] ixgbe 0000:03:00.1 eth1: Intel(R) 10 Gigabit Network Connection
[19161.564788] ixgbe 0000:03:00.0: registered PHC device on eth0
[19163.468677] ixgbe 0000:03:00.1: registered PHC device on eth1

As can be seen above, my dual port 10gbps interfaces have been detected as eth0 and eth1.

Step 9: Configure your interfaces in /etc/network/interfaces as you would for any other (not shown here) and bring them up. You can then use ethtool to see supported modes.

user@techedemic: /var/tmp/ixgbe-4.1.2/src$ sudo ifup eth0 && sudo ifup eth1
user@techedemic: /var/tmp/ixgbe-4.1.2/src$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:25:90:5d:0f:7e
          inet6 addr: fe80::225:90ff:fe5d:f7e/64 Scope:Link
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:648 (648.0 B)
user@techedemic: /var/tmp/ixgbe-4.1.2/src$ sudo ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  1000baseT/Full
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Speed: 10000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: external
        Auto-negotiation: on
        MDI-X: Unknown
        Supports Wake-on: umbg
        Wake-on: g
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes

I hope this helps at least 1 person because it cost me 4 hours of my life.


Add a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.


  1. Well… take solace in knowing that your guide did help me out.

    So… Thanks!

  2. Maxim Enikeev

    That worked for me, thank you!

  3. Alexandre C

    Do you know the source of the ACPI warning you have :
    ACPI Warning: \_SB_.PCI0.BR2C._PRT: Return Package has no elements (empty) (20140424/nsprepkg-126)

    I have the exact same message but I don’t understand it.

  4. Nikhil A R

    Really saved my time dude.