HarlemSquirrel / gnome-shell-extension-sensory-perception

Displays CPU/GPU/mobo/disk temperatures, voltages and fan speeds
https://extensions.gnome.org/extension/1145/sensory-perception/
GNU General Public License v3.0
27 stars 11 forks source link

Sensory Perception extension reports the wrong temperature parameter for some SSDs #26

Open paulgir opened 4 years ago

paulgir commented 4 years ago

Recently I rebuilt my computer with a new motherboard and a M.2 format system drive. Sensory Perception was reporting the drive temperature as 100 ℃ but in CLI hddtemp was showing 33 ℃ and measuring the actual drive with an IR thermometer agrees with 33 ℃. I have found out why this is. Looking at S.M.A.R.T. data,there are two temperature attributes: Attribute ID 194 Temperature which shows 33 ℃ and Attribute ID 231 which is Temperature for HDDs or Life Left for SSDs 100 - equates to a new drive. So ,in my case Sensory Perception is reporting the Life Left value as Temperature. This page shows the S.M.A.R.T. data information:https://en.wikipedia.org/wiki/S.M.A.R.T.#Known_ATA_S.M.A.R.T._attributes

The SSD is a KINGSTON SA400M8120G Motherboard is: Asus Prime B-450M-A CPU: AMD® Ryzen 5 2600 six-core processor × 12 Desktop: Ubuntu 19.10 Screenshot from 2020-04-14 16-01-31

HarlemSquirrel commented 4 years ago

I see two temperature readings of 29 and 99 in the screenshot. The summary section of the disk utility shows the much higher 99 degrees and must be what this extension is reading.

Could you also share the terminal output of the hddtemp command?

paulgir commented 4 years ago

~$ sudo hddtemp /dev/sdc /dev/sdc: KINGSTON SA400M8120G: 26°C

The disk utility does show the correct value for attribute 194 (26℃ today) Maybe this is a bug in the Gnome Disk utility app.

According to the SMART data wikipedia page I linked to, the attribute that reads 99 is temperature on HDDs but Life Left on SSDs . A new SSD reads a value of 100 for this attribute and it decreases with time down to a value of 0 for an SSD at the end of it's expected life:

"Attribute 231 0xE7 - Life Left (SSDs) or Temperature - Indicates the approximate SSD life left, in terms of program/erase cycles or available reserved blocks. A normalized value of 100 represents a new drive, with a threshold value at 10 indicating a need for replacement. A value of 0 may mean that the drive is operating in read-only mode to allow data recovery. Previously (pre-2010) occasionally used for Drive Temperature (more typically reported at 0xC2)."

This agrees with the reported temperatures of sda and sdb. (26 ℃ & 27 ℃) I might add that before I upgraded the computer, I had a 2.5" SSD as the system disk and Sensory Perception reported that temperature correctly.

HarlemSquirrel commented 4 years ago

Interesting. It's good to see that hddtemp reports the correct temperature but that requires sudo. We'll have to see if there's a better way to get this data.

HarlemSquirrel commented 4 years ago

So when hddtemp cannot but run as the current user, we try to get the temperature from the hddtemp service which defaults to port 7634 and can be seen with netcat like

➤  nc localhost 7634
|/dev/sda|ADATA SU800NS38|40|C|

@paulgir do you get something like this?

paulgir commented 4 years ago

I'm not familiar with netcat. If I run nc localhost 7634 I get no output

paulgir commented 4 years ago

Ok, I did a little googling. I ran: ps -eo 'tty,pid,comm' | grep ^? to see if hddtemp is running as a daemon and it appears it isn't. I ran: hddtemp -d /dev/sdc then: nc localhost 7634 and I get |/dev/sdc|???|ERR|*|

Out of curiosity I installed the Psensor application I used when Ubuntu used the Unity DE. It is reporting the same 100°C value as Sensory Perception is for /dev/sdc

I'm knocking off for today. I'll be back on in 14 hours if you have any other requests.

HarlemSquirrel commented 4 years ago

How about if you start the daemon with sudo systemctl start hddtemp

paulgir commented 4 years ago

No output from nc localhost 7634 if I start the daemon with sudo systemctl start hddtemp

wildart commented 3 years ago

Have the same problem, Patriot Burst SSD reports 100C, but according to hddtemp service, it's 33C.

sp

nc localhost 7634 returns

|/dev/sda|WDC WD60EZRZ-00GZ5B1|29|C||/dev/sdb|ST3250310AS|33|C||/dev/sdc|Patriot Burst|33|C|

Interestingly, that smartctl reports attribute 194 - Temperature_Celsius correctly 33.

$ sudo smartctl --attributes /dev/sdc                                                                                                                
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-48-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   050    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0012   100   100   000    Old_age   Always       -       2059
 12 Power_Cycle_Count       0x0012   100   100   000    Old_age   Always       -       247
168 SATA_Phy_Error_Count    0x0012   100   100   000    Old_age   Always       -       0
170 Bad_Blk_Ct_Erl/Lat      0x0003   100   100   010    Pre-fail  Always       -       0/62
173 MaxAvgErase_Ct          0x0012   100   100   000    Old_age   Always       -       20 (Average 7)
192 Unsafe_Shutdown_Count   0x0012   100   100   000    Old_age   Always       -       14
194 Temperature_Celsius     0x0023   067   067   000    Pre-fail  Always       -       33 (Min/Max 33/33)
218 CRC_Error_Count         0x000b   100   100   050    Pre-fail  Always       -       0
231 SSD_Life_Left           0x0013   100   100   000    Pre-fail  Always       -       99
241 Lifetime_Writes_GiB     0x0012   100   100   000    Old_age   Always       -       1128

However, another attribute 231 - SSD_Life_Left, in gnome-disks, is reported as Temperature parameter.

sp2

Running Ubuntu 20.04 with GNOME 3.36.

paulgir commented 3 years ago

Have the same problem, Patriot Burst SSD reports 100C, but according to hddtemp service, it's 33C.

sp

nc localhost 7634 returns

|/dev/sda|WDC WD60EZRZ-00GZ5B1|29|C||/dev/sdb|ST3250310AS|33|C||/dev/sdc|Patriot Burst|33|C|

Interestingly, that smartctl reports attribute 194 - Temperature_Celsius correctly 33.

$ sudo smartctl --attributes /dev/sdc                                                                                                                
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-48-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   050    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0012   100   100   000    Old_age   Always       -       2059
 12 Power_Cycle_Count       0x0012   100   100   000    Old_age   Always       -       247
168 SATA_Phy_Error_Count    0x0012   100   100   000    Old_age   Always       -       0
170 Bad_Blk_Ct_Erl/Lat      0x0003   100   100   010    Pre-fail  Always       -       0/62
173 MaxAvgErase_Ct          0x0012   100   100   000    Old_age   Always       -       20 (Average 7)
192 Unsafe_Shutdown_Count   0x0012   100   100   000    Old_age   Always       -       14
194 Temperature_Celsius     0x0023   067   067   000    Pre-fail  Always       -       33 (Min/Max 33/33)
218 CRC_Error_Count         0x000b   100   100   050    Pre-fail  Always       -       0
231 SSD_Life_Left           0x0013   100   100   000    Pre-fail  Always       -       99
241 Lifetime_Writes_GiB     0x0012   100   100   000    Old_age   Always       -       1128

However, another attribute 231 - SSD_Life_Left, in gnome-disks, is reported as Temperature parameter.

sp2

Running Ubuntu 20.04 with GNOME 3.36.

Is this an M.2 format SSD? I built a computer for a friend with the same mobo but a 3.5" bay mounted SSD and that one displayed the temp correctly in the extension.

wildart commented 3 years ago

It's SATA disk.

antoniovazquezblanco commented 4 months ago

This has been fixed in an independent fork of the original lib that it is not currently recognized as official upstream by maintainers at https://github.com/libatasmart/libatasmart.