# Realtek 8111B will not work

## baak6

Hello friends,

I have a Foxconn motherboard with a builtin Realtek 8111B chip. It just will not work on Linux. (tried Gentoo, Arch, Ubuntu...)

lspci -v says the card is 8129 for some reason, I know this not to be true.

```
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8129 (rev 01)

Subsytem: Coreco Inc RT8129 Fast Ethernet Adapter

...
```

I'm writing this from another PC, I'll post more if requested.

I've tried the following modules:

```
r8169 - From kernel

Gives error: r8169 0000:03:00.0: region #1 not an MMIO resource, aborting

8139too - From kernel

Gives error: r8169 0000:03:00.0: region #1 not an MMIO resource, aborting - Trying to free nonextisten resouce <a bunch of hex codes>

r8168 - From Realtek

Gives nothing at all!

ne2k-pci From kernel

Gives nothing at all!
```

I was going to try r1000 but apparently that one has been abandoned and r8168 should work instead but it doesn't.

I have messed around with the Windows drivers to make sure it is not the wake on lan issue that Realtek has. Either way I coldbooted the PC whenever going into Linux.

I'm completely lost, I have given up and if someone else cannot help me solve this I'll end up buying some other PCI NIC and settling with that.

Thank you in advance!Last edited by baak6 on Thu Feb 19, 2009 2:22 pm; edited 1 time in total

----------

## doctork

How do you "know this not to be true?"

 *Quote:*   

> 
> 
> 03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8129 (rev 01)
> 
> Subsytem: Coreco Inc RT8129 Fast Ethernet Adapter
> ...

 

If the motherboard is anywhere near new, I'd complain to Gigabyte.  I believe the 8129 we obsoleted quite some time ago.

--

doc

----------

## baak6

 *doctork wrote:*   

> How do you "know this not to be true?"
> 
>  *Quote:*   
> 
> 03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8129 (rev 01)
> ...

 

Hello,

Thanks for your reply.

It's a Foxconn motherboard actually, I confused it with another one. I looked up the specs and it says the card is 8111B. Under Windows it is also listed as 8168/8111.

A lot of people have had lspci list their card wrongly, I do not know why it happens but while I was searching for a solution to this problem I saw many people complaining about this.

----------

## doctork

Have you run /usr/sbin/update-pciids?  It might fix the lspci identification.  Not that I think that will solve your driver problem.

I've got one of these on an MSI motherboard:

```
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)

```

It works fine with the r8169 driver.

Good luck.

--

doc

----------

## baak6

Thanks for the tip.

I ran the update-pciids script (although I had to modify it since I have no network on that PC) and it updated successfully.

It still lists the card as RTL-8129 though. :/

----------

## baak6

I should probably add that the motherboard is around 1 year old.

----------

## energyman76b

and it does work in windows?

if yes, you should contact the driver's maintainers on the appropriate mailing list. You find more in /usr/src/linux/MAINTAINERS

----------

## baak6

 *energyman76b wrote:*   

> and it does work in windows?
> 
> if yes, you should contact the driver's maintainers on the appropriate mailing list. You find more in /usr/src/linux/MAINTAINERS

 

Thanks, I'll try that. Yes, it works fine under Windows.

Am I right to assume that for 8111B chips I should be using r8169 from the kernel or? What about r8168 from Realtek?

Here another thread from someone else with an identical problem by the looks of it: http://forums.debian.net/viewtopic.php?t=35346&start=0

I'm not sure but there might be some additional information there.

----------

## energyman76b

use 8169 from kernel. It will work fine with 8111B - from a user point of view (and kernel driver to load) they are all the same  :Wink: 

----------

## doctork

The 8169 driver would probably work if the chip were properly identified as an 8111B.  I took a quick look at the driver code, and it looks like it depends on knowing what the chip is to work.  Since the chip is identified as an 8129, I wouldn't get my hopes up.

--

doc

----------

## baak6

So the driver is probably fine but not whatever identifies the NIC (I'm not familiar enough with lspci to know), or well, the NIC on my motherboard could be the guilty one I suppose.

I sent an E-mail like energyman suggested but no reply yet.

Either way, I'm expecting an Intel PCI Gigabit NIC on monday so I can disable this onboard NIC and just forget about this until I'm bored. :p

----------

## doctork

Sounds like a plan.  I had problems with an Nvidia onboard NIC some time ago and wound up sticking in a PCI NIC card -- with a Realtek 8169 chip on it--that works like a champ as well.

When you get the Intel NIC you can play "should I use the e1000 driver or the e1000e?"    :Laughing: 

--

doc

----------

## baak6

Hehe.

I used to hate onboard NICs altogether. I always bought a separate NIC and replaced them but this is the first time I don't.

If the Intel NIC won't work...

*crosses fingers*

----------

## energyman76b

I always had good results with onboard nics ....

----------

## Malvineous

FWIW I have this problem a fair bit with older PCs, the contacts get corroded on the PCI card and it shows up as a similar (or in some cases completely different) device with lspci.  Reseating or cleaning the card contacts fixes the problem.  Given that you're having this issue with an onboard card perhaps there's a loose solder joint or something somewhere?

Either way you should be able to find out for sure if you look at your BIOS boot messages.  Just before your Linux bootloader appears, your BIOS should list all the devices it detects on the PCI bus, with IDs.  Check what the "Network controller" is listed as, and compare those IDs to what Linux reports.  If they don't match lspci, then there's something weird going on in your kernel.  (As an aside, I've always found it amusing that the manufacturer IDs are allocated in order, but Intel has reserved number 8086 for themselves.)

Also just to add my two cents, the RTL8111 is the PCI-Express version of the 8169 (so there's a better chance of actually hitting gigabit speeds with it...but you'll get *far* better results with the Intel card you've ordered!)

----------

## energyman76b

emm.. I don't know about the 'far better' part. I can't speak for gigabit speed, but 100mbit - well, even a realtek onboard nic can reach the 10.5mbyte/sec rate... without stressing the cpu.

----------

## Malvineous

100Mbps is fine, assuming you're using a Realtek gigabit card - the old 8139s had the same issues reaching 100Mbps as the 8169s have reaching gigabit.  The Realtek's don't do a lot in hardware, so if you go above 200-300 megabit (on an 8169) without jumbo frames you start getting really high CPU usage (20-30%) - and once you hit 100% CPU usage that's your bandwidth limit (on an Athlon 2800+ this is about 700Mbps for me.)  In contrast the Intel NICs use a whole bunch of complex features that probably only Intel know how to use properly, so you can hit full gigabit without even breaking a sweat.

Not to mention the Realtek cards don't support full jumbo frames (which are useful to reduce CPU load) so if your network sees frames above 7k it can crash your machine (or kill the NIC until you reboot, depending on the kernel version.)  All recent Intel cards support full 9k jumbo frames, IIRC many even support much larger frame sizes.

Of course compared to the Intel cards, those Realtek ones sure are cheap  :Smile: 

----------

## baak6

 *Malvineous wrote:*   

> FWIW I have this problem a fair bit with older PCs, the contacts get corroded on the PCI card and it shows up as a similar (or in some cases completely different) device with lspci.  Reseating or cleaning the card contacts fixes the problem.  Given that you're having this issue with an onboard card perhaps there's a loose solder joint or something somewhere?
> 
> Either way you should be able to find out for sure if you look at your BIOS boot messages.  Just before your Linux bootloader appears, your BIOS should list all the devices it detects on the PCI bus, with IDs.  Check what the "Network controller" is listed as, and compare those IDs to what Linux reports.  If they don't match lspci, then there's something weird going on in your kernel.  (As an aside, I've always found it amusing that the manufacturer IDs are allocated in order, but Intel has reserved number 8086 for themselves.)
> 
> Also just to add my two cents, the RTL8111 is the PCI-Express version of the 8169 (so there's a better chance of actually hitting gigabit speeds with it...but you'll get *far* better results with the Intel card you've ordered!)

 

hmm, the BIOS boot message says it's 8129 as well...very strange.

I honestly don't know what to think but it's beginning to look like it's trouble with the motheboard but that makes it very strange that the card works perfectly under Windows.

Either way I have my Intel card now so all is good.

----------

## energyman76b

you should have reported it on lkml - if it is a driver bug it should be made known and fixed.

----------

## baak6

 *energyman76b wrote:*   

> you should have reported it on lkml - if it is a driver bug it should be made known and fixed.

 

So I was told, thanks for the notification.

I think I can say with some certainty that it has nothing to do with Linux but rather an incorrect PCI ID or like suggested above, a funky behaviour in the motherboard.

With that in mind, I think we can consider this case closed.

Thank you for all the help.

----------

## doctork

It's probably not a coincidence the Realtek is Vendor ID 10ec and Corego is Vendor ID 11ec.  I'd  guess a typo by the BIOS creator.

--

doc

----------

## baak6

http://www.foxconnchannel.com/support/downloads.aspx?ProductModel=G31MX-K&TypeID=en-us0000003

 *Quote:*   

> 
> 
> Patch for install chipset driver abnormal issue.
> 
> 

 

I wonder what that fixes...

----------

