In the past we have had an issue with a bad batch of SFP’s in our Windows servers. The issue occurs randomly after a couple months in production.
The answer from HP about the bad SFP’s:
“The problem is due to the Manufacturing anomaly which has been corrected now .This issue causes early life degradation of Transmit (Tx) Power, causing the affected device to fail between 6-months and 1-year from first operation, depending on operational use. Affected SFP+ Short Wave Transceivers that begin to fail, first exhibit symptoms typical to Tx power degradation followed within weeks by symptoms typical to Tx power failure.”
They could not provide us more information about the affected serial / product numbers. Only way to check those SFPs is reading the operational status with a small tool.
Tool name: qaucli.exe
Which can downloaded from: Click here
Run the .exe to get the tool installed.
1 2 3 4 5 6 7 |
cd "C:\Program Files\QLogic Corporation\QConvergeConsoleCLI" #To get the hba_instance_number, run: qaucli -pr fc -g #Then run this command for the status report qaucli -pr fc -dm <hba_instance_number> gen |
Check the Status. If the status not match “normal”, replace the SFP.
I automated the checks with a little not so fancy (I know) script.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
$cred = get-credential $vmhosts = get-scvmhost $finalreport = @() foreach($ahost in $vmhosts){ $session = New-PSSession -ComputerName $ahost.name -Credential $cred -Verbose $data = invoke-command -Session $session -ScriptBlock { Start-Process -NoNewWindow -FilePath "C:\Program Files\QLogic Corporation\QConvergeConsoleCLI\qaucli.exe" -ArgumentList "-pr fc -g" -RedirectStandardOutput "c:\output.txt" Start-sleep 10 $a = get-content "c:\output.txt" $b = $a | where{$_ -match "Online"} $Data = @() $Data += $env:computername Foreach($c in $b){ $HBA = $c.split(" ")[11].trimend(")") Start-Process -NoNewWindow -FilePath "C:\Program Files\QLogic Corporation\QConvergeConsoleCLI\qaucli.exe" -ArgumentList "-pr fc -dm $HBA gen" -RedirectStandardOutput "c:\status.txt" start-sleep 5 $z = get-content c:\status.txt $e = $z | where{$_ -match "status"} $data += $e $data } } Remove-PSSession $session $Finalreport += $data } $finalreport |
NOTE: Only tested with QLOGIC adapters. Don’t know if this also work for the Emulex ones.
For Emulex refer this: For Emulex adapters use the Emulex® OneCommand® Manager Application to view the transceivers, their status and TX power level on the PortAttribute screen.