CLI

SMARTie comes with an optional command line interface (CLI) which can be installed with:

pip install smartie[cli]

The CLI provides human-friendly and machine-readable output for common SMARTie commands like enumerating devices and getting temperatures. It can also be used to dump raw device responses for debugging and testing.

The CLI is installed as the smartie command. Run smartie –help for a list of available commands and options.

smartie --help

List Devices

To list all devices connected to the system, run:

smartie enumerate

Which will output something like:

sudo smartie enumerate

  Path           Model                     Serial            Temperature
 ────────────────────────────────────────────────────────────────────────
  /dev/nvme0n1   WD_BLACK SN770 2TB        224123A00621      49
  /dev/sdb       Samsung SSD 860 EVO 1TB   S1Z8NB0ADM0852J   28
  /dev/sdc       Samsung SSD 860 EVO 1TB   S1Z8NB0K317857K   28
  /dev/nvme1n1   WD_BLACK SN770 2TB        2WE21!200596      46
  /dev/sda       Samsung SSD 860 EVO 1TB   S3Z8FD0K325382T   28

Device Details

To get detailed information about a specific device, run:

smartie details /dev/nvme0n1

Which will output something like:

sudo smartie details /dev/nvme0n1
┌───────────────┬──────────────────────────────────────────────────────────────────────────────────────┐
│ Model Number  │ WD_BLACK SN770 2TB                                                                   │
│ Serial Number │ 22421Q800621                                                                         │
│ Temperature   │ 49°C                                                                                 │
│               │                                   SMART Attributes                                   │
│               │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ │
│               │ ┃ Name                            ┃                                          Value ┃ │
│               │ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │
│               │ │ Critical Warning                │ ┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┓ │ │
│               │ │                                 │ ┃ Offset    ┃ Name                   ┃ Value ┃ │ │
│               │ │                                 │ ┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━┩ │ │
│               │ │                                 │ │ [000:001] │ available_spare        │ 0x000 │ │ │
│               │ │                                 │ ├───────────┼────────────────────────┼───────┤ │ │
│               │ │                                 │ │ [001:002] │ temperature            │ 0x000 │ │ │
│               │ │                                 │ ├───────────┼────────────────────────┼───────┤ │ │
│               │ │                                 │ │ [002:003] │ degraded_nvm           │ 0x000 │ │ │
│               │ │                                 │ ├───────────┼────────────────────────┼───────┤ │ │
│               │ │                                 │ │ [003:004] │ read_only              │ 0x000 │ │ │
│               │ │                                 │ ├───────────┼────────────────────────┼───────┤ │ │
│               │ │                                 │ │ [004:005] │ volatile_memory_backup │ 0x000 │ │ │
│               │ │                                 │ ├───────────┼────────────────────────┼───────┤ │ │
│               │ │                                 │ │ [005:008] │ reserved_1             │ 0x000 │ │ │
│               │ │                                 │ └───────────┴────────────────────────┴───────┘ │ │
│               │ │ Temperature                     │                                        49.85°C │ │
│               │ │ Available Spare                 │                                           100% │ │
│               │ │ Available Spare Threshold       │                                            10% │ │
│               │ │ Percentage Used                 │                                             8% │ │
│               │ │ Data Units Read                 │                                     17905.66GB │ │
│               │ │ Data Units Written              │                                    140446.82GB │ │
│               │ │ Host Read Commands              │                                      347546295 │ │
│               │ │ Host Write Commands             │                                     6357604683 │ │
│               │ │ Controller Busy Time            │                                          15482 │ │
│               │ │ Power Cycles                    │                                            115 │ │
│               │ │ Power On Hours                  │                                          10135 │ │
│               │ │ Unsafe Shutdowns                │                                             69 │ │
│               │ │ Media and Data Integrity Errors │                                              0 │ │
│               │ │ Error Information Log Entries   │                                              0 │ │
│               │ │ Temperature Sensors             │ ┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┓ │ │
│               │ │                                 │ ┃     Sensor      ┃       Temperature        ┃ │ │
│               │ │                                 │ ┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ │
│               │ │                                 │ │        0        │           70°C           │ │ │
│               │ │                                 │ │        1        │           37°C           │ │ │
│               │ │                                 │ └─────────────────┴──────────────────────────┘ │ │
│               │ └─────────────────────────────────┴────────────────────────────────────────────────┘ │
└───────────────┴──────────────────────────────────────────────────────────────────────────────────────┘

JSON

The CLI can also output JSON for easy parsing by other programs:

smartie api --help

Dump Raw Device Data

To dump raw device data for common commands, you can use the dump command with the device path and the command name. For example, to dump the identify command for a device, run:

smartie dump /dev/nvme0n1 identify

Which will output something like:

sudo smartie dump /dev/sdc identify
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Offset    ┃ Name                ┃ Value                                                                                  ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ [000:001] │ reserved_1          │ 0x000                                                                                  │
├───────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────┤
│ [001:002] │ retired_3           │ 0x000                                                                                  │
├───────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────┤
│ [002:003] │ response_incomplete │ 0x000                                                                                  │
├───────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────┤
│ [003:006] │ retired_2           │ 0x000                                                                                  │
├───────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────┤
│ [006:007] │ fixed_device        │ 0x001                                                                                  │
├───────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────┤
│ [007:008] │ removable_media     │ 0x000                                                                                  │
├───────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────┤
│ [008:015] │ retired_1           │ 0x000                                                                                  │
├───────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────┤
│ [015:016] │ device_type         │ 0x000                                                                                  │
├───────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────┤
│ [016:160] │ padding_1           │ ┌───────────────────────────────────────────────────────┬────────────────────┐         │
│           │                     │ │ FF 3F 37 C8 10 00 00 00 00 00 3F 00 00 00 00 00 00 00 │ .?7.......?....... │         │
│           │                     │ └───────────────────────────────────────────────────────┴────────────────────┘         │
├───────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────┤
│ [160:320] │ serial_number       │ ┌─────────────────────────────────────────────────────────────┬──────────────────────┐ │
│           │                     │ │ 33 53 38 5A 42 4E 4B 30 31 33 38 37 37 35 20 4B 20 20 20 20 │ 3S81NK313B7115 K     │ │
│           │                     │ └─────────────────────────────────────────────────────────────┴──────────────────────┘ │
├───────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────┤
│ [320:368] │ padding_2           │ ┌───────────────────┬────────┐                                                         │
│           │                     │ │ 00 00 00 00 00 00 │ ...... │                                                         │
│           │                     │ └───────────────────┴────────┘                                                         │
├───────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────┤
│ [368:432] │ firmware_revision   │ ┌─────────────────────────┬──────────┐                                                 │
│           │                     │ │ 56 52 30 54 42 31 51 36 │ VR0TB1Q6 │                                                 │
│           │                     │ └─────────────────────────┴──────────┘                                                 │
├───────────┼─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────┤
│ [432:752] │ model_number        │ ┌─────────────────────────────────────────────────────────────┬──────────────────────┐ │
│           │                     │ │ 61 53 73 6D 6E 75 20 67 53 53 20 44 36 38 20 30 56 45 20 4F │ aSsmnu gSS D68 0VE O │ │
│           │                     │ │ 54 31 20 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 │ T1 B                 │ │
│           │                     │ └─────────────────────────────────────────────────────────────┴──────────────────────┘ │
└───────────┴─────────────────────┴────────────────────────────────────────────────────────────────────────────────────────┘