One of the first things I do before using a new external drive is to look at its status and internal drive information. The smartctl command from the smartmontools package is perfect for this and works on all internal drives and on most external drives.
For external drives there's sometimes a workaround necessary by telling smartctl which device type or USB bridge the external drive is using. For example the ADATA SP550 external drive I need to append -d sat:
ck@mintp ~ $ sudo smartctl -i /dev/sdd -d sat
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.15.0-89-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Silicon Motion based SSDs
Device Model: ADATA SP550
Serial Number: [hidden]
Firmware Version: P0705AB
User Capacity: 240’057’409’536 bytes [240 GB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: Solid State Device
Device is: In smartctl database [for details use: -P show]
ATA Version is: ACS-2 (minor revision not indicated)
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Sat Nov 25 12:04:22 2023 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Depending on the drive, there are other options, such as usbprofilic, usbjmicron and more - again, depending on the internal USB bridge to connect the external drive via USB to the computer:
ck@mintp ~ $ smartctl --help|awk '/-d TYPE/,/-T TYPE/'
-d TYPE, --device=TYPE
Specify device type to one of:
ata, scsi[+TYPE], nvme[,NSID], sat[,auto][,N][+TYPE], usbcypress[,X], usbjmicron[,p][,x][,N], usbprolific, usbsunplus, sntjmicron[,NSID], intelliprop,N[+TYPE], jmb39x,N[,sLBA][,force][+TYPE], marvell, areca,N/E, 3ware,N, hpt,L/M/N, megaraid,N, aacraid,H,L,ID, cciss,N, auto, test
-T TYPE, --tolerance=TYPE (ATA)
But reading data from the newly purchased Samsung Portable SSD T7 Shield drive didn't seem to work. dmesg detected the drive as /dev/sde on my machine:
[ 3431.081250] usb 4-2.1.1.3: new SuperSpeed USB device number 7 using xhci_hcd
[ 3431.100992] usb 4-2.1.1.3: New USB device found, idVendor=04e8, idProduct=61fb, bcdDevice= 1.00
[ 3431.101000] usb 4-2.1.1.3: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[ 3431.101003] usb 4-2.1.1.3: Product: PSSD T7 Shield
[ 3431.101005] usb 4-2.1.1.3: Manufacturer: Samsung
[ 3431.101007] usb 4-2.1.1.3: SerialNumber: [hidden]
[ 3431.103510] scsi host7: uas
[ 3431.104019] scsi 7:0:0:0: Direct-Access Samsung PSSD T7 Shield 0 PQ: 0 ANSI: 6
[ 3431.104643] sd 7:0:0:0: Attached scsi generic sg4 type 0
[ 3431.105125] sd 7:0:0:0: [sde] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB)
[ 3431.105201] sd 7:0:0:0: [sde] Write Protect is off
[ 3431.105203] sd 7:0:0:0: [sde] Mode Sense: 43 00 00 00
[ 3431.105360] sd 7:0:0:0: [sde] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 3431.105598] sd 7:0:0:0: [sde] Optimal transfer size 33553920 bytes
[ 3431.107292] sde: sde1
[ 3431.108181] sd 7:0:0:0: [sde] Attached SCSI disk
But no matter what device type I used with smartcl, I couldn't get the drive's information and SMART attributes. The closest I got to was using -d scsi after finding a hint on a smartmontools issue:
ck@mintp ~ $ sudo smartctl -a /dev/sde -d scsi
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.15.0-89-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Vendor: Samsung
Product: PSSD T7 Shield
Revision: 0
Compliance: SPC-4
User Capacity: 1’000’204’886’016 bytes [1.00 TB]
Logical block size: 512 bytes
LU is fully provisioned
Rotation Rate: Solid State Device
Logical Unit id: 0x5000000000000001
Serial number: Z286209W0SNGY6S
Device type: disk
Local Time is: Sat Nov 25 11:51:37 2023 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Temperature Warning: Disabled or Not Supported
=== START OF READ SMART DATA SECTION ===
SMART Health Status: OK
Current Drive Temperature: 0 C
Drive Trip Temperature: 0 C
Error Counter logging not supported
Device does not support Self Test logging
But besides a temperature (which just shows a steady 0 - so not really working) there are no SMART attributes showing up.
According to research and information from smartmontools issue #1221, the Samsung PSSD T7 Shield uses the ASMedia ASM2362 USB to NVMe bridge. Support for this bridge was added in smartmontools 7.3 by adding a new device type -d sntasmedia.
But my machine (Linux Mint 20.3 - yes, I should upgrade, I know) is currently still using smartcl 7.1. But no biggy, let's download and compile the newest smartmontools to see and find out. As I'm writing this article, the current release is 7.4.
ck@mintp ~/build $ wget https://github.com/smartmontools/smartmontools/releases/download/RELEASE_7_4/smartmontools-7.4.tar.gz
ck@mintp ~/build $ cd smartmontools-7.4/
ck@mintp ~/build/smartmontools-7.4 $ ./configure
ck@mintp ~/build/smartmontools-7.4 $ make
This creates the binary programs, such as smartctl, in the same directory and can be executed right away.
ck@mintp ~/build/smartmontools-7.4 $ ./smartctl --version
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-5.15.0-89-generic] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org
smartctl comes with ABSOLUTELY NO WARRANTY. This is free
software, and you are welcome to redistribute it under
the terms of the GNU General Public License; either
version 2, or (at your option) any later version.
See https://www.gnu.org for further details.
smartmontools release 7.4 dated 2023-08-01 at 10:59:45 UTC
smartmontools SVN rev 5530 dated 2023-08-01 at 11:00:21
smartmontools build host: x86_64-pc-linux-gnu
smartmontools build with: C++11, GCC 9.4.0
smartmontools configure arguments: [no arguments given]
Let's see if the --scan option detects something new:
ck@mintp ~/build/smartmontools-7.4 $ ./smartctl --scan
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/sdb -d scsi # /dev/sdb, SCSI device
/dev/sdc -d scsi # /dev/sdc, SCSI device
/dev/sde -d sntasmedia # /dev/sde [USB NVMe ASMedia], NVMe device
Oh hey, speaking of which, we got the Samsung drive showing up! And the information even shows what device type to use: -d sntasmedia. Let's try and find out:
ck@mintp ~/build/smartmontools-7.4 $ sudo ./smartctl -a /dev/sde -d sntasmedia
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-5.15.0-89-generic] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Number: Samsung Portable SSD T7 Shield
Serial Number: [hidden]
Firmware Version: FXI72P2Q
PCI Vendor/Subsystem ID: 0x144d
IEEE OUI Identifier: 0x002538
Total NVM Capacity: 1’000’204’886’016 [1.00 TB]
Unallocated NVM Capacity: 0
Controller ID: 5
NVMe Version: 1.4
Number of Namespaces: 1
Namespace 1 Size/Capacity: 1’000’204’886’016 [1.00 TB]
Namespace 1 Utilization: 1’165’221’888 [1.16 GB]
Namespace 1 Formatted LBA Size: 512
Local Time is: Sat Nov 25 11:59:10 2023 CET
Firmware Updates (0x16): 3 Slots, no Reset required
Optional Admin Commands (0x0007): Security Format Frmw_DL
Optional NVM Commands (0x001d): Comp DS_Mngmt Wr_Zero Sav/Sel_Feat
Log Page Attributes (0x0f): S/H_per_NS Cmd_Eff_Lg Ext_Get_Lg Telmtry_Lg
Maximum Data Transfer Size: 512 Pages
Warning Comp. Temp. Threshold: 79 Celsius
Critical Comp. Temp. Threshold: 84 Celsius
Namespace 1 Features (0x10): NP_Fields
Supported Power States
St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat
0 + 4.83W - - 0 0 0 0 0 0
1 + 3.54W - - 1 1 1 1 0 0
2 + 3.04W - - 2 2 2 2 0 500
3 - 0.0500W - - 3 3 3 3 210 1200
Supported LBA Sizes (NSID 0x1)
Id Fmt Data Metadt Rel_Perf
0 + 512 0 0
=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
SMART/Health Information (NVMe Log 0x02)
Critical Warning: 0x00
Temperature: 28 Celsius
Available Spare: 100%
Available Spare Threshold: 10%
Percentage Used: 0%
Data Units Read: 5 [2.56 MB]
Data Units Written: 0
Host Read Commands: 79
Host Write Commands: 0
Controller Busy Time: 0
Power Cycles: 1
Power On Hours: 0
Unsafe Shutdowns: 0
Media and Data Integrity Errors: 0
Error Information Log Entries: 0
Warning Comp. Temperature Time: 0
Critical Comp. Temperature Time: 0
Temperature Sensor 1: 28 Celsius
Temperature Sensor 2: 37 Celsius
Warning: NVMe Get Log truncated to 0x200 bytes, 0x200 bytes zero filled
Error Information (NVMe Log 0x01, 16 of 64 entries)
No Errors Logged
Self-tests not supported
What a difference! We can now see the NVMe SMART attributes, including (working) temperatures! Yay!
No comments yet.
AWS Android Ansible Apache Apple Atlassian BSD Backup Bash Bluecoat CMS Chef Cloud Coding Consul Containers CouchDB DB DNS Database Databases Docker ELK Elasticsearch Filebeat FreeBSD Galera Git GlusterFS Grafana Graphics HAProxy HTML Hacks Hardware Icinga Influx Internet Java KVM Kibana Kodi Kubernetes LVM LXC Linux Logstash Mac Macintosh Mail MariaDB Minio MongoDB Monitoring Multimedia MySQL NFS Nagios Network Nginx OSSEC OTRS Office OpenSearch PGSQL PHP Perl Personal PostgreSQL Postgres PowerDNS Proxmox Proxy Python Rancher Rant Redis Roundcube SSL Samba Seafile Security Shell SmartOS Solaris Surveillance Systemd TLS Tomcat Ubuntu Unix VMWare VMware Varnish Virtualization Windows Wireless Wordpress Wyse ZFS Zoneminder