******************************** LAN95xx Utility Ver. 3.2.0.0 ******************************** Introduction ============ The LAN95xx Utility application provides a graphical user interface to program the EEPROM of LAN95xx USB to Ethernet and USB Hub with Integrated Ethernet devices as well as perform tests on the device. Contents ======== 1. Installation Instructions 2. Starting LAN95xx Utility 3. Using LAN95xx Utility 3.1 The EEPROM Contents Editor Tab 3.1.1 EEPROM Contents Editor actions 3.1.2 Ethernet Contents subtab fields 3.1.3 Hub Contents subtab fields 3.2 The EEPROM Programmer Tab 3.2.1 EEPROM Programmer actions 3.2.2 Ethernet Programmer subtab fields 3.2.3 Hub Programmer subtab fields 3.3 The Device Diagnostics Tab 3.3.1 Tests section 3.3.2 Loop section 3.3.3 Link section 3.3.4 Status information 3.3.5 Device Diagnostics Tab Actions 3.4 Exiting LAN95xx Utility 4. LAN95xxUtility fast production testing methodology and test coverage 4.1 Test with EEPROM contents programmed and loaded vs. tests with EEPROM contents programmed only 4.2 Test time 5. Examples 5.1 Setting up an autoburn session 5.2 Setting up several assembly lines that share the ping partner 6. Release History 7. Status / Issues 1. Installation Instructions ============================ A. Setup and System Requirements A1. PCs (2): - A 2GHz Pentium 4 or higher PC is recommended for both the EEPROM programmer host system, and the test partner system. - The test partner should be able to have an IP/ICMP stack capable of replying to 65000 byte ICMP echo requests ("pings of 65000"). - Firewalls and any other existing security software must be set to enable "pings of 65000" in both EEPROM programmer host and test partner systems (if unsure on how to do the latter, just turn firewalls off). A2. Supported OS: - Windows XP/Win7/Win8 x86/X64 A3. Environment: - Utility is designed to be used standalone with NO other applications running at the same time on either the EEPROM programmer host or test partner. A4. Network: - End-to-end link between LAN95xx and test partner should be on a closed network with no other connected hosts (exception is sharing a test partner among several assembly lines, see Example 5.2 below). - The test partner system (or switch) must be capable of (and configured to) autonegotiate advertising all four 10/100 half/full duplex combinations. - For ping tests, we recommend placing an Ethernet Switch between LAN95xx and partner for most consistent results. Also, the LAN95xx interface must be set to a static IP address, and on the same subnet as the test partner. A5. Data: - Manual edit of the LAN95xxUtility.ini file is not supported, and may lead to utility malfunction and/or corrupted EEPROM. A6. LAN95xx : - Only one LAN95xx device plugged in to the PC at a time is supported by LAN95xxUtility. Instances B. Decompressing the release contents in the EEPROM Programmer Host System B1. This release is distributed as zip file containing below files. B2. Files: - readme.txt -> This file - LAN95xxUtility.exe -> The utility - 9514eep.ini -> ini file where settings are saved when programming a LAN9513/14 device - 9512eep.ini -> ini file where settings are saved when programming a LAN9512 device - 9500eep.ini -> ini file where settings are saved when programming a LAN9500 device - 9500Aeep.ini -> ini file where settings are saved when programming a LAN9500A device - 9530eep.ini -> ini file where settings are saved when programming a LAN9530/89530 device - 9730eep.ini -> ini file where settings are saved when programming a LAN9730 device C. You need to install the LAN95xx driver before you use this utility. The driver can be downloaded from SMSC website. Also, the driver is available on Windows update. Please plug in the LAN95xx device to system (which already as other internet connectivity) let windows update installs the driver. After the driver initialization is completed, we recommend that you setup a manually assigned IP address (NOT DHCP) to the LAN95xx device. As mentioned before this IP address and the test partner system's network interface that will be networked to LAN95xx should be in the same IP subnet. 2. Starting LAN95xx Utility =========================== Start the utility by simply double clicking on LAN95xxUtility.exe. You can create a shortcut to your desktop if desired. Upon startup you will be presented with a Choose Device dialog box. It is required that the device to be programmed be specified at the start of a session. If a device is already plugged into one of the host's USB ports, its type and EEPROM size will automatically be sensed and filled into the editable fields on the dialog box. If you do not want to program this type of device, simply unplug it and you will be able to choose another. If no device is plugged in you must make your choice from the two drop-down lists. Once you click OK the Utility proper will launch. If by mistake during a session a device of a different type is plugged in, a warning dialog will appear. Simply unplug the improper device and the dialog will automatically be dismissed, allowing you to continue the session. 3. Using LAN95xx Utility ======================== The utility has three main screens accessible through the "EEPROM Contents Editor," "EEPROM Programmer," and “Device Diagnostics” tabs. Both the "EEPROM Contents Editor" and "EEPROM Programmer" tabs have subtabs for the ethernet portion of the EEPROM (all devices) and the hub portion (LAN9512 LAN9513 and LAN9514 ONLY). 3.1 The EEPROM Contents Editor tab ---------------------------------- This is the visible tab every time the utility starts, and it can also be selected by clicking on it. From this tab the operator can set LAN95xx EEPROM parameters off-line and save them in the 95xxeep.ini file. This file will be used later as initial parameters to program the device’s EEPROM from the "EEPROM Programmer" tab. 3.1.1 EEPROM Contents Editor actions There are 4 buttons to do file operations: "Save To Ini File": Save the information currently displayed in the fields detailed in 3.1.1 to the 95xxeep.ini file. "Load From Ini File": Read the contents of 95xxeep.ini and refresh the fields detailed in 3.1.1 with the file content "Save To Bin File": Save the information currently displayed in the fields detailed in 3.1.1 to a binary data file to be burned to the EEPROM outside of this utility. "View Ini File": Opens and displays the actual 95xxeep.ini file 3.1.2 Ethernet Contents subtab fields The following fields are available for editing in this tab: MAC Address: This is the 6-byte universally unique Mac address the board will use. Bytes are separated by a colon. - Current: Defines the first MAC address (it will be incremented after Manual/Auto burn for the next device) - Maximum: Defines the last MAC address to be used before rolling over to 0. - Increment By: Will be added to Current MAC Address after successful EEPROM burn cycle (max is 255). Serial Number: This is the (unique for this model of device) USB serial number. It is a 9-digit hexadecimal number. - Current: Defines the first Serial Number (it will be incremented after Manual/Auto burn for the next device) - Maximum: Defines the last serial number to be used before rolling over. - Increment By: Will be added to Current serial number after successful EEPROM burn cycle (max is 255). ID: - Vendor ID: This is your company's USB Vendor Id. It is a 4-digit hexadecimal number. - Product ID: This is your devices's USB Product Id. It is a 4-digit hexadecimal number. - bcdDevice: This is the release number you assign to the device. It is a 4-digit binary-coded decimal (BCD) number. For example revision 1.23 would be represented as bcdDevice=0123 IMPORTANT NOTES: 1. If the Vendor ID is changed in the device EEPROM, an entry must be added to the driver's .inf =============== file with the new VID, otherwise the device will no longer be recognized by the host system. 2. Clicking on the labels in the GUI for Current MAC, Current Serial Number, Vendor ID or Product ID will display specific information on requirements for these fields. This same information is available in SMSC's Software User Manual for these products. Power/Remote Wake: These parameters affect values of the USB configuration descriptor. Improper setups which violate the USB 2.0 specification will not be allowed. An error message will be displayed if an illegal value has been entered. - Remote Wake up enable: to enable/disable remote USB wakeup capability (Enable when it is checked) - Bus Power: select between BusPower/SelfPower device (Bus Power when it is checked) - Max Power: Maximum Power Consumption in mA (between 2mA and 500mA for BusPower; between 0mA and 100mA for SelfPower) NOTE: In hub devices, the choice of Bus or Self Power should be consistent with the power mode selected in the Hub Contents subtab. FS/HS Interrupt Endpoint bInterval: Interval for polling the interrupt endpoint as defined in the bInterval field of the endpoint descriptor by the USB 2.0 specification. Illegal values will not be allowed; an error message will be displayed if one has been entered. (Valid ranges are 1-255 for Full Speed, 1-16 for High Speed) Strings: The user can save 4 customized strings (Manufacturer, Product, Configuration and Interface) with different lengths in the EEPROM. Each string can be individually disabled or enabled. The "Characters remaining" counter helps the user adjust the strings’ lengths so that all content fits within the EEPROM size. LAN9500A-Specific Fields (not shown for other devices): Configuration Flags: PHY Boost - Provides the ability to boost the electrical drive strength of the HS output current to the upstream port. 0 = Normal electrical drive strength 1 = Elevated electrical drive strength (+4% boost) 2 = Elevated electrical drive strength (+8% boost) 3 = Elevated electrical drive strength (+12% boost) LED Select (LED_SEL) - This bit determines the functionality of external LED pins. 0 = Speed Indicator, Link and Activity Indicator, Full Duplex Link Indicator 1 = Speed Indicator, Link Indicator, Activity Indicator GPIO Wake: - Enable the GPIOs to function as wake events for the CPM when asserted. For GPIOWK0 through GPIOWK10: 0 = The GPIO can not wake up the CPM. 1 = The GPIO can trigger a wake up event. IMPORTANT NOTES: 1. In External PHY mode, only GPIOWK8-10 are available for wake events. =============== 2. In Internal PHY mode, GPIOWK8-10 are reserved for LEDs if they are set active. 3. In PME Mode, two GPIOWK pins are reserved for PME signaling. These are GPIOWK0-1 (internal PHY mode), or GPIOWK8-9 (external PHY mode). GPIO PME Flags: GPIO PME Enable - Setting this bit enables the assertion of the GPIO0 or GPIO8 pin, as a result of a Wakeup (GPIO) pin, Magic Packet, or PHY Link Up. 0 = The device does not support GPIO PME signaling. 1 = The device supports GPIO PME signaling. Notes: 1. When this bit is 0, the remaining GPIO PME parameters in this flag byte are ignored. 2. When PME is enabled in the GUI, GPIOWK0-1 are cleared and disabled, per note 3 above. Thus, the Utility assumes internal PHY mode. If using an external PHY user must make sure to take into account note 3 above. GPIO PME Configuration - This bit selects whether the GPIO PME is signaled on the GPIO pin as a level or a pulse. 0 = GPIO PME is signaled via a level. 1 = GPIO PME is signaled via a pulse. GPIO PME Length - When the GPIO PME Configuration bit of this flag byte indicates that the GPIO PME is signaled by a pulse on the GPIO pin, this bit determines the duration of the pulse. 0 = GPIO PME pulse length is 1.5 mS. 1 = GPIO PME pulse length is 150 mS GPIO PME Polarity - Specifies the level of the signal or the polarity of the pulse used for GPIO PME signaling. 0 = GPIO PME signaling polarity is low. 1 = GPIO PME signaling polarity is high. GPIO PME Buffer Type - This bit selects the output buffer type for GPIO0/GPIO8. 0 = Open drain driver / open source 1 = Push-Pull driver GPIO PME WOL Select - Three types of wakeup events are supported; Magic Packet, PHY Link Up, and Wakeup Pin(s) assertion. Wakeup Pin(s) are selected via the GPIO Wake 0-10 (GPIOWKn) field of the General Purpose IO Wake Enable and Polarity Register (GPIO_WAKE). This bit selects whether Magic Packet or Link Up wakeup events are supported. 0 = Magic packet wakeup supported. 1 = PHY linkup wakeup supported. (not supported in External PHY mode) 3.1.3 Hub Contents subtab fields NOTE: When programming a LAN9500 (USB to Ethernet) device, this tab will not appear. The following fields are available for editing in this tab: HUB ID: HubVendorID - This is your company's USB hub Vendor Id. It is a 4-digit hexadecimal number HubProductID - This is your device's USB hub Product Id. It is a 4-digit hexadecimal number HubDeviceID - This is the release number you assign to the device. It is a 4-digit binary-coded decimal (BCD) number. For example revision 1.23 would be represented as bcdDevice=0123 Hub Configurations [HUBConfigDataByte]: HubSelfPower - If set to 1, hub is self powered. if set 0, hub is bus powered (BusPower parameter should be consistent with HubSelfPower). HighSpeedDisable - If set to 1, High-Speed disabled (full speed only). 0 for High-Speed. MultipleTTEnable - Enables one transaction translator per port operation. 0 - Single TT for all ports 1 - One TT per port ie:multiple TT supported EOPDisable - Disables EOP generation of EOF1 when in Full-Speed mode. 0 - An EOP is generated at EOF1 point if no traffic is detected. 1 - EOP generation at EOF1 is disabled (Note: this is the normal usb operation). OverCurrentSense - Selects current sensing on port-by-port basis, all ports ganged or individual ports. 0 - Ganged sensing (all ports together) 1 - Individual port-by-port 2 - Overcurrent sensing not supported (valid only when HubSelfPower=0) PortPowerSwitching - Port switching. 0 - ganged switching (all ports together) 1 - individual port by port switching OverCurrentTimerDelay - Overcurrent timer delay. Valid values: 50/100/200/400 nanoseconds CompoundDevice - Hub is part of compound device. 1 - yes, 0 - No PortRemappingEnable- Enables port remapping. If set to 1, the entries in [PortRemap] section will be valid. 0 - standard mode 1 - port remap mode Non Removable Devices [NonRemovableDevices]: Indicates which port(s) include non-removable devices. When set to 1 the port is non-Removable. If set to 0 the port is removable. Port Disable for Self Powered Operation [PortDisableSelfPowered]: During Self-Powered operation, these fields indicate whether the corresponding port is to be permanently disabled (not available to be enabled or enumerated by the host controller). Valid values (per port): 0 - port is available, 1 - port is disabled. Note: For LAN9512, port 4 and port 5 needs to be set to 1. For LAN9513, port 5 needs to be set to 1. Port Disable for Bus-Powered Operation [PortDisableBusPowered]: During Bus-Powered operation, these fields indicate whether the corresponding port is to be permanently disabled (not available to be enabled or enumerated by the host controller). Valid values (per port): 0 - port is available, 1 - port is disabled. Note: For LAN9512, port 4 and port 5 needs to be set to 1. Note: For LAN9513, port 5 needs to be set to 1. Hub power configurations [HUBPower]: MaxPowerSelfPowered - Value in 2mA increments that hub consumes from an upstream port when operating as a self powered hub. This value includes the hub silicon along with the combined power consumption (from VBUS) of all associated circuitry on the board. This value also includes the power consumption of a permanently attached peripheral if the hub is configured as a compound device, and the embedded peripheral reports 0mA in its descriptors. Valid value range: 2 - 100 (Even numbers only). MaxPowerBusPowered - Value in 2mA increments that hub consumes from an upstream port when operating as a bus powered hub. This value includes the hub silicon along with the combined power consumption (from VBUS) of all associated circuitry on the board. This value also includes the power consumption of a permanently attached peripheral if the hub is configured as a compound device, and the embedded peripheral reports 0mA in its descriptors. Valid value range: 2 - 500 (Even numbers only). MaxCurrentSelfPowered - Value in 2mA increments that hub consumes from an upstream port when operating as a self powered hub. This value includes the hub silicon along with the combined power consumption (from VBUS) of all associated circuitry on the board. This value does NOT include the power consumption of a permanently attached peripheral if the hub is configured as a compound device. Valid value range: 2 - 100 (Even numbers only). MaxCurrentBusPowered - Value in 2mA increments that hub consumes from an upstream port when operating as a bus powered hub. This value includes the hub silicon along with the combined power consumption (from VBUS) of all associated circuitry on the board. This value does NOT include the power consumption of a permanently attached peripheral if the hub is configured as a compound device. Valid value range: 2 - 500 (Even numbers only). PowerOnTime - The length of time that it takes (in 2ms intervals) from the time the host initiated power-on sequence begins on a port until power is good on that port. System software uses this value to determine how long to wait before accessing a powered-on port. Valid value range: 2 - 500 (Even numbers only). Upstream USB Electrical Signaling Drive Strength Boost [BoostUp]: Individual port boost bit can be set. Valid values: 0 - Normal electrical drive strength 4 - Elevated electrical drive strength (+4% boost) 8 - Elevated electrical drive strength (+8% boost) 12 - Elevated electrical drive strength (+12% boost) Port Swap [PortSwap]: Swaps the Upstream and Downstream USBDPn and USBDMn pins for ease of board routing to devices and connectors. Valid Values (per port): 0 - USB D+ functionality is associated with the USBDPn pin and D-functionality is associated with the USBDMn pin. 1 - USB D+ functionality is associated with the USBDMn pin and D-functionality is associated with the USBDPn pin. Port Remap [PortRemap]: When a hub is enumerated by a USB Host Controller, the hub is only permitted to report how many ports it has. The hub is not permitted to select a numerical range or assignment. The Host Controller will number the downstream ports of the hub starting with the number 1, up to the number of ports that the hub reported having. The host's port number is referred to as 'Logical Port Number'. and the physical port on the hub is the 'Physical Port Number'. When remapping mode is enabled the hub's downstream port numbers can be remapped to different logical port numbers (assigned by the host). Notes: 1. This is one to one mapping. There should not be duplicate entries between these fields. These fields are valid only when PortRemappingEnable=1. 2. When PortxDisableSelf or Port0DisableBus is set to 1 (port is disabled), corresponding logical port needs to be set to 0. 3. For LAN9512, port 4 and port 5 logical port needs to be set to 0. 3. For LAN9513, port 5 logical port needs to be set to 0. 5. The range of logical port numbers must be contiguous. For example, using LAN9514, if port 3 is disabled and port remapping is enabled, it will be necessary to use the logical port range 1-4, where port 4 could be mapped to 3, and port 5 mapped to 4. Status and command[StatusCommand]: Reset - Resets the internal memory to default values. 0 - Normal Operation/Idle state 1 - Force a reset of the registers to their default values UsbAttachWriteProtect - Usb attach and write protect 0 = Device is in configuration state 1 = Hub will signal a USB attach event to an upstream device, and the internal memory (address range 00h - FEh is .write-protected. to prevent unintentional data corruption). IMPORTANT: After editing Contents fields, if you attempt to switch to another tab you will be prompted to save changes. ========= You may proceed without saving, but be aware that the Programmer tab will always display values from the saved ini file, and those are the values that will be used to program the EEPROM. 3.2 The EEPROM Programmer Tab ----------------------------- From this tab you perform operations such as programming and verifying contents directly on the EEPROM. If the device is plugged in a USB port and the driver is properly loaded, the indicator in lower right corner of the Ethernet Programmer subtab reads "Connected", otherwise it will read "Not Connected" and you should plug in an unprogrammed device. 3.2.1 EEPROM Programmer Tab actions There are 6 buttons in this tab. "Save EEPROM to: This button reads the attached device's EEPROM and saves it to the 95xxeep.ini file. Ini File" "Write EEPROM": This button burns the information from the 95xxeep.ini file into the EEPROM of the attached device. The status is reported in the Ethernet Programmer subtab list box and also saved in LAN95xxLogs.txt. "Read EEPROM": This button reads the attached device's EEPROM and displays it in the EEPROM Contents fields of all subtabs. "Load From Ini File": This button reads 95xxeep.ini file and displays it's contents in the File Contents fields of all subtabs. "History Log": This button opens LAN95xxLogs.txt in text format. "Erase EEPROM": This button erases the EEPROM in the attached device. 3.2.2 Ethernet Programmer subtab -- EEPROM or File Contents These fields show the information for the ethernet portion of the EEPROM that the utility has read from either the EEPROM or the ini file. There are also two checkboxes at the bottom of the subtab: "Auto Burn": When you tick this checkbox you will be prompted for confirmation. If you click Yes the autoburn procedure starts. This operating mode allows for automatic programming of boards in serial manner with the minimal amount of keypresses by the user. The utility will instruct the operator when to unplug a device that has already been programmed and when to plug a new unprogrammed device, but will do everything else by itself automatically. "Test Device": This checkbox allows the tests selected in the Device Diagnostics Tab to be executed before the EEPROM programming is done (except for the EEPROM contents verification which is obviously done after the programming). If the tests fail you'll get an error message. Removing the checkbox will disable tests. Finally, there are two status fields "Detailed Status": A scrollable area which records all of the activity initiated from this tab in the current session. Note that this information is also written to the LAN95xxLogs.txt file for later review. "Status Overview": A text line showing the current/last state of diagnostic activity. When the tab is first entered the status is not shown. The status will be updated as the programming and tests progress with the last entry in the Detailed Status field. 3.2.3 Hub Programmer subtab -- EEPROM or File Contents NOTE: When programming a LAN9500 (USB to Ethernet) device, this tab will not appear. These fields show the information for the hub portion of the EEPROM that the utility has read from either the EEPROM or the ini file. As with the Ethernet Programmer subtab, these fields are readonly. Changes can only be made from the Contents Editor subtabs. 3.3 The Device Diagnostics Tab ------------------------------ This tab allows you to perform diagnostic tests on the device. Tests to be performed are selected using the checkboxes provided. Status information is shown while tests are running, and when they are complete. This tab is also used to select tests to be performed in Auto Burn mode when "Test Device" is enabled (see 3.2.2 above). 3.3.1 Tests section This section is used to enable and configure the tests to be run. "Ping": When checked, the application will transmit a 65KB ICMP echo request datagram (a.k.a. ping) to the connected partner PC through the LAN95xx. The test passes if the entire datagram is echoed back. The test fails if 5 consecutive ping attempts do not receive a response. "Destination IP ": In this box, enter the IP address of the test partner PC used for the ping test. This box is greyed out Address if the "Ping" box is unchecked. IMPORTANT NOTE: THE DESTINATION IP MUST BE ON THE SAME SUBNET AS THE LAN95xx. It is important to verify this prior to testing, otherwise results could be misleading. "Link check 10hd": When checked, the utility will attempt to establish a 10Mbps/Half Duplex link through the LAN95xx with the partner PC. If the Ping test is enabled it will perform a ping test immediately after in this link mode. If both a link is established and the ping is successfull the test passes, otherwise it fails. "Link check 100hd": When checked, the utility will attempt to establish a 100Mbps/Half Duplex link through the LAN95xx with the partner PC. If the Ping test is enabled it will perform a ping test immediately after in this link mode. If both a link is established and the ping is successfull the test passes, otherwise it fails. "Link check 10fd": When checked, the utility will attempt to establish a 10Mbps/Full Duplex link through the LAN95xx with the partner PC. If the Ping test is enabled it will perform a ping test immediately after in this link mode. If both a link is established and the ping is successfull the test passes, otherwise it fails. "Link check 100fd": When checked, the utility will attempt to establish a 100Mbps/Full Duplex link through the LAN95xx with the partner PC. If the Ping test is enabled it will perform a ping test immediately after in this link mode. If both a link is established and the ping is successfull the test passes, otherwise it fails. "EEPROM": When checked, verifies that the LAN95xx's EEPROM has been programmed correctly. When this test is run standalone from the Device Diagnostics tab, the Mac address and Serial Number in the EEPROM are checked to belong to the ranges specified by the LAN95xxUtility.ini file. When this test is run from the EEPROM Programmer Tab, the Mac address and Serial Number in the EEPROM are checked to exactly match the Current Mac Address and Current Serial number specified by the LAN95xxUtility.ini file. 3.3.2 Loop section This area allows the tests selected in the Tests section to run continuously. "Loop": When checked the selected tests will run continuously until manually stopped. When unchecked each selected test will run only once. This setting only has effect when Tests are running standalone from the Device Diagnostics Tab. "Stop on fail": Meaningful only if the "Loop" box is checked. If this box is also checked, then test execution will stop when an error is encountered. This is useful for having access to the LAN95xx at the point that an error occured. "# pass iterations": This non-editable field shows how many successful test runs have executed since the start of the current loop. "# fail iterations": This non-editable field shows how many test runs have produced at least one error since the start of the current loop. Note that if "Stop on fail" is checked then this number will never be greater than 1. 3.3.3 Link section "Restore link mode: When this checkbox is enabled, the link mode will be restored to what it was before the test started. This after tests" option does NOT work during autoburn. 3.3.4 Status information Detailed Status: A scrollable area which records all of the activity initiated from this tab in the current session. Note that this information is also written to the LAN95xxLogs.txt file for later review. Status Overview: A large, boldfaced text line showing the current/last state of diagnostic activity. When this tab is first entered the status is shown as IDLE. If a test is executing, the status is TESTING. If a test cycle has finished executing, the status will be PASSED or FAILED, depending on the most recent result. Connection Status: As in the Programmer Tab (3.2 above), this line will read "Connected" if the LAN95xx is connected and its driver properly loaded. Otherwise, it will read "Not connected." In this state the device will not function and testing should not be attempted. 3.3.5 Device Diagnostics Tab Actions There are two clickable buttons on this tab. "Start Test":Begins execution of a test run with the tests that have been selected. These tests will loop if the "Loop" box is checked, and will run continuously until the Stop button is pressed. If "Stop on fail" is checked then testing will also stop if any failure is encountered. If the "Loop" box is not checked, then each selected test will run once and the loop will end. "Stop": Stops test execution almost immediately. 3.4 Exiting LAN95xx Utility --------------------------- Clicking the Close box exits the application. 4. LAN95xxUtility fast production testing methodology and test coverage ======================================================================= 4.1 Test with EEPROM contents programmed and loaded vs. EEPROM contents programmed after tests only --------------------------------------------------------------------------------------------------- A driver in Windows identifies a device by it's serial number. When you plug a device with a different serial number than the ones Windows has seen before, Windows installs a new "adapter instance" for the driver. If the driver is WHQL certified this usually is done silent behind the scenes (and if there is a DHCP server available for IP address assignment it would be ready to work right after that), but if the driver is not certified (and the special driver used by the utility is purposely not certified) the user is prompted for files etc. So having Windows recognize each new serial number programmed and load a new instance of a driver causes two problems in a production environment: 1. Installation of a driver takes time (even if it was WHQL'ed and done automatic/silently would probably take an additional 15 seconds to each autoburn cycle) which definitely is not desired to waste during production. 2. A machine used for production will usually program thousands of NIC cards, which means it would soon have thousands of entries in the registry with risk of making the machine slow or even blow the max allowed registry size. While the latter could be prevented by uninstalling the driver for that instance after the tests finish that would again increase "assembly time per NIC" which is so critical for production. In order to avoid what we explained above, the utility will do it's best to test and program as much of the device as it can, but WITHOUT the new EEPROM contents (i.e. serial number) actually taking effect and making Windows install a new adapter instance. The caveat of this is that we are NOT really testing the device with it's final EEPROM contents effectively being used by the device. The production workflow assumption is that all devices are plugged to the EEPROM Contents Program host system with unprogrammed EEPROMs and they are all recognized as the same device by Windows. As soon as the plug in of an unprogrammed device occurs the utility performs the selected tests (out of ping, link tests) and if they pass programs the EEPROM (and then verifies it if selected). If there's no failure during tests or EEPROM verification the progress of the operation is that the utility instructs the operator to unplug that NIC (which has completed it's cycle) and plug the next one. To address the concern of the production line not testing each device using it's final EEPROM contents loaded, we suggest that a control sample be taken at random out of each batch (i.e.: 1 out of each 100; or 1 out of each 1000). This sample can be tested by plugging it in another PC, installing either the same utility driver and testing with the utility using the Diagnostics tab, or better even installing the production driver and performing some typical end user network activity with it. 4.2 Test time ------------- Performing all available tests takes about 9 seconds. This is because each autonegotiation cycle takes about 2 seconds and there are 4 link modes in the default settings (all tests enabled) that the utility ships with. Of course there's always a delicate balance between test time and coverage, but if the manufacturer is fine with lowering the test coverage he/she can disable some of the test options from the Device Diagnostics tab to reduce the test time. In particular some manufacturers may feel fine with either of these reduced test options: - Using EEPROM verify + Ping test: about 1 second per device - Using EEPROM verify + Ping test + 100FD Link test: about 3 seconds per device. 5. Examples =========== 5.1 Setting up an autoburn session: ----------------------------------- One time Setup: - In the EEPROM Contents Editor tab, edit the EEPROM contents per you requirements. At a minimum the current (i.e.: first) and max serial number and Mac addresses must be selected specifically for this session. - In the Device Diagnostics tab select which tests you would like the utility to run for each programming cycle. - In the EEPROM programmer tab check the Test Device box. Starting the auto burning operation - In the EEPROM programmer tab click the autoburn checkbox and then click "Yes" at the pop up. Running Loop (fully automatic, except for user plugging and unplugging devices) a- Utility performs tests you previously selected (except EEPROM verify). If tests fail, it stops the autoburn loop b- Utility programs the EEPROM of the current device c- If previously selected, the utility performs EEPROM verify. If the tests fails, it stops the autoburn loop. d- Utility asks you to remove the device (this device program / test cycle is completed) e- Utility asks you to plug in a new "empty EEPROM" device f- Running loop starts again from (a) Stopping the autoburning operation - Press cancel at the device plug or unplug prompts. 5.2 Setting up several assembly lines that share the ping partner ----------------------------------------------------------------- - Using un unprogrammed LAN95xx device, install the driver in each of the programming PCs as per section 1C above. - Make sure each PC's LAN95xx interface has a different IP address from all the other networks devices in that same subnet. - Assign each PC's LAN95xx unprogrammed device a different Mac address: + Open Device manager + Double click on the LAN95xx device to open it's properties + Click the Advanced tab + Select "Network Address" and assign a different one to each PC. Note that the lower two bits of the lower nibble of the first byte must be 10b (address is locally assigned, address is not multicast), such as: PC IP Addr Mac Addr 1st 192.168.1.1 02-00-00-00-00-01 2nd 192.168.1.2 02-00-00-00-00-02 3rd 192.168.1.3 02-00-00-00-00-03 ... nth 192.168.1.n 02-00-00-00-00-n Single ping partner: 192.168.1.100 6. Release History ================== v3.2.0.0 ----------- - Fixed pre burn test failures. - Source IP address (diagnostic view) was not showing for LAN9730 and 89530 devices. v3.1.9.0 ------------ - Allowing serial number increment to 0. v3.1.6.0 ------------ - Fixed bug: not able to program phy boost parameter. v3.1.5.0 ------------ - Added support for LAN9530/LAN9730/LAN89530 v3.1.4.0 ------------ - Added support for LAN9513 v3.1.3.0 ------------ - No user visible changes. v3.1.2.0 ------------ - No user visible changes. v3.1.0.0 ------------ - Fix bug 5485, allow utility to run in limited readonly mode with retail driver. v3.0.0.0 ------------ - Support added for LAN9500A - User interface redesigned to allow for display of settings specific to LAN9500A - Added informative popup dialogs to assist user in providing MAC address, serial number and PID/VID. - Diagnostic tab displays current IP address of SMSC LAN95xx device when an address has been assigned. v2.11.0.0 ------------ - Support added for LAN9512 and LAN9514 USB Hub with Integrated 10/100 Ethernet Controller - User interface redesigned to allow for display of hub applicable EEPROM contents v2.0.0.0 ------------ - Major rearchitecture overhaul. - Validation and consistency checking performed now also to binary file saving. - Added Save File alert when switching from edited Contents tab to Programmer tab. - Cosmetic changes to how error messages display. v1.11.0.0 ------------ - Added bcdDevice field to The EEPROM Contents Editor Tab (editable) and The EEPROM Programmer Tab (read-only). - Cosmetic changes to EEPROM Contents Editor Tab to allow Strings fields to be accessed via tabbing. - Cosmetic changes to EEPROM Programmer Tab and Diagnostics Tab: read only fields no longer accessible via tabbing. - Additional data verification: Vendor ID cannot be 0 (Contents Editor Tab), Destination IP must be a valid IP address (Diagnostics Tab). v1.10.8.1 ------------ - Modified GUI window sizes to accomodate smaller screen sizes. v1.10.8.0 --------- - Fixed a few cosmetic bugs, ini inconsistencies checks at startup, and improved tests reliability. v1.10.7.0 --------- - Implemented Diagnostics Tab. - Added support for diagnostics test to be run as part of autoburn or Write EEPROM procedures. - Several other cosmetic fixes/changes/improvements. - Fixed lack of "rolling over" protection or warning for MacAddress / Serial Number from 1.0.0.3. v1.0.0.3 -------- - Initial Release. 7. Status / Issues ================== - External loopback testing not currently supported.