Graeme Bray

Real World Automation and Deployment

Installing the SolarFlare Drivers and Software

leave a comment »

My company has recently purchased some SolarFlare 10GbE Network Adapters.  For the most part, these cards provide a basic install like most other utilities (Dell Drivers, VMWare Tools, McAfee, etc..)

I did run into a couple of caveats when installing the software.

  1. Do not extract the install package.
  2. The return code appears to be 18.  I’ve done one test and gotten a RC of 19.
  3. The install will force a reboot if not specified. (Include REBOOT=Suppress in your install line)

Caveat #1

The driver file to download is named: SF-107785-LS-4_Solarflare_Windows_x64_64-bit_Driver_Package.exe

Rename this file to setup.exe rather than extracting.  If you extract, you get the following error:

Image

Caveat #2

I added the following to my code: (iRetVal = 18) or (iRetVal = 19). This allowed the install to complete successfully.  I am following up with SolarFlare to find out why.  I will update with any response.

Note #1

I added a WQL query for my Group in MDT to only install this software if the HardWareID of PCI\VEN_1924% was in the system.  This will check WMI to see if the device is in the system.  This DeviceID is specific for the SolarFlare SFN6122F.

Query: SELECT * FROM Win32_PnPEntity WHERE DeviceID LIKE ‘PCI\\VEN_1924%’

Image

Note #2

I did not write the code to include any architecture checks as these cards are only going to run under a 64-bit OS.  If it is, you can add a If oEnvironment.Item(“Architecture”) = “X64” then section.

Recommendation #1

As a recommendation, when installing any software that touches the network stack (Broadcom BACS, SolarFlare, VMTools), copy these to a temp folder and install from there.  The software installs better when its local with less issues.

Now…the Code!

A basic flow of the code…

  • Set destination folder to C:\temp
  • Create folder if it doesn’t exist
  • Copy Source folder to C:\temp\Source
  • Run setup.exe to install all features (SolarFlare User Guide – Page 123 for the ADDLOCAL info)
  • Sleep for a few seconds, just in case the install hasn’t finished
  • Cleanup
  • Be sure to include a reboot step in your Task Sequence.
<job id="Install-SolarFlareSoftware">
<script language="VBScript" src="..\..\scripts\ZTIUtility.vbs"/>
<script language="VBScript"> 

'//----------------------------------------------------------------------------
'// Solution: Hydration
'// Purpose: Used to install the SolarFlare Drivers and Software
'// Usage: cscript Install-SolarFlareSoftware.wsf [/debug:true]
'// Version: 1.0 - 27 May 2011 - Mikael Nystrom
'//
'// This script is provided "AS IS" with no warranties, confers no rights and 
'// is not supported by the authors or Deployment Artist. 
'//
'//----------------------------------------------------------------------------

'//----------------------------------------------------------------------------
'// Global constant and variable declarations
'//---------------------------------------------------------------------------- 

Option Explicit 

Dim iRetVal 
Dim sApplicationName

'//----------------------------------------------------------------------------
'// End declarations
'//---------------------------------------------------------------------------- 

'//----------------------------------------------------------------------------
'// Main routine
'//---------------------------------------------------------------------------- 

On Error Resume Next
iRetVal = ZTIProcess
ProcessResults iRetVal
On Error Goto 0 

'//---------------------------------------------------------------------------
'//
'// Function: ZTIProcess()
'//
'// Input: None
'// 
'// Return: Success - 0
'// Failure - non-zero
'//
'// Purpose: Perform main ZTI processing
'// 
'//---------------------------------------------------------------------------
Function ZTIProcess() 
	Dim sSourceDir, sFile
	Dim sDestFolder

	sApplicationName = "SolarFlare Software"
	
	oLogging.CreateEntry "Install-" & sApplicationName & ": Starting " & sApplicationName & " installation", LogTypeInfo
	
	'//Set Destination Folder
	sDestFolder = "c:\temp\"
	
	'//Set Source Install Directory
	sSourceDir = oUtility.ScriptDir
	sSourceDir = sSourceDir & "\Source"
	
	'//Check that folder exists, if not, create it.
	oLogging.CreateEntry "Install-" & sApplicationName & ": Check that " & sDestFolder & " exists.", LogTypeInfo
	if not oFSO.FolderExists (sDestFolder) then
		oFSO.CreateFolder sDestFolder
	End If
	
	'//Copy folder from MDT share to C:\Temp
	oLogging.CreateEntry "Install-" & sApplicationName & ": Copy from  " & sSourceDir & " to " & sDestFolder, LogTypeInfo
	oFSO.CopyFolder sSourceDir, sDestFolder
	
	'//Sleep for 2 seconds to allow copy to finish
	wscript.sleep 2000
	
	sFile = sDestFolder & "Source\setup.exe"
	
	'// Check if file/folder exists
	If not oFSO.FileExists(sFile) then
		oLogging.CreateEntry "Install-" & sApplicationName & ": " & sFile & " was not found, unable to install " & sApplicationName & "", LogTypeError
		ZTIProcess = Failure
		Exit Function
	End if
		
	'// Create log entry to show file being run
	oLogging.CreateEntry "" & sFile & " /quiet /Install ADDLOCAL=CoreDrivers,OptimizeTCP,SNMP,NetworkAdapterManager,CommandLineTools,Launcher REBOOT=Suppress", LogTypeInfo
	
	iRetVal = oUtility.RunWithHeartbeat("" & sFile & " /quiet /Install ADDLOCAL=CoreDrivers,OptimizeTCP,SNMP,NetworkAdapterManager,CommandLineTools,Launcher REBOOT=Suppress")
	
	if (iRetVal = 0) or (iRetVal = 3010) or (iRetVal = 18) or (iRetVal = 19) then
		ZTIProcess = Success 
	Else 
		ZTIProcess = Failure
	End If
	
	wscript.sleep 2000
	
	'// Disable Zone Checks
	oEnv("SEE_MASK_NOZONECHECKS") = 1 

	'//Folder Cleanup
	oFSO.DeleteFolder sDestFolder & "Source"
	
	oLogging.CreateEntry "Install-" & sApplicationName & ": Return code from command = " & iRetVal, LogTypeInfo
	oLogging.CreateEntry "Install-" & sApplicationName & ": Finished " & sApplicationName & " installation", LogTypeInfo
	
End Function 

</script>
</job>

I’ll try to update the post to show the code better, but you get the gist of it.

As always, thanks to Johan (http://www.deploymentresearch.com) and Mikael (http://www.deploymentbunny.com) for providing the base VBScript to edit.

Helpful Links: Microsoft WMI Code Creator

Advertisements

Written by Graeme

March 23, 2014 at 5:33 AM

Posted in MDT

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: