Realtek 8111G Support



  • I have a Shuttle DS47 with 2 Realtek 8111G Gigabit Cards. This will not woking in 2.0, and 2.1RC1

    FreeBSD Driver ready for download:

    http://www.realtek.com.tw/Downloads/downloadsView.aspx?Langid=2&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false

    It will be nice when the pfSense 2.1 will support this Network Modules

    g.
    thomas


  • Netgate Administrator

    Hmm, interesting.
    Unfortunately the driver at Realtek's site appears to be much older than that included in 2.1. The 8111G is not listed anywhere in the code and most recent FreeBSD 8 version tested is 8.0.
    The only version that would ever be included in pfSense is the FreeBSD code anyway (though you could compile your own) so the best place to check would be the FreeBSD mailing lists.

    Steve


  • Netgate Administrator

    The most recent re(4) source doesn't appear to support this yet:

    { RT_VENDORID, RT_DEVICEID_8168, 0,
    "RealTek 8168/8111 B/C/CP/D/DP/E/F PCIe Gigabit Ethernet" },
    

    Steve



  • @tguldener:

    I have a Shuttle DS47 with 2 Realtek 8111G Gigabit Cards. This will not woking in 2.0, and 2.1RC1
    …It will be nice when the pfSense 2.1 will support this Network Modules

    It would be nice if Realtek started making network chips that were not junk. Until then, buying a device that has Intel network chips or a PCIe slot to take an Intel card is going to beat Realtek 7 days a week in any application where the network working counts. Been there, done that, won't go back. Have a pile of ethernet cards, some claiming to be gigabit, that won't run anywhere near their claimed speeds. Don't have a lot of use for them…



  • @Ecnerwal:

    Been there, done that, won't go back. Have a pile of ethernet cards.

    Yup, Im the same. When I was a newbie I read the hate towards Realtek cards and thought they cant be that bad.

    They are that bad. They are junk..


  • Netgate Administrator

    A lot of the bad rep Realtek suffers is due to their 10/100 cards which were indeed junk. Their gigabit cards are far better. That's not to say they're particularly good just that you can at least expect them to continue functioning even if not at full line speed.

    Steve



  • I've noticed no problems with nvidia and I've never had a problem with a realtek (if they had working drivers - can be big if).



  • @stephenw10:

    { RT_VENDORID, RT_DEVICEID_8168, 0,
    "RealTek 8168/8111 B/C/CP/D/DP/E/F PCIe Gigabit Ethernet" },
    

    Steve

    Realtek send me a new driver:

    After consulting with SW Engineers, we have different driver version for inbox drivers and Realtek drivers.
    The Driver on Realtek website is supported  8111G.
    And the message you show on mail that is inbox Driver, have you installed the driver?

    { RT_VENDORID, RT_DEVICEID_8168, 0,
    "RealTek 8168/8111 B/C/CP/D/DP/E/F PCIe Gigabit Ethernet" },

    But I don't know how to integrate and test this driver on a pfsense installation:

    The main steps you have to do:(FreeBSDSrcDir means the directory of FreeBSD source code
    and it may be "/usr/src/sys")

    1. keep the orginal driver source code:

    cd /usr/src/sys/dev/re

    cp if_re.c if_re.c.org

    cd /usr/src/sys/modules

    cp Makefile Makefile.org

    cd /usr/src/sys/modules/re

    cp Makefile Makefile.org

    cd /usr/src/sys/i386/conf/

    cp GENERIC GENERIC.org

    2. recompile your kernel (you must install your FreeBSD source code first !!)

    vim /usr/src/sys/i386/conf/GENERIC and delete re

    vim /usr/src/sys/modules/Makefile and delete re

    cd /usr/src/sys/i386/conf

    /usr/sbin/config GENERIC

    (for FreeBSD 5.x/6.x/7.x/8.x/9.x)

    cd ../compile/GENERIC

    (for FreeBSD 4.x)

    cd ../../compile/GENERIC

    make cleandepend

    make depend

    make

    make install

    reboot

    3. update the driver source code:
        Copy the dirver source code( if_re.c and if_rereg.h) into /usr/src/sys/dev/re
        Copy the Makefile into /usr/src/sys/modules/re
       
    4. build the driver:

    cd /usr/src/sys/modules/re

    make clean

    make

    5. install the driver

    cd /usr/src/sys/modules/re

    kldload ./if_re.ko

    I'm just a advanced user and not a developer.

    g.
    Thomas


  • Netgate Administrator

    You would have to do that from a full FreeBSD 8.1 install as pfSense doesn't have any build tools or source included.
    You could try the kernel linked in this thread which has updated Realtek drivers. I don't know if they're new enough though.
    http://forum.pfsense.org/index.php/topic,62032.msg342520.html#msg342520

    Steve



  • Are there any other solutions for this problem for basic users like me?  :o

    Do you see any possibilities to include a working driver directly in the 2.1-RELEASE iso somehow?

    Or can we use some 2.2-ALPHA which includes the missing driver?

    Any help / information on this would be great  :)



  • Bad news - also in the Alpha Release of FreeBSD10 is the 8111G Support missing  :'(



  • well … then I will use the unit as a Linux server if we can't get working this network adapters in 2013 ... really awesome.

    I don't understand why this network adapter is so different compared to the RTL8111E.



  • It looks like that it will work in the next FreeBSD 10 Version:

    Index: sys/dev/re/if_re.c

    –- sys/dev/re/if_re.c (revision 255582)
    +++ sys/dev/re/if_re.c (working copy)
    @@ -234,6 +234,10 @@
    { RL_HWREV_8168E_VL, RL_8169, "8168E/8111E-VL", RL_JUMBO_MTU_6K},
    { RL_HWREV_8168F, RL_8169, "8168F/8111F", RL_JUMBO_MTU_9K},
    { RL_HWREV_8411, RL_8169, "8411", RL_JUMBO_MTU_9K},

    • { RL_HWREV_8168_0, RL_8169, "8168G/8111G", RL_JUMBO_MTU_9K},
    • { RL_HWREV_8168_1, RL_8169, "8168G/8111G", RL_JUMBO_MTU_9K},
    • { RL_HWREV_8168_2, RL_8169, "8168G/8111G", RL_JUMBO_MTU_9K},
    • { RL_HWREV_8168_4, RL_8169, "8411", RL_JUMBO_MTU_9K},
      { 0, 0, NULL, 0 }
      };

    @@ -1457,6 +1461,10 @@
    case RL_HWREV_8168E_VL:
    case RL_HWREV_8168F:
    case RL_HWREV_8411:

    • case RL_HWREV_8168G_0:
    • case RL_HWREV_8168G_1:
    • case RL_HWREV_8168G_2:
    • case RL_HWREV_8168G_4:
      sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PAR |
          RL_FLAG_DESCV2 | RL_FLAG_MACSTAT | RL_FLAG_CMDSTOP |
          RL_FLAG_AUTOPAD | RL_FLAG_JUMBOV2 |
      Index: sys/pci/if_rlreg.h
      ===================================================================
      --- sys/pci/if_rlreg.h (revision 255582)
      +++ sys/pci/if_rlreg.h (working copy)
      @@ -191,6 +191,10 @@
      #define RL_HWREV_8402 0x44000000
      #define RL_HWREV_8168F 0x48000000
      #define RL_HWREV_8411 0x48800000
      +#define RL_HWREV_8168G_0 0x4c000000
      +#define RL_HWREV_8168G_1 0x4c100000
      +#define RL_HWREV_8168G_2 0x50900000
      +#define RL_HWREV_8168G_4 0x5c800000
      #define RL_HWREV_8139 0x60000000
      #define RL_HWREV_8139A 0x70000000
      #define RL_HWREV_8139AG 0x70800000


  • great, at least with FreeBSD 10.

    they won't merge it to the FreeBSD 8 I suppose?

    What about a Debian installation with a pfSense installation running in VirtualBox? Beside the performance it may work good enough until we get a better solution..  :D



  • @kushtrim:

    they won't merge it to the FreeBSD 8 I suppose?

    I ask for FreeBSD 8 Support, but I don't think that someone is willing to work again on FreeBSD8. The corrent Version is 9 and the next Version is 10. So soon is FreeBSD 8 not anymore supportet. PFSense is still on FreeBSD 8.3 and the FreeBSD 8.4 is already listet as legacy release. So I hope, that PFSense will push the change to FreeBSD 9 or 10. On FreeBSD 9 or 10 it's possible to get the new drivers directly into the kernel.



  • So, the discussion is back on PFSense developers ;-)

    Hi Thomas,

    I recommend getting ahold of the pfsense guys with this question.

    Scott

    On Sep 15, 2013, at 2:35 AM, wrote:

    Is it also possible to get a working kernel in FreeBSD 8.3 for PFSense support?

    g.
    Thomas



  • I also have a ds47. Nice little device.

    I installed debian/kvm on it. I have a running virtual pfsense on it. Throughput around 110mbit.



  • @miloman:

    I also have a ds47. Nice little device.

    I installed debian/kvm on it. I have a running virtual pfsense on it. Throughput around 110mbit.

    i'd like to have a working version without virtual pfsense  ;)


  • Netgate Administrator

    You could attempt to cherry pick the code that added 'G' support and insert it into the 8.3 driver. I imagine it's not a straight forward copy and paste job though. The surrounding code may have changed substantially between 8.3 and 10.

    Steve



  • @stephenw10:

    You could attempt to cherry pick the code that added 'G' support and insert it into the 8.3 driver. I imagine it's not a straight forward copy and paste job though. The surrounding code may have changed substantially between 8.3 and 10.

    Steve

    Right Steve, but it's not impossible to get the "G" support also in 8.3. The problem is, in PFSense is no FreeBSD sources and i'm not a developer. I have the files from Realtek to build the driver for "G" support in FreeBSD but I don't now, how I can build it for PFsense.



  • I'm liking the VM idea more and more - Or maybe use as a small workstation.


  • Netgate Administrator

    You need to build it in a standard FreeBSD 8.3 install and then move it across to pfSense. The instructions all talk about building a completely new kernel but I would first attempt to build the driver as a kernel module and load it as that's much easier. I have done that succefully with the msk(4) driver and I know it's been done with em(4) too.
    It has been done for re(4) aswell to support slightly newer 8111: https://forum.pfsense.org/index.php/topic,58150.0.html
    I don't know how new the driver has to be to support G.

    Steve



  • I also own a Shuttle DS47 that I wanted to use to replace my existing pfSense hardware in my home network. As others have found out, the NIC's on the device are Realtek 8111G, which aren't supported on FreeBSD 8.3, 8.4 or 9.2, so also not on pfSense 2.0x or 2.1.

    As mentioned in an earlier post, there is source code to build a FreeBSD kernel module on the Realtek Website, which I used to do exactly that.

    The module was build on a FreeBSD 8.3p11 installation (pfSense 2.1) and tested on FreeBSD 8.3 and with pfSense 2.1-RELEASE.
    The attached module should be placed in /boot/kernel/ and the file /boot/loader.conf should be modified to include the line 'if_re_load="YES"' (in a pfSense full install; nano could be different, don't know)

    Because I had a bit of trouble getting an editor to work properly when booted into single user mode (WARNING: shell not fully functional?), I include a copy of the 'loader.conf' file so it can just be copied to it's location. Of course, this is a standard 'loader.conf' from a fresh 2.1-RELEASE install.

    If more detail is needed, ask.

    I did some very simple testing with the NIC's on FreeBSD 8.3 and they seem to work fine. Copying files on my network gets me around 70MB/s transfer speed, which seems reasonable for something like a DS47. (I get 100MB/s between Windows8 and FreeNAS9). I had it 'wget'ting a lot of files from the internet and it used my full bandwidth for hours, without problems.

    On the other hand, I'm having a hard time getting pfSense 2.1-RELEASE to work with it. I'm using PPPOE over a VLAN on the WAN side to connect to my ISP. I'm doing that right now with a pfSense box (2.03), so it can work. I now get very erratic behaviour; while it sometimes connects for a very short time it usually does nothing. I haven't spent a lot of time debugging this, it could still be PICNIC… I had expected to just copy my config from the 2.03 box and be done with it, but things are never simple...
    so my final verdict on the pfSense install is still to come...

    Two files attached in a gzipped tar: the kernel module (if_re.ko) & loader.conf. NOTE: Please remove the .txt extension.

    Richard

    8111G_module.tar.gz.txt
    8111G_module.tar.gz.txt



  • Great work Richard

    I will test it in the next days

    g.
    thomas


  • Netgate Administrator

    Nice!  :)
    Can you give us a link to the source for that module? Is it 32 or 64bit?

    You should probably put the modules in /boot/modules and add the line to /boot/loader.conf.local but either will work. The file loader.conf.local gets copied across an update but the modules won't (in Nano at least) so you might want to keep a copy handy. Create loader.conf.local if it doesn't exist.

    Steve



  • @stephenw10:

    Nice!  :)
    Can you give us a link to the source for that module? Is it 32 or 64bit?

    Mhh, should have mentioned that…  :-\ . I compiled the driver with FreeBSD 8.3-RELEASE-amd64 p11. The link to the source code is given in the first post of this thread, by the OP:

    http://www.realtek.com.tw/Downloads/downloadsView.aspx?Langid=2&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false

    Description                      version  update time  size
    FreeBSD 7.x and 8.0        1.83      2013/5/16      64k

    Browsing through that source code, it looks like it is really old, no specific mention of the 8111G. The Realtek page header says it IS for the 8111G (among others). The included 'Readme.txt' only mentions the 8168G which seems to use the same driver as the 8111G. Maybe it's basically the same device, don't know.

    When using a FreeBSD 8.3-RELEASEp11 (or 9.2-RC4) with the standard re(4) driver, the kernel complains about an unknown hardware revision for re0/re1 (0x4c000000). When I scan the Realtek source code for that, it looks like i'm getting a hit so I decided to just build the module, because it is really simple. Trial and error...

    Regarding the 32/64bit issue i kinda hoped that the driver source code itself isn't specific for either one. It's compiling the module that makes the difference. The examples given by Realtek are about i386, i just substituted the pathnames with amd64. Experimenting a little is always fun  :)

    You should probably put the modules in /boot/modules and add the line to /boot/loader.conf.local but either will work. The file loader.conf.local gets copied across an update but the modules won't (in Nano at least) so you might want to keep a copy handy. Create loader.conf.local if it doesn't exist.

    Okay, we'll do that.

    The driver still seems to work fine with FreeBSD, I'll see if the weekend brings an opportunity to test it with pfSense again. If someone could point me to some good current info about setting up pfSense with PPPOE over a vlan on the WAN side, I'd be grateful. It seems easy enough, but even in 2.0x (where it works fine now) I found it difficult. Probably just me…

    Richard

    PS: is it just me or is the verification picture REALLY difficult to read? 2 posts and 10 tries just seems wrong.....



  • Update:

    Because I could not get 2.1-RELEASE-amd64 to work with the DS47 with the newly compiled Realtek 8111G driver, I decided to build the driver again with the i386 version of FreeBSD. After installing pfSense 2.1-RELEASE-i386 and using the compiled kernel module, pfSense crashed with a kernel panic every time I plugged in the WAN connection. If I left the WAN connection unplugged, pfSense would boot up normally and let me go through all the configuration options without problems. Plug in the WAN cable: boom, kernel panic..  >:(

    So I decided to try pfSense 2.03. This is what I'm using right now, on another box, and it works fine (and has for years, with previous versions, same hardware).

    So installed FreeBSD 8.1 p13-amd64, build the module, installed pfSense 2.03, let it use the module: exactly the same behaviour as above. Kernel panic as soon as I plug in the WAN connection.

    So, right now, nothing really works. I don't know exactly what is causing this. The driver seems to be working fine with FreeBSD plain, both 8.1 and 8.3. I copied hundred's of gigabytes over my network for hours without problems.

    It could be that:

    1 - the VLAN option is causing problems with the driver. I cannot test pfSense for real without it, that's how my ISP works.
    2 - Something goes wrong when building the driver, although I would think it's really easy to do. But I'm no expert by any means.
    3 - Using the module isn't enough, the standard re(4) driver that is compiled into the standard pfSense kernel should be removed.
    4 - Something else…  ::)

    I would really be interested if other people could test this and/or build their own kernel modules.
    There is nothing more entertaining than spending your Sunday constantly breaking the family's internet connection. Mhhh...

    Richard.

    PS: I'll attach the module build with FreeBSD 8.3-p11-i386 and 8.1-p13-amd64. Again, remove the .txt extension.

    [FreeBSD Realtek Kernel module.tar.gz.txt](/public/imported_attachments/1/FreeBSD Realtek Kernel module.tar.gz.txt)



  • oh man you are my hero ;-)

    I can't get an ip with my new fanless computer, this jetway got 2 Realtek RTL811EVL PCI-E Gigabit Ethernet LAN
    You can check my thread here : http://forum.pfsense.org/index.php/topic,66464.msg363431.html

    I just tried your driver with 2.1 i386 and at first boot i got an ip for my WAN ;-)

    Thanks a lot !



  • Glad it was at least useful to someone…  :)

    I'm still having problems with pfSense using the Realtek 8111G NIC's. Little more work to do, I guess.

    I really wished Shuttle made these devices with Intel NIC's. They are so great for a pfSense home router. Wouldn't care if that increased the price somewhat.

    Just curious: I assume you used the FreeBSD 8.3P11-i386 module from the last post? Because I forgot to mention the equivalent pfSense version; I guess that's easy enough to find though.

    Just in case someone might want to know:

    pfSense 2.1  is based on FreeBSD 8.3-RELEASE-p11
    pfSense 2.03 is based on FreeBSD 8.1-RELEASE-p13

    Anyway, good luck with your router!

    Richard



  • @NeverSimple:

    Just curious: I assume you used the FreeBSD 8.3P11-i386 module from the last post? Because I forgot to mention the equivalent pfSense version; I guess that's easy enough to find though.

    Yes i knew that pfsense 2.1 is based on 8.3 and pfsense 2.0 based on 8.1.

    And before i saw your message, i was testing some if_re.ko found on this forum.

    My question  : what will happen when a new version comes out ?
    And can the developper of pfsense use the offcial 1.83 module of realtek ?


  • Netgate Administrator

    pfSense is built on the FreeBSD code base. If Realtek, or whoever, submit their code or patches into FreeBSD it will get included in pfSense 2.2 which is expected to be based on FreeBSD 10.
    It's hard to say quite what the source code on Realteks site is. It's clearly the same code as FreeBSD are using but comparing it with the FreeBSD re(4) source it looks old but it's been patched to support newer cards.  :-\

    Steve



  • and if we have a new version of pfsense, still in 2.1 branch ?


  • Netgate Administrator

    Typically they would be for bug fixes or security fixes but drivers have been backported before to support newer hardware. If would require specific work to produce the patches though, it's unlikely updated freebsd drivers would be included automatically.

    Steve



  • so if my router is stable with this driver i can safely put it in production ? i will just have to test the new pfsense 2.2 !

    great news :)


  • Netgate Administrator

    Only you can make that decision.  ;)
    If you have thoroughly tested it and found it to be stable then it will probably be OK. Of course it will probably be subject to conditions in production that you haven't tested, that's just how it goes. BY running code that isn't part of the default pfSense install you don't get the benefit of thousands of other people testing it in production.

    Steve



  • i'm understantding but there is no warranty at all with pfsense except if you buy a specific hardware.
    With i386 / amd64 installed on PC, there are a lot of components which can cause instability or errors so…

    I'll test it for a long time at my work, i'll see if it's stable or not :)



  • Thats a simple problem to avoid.  Use hardware that is 2 - 3 years old and that is known to work well with pfsense with no special tweaking.

    When people buy the latest and greatest, usually, they are cutting their own throat.  PFsense is not windows 7.

    When shopping for pfsense hardware, unless you love tinkering buy known-to-work hassle free hardware with recommended NICs.



  • i know that…

    But i was looking for cheaper hardware for pfsense.
    I have anothers pfsense router, certified, for 800 € !

    This one cost only 350€ and i have more functionnality (Wifi, 64 Gb SSD, Fanless, Atom).

    Sometime it's good to test ;-)



  • I have Atom based systems out there and at home I use an old AMD X2.  I prefer the AMD.  It seems to do everything better, faster easier more stable.  Seems the only place it doesn't work better than the Atom boxes is power consumption.

    If you just need one, I'd say use a older, relatively low power desktop box you recycled.

    If you need a bunch of them running, the the power becomes a factor.  (for me anyway).



  • Great news:

    FYI: Fixed in r257304-257306.

    So for the next Version of PFSense I hope the Card will be also supported. At the moment I working with 4 DS47 with customized driver and everything will working perfectly - also with all my VLAN implementation.

    g.
    thomas