O R G A N I C / F E R T I L I Z E R: finding the right nic in server core

Sep 4, 2012

finding the right nic in server core

a recently deployed server, on windows 2008 server core, start kicking out some replication notifications which when checking the configuration did not seem to jive. i started poking around when i realized the horror: i don’t know where to find what i’m looking for!

long story short, the server suffered from a biological procedural failure to set the nic properly to the right speed. while the nic was set for auto, it was not set for the critical 1gb full auto. the question now is how was this determined, even though netsh is not helpful for this scenario? the answer is … the registry. <sigh>

 

finding the right interface guid

this is a fairly simple and probably routine thing for you if you’ve done any digging around. the idea is to find the nic with the right ip address associated to it. it’s difficult sometimes to do this when you have a server with four nics but only one enabled. this is a smart way to filter them out.

  • navigate to hklm\system\currentcontrolset\services\tcpip\parameters\interfaces.
  • under interfaces, you should find a set of guids which probably looking something like this example: {FD15E5DE-C7D1-4443-9045-3B1E0A884D0F}.
  • either open each one and look at the ipaddress value or just search at the root of services for the ip address.

image

  • when you have found the correct entry, copy the key name. (yes, copy the long guid :( … just right-click and copy key name then grab the guid)

 

finding the right nic to modify

now that you have the right interface guid, it’s time to find the right nic and poke around at setting the link speed correctly.

  • navigate to hklm\system\currentcontrolset\class.
  • there’s only one guid you need to look for here: {4D36E968-E325-11CE-BFC1-08002BE10318}. there’s probably lots of them.
  • search for the interface guid you found above. i would strongly recommend the “search” method i mentioned earlier, starting from the root of class.

you should find yourself at the appropriate area of the registry. most likely, you will see multiple keys named 0000 through something like 0006*. notice the guid you were looking for is the netcfginstanceid? now you’re in the right place to do yet more digging. :(

image

* or however many keys it takes to store the configuration per interface.

 

finding the right value for speedduplex

i mentioned earlier the server had the wrong setting. i was referring to the speed/duplex seen as *speedduplex in the registry. great. how do i know what to set that to? simple. you find the reference table.

  • navigate to hklm\system\currentcontrolset\control\class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0002\ndi\params\*speedduplex\enum.*
  • find the entry with the right description.
  • the name of the entry is the value to set for speed/duplex.

* the 0002 indicates that it might be a different interface number. remember, there’s one for every network configuration stored. yours might be 0003 or 0005 or whatever.

image

 

setting the speedduplex value

now that you have the right value, set the thing and go… :)

  • navigate to hklm\system\currentcontrolset\control\class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0002.
  • locate the value named *speedduplex and change the value to the value you located in the reference table above.

image

obviously you can use this for other settings as well. :) hope that helps.

 

references

http://blogs.technet.com/b/networking/archive/2009/01/08/configuring-advanced-network-card-settings-in-windows-server-2008-server-core.aspx

http://www.pctools.com/guides/registry/detail/269/