Embedded Connectivity
Intel network controllers, Firmware, and drivers support systems
878 Discussions

i210 Windows Driver Won't Start

jnam3
Beginner
5,656 Views

We're developing an Ethernet NIC based on the i210-IS and the Marvell 88E6097F (a multi-port switch). SGMII is the interface between these two devices. Our development platform is 64-bit Windows 7 Embedded.

I have programmed the i210 with the file Dev_Start_I210_Sgmii_NOMNG_16Mb_A2_3.25_0.03.bin (the flash is Microchip SST25VF016B -- a 16 Mbit part). I have not attempted to modify the image in flash in any way (not even changing the MAC address -- which I can't do either, but that's another problem). I am using the latest versions of both the tools and firmware (both downloaded from Intel in the last couple of days).

I have verified using EEUPDATE that the device can be found and has a PID of 0x1538. EEUPDATE also confirms that the flash checksum is good.

As a double-check, I used the lanconf tool to verify that the image data is present in both flash and shadow EEPROM.

I have not programmed the iNVM. Inspecting it using lanconf shows that it is uninitialized.

This all seems good, but when I install the driver the i210 is recognized and the driver is installed, but in Device Manager the i210 is non-functional and the reason given is "the device won't start (error 10)".

Our system also has an i218-LM in it and that part functions properly (the driver supports both of these devices).

There is no problem on the PCIe bus. The lanconf tool shows that the PCI registers have been initialized. I can use lanconf to inspect the internal registers of the i210.

I have compared our schematic with the reference one and the only difference is that we have pulled the SECURITY_EN (NVM_SI) signal low to facilitate development.

From the comments I see in other discussions, it seems that programming the firmware was sufficient to get the i210 up and running. If there is any step that I have overlooked, please let me know.

Any assistance would be most appreciated. If you need any more information or want me to perform some tests, please don't hesitate to ask.

0 Kudos
1 Solution
CarlosAM_INTEL
Moderator
3,086 Views

Hello sysJN,

You need to use the SERDES / KX version of the NVM when attaching to a switch.

The SGMII selection expects a Marvell 88E1111 or 88E1112 attached to the MDIO / I2C lines for PHY control purposes.

Please let us know if this information is useful to you.

Best Regards,

Carlos_A.

View solution in original post

0 Kudos
18 Replies
CarlosAM_INTEL
Moderator
3,086 Views

Hello sysJN,

Thank you for contacting the Intel Embedded Community.

We have received your consultation and we are working to give you an update as soon as possible.

Thanks for your patience and understanding.

Best Regards,

Carlos_A

0 Kudos
CarlosAM_INTEL
Moderator
3,087 Views

Hello sysJN,

You need to use the SERDES / KX version of the NVM when attaching to a switch.

The SGMII selection expects a Marvell 88E1111 or 88E1112 attached to the MDIO / I2C lines for PHY control purposes.

Please let us know if this information is useful to you.

Best Regards,

Carlos_A.

0 Kudos
jnam3
Beginner
3,086 Views

Hi Carlos,

Thank you for your assistance.

I programmed the i210 with the SERDES firmware and the driver now recognizes the device (Device ID 0x1537) and starts up properly.

Unfortunately, our Marvell switch is inoperable at the moment due to HW problems. We will fix this on Monday and I will provide an update.

I have also seen another comment from you that the Intel drivers only support the 88E1111. Does this mean that you believe that the SERDES firmware will not support the 88E6097F? I will have a look at Marvell's datasheet for this part and see what it reveals.

On another topic that I mentioned earlier, although I have not tried to write a MAC address to flash with the SERDES firmware loaded, I was not able to do this when the SGMII firmware was in use. The MAC address (and checksum) were updated in the shadow EEPROM, but flash was not re-written. Once power was cycled, the original MAC address was active. Maybe I will have better luck with the SERDES firmware.

I notice that the properties pages for the driver (in Device Manager) allow a "Locally Administered Address" to be defined. Is this another way to set a MAC address if the flash cannot be written? I am not concerned about users modifying this value.

0 Kudos
CarlosAM_INTEL
Moderator
3,086 Views

Hello sysJN,

Thanks for your update.

In the case of the i210 attaching to an SGMII switch, usually the i210 operates as a normal KX interface to the switch, and the switch controls and operates the PHY. Compatibility with the PHY (or PHYs, as the switch may operate multiple PHYs depending on the design) and the i210 should not be an issue, as the switch isolates the two by acting as a go-between.

Also, when connecting to a PHY, the Intel Driver only supports the 88E1111. Due to this fact, the SERDES is the best option when it is talking to a switch.

On the other hand, as for the MAC address, could you please let us know the used tool to write this? The EEUPDATE or LANCONF would be the best options, as you write to the flash.

Please let us know if this information is useful to you.

Best Regards,

Carlos_A.

0 Kudos
jnam3
Beginner
3,086 Views

Hi Carlos,

Your suggestion to use the SERDES/KX firmware was correct. Once we fixed our HW problems, the i210 and the switch were able to communicate. Thank you very much. We configured the port of the switch that is connected to the i210 to run in 1000BASE-X mode (it doesn't have explicit support for 1000BASE-KX).

I am using the EEUPDATE tool to program firmware and a MAC address. The first operation I perform is:

EEUPDATE /NIC= /DATA

This works fine. I can use LANCONF to view the contents of the flash memory and I can see that the file's contents have been programmed. If I cycle the power, the firmware is loaded and the Windows driver recognizes and initializes the i210.

Problems begin when I try to write a MAC address. I used the command:

EEUPDATE /NIC= /MAC=

What happens is that the MAC address and updated checksum are written to the shadow RAM (I can see this using LANCONF), but nothing gets written to flash. Cycling the power restores the MAC address that was in the firmware file. All evidence of the new MAC address is gone.

EEUPDATE needs a command that will copy the shadow RAM back to flash. I can see that this can be done through the use of a few registers (e.g., see section 8.4.1 of the i210 datasheet). I would have thought that EEUPDATE would do this automatically, but this doesn't seem to happen.

I do not know if it makes any difference, but the SECURITY_EN signal is pulled low (to facilitate testing).

I suppose I could use the iNVM to set the MAC address, but I'd rather store the address in flash.

One more thing: When I display the NIC's configuration dialog (e.g., in Device Manager) there are a few problems. First of all, the dialog is slow to load. Loading the "Advanced" tab can take several minutes.

Also, I cannot change any settings or run the diagnostics from this dialog. When I try, I get a popup indicating a failure (e.g., "set parameter failed" or "failed to read results"). Do you have any thoughts on this?

Thank you very much for your assistance. If you need more information about our setup, please let me know.

0 Kudos
CarlosAM_INTEL
Moderator
3,086 Views

Hello sysJN,

Thanks for your reply.

Please review the answer to the question 2.25 of the http://www.intel.com/content/dam/www/public/us/en/documents/faqs/ethernet-controller-i210-i211-faq.pdf Intel(R) Ethernet Controller I210/I211 Frequently Asked Questions that has the information that may help you.

 

Please let us know if this information is useful to you.

 

Best Regards,

Carlos_A.

0 Kudos
jnam3
Beginner
3,086 Views

Hi Carlos,

Thanks for your reply. I read the section 2.25 of the FAQ and I understand its meaning. Unfortunately it does not help with the problem I'm having. Here's the sequence of operations I'm performing and the problems I'm having:

1) Begin with a board that has a blank flash attached to the i210.

2) Use EETEST /NIC=x /DATA to program the firmware into the flash. LANCONFIG can be used to verify that the flash has been written.

3) Power down and reboot the system (i.e., cold start). Once booted, the i210 identifies itself with the expected Device ID, the MAC address is the one in the firmware file (i.e., 00-A0-C9-00-00-00) and the device functions properly.

4) Issue the command EETEST /NIC=x /MAC=. EETEST reports that the MAC and checksum have been updated. This can be confirmed with EETEST /NIC=x /TEST. LANCONFIG shows that the shadow RAM has been updated with the new MAC/checksum, but the contents of the flash have not changed.

5) A warm boot (e.g., Windows "restart") preserves the new MAC address.

6) A cold boot (e.g., Windows "shut down", followed by a power cycle) restores the original MAC address (i.e., 00-A0-C9-00-00-00) because it's read from flash. The i210 operates properly, but the MAC address has not been updated.

In addition to the above, when I open the "property" dialog in Windows to view/change the configuration of the i210, it is very slow. If I click on the "Advanced" tab, it takes several minutes before the data appears. Even when it does, any attempt to change a setting fails with a "SetSetting" failed popup.

Although I can program flash with a firmware file, I cannot update the MAC address in flash (only in shadow RAM, which is volatile). Also, I cannot use the configuration dialog for the i210 to set a "Locally Administered Address" (which would be an acceptable workaround).

Do you have any suggestions? I have to find a way to set a permanent (i.e., non-volatile) MAC address. Thanks very much.

0 Kudos
jnam3
Beginner
3,086 Views

Hi Carlos,

Do you have any comments on the above? I am particularly interested in being able to program a MAC address into flash.

Thanks vey much.

0 Kudos
CarlosAM_INTEL
Moderator
3,086 Views

Hello sysJN,

Thanks for your updates.

We are confused, because we are assuming that by "EETEST" you mean "EEUPDATE". Could you confirm that our position is correct or not? In case that they are different, could you please inform us the meaning of the term "EETEST"?

After updating with EEUPDATE, a cold boot should be performed. Could you please let us know the results in a detailed way?

Thanks in advance for your help to solve this inconvenience.

 

Best Regards,

Carlos_A.

 

0 Kudos
jnam3
Beginner
3,086 Views

Hi Carlos,

My apologies. You are correct in that by EETEST I actually meant EEUPDATE.

Here's the process I followed:

1) Begin with an i210 that has a blank flash attached.

2) Use EEUPDATE /NIC=1 /DATA to program the flash (successfully).

3) Perform a cold boot. After reboot EEUPDATE /NIC=1 /MAC_DUMP reports that the MAC address is 00A0C9000000 (i.e., the address in the firmware file). The i210 operates properly.

4) Now run EEUPDATE /NIC=1 /MAC=001122334455 (i.e., program a new MAC address).

5) Perform a cold boot. After reboot EEUPDATE /NIC=1 /MAC_DUMP reports that the MAC address is (still) 00A0C9000000. The i210 operates properly but the MAC address was not changed.

After performing step 4, I can use LANCONF to view the shadow RAM and the contents of flash. I can see that the new MAC address is in the shadow RAM, but the flash still contains the original MAC address. This is why a cold boot results in the original MAC address being in effect. The contents of shadow RAM should have been programmed into flash, but this did not happen. After the cold boot, the contents of flash are read into shadow RAM and so the MAC address in flash is in effect.

Thanks very much. I hope this clarifies my situation.

0 Kudos
JNiel6
Beginner
3,086 Views

Hi Carlos, sysJN

We have a board with two i210 devices, and we seem to be experiencing the same issue as sysJN.

1) Update both controllers with "Dev_Start_I210_Copper_NOMNG_4Mb_A2_3.25_0.03.bin" image.

2) Cold boot

3a) EEUPDATE /NIC=1 /MAC=001b85300034 -> MAC & Checksum updated succesfully

3b) EEUPDATE /NIC=2 /MAC=001b85300035 -> MAC & Checksum updated succesfully

4) LANCONF shows MAC has been updated in shadow RAM

5) Cold boot

6) EEUPDATE /ALL /MAC_DUMP -> Both MAC adresses changed back to 00A0C9000000

Regards!

0 Kudos
jnam3
Beginner
3,086 Views

Hi jsn,

Thanks for posting your comment. Based upon what I was seeing, I thought it was quite likely that someone else would have the same problem as us.

I did find a kind of workaround, but I'm not sure if it's practical, nor do I think it is recommended by Intel.

What I did was to take the firmware image file and set the MAC address as desired (it's the first six bytes of the file) It's also necessary to update the checksum (at byte offsets 0x7e and 0x7f) as needed to get the checksum computation correct. Burn the file into flash and everything seems to work properly.

Needless to say this is a cumbersome approach, but it's the only one I've come up with so far that works.

Another approach would be to use the Windows UI to set a Locally Administered (MAC) Address. This would probably store the MAC address in the registry. Unfortunately we cannot do this either as we get an error when we try to save the setting.

Carlos, if you have any suggestions as to how to address this problem, they would be most appreciated.

0 Kudos
CarlosAM_INTEL
Moderator
3,086 Views

Hello sysJN and jsn,

Thanks for your replies.

 

The SST flashes need unique settings and therefore need to be included in the flash table in the NVM. Currently, the implemented SST JEDEC IDs in the NVM are:

BF 25 8D

BF 25 8E

BF 25 4A

The SST25VF016B may have a different JEDEC ID (BF 25 41).

Please let us know if this information is useful to you.

Best Regards,

Carlos_A.

0 Kudos
jnam3
Beginner
3,086 Views

Hi Carlos,

Thanks for your feedback.

You are correct in that the SST25VF016B does return a JEDEC ID of BF 25 41. Does this mean that it is not supported by the i210 firmware? Will it ever be supported or is there some workaround we can use?

The ID BF 25 8D is returned by the 4 Mbit part, which we cannot use since SERDES firmware requires at least 8 Mbit flash.

The SST25VF080B (8 Mbit) returns a JEDEC ID of BF 25 8E, which is in your list of supported IDs. We will experiment with this part to see if we can program a MAC address and will get back to you afterwards.

0 Kudos
JNiel6
Beginner
3,086 Views

Hi Carlos,

We are using SST25VF040b with Jedec ID (BF 25 8D)

We have also tried with Macronix MX25L4006EM1I12G with Jedec ID (C2 20 13)

Both part types (4Mbit) behave the same way and does not update the MAC in flash, so that it is retained after cold boot.

Best Regards!

0 Kudos
jnam3
Beginner
3,086 Views

Hi Carlos, jsn,

I used EEUPDATE to set a MAC address on a board where the flash was a SST25VF080B and the MAC address was properly set after a cold boot. It appears that we have a solution.

Jsn, I'm not sure why the SST25VF040B did not work, but it's possible that the part is not properly installed. Use LANCONF to view the contents of the flash. Make sure it's readable and that it's not protected against write.

Carlos, thanks for your support. There's only one more problem: When I open the properties dialog for the i210 in Windows Device Manager it takes a significant amount of time to appear. More problematic is that I cannot set any values in the dialog. As I mentioned earlier, I tried setting a MAC address on the "Advanced" tab, but it failed with a popup that read "SetSetting Failed". Also, when I first try to open the Advanced tab, it takes several minutes before it appears.

Do you have any thoughts on this? Thanks for your help.

0 Kudos
CarlosAM_INTEL
Moderator
3,086 Views

Hello sysJN and jsn,

Thanks for your replies.

Could you please run the diagnostics, including the EEPROM diagnostics using LANconf and let us know the results? Because it seems to be an accessing flash issue

Thanks again for your cooperation to solve this inconvenience.

Best Regards,

Carlos_A.

0 Kudos
jnam3
Beginner
3,086 Views

Hi Carlos, jsn,

We have resolved our issue with programming a MAC into flash. We used an SST25VF080B and a new MAC address was preserved after a cold boot.

I would appreciate it if anyone has any thoughts about the inability to set parameters in Windows Device Manager (see above). Although this is not an issue at the moment, that may change in the future. Also, the fact that the UI takes so long to appear suggests that there is some sort of problem in the software.

One thought: Is it possible to set parameters for the i210 by directly modifying the registry? If so, can you supply the details of the registry keys and values?

Thank you very much.

0 Kudos
Reply