[GH-ISSUE #65] Conversion metrics for SSD #13

Closed
opened 2026-03-07 19:22:13 +03:00 by kerem · 7 comments
Owner

Originally created by @pierretrn on GitHub (Feb 25, 2026).
Original GitHub issue: https://github.com/007revad/Synology_SMART_info/issues/65

Hello Dave,

I've noticed a potential bug in the NVMe reporting section for my Micron 2400 (MTFDKBK512QFM) NVMe SSD. The script reports very low values for data units read and written (MB), which seems inconsistent with the drive's wear level.

My Output:

M.2 Drive 1 Micron_2400_MTFDKBK512*** **************C /dev/nvme0n1
SMART Error Counter Log: No Errors Logged

critical_warning : 0
temperature : 26 C
available_spare : 100%
available_spare_threshold : 5%
percentage_used : 3%
data_units_read : 16,834,602 (17MB)
data_units_written : 17,580,652 (18MB)

With 3% usage over 1,197 hours, the data written should be in the range of several Terabytes (TB), not Megabytes (MB).

It seems the raw SMART value for data_units_read/written on this controller (and possibly others) represents 512-byte blocks or another unit that leads to an underestimation when the script calculates the "(XX MB)" suffix.

Thanks
Pierre

Note : Is there a way to re enable by script the smart info data in dsm that has been removed? I know there is a script to enable Ironwolf Health

Originally created by @pierretrn on GitHub (Feb 25, 2026). Original GitHub issue: https://github.com/007revad/Synology_SMART_info/issues/65 Hello Dave, I've noticed a potential bug in the NVMe reporting section for my Micron 2400 (MTFDKBK512QFM) NVMe SSD. The script reports very low values for data units read and written (MB), which seems inconsistent with the drive's wear level. My Output: M.2 Drive 1 Micron_2400_MTFDKBK512*** **************C /dev/nvme0n1 SMART Error Counter Log: No Errors Logged critical_warning : 0 temperature : 26 C available_spare : 100% available_spare_threshold : 5% percentage_used : 3% data_units_read : 16,834,602 **(17MB)** data_units_written : 17,580,652 **(18MB)** With 3% usage over 1,197 hours, the data written should be in the range of several Terabytes (TB), not Megabytes (MB). It seems the raw SMART value for data_units_read/written on this controller (and possibly others) represents 512-byte blocks or another unit that leads to an underestimation when the script calculates the "(XX MB)" suffix. Thanks Pierre Note : Is there a way to re enable by script the smart info data in dsm that has been removed? I know there is a script to enable Ironwolf Health
kerem closed this issue 2026-03-07 19:22:13 +03:00
Author
Owner

@007revad commented on GitHub (Feb 25, 2026):

Which version of the script did you run?

I assume you ran the script with -a or -all? If yes then that is the raw (unedited) output from:

  • The smartctl7 command if you have SynoCli Disk Tools from SynoCommunity installed.
  • The nvme command if you do not have SynoCli Disk Tools from SynoCommunity installed.

The script uses the following smartctl7 or nvme commands. Do they both show the wrong "data_units_read/written"?

  • sudo smartctl7 -A /dev/nvme0 | awk '/Health Information/{flag=1;next}flag'
  • sudo nvme smart-log /dev/nvme0 | awk '/Smart Log for NVME/{flag=1;next}flag'

My WD Black nvme drives show the correct TB value.

syno_smart_info result

M.2 Drive 1-1 (E10M20-T1)  WD_BLACK SN770 500GB  2xxxxxxxxxx2  /dev/nvme0n1
SMART overall-health self-assessment test result: PASSED
SMART Error Counter Log:         No Errors Logged
Critical Warning:                   0x00
Temperature:                        48 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    0%
Data Units Read:                    13,407,347 [6.86 TB]
Data Units Written:                 13,866,043 [7.09 TB]
Host Read Commands:                 649,924,249
Host Write Commands:                211,988,180
Controller Busy Time:               310
Power Cycles:                       80
Power On Hours:                     23,282

smartctl7 command result

root@DISKSTATION:~# smartctl7 -A /dev/nvme0 | awk '/Health Information/{flag=1;next}flag'
Critical Warning:                   0x00
Temperature:                        48 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    0%
Data Units Read:                    13,407,347 [6.86 TB]
Data Units Written:                 13,866,043 [7.09 TB]
Host Read Commands:                 649,924,249
Host Write Commands:                211,988,180
Controller Busy Time:               310
Power Cycles:                       80
Power On Hours:                     23,282

nvme command result

root@DISKSTATION:~# nvme smart-log /dev/nvme0 | awk '/Smart Log for NVME/{flag=1;next}flag'
critical_warning                    : 0
temperature                         : 48 C
available_spare                     : 100%
available_spare_threshold           : 10%
percentage_used                     : 0%
data_units_read                     : 13,407,347
data_units_written                  : 13,866,043
host_read_commands                  : 649,924,249
host_write_commands                 : 211,988,180
controller_busy_time                : 310
power_cycles                        : 80
power_on_hours                      : 23,282
<!-- gh-comment-id:3961571358 --> @007revad commented on GitHub (Feb 25, 2026): Which version of the script did you run? I assume you ran the script with `-a` or `-all`? If yes then that is the raw (unedited) output from: - The smartctl7 command if you have SynoCli Disk Tools from SynoCommunity installed. - The nvme command if you do not have SynoCli Disk Tools from SynoCommunity installed. The script uses the following smartctl7 or nvme commands. Do they both show the wrong "data_units_read/written"? - `sudo smartctl7 -A /dev/nvme0 | awk '/Health Information/{flag=1;next}flag'` - `sudo nvme smart-log /dev/nvme0 | awk '/Smart Log for NVME/{flag=1;next}flag'` My WD Black nvme drives show the correct TB value. **syno_smart_info result** ``` M.2 Drive 1-1 (E10M20-T1) WD_BLACK SN770 500GB 2xxxxxxxxxx2 /dev/nvme0n1 SMART overall-health self-assessment test result: PASSED SMART Error Counter Log: No Errors Logged Critical Warning: 0x00 Temperature: 48 Celsius Available Spare: 100% Available Spare Threshold: 10% Percentage Used: 0% Data Units Read: 13,407,347 [6.86 TB] Data Units Written: 13,866,043 [7.09 TB] Host Read Commands: 649,924,249 Host Write Commands: 211,988,180 Controller Busy Time: 310 Power Cycles: 80 Power On Hours: 23,282 ``` **smartctl7 command result** ``` root@DISKSTATION:~# smartctl7 -A /dev/nvme0 | awk '/Health Information/{flag=1;next}flag' Critical Warning: 0x00 Temperature: 48 Celsius Available Spare: 100% Available Spare Threshold: 10% Percentage Used: 0% Data Units Read: 13,407,347 [6.86 TB] Data Units Written: 13,866,043 [7.09 TB] Host Read Commands: 649,924,249 Host Write Commands: 211,988,180 Controller Busy Time: 310 Power Cycles: 80 Power On Hours: 23,282 ``` **nvme command result** ``` root@DISKSTATION:~# nvme smart-log /dev/nvme0 | awk '/Smart Log for NVME/{flag=1;next}flag' critical_warning : 0 temperature : 48 C available_spare : 100% available_spare_threshold : 10% percentage_used : 0% data_units_read : 13,407,347 data_units_written : 13,866,043 host_read_commands : 649,924,249 host_write_commands : 211,988,180 controller_busy_time : 310 power_cycles : 80 power_on_hours : 23,282 ```
Author
Owner

@007revad commented on GitHub (Feb 25, 2026):

I do have a Micron NVMe in my DS925+ and it correctly shows GB

syno_smart_info result

M.2 Drive 1  CT500P3PSSD8  2xxxxxxxxxx2  /dev/nvme0n1
SMART overall-health self-assessment test result: PASSED
SMART Error Counter Log:         No Errors Logged

Critical Warning:                   0x00
Temperature:                        30 Celsius
Available Spare:                    100%
Available Spare Threshold:          5%
Percentage Used:                    0%
Data Units Read:                    66,556 [34.0 GB]
Data Units Written:                 512,267 [262 GB]
Host Read Commands:                 362,920
Host Write Commands:                6,034,642
Controller Busy Time:               1
Power Cycles:                       17
Power On Hours:                     6,209

smartctl7 command result

root@DS925plus:~# smartctl7 -A /dev/nvme0 | awk '/Health Information/{flag=1;next}flag'
Critical Warning:                   0x00
Temperature:                        30 Celsius
Available Spare:                    100%
Available Spare Threshold:          5%
Percentage Used:                    0%
Data Units Read:                    66,556 [34.0 GB]
Data Units Written:                 512,267 [262 GB]
Host Read Commands:                 362,920
Host Write Commands:                6,034,642
Controller Busy Time:               1
Power Cycles:                       17
Power On Hours:                     6,209

nvme command result

root@DS925plus:~#  nvme smart-log /dev/nvme0 | awk '/Smart Log for NVME/{flag=1;next}flag'
critical_warning                    : 0
temperature                         : 30 C
available_spare                     : 100%
available_spare_threshold           : 5%
percentage_used                     : 0%
data_units_read                     : 66,556
data_units_written                  : 512,267
host_read_commands                  : 362,920
host_write_commands                 : 6,034,642
controller_busy_time                : 1
power_cycles                        : 17
power_on_hours                      : 6,210
<!-- gh-comment-id:3961605179 --> @007revad commented on GitHub (Feb 25, 2026): I do have a Micron NVMe in my DS925+ and it correctly shows GB **syno_smart_info result** ``` M.2 Drive 1 CT500P3PSSD8 2xxxxxxxxxx2 /dev/nvme0n1 SMART overall-health self-assessment test result: PASSED SMART Error Counter Log: No Errors Logged Critical Warning: 0x00 Temperature: 30 Celsius Available Spare: 100% Available Spare Threshold: 5% Percentage Used: 0% Data Units Read: 66,556 [34.0 GB] Data Units Written: 512,267 [262 GB] Host Read Commands: 362,920 Host Write Commands: 6,034,642 Controller Busy Time: 1 Power Cycles: 17 Power On Hours: 6,209 ``` **smartctl7 command result** ``` root@DS925plus:~# smartctl7 -A /dev/nvme0 | awk '/Health Information/{flag=1;next}flag' Critical Warning: 0x00 Temperature: 30 Celsius Available Spare: 100% Available Spare Threshold: 5% Percentage Used: 0% Data Units Read: 66,556 [34.0 GB] Data Units Written: 512,267 [262 GB] Host Read Commands: 362,920 Host Write Commands: 6,034,642 Controller Busy Time: 1 Power Cycles: 17 Power On Hours: 6,209 ``` **nvme command result** ``` root@DS925plus:~# nvme smart-log /dev/nvme0 | awk '/Smart Log for NVME/{flag=1;next}flag' critical_warning : 0 temperature : 30 C available_spare : 100% available_spare_threshold : 5% percentage_used : 0% data_units_read : 66,556 data_units_written : 512,267 host_read_commands : 362,920 host_write_commands : 6,034,642 controller_busy_time : 1 power_cycles : 17 power_on_hours : 6,210 ```
Author
Owner

@007revad commented on GitHub (Feb 25, 2026):

Another thought, since you appear to have SynoCli Disk Tools installed which version is it?

sudo smartctl7 --version | head -1
synopkg version synocli-disk

For me it's

root@DS925plus:~# smartctl7 --version | head -1
smartctl 7.5 2025-04-30 r5714 [x86_64-linux-5.10.55+] (local build)

root@DS925plus:~# synopkg version synocli-disk
4.1-16
<!-- gh-comment-id:3961625920 --> @007revad commented on GitHub (Feb 25, 2026): Another thought, since you appear to have SynoCli Disk Tools installed which version is it? ``` sudo smartctl7 --version | head -1 synopkg version synocli-disk ``` For me it's ``` root@DS925plus:~# smartctl7 --version | head -1 smartctl 7.5 2025-04-30 r5714 [x86_64-linux-5.10.55+] (local build) root@DS925plus:~# synopkg version synocli-disk 4.1-16 ```
Author
Owner

@pierretrn commented on GitHub (Feb 25, 2026):

Another thought, since you appear to have SynoCli Disk Tools installed which version is it?

sudo smartctl7 --version | head -1
synopkg version synocli-disk

For me it's

root@DS925plus:~# smartctl7 --version | head -1
smartctl 7.5 2025-04-30 r5714 [x86_64-linux-5.10.55+] (local build)

root@DS925plus:~# synopkg version synocli-disk
4.1-16

Thx for the quick response, and good guess, SynoCki Disk tools was not installed !
I just installed SynoCli Disk Tools from the package manager and it is all good now, thanks.

Last question, there is no way to enable the smart info in DSM after Synology decided to remove it ?


M.2 Drive 1  Micron_2400_MTFDKBK512QFM  ************** /dev/nvme0n1
SMART overall-health self-assessment test result: PASSED
SMART Error Counter Log:         No Errors Logged

Critical Warning:                   0x00
Temperature:                        26 Celsius
Available Spare:                    100%
Available Spare Threshold:          5%
Percentage Used:                    3%
Data Units Read:                    16,837,116 [8.62 TB]
Data Units Written:                 17,600,775 [9.01 TB]
Host Read Commands:                 168,382,754
Host Write Commands:                346,325,460
Controller Busy Time:               4,814
Power Cycles:                       172
Power On Hours:                     1,199
Unsafe Shutdowns:                   41
Media and Data Integrity Errors:    0
Error Information Log Entries:      2
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               26 Celsius
Thermal Temp. 1 Transition Count:   2
Thermal Temp. 1 Total Time:         43

<!-- gh-comment-id:3961657668 --> @pierretrn commented on GitHub (Feb 25, 2026): > Another thought, since you appear to have SynoCli Disk Tools installed which version is it? > > ``` > sudo smartctl7 --version | head -1 > synopkg version synocli-disk > ``` > > For me it's > > ``` > root@DS925plus:~# smartctl7 --version | head -1 > smartctl 7.5 2025-04-30 r5714 [x86_64-linux-5.10.55+] (local build) > > root@DS925plus:~# synopkg version synocli-disk > 4.1-16 > ``` Thx for the quick response, and good guess, SynoCki Disk tools was not installed ! I just installed SynoCli Disk Tools from the package manager and it is all good now, thanks. Last question, there is no way to enable the smart info in DSM after Synology decided to remove it ? ``` M.2 Drive 1 Micron_2400_MTFDKBK512QFM ************** /dev/nvme0n1 SMART overall-health self-assessment test result: PASSED SMART Error Counter Log: No Errors Logged Critical Warning: 0x00 Temperature: 26 Celsius Available Spare: 100% Available Spare Threshold: 5% Percentage Used: 3% Data Units Read: 16,837,116 [8.62 TB] Data Units Written: 17,600,775 [9.01 TB] Host Read Commands: 168,382,754 Host Write Commands: 346,325,460 Controller Busy Time: 4,814 Power Cycles: 172 Power On Hours: 1,199 Unsafe Shutdowns: 41 Media and Data Integrity Errors: 0 Error Information Log Entries: 2 Warning Comp. Temperature Time: 0 Critical Comp. Temperature Time: 0 Temperature Sensor 1: 26 Celsius Thermal Temp. 1 Transition Count: 2 Thermal Temp. 1 Total Time: 43 ```
Author
Owner

@007revad commented on GitHub (Feb 25, 2026):

Which version of the script are you using? Maybe in an older version for the nvme command it was calculating (incorrectly) the data_units_read/written before I discovered that smartcl7 can do it.

Last question, there is no way to enable the smart info in DSM after Synology decided to remove it ?

I tried to re-enable the SMART Info in storage manager but DSM no longer keeps a database/log of SMART values. Though it must do so for Synology brand drives.

PeterSuh-Q3 has created a Synology package that uses this syno_smart_info script and shows the results in a nice web gui.
https://github.com/PeterSuh-Q3/SynoSmartInfo

<!-- gh-comment-id:3961727800 --> @007revad commented on GitHub (Feb 25, 2026): Which version of the script are you using? Maybe in an older version for the nvme command it was calculating (incorrectly) the data_units_read/written before I discovered that smartcl7 can do it. > Last question, there is no way to enable the smart info in DSM after Synology decided to remove it ? I tried to re-enable the SMART Info in storage manager but DSM no longer keeps a database/log of SMART values. Though it must do so for Synology brand drives. PeterSuh-Q3 has created a Synology package that uses this syno_smart_info script and shows the results in a nice web gui. https://github.com/PeterSuh-Q3/SynoSmartInfo
Author
Owner

@pierretrn commented on GitHub (Feb 25, 2026):

I m using the latest version (v1.4.38). It seems that since smartctl7 was missing, the script probably fell back to the native nvme command, which likely caused the unit conversion issue.

Thanks for the recommendation on the Syno package! I will definitely use it as a workaround; it's really useful for providing proof of drive health if I ever decide to sell a HDD.

<!-- gh-comment-id:3961753432 --> @pierretrn commented on GitHub (Feb 25, 2026): I m using the latest version (v1.4.38). It seems that since smartctl7 was missing, the script probably fell back to the native nvme command, which likely caused the unit conversion issue. Thanks for the recommendation on the Syno package! I will definitely use it as a workaround; it's really useful for providing proof of drive health if I ever decide to sell a HDD.
Author
Owner

@007revad commented on GitHub (Feb 25, 2026):

You're, right. I see that even the latest version of the script does (incorrectly) calculate the units for data_units_read/written when smartctl7 is not installed and the -a or --all option is not used.

                # smartctl7 not installed
                if echo "$strIn" | grep 'data_units_' >/dev/null; then
                    # Get data_units read or written
                    units="$(echo "$strIn" | awk '{print $3}')"
                    # Remove commas and convert to TB/GB/MB
                    units_show="$(echo "${units//,}" | numfmt --to=si --suffix=B)"
                    # Show data_units read or written
                    if [[ $increased != "yes" ]]; then
                        echo "$strIn  ($units_show)"
                    fi
<!-- gh-comment-id:3961799235 --> @007revad commented on GitHub (Feb 25, 2026): You're, right. I see that even the latest version of the script does (incorrectly) calculate the units for data_units_read/written when smartctl7 is not installed and the `-a` or `--all` option is not used. ``` # smartctl7 not installed if echo "$strIn" | grep 'data_units_' >/dev/null; then # Get data_units read or written units="$(echo "$strIn" | awk '{print $3}')" # Remove commas and convert to TB/GB/MB units_show="$(echo "${units//,}" | numfmt --to=si --suffix=B)" # Show data_units read or written if [[ $increased != "yes" ]]; then echo "$strIn ($units_show)" fi ```
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/Synology_SMART_info#13
No description provided.