diff --git a/hwmonDaemon.py b/hwmonDaemon.py index d480fda..ff7de38 100644 --- a/hwmonDaemon.py +++ b/hwmonDaemon.py @@ -1350,17 +1350,30 @@ class SystemHealthMonitor: # Only report issues for drives with valid SMART status if drive.get('smart_issues') and drive.get('smart_status') in ['HEALTHY', 'UNHEALTHY', 'UNKNOWN']: - # Filter out generic error messages that don't indicate real hardware issues + # Filter out generic error messages and manufacturer-specific false positives filtered_issues = [] for issue in drive['smart_issues']: - if not any(skip_phrase in issue for skip_phrase in [ + # Skip generic errors + if any(skip_phrase in issue for skip_phrase in [ "Error checking SMART:", "Unable to read device information", "SMART not supported", "timed out" ]): - filtered_issues.append(issue) - + continue + + # Skip manufacturer-specific operation counters (not actual errors) + # These are monitored attributes that manufacturers use as counters + if any(counter_name in issue for counter_name in [ + "Seek_Error_Rate", # Seagate/WD use as operation counter + "Command_Timeout", # OOS/Seagate use as operation counter + "Raw_Read_Error_Rate" # Seagate/WD use as operation counter + ]): + logger.debug(f"Filtering manufacturer operation counter from issues: {issue}") + continue + + filtered_issues.append(issue) + if filtered_issues: issues.append(f"Drive {drive['device']} has SMART issues: {', '.join(filtered_issues)}")