Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    EMMC on 2440 - Smart Status UNKNOWN in widget

    Scheduled Pinned Locked Moved Hardware
    5 Posts 2 Posters 2.4k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • luckman212L
      luckman212 LAYER 8
      last edited by

      I installed an mSATA SSD in my 2440 and installed pfsense225 on it.  When I added the "SMART Status" dashboard widget, it looks like this

      The da0 device is the internal 4gb eMMC disk.  When I looked at the widget code, it looks like it runs smartctl -H /dev/da0 which doesn't work on this device.  It needs to be smartctl -d scsi -H /dev/da0

      e.g. when you run smartctl -H /dev/da0 you get

      /dev/da0: Unknown USB bridge [0x0424:0x2240 (0x198)]
      Please specify device type with the -d option.
      
      

      but If I add "-d scsi" it works

      smartctl -d scsi -H /dev/da0
      === START OF READ SMART DATA SECTION ===
      SMART Health Status: OK
      
      

      Is there any way to make the widget run the proper commands for the "scsi" device to show its proper status? or just ignore it?

      1 Reply Last reply Reply Quote 0
      • D
        doktornotor Banned
        last edited by

        This patch will let you hide it from the widget:

        
        ---
        --- a/usr/local/www/widgets/widgets/smart_status.widget.php
        +++ b/usr/local/www/widgets/widgets/smart_status.widget.php
        @@ -32,7 +32,21 @@
         require_once("pfsense-utils.inc");
         require_once("functions.inc");
         require_once("/usr/local/www/widgets/include/smart_status.inc");
        +
        +if (isset($_POST['smartstatusfilter'])) {
        +	$config['widgets']['smartstatusfilter'] = htmlspecialchars($_POST['smartstatusfilter'], ENT_QUOTES | ENT_HTML401);
        +	write_config("Saved SMART Status Filter via Dashboard");
        +	header("Location: ../../index.php");
        +}
         ?>
        +
        +
        +	
        
        <form action="/widgets/widgets/smart_status.widget.php" method="post" name="iformd">
        +		Comma separated list of drives to NOT display in the widget
        
        +		
        +		
        +	</form>
        
        +
        
        @@ -42,35 +56,50 @@
        
        -$devs = array();
        -## Get all adX, daX, and adaX (IDE, SCSI, and AHCI) devices currently installed
        +/* Get all adX, daX, and adaX (IDE, SCSI, and AHCI) devices currently installed */
         $devs = get_smart_drive_list();
        +/* Get list of drives to hide from the widget */
        +$skipdrives = array();
        +$skipdrives = explode(",", $config['widgets']['smartstatusfilter']);
        
        -if(count($devs) > 0)  {
        -	foreach($devs as $dev)  {	## for each found drive do
        -		$dev_ident = exec("diskinfo -v /dev/$dev | grep ident   | awk '{print $1}'"); ## get identifier from drive
        -		$dev_state = trim(exec("smartctl -H /dev/$dev | awk -F: '/^SMART overall-health self-assessment test result/ {print $2;exit}
        -/^SMART Health Status/ {print $2;exit}'")); ## get SMART state from drive
        -		switch ($dev_state) {
        -		case "PASSED":
        -		case "OK":
        -			$color = "#90EE90";
        -			break;
        -		case "":
        -			$dev_state = "Unknown";
        -			$color = "#C0B788";
        -			break;
        -		default:
        -			$color = "#F08080";
        -			break;
        -		}
        +if (count($devs) > 0)  {
        +	// For each found drive ...
        +	foreach($devs as $dev)  {
        +		// unless configured to be hidden ...
        +		if ((!in_array($dev, $skipdrives))) {
        +			$dev_ident = exec("diskinfo -v /dev/$dev | grep ident   | awk '{print $1}'"); // get identifier from drive
        +			$dev_state = trim(exec("smartctl -H /dev/$dev | awk -F: '/^SMART overall-health self-assessment test result/ {print $2;exit}
        +/^SMART Health Status/ {print $2;exit}'")); // get SMART state from drive
        +			switch ($dev_state) {
        +				case "PASSED":
        +				case "OK":
        +					$color = "#90EE90";
        +					break;
        +				case "":
        +					$dev_state = "Unknown";
        +					$color = "#C0B788";
        +					break;
        +				default:
        +					$color = "#F08080";
        +					break;
        +			}
         ?>
        -		
        -			
        -			
        -			
        -		
        -+			
        +				
        +				
        +				
        +			
        ++	}
         }
         ?>
        
        |  |  |    |
        |  |  |    | 
        
        +
        +
        +
        
        

        (No, I don't have any patch to add -d scsi.)

        1 Reply Last reply Reply Quote 0
        • luckman212L
          luckman212 LAYER 8
          last edited by

          Doktor - thank you, nice patch!  Looks just like the Services Status widget which has a similar filter. Are you able to merge that code with the mainline? (I'm old - when I manually patch things I always forget about it and wind up breaking things during upgrades etc.)

          1 Reply Last reply Reply Quote 0
          • D
            doktornotor Banned
            last edited by

            @luckman212:

            Are you able to merge that code with the mainline?

            You can use this URL with System Patches package for 2.2.x:

            https://github.com/doktornotor/pfsense/commit/119d9703ba232ecf97d9e58c742ceee9e376c57d.patch

            (There's PR 1841 for 2.2.x, never been merged. I don't have a patch for 2.3 snapshots yet.)

            1 Reply Last reply Reply Quote 0
            • luckman212L
              luckman212 LAYER 8
              last edited by

              Awesome!  thanks again, works a treat

              1 Reply Last reply Reply Quote 0
              • First post
                Last post
              Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.