13.2 Realtek Driver = No Internet

So I was able to recently install 13.2 onto my system’s secondary drive despite some video issues. However, I wasn’t able to connect to the internet. I did some digging on the drivers I have on the motherboard and the network card installed on it. Apparently the network card on my motherboard, and the drivers that came with 13.2 don’t work. I have a Realtek network card as listed below.

pickett07@linux:~/Downloads> /sbin/lspci -nnk | grep -iA2 net

05:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 06)
        
Subsystem: Gigabyte Technology Co., Ltd Motherboard [1458:e000]
        
Kernel driver in use: r8169
pickett07@linux:~/Downloads>

So I did a google search and came across this link from the openSUSE website directly.

https://en.opensuse.org/SDB:Realtek_8169_driver_problem

I have tried the first two options with no success and I am having trouble with the third option. I downloaded the Linux drivers from the Realtek website. I extracted the .bz2 and read the README instructions and did what it said. But nothing worked. I have never had to compile a driver before as I am new to Linux, so I was hoping someone can tell me if I missed a step or I am doing something wrong here. This is what I did based on the README file.

pickett07@linux:~/Downloads> su -
Password: 
linux:~ # cd /home/pickett07/Downloads
linux:/home/pickett07/Downloads # tar xvjf r8168-8.039.00.tar.bz2
r8168-8.039.00/
r8168-8.039.00/autorun.sh
r8168-8.039.00/Makefile
r8168-8.039.00/README
r8168-8.039.00/src/
r8168-8.039.00/src/Makefile
r8168-8.039.00/src/Makefile_linux24x
r8168-8.039.00/src/r8168.h
r8168-8.039.00/src/r8168_asf.c
r8168-8.039.00/src/r8168_asf.h
r8168-8.039.00/src/r8168_dash.h
r8168-8.039.00/src/r8168_n.c
r8168-8.039.00/src/r8168_realwow.h
r8168-8.039.00/src/rtltool.c
r8168-8.039.00/src/rtltool.h
r8168-8.039.00/src/rtl_eeprom.c
r8168-8.039.00/src/rtl_eeprom.h
linux:/home/pickett07/Downloads # cd r8168-8.039.00
linux:/home/pickett07/Downloads/r8168-8.039.00 # ./autorun.sh


Check old driver and unload it.
rmmod r8169
Build the module and install
./autorun.sh: line 27: make: command not found
linux:/home/pickett07/Downloads/r8168-8.039.00 # lsmod | grep r8168
linux:/home/pickett07/Downloads/r8168-8.039.00 # ifconfig -a
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:48 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3792 (3.7 Kb)  TX bytes:3792 (3.7 Kb)


linux:/home/pickett07/Downloads/r8168-8.039.00 # ./autorun.sh>>
-bash: syntax error near unexpected token `newline'
linux:/home/pickett07/Downloads/r8168-8.039.00 # ./autorun.sh


Check old driver and unload it.
Build the module and install
./autorun.sh: line 27: make: command not found
linux:/home/pickett07/Downloads/r8168-8.039.00 #

So how to I unload the old driver? And then build the new module and install it? Will unloading the old driver and then rerunning the ./autorun.sh build/install the new module?

Thank you for your help.



Build the module and install
./autorun.sh: line 27: make: command not found
linux:/home/pickett07/Downloads/r8168-8.039.00 #

You need to have the make package installed, and you may find other development packages are required during this compiling process.

It may be better to consider installing an openSUSE RPM

https://software.opensuse.org/package/r8168

So how to I unload the old driver? And then build the new module and install it? Will unloading the old driver and then rerunning the ./autorun.sh build/install the new module?

Thank you for your help.

If the script completes, I think it takes care of this. For reference, I got

Check old driver and unload it.
Build the module and install
/home/dean/Downloads/r8168-8.039.00/src/r8168_n.c: In function ‘rtl8168_init_hw_phy_mcu’:
/home/dean/Downloads/r8168-8.039.00/src/r8168_n.c:6813:1: note: variable tracking size limit exceeded with -fvar-tracking-assignments, retrying without
 rtl8168_init_hw_phy_mcu(struct net_device *dev)
 ^
Backup r8169.ko
rename r8169.ko to r8169.bak
DEPMOD 3.11.10-29-desktop
load module r8168
Completed.

The source archive I linked to provides the .spec file, which makes building slightly easier IMHO. The downloaded files are located at /usr/src/packages. In an effort to assist further, I built a RPM package(s) with rpmbuild. It complained about kernel-syms not being available, and as you can see zypper took care of that and the dependencies. However, you will need to have a working ethernet connection first.

rpmbuild -ba r8168.spec

and got

 # rpmbuild -ba r8168.spec                         
error: Failed build dependencies:
        kernel-syms is needed by r8168-8.039.00-5.1.x86_64
linux-bbgi:/usr/src/packages/SPECS # zypper in kernel-syms
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 3 NEW packages are going to be installed:
  kernel-default-devel kernel-syms kernel-xen-devel 
.
.


Once that was done, ‘rpmbuild’ completed with no issues and I have the RPM packages located in /usr/src/RPMS/x86_64 as expected.


-rw-r--r-- 1 root root 569271 May 14 14:02 r8168-kmp-default-8.039.00_k3.11.10_29-5.1.x86_64.rpm
-rw-r--r-- 1 root root 569008 May 14 14:02 r8168-kmp-desktop-8.039.00_k3.11.10_29-5.1.x86_64.rpm
-rw-r--r-- 1 root root 553092 May 14 14:02 r8168-kmp-xen-8.039.00_k3.11.10_29-5.1.x86_64.rpm

deano_ferrari,

Please forgive my ignorance here but I’m not quite sure how to go about this process, I will tell you what I have done and list what I think are the right steps to take. I downloaded the r8168-8.039.00-5.1.src.rpm file from https://software.opensuse.org/package/r8168 and placed it into a hard drive mutually used by both Window’s and SUSE. I plan to remove the .rpm and place it into the downloads folder. After that I plan to clicking on the .rpm file to follow its instructions. Or should I right click on the .rpm file and choose install with YAST from the options? And is the fact that it is a .src.rpm file in anyway an issue?

Will following the instructions provided with the .rpm lead me to a script similar to the one posted here?

Check old driver and unload it.Build the module and install
/home/dean/Downloads/r8168-8.039.00/src/r8168_n.c: In function ‘rtl8168_init_hw_phy_mcu’:
/home/dean/Downloads/r8168-8.039.00/src/r8168_n.c:6813:1: note: variable tracking size limit exceeded with -fvar-tracking-assignments, retrying without
 rtl8168_init_hw_phy_mcu(struct net_device *dev)
 ^
Backup r8169.ko
rename r8169.ko to r8169.bak
DEPMOD 3.11.10-29-desktop
load module r8168 
Completed.

If the answer to that question is yes. Do I then just open the terminal and type in the following bash command?

rpmbuild -ba r8168.spec

Or would I have to type some other commands before that? Like navigating to a certain folder first or entering super user mode.

And I think lastly, by a working Ethernet connection do you simply mean just being able to actually connect to the internet through my current hardware, even on the Windows side? Causing I’m thinking you are telling me that if that I do everything right, and installed the .rpm successfully, it will detect my network card and let me connect to the internet.

Again, please forgive my ignorance, this is by far the most complicated thing I have had to do in Linux. And I want to make sure that I do it right the first time fingers crossed.

Install the .src.rpm it with the package manager, and it will unpack to to /usr/source/packages. From there run the ‘rpmbuild’ command as I explained last post. It might complain that additional packages are required (which is why I think you should try to do this with a working wired internet connection).

If the answer to that question is yes. Do I then just open the terminal and type in the following bash command?

rpmbuild -ba r8168.spec

Make sure you change directory to /usr/src/packages/SPECS/ (where the .spec file is located). This needs to be done as root.

And I think lastly, by a working Ethernet connection do you simply mean just being able to actually connect to the internet through my current hardware, even on the Windows side?

I mean wired ethernet connection - connect via ethernet cable. It makes it easier if you need to install packages so even be able to build a proprietary driver.

Causing I’m thinking you are telling me that if that I do everything right, and installed the .rpm successfully, it will detect my network card and let me connect to the internet.

No, building the binary RPM from the source is the first step. The RPM then gets installed, and your hardware should now be working. To get a connection will require you to use YaST. Most laptop users opt to configure the network to use NetworkManager.

Again, please forgive my ignorance, this is by far the most complicated thing I have had to do in Linux. And I want to make sure that I do it right the first time fingers crossed.

It is complicated for a new Linux user, but not impossible, and you may find that you need to install additional packages to be able to build the driver.

You may want to consider purchasing a USB wifi device that has Linux support out-of-the-box. At least you’d have connectivity and could work on getting the in-built device up and running later.