Realtek RTL8118AS Networking Working on Ubuntu 16.04 Linux on Biostar B350GT5

In many cases, Linux installs without the need for additional drivers or tweaking. For instance, CentOS 7.4 installed just fine. But sometimes it does not. In this case, installing Ubuntu 16.04 on a system with an Ethernet interface based on the Realtek RTL 8118AS chip ended up without a working LAN:

After conventional install (but failing to get IP address via DHCP) command ip addr shows that the LAN port is DOWN; dmesg | grep nommu will show errors like: nommu_map_single: overflow xxxxxxx+yyyyyy of device mask ffffffff, and dmesg | grep Failed will show the installed driver (r8169) reporting Failed to map RX DMA!

The following solution was tested with Ubuntu 16.04 LTS Server on a Biostar Racing B350GT5 motherboard with AMD Ryzen 1700X processor.

Installation procedure

The solution was simple: Just modify linux boot parameter iommu=soft. You can first try this out, and if it resolves the issue make it permanent. The following start from installation from minimal Ubuntu install media. If you already did this, skip this.

[ ] Connect the LAN interface, display and keyboard
[ ] Start installing Ubuntu Server 16.04
[ ] Progress until getting IP via DHCP fails: "Network autoconfiguration failed."
[ ] Select "Continue"
[ ] Select "Configure manually"
[ ] Enter a fixed ip address, netmask, etc. (an error is ok; can correct later)
[ ] Continue setting hostname and complete installation as usual except for setting the timezone manually

Next we proceed with booting and setting an additional kernel boot parameter. If you already had ubuntu installed, proceed from here.

[ ] Start booting the system
[ ] When GRUB menu (GNU GRUB v2.02) is visible, select to edit the boot options
[ ] append to the end of the line starting with "linux"
[ ] continue booting with the modified options:
[ ] login
[ ] confirm that the nommu_map_single error is gone
dmesg | grep nommu
[ ] if you configured networking manually correctly, confirm that LAN is up
ip addr

If needed, correct the interfaces configuration. Edit /etc/network/interfaces

sudo vi /etc/network/interfaces

It should contain something like this, which is the minimum you need. You can also delete the indented lines, and replace static by dhcp to obtain the configuration through DHCP.

# The primary network interface
auto enp3s0
iface enp3s0 inet static
    address xx.yyy.zzz.123
    dns-nameservers xx.yyy.zzz.1

Persisting the fix

[ ] login, and edit /etc/default/grub
sudo vi /etc/default/grub
[ ] Move cursor to insertion point between the quotes of GRUB_CMDLINE_LINUX_DEFAULT=""
[ ] enter insert mode
[ ] and insert the following
[ ] Save and exit
[ ] Regenerate the grub.cfg file
sudo grub-mkconfig -o /boot/grub/grub.cfg
[ ] Reboot
sudo reboot now

From now on the system boots with the added parameter.


More on Setting Kernel Parameters

updated: 20171207; 20171231
photo: none

Leave a Reply

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