# IODD TRIM Tool

**Version**: 0.2.0.4\
**Platform**: Windows 64-bit\
**License**: Freeware

***

## 1. Overview

The IODD TRIM Tool is a Windows-exclusive application designed to send TRIM commands to **external SSDs connected via a USB-SATA bridge**.

{% hint style="success" %}
**Universal Compatibility** This tool is **not limited to IODD products**—it supports **all external USB SSDs** from any manufacturer, as long as the USB bridge supports **ATA Pass-Through** or **SCSI UNMAP**.
{% endhint %}

While Windows automatically performs TRIM on internal SATA/NVMe SSDs, this automatic function does not work for external SSDs connected through a USB bridge. This tool is designed to maintain the performance and extend the lifespan of such external SSDs.

### 📥 Download

* [**Download the latest version of IODD TRIM Tool**](https://dir.iodd.kr/util/IODD_TRIM_Tool/)

### Key Features

* **3-Step TRIM Strategy**: Automatic fallback from DSM TRIM → SCSI UNMAP → ATA Pass-Through.
* **BOT/UASP Support**: BOT prioritizes ATA Pass-Through, while UASP prioritizes SCSI UNMAP.
* **Full Device TRIM**: Sends TRIM commands to the entire SSD area.
* **Free Space Only TRIM**: Performs TRIM only on empty space, preserving existing files.
* **Real Test**: Verifies if TRIM is actually working by performing a file write/delete/verify sequence.
* **Write Speed Chart**: Records speeds at 2-second intervals during the Real Test and displays them on a time-series chart.
* **Drive Inspection**: Provides detailed information on disk partitions, volumes, and free space.
* **Dry Run Mode**: Simulates the process without sending actual TRIM commands.
* **Read-only Drive Detection**: Automatically disables file output when run on a read-only drive.
* **8 Languages Supported**: Korean, English, Japanese, Simplified Chinese, Spanish, German, French, and Russian.

### 🚀 Quick Start Guide

1. **Select your device** from the dropdown menu at the top.
2. **Choose a TRIM Mode**:
   * **Full Device TRIM**: Completely wipes the SSD. **ALL data will be permanently deleted.** Use this only when initializing a new or repurposed drive.
   * **Free Space Only TRIM**: Only trims the unused empty space. **Your existing files remain safe.** Use this to optimize performance on a drive you are currently using.
3. Click the **Start** button to execute TRIM.

***

## 2. System Requirements

| Item       | Requirement                                                                   |
| ---------- | ----------------------------------------------------------------------------- |
| OS         | Windows 10 / 11 (64-bit)                                                      |
| Privileges | **Administrator privileges** required (needed for SCSI Pass-Through)          |
| Connection | SSD connected via a USB-SATA bridge                                           |
| Protocol   | Supports both BOT (Bulk-Only Transport) and UASP (USB Attached SCSI Protocol) |

{% hint style="danger" %}
**Important**: You must run the application with **Administrator privileges**. Standard user permissions cannot send SCSI Pass-Through commands to the disk.
{% endhint %}

***

## 3. What is TRIM?

TRIM is an ATA command (DATA SET MANAGEMENT, 0x06) that tells the SSD which data blocks are no longer in use.

### Benefits of TRIM

* **Maintains Write Performance**: Pre-emptively secures empty blocks to prevent write speed degradation.
* **Extends SSD Lifespan**: Reduces unnecessary write/erase cycles, minimizing NAND wear.
* **Consistent Response Times**: Maintains stable performance even after long periods of use.
* **Efficient Space Management**: Optimizes the SSD controller's internal garbage collection.

### When should you use TRIM?

* After deleting a large number of files.
* When the SSD's write speed has noticeably slowed down.
* After using a USB external SSD for a long time without TRIM.
* When the OS does not support automatic TRIM for USB-connected SSDs.

***

## 4. UI Layout

The app consists of a top toolbar and 3 main tabs.

```
┌──────────────────────────────────────────────────────────────┐
│ [IODD Products] [IODD Manual] [Usage] [License] [TRIM Info] [Language ▼] │
├──────────┬─────────────┬─────────────────────────────────────┤
│ Execute TRIM │ Drive Inspect │ Real Test                            │
├──────────┴─────────────┴─────────────────────────────────────┤
│                                                              │
│                  (Tab Content Area)                          │
│                                                              │
└──────────────────────────────────────────────────────────────┘
```

***

## 5. Top Toolbar

| Button                 | Function                                                     |
| ---------------------- | ------------------------------------------------------------ |
| **IODD Products**      | Opens the IODD product page (Amazon) in your browser.        |
| **IODD Manual**        | Opens the IODD help site (help.iodd.kr) in your browser.     |
| **Usage**              | Displays a usage guide popup.                                |
| **License**            | Displays a popup with freeware license information.          |
| **TRIM Info**          | Displays a popup explaining the benefits and timing of TRIM. |
| **Language Selection** | Changes the app's UI language (dropdown on the top right).   |

***

## 6. Execute TRIM Tab

This is the main tab where you send TRIM commands to the selected disk.

### 6.1 Disk Selection

Select the target disk from the dropdown menu at the top. Each item displays the following information:

```
PD8 | Samsung SSD 860 | 465.8 GiB | BOT | O:(FAT32) | TRIM:YES
PD6 | Generic         | 111.8 GiB | UAS | P:(NTFS), Q:(exFAT) | TRIM:YES
```

* **PD Number**: Physical Drive number
* **Model Name**: SSD model
* **Capacity**: Total disk capacity (GiB)
* **Protocol**: BOT (ATA Pass-Through) / UAS (SCSI UNMAP) / Non-USB
* **Volume**: Drive letter + File system
* **TRIM Support**: TRIM:YES / TRIM:NO / APT:N/A

> You can rescan the disk list using the **Refresh** button.

### 6.2 Disk Info Memo

When a disk is selected, detailed information appears in the memo box below:

* Model, Serial, Capacity, Transfer Protocol
* Volume info (File system, Cluster size, Offset, Partition length in GiB)
* ATA Pass-Through support status
* TRIM Capable status
* ATA Model, Firmware info

### 6.3 TRIM Mode

| Mode                 | Description                                                                  |
| -------------------- | ---------------------------------------------------------------------------- |
| **Full Device TRIM** | Sends TRIM to the entire disk. **ALL data will be permanently deleted.**     |
| **Free Space Only**  | Trims only the empty space on the file system. Existing files are preserved. |

{% hint style="danger" %}
**Warning**: Full Device TRIM permanently deletes all data on the disk. Be sure to back up your data before using this mode.
{% endhint %}

### 6.4 TRIM Transmission Methods

Depending on the disk's protocol, a 3-step automatic fallback strategy is applied:

| Order | Method               | Description                                                              |
| ----- | -------------------- | ------------------------------------------------------------------------ |
| 1     | **DSM TRIM**         | Windows Native TRIM (Attempted while the volume is mounted)              |
| 2     | **SCSI UNMAP**       | For UASP devices. Attempted after Volume Lock/Dismount if DSM TRIM fails |
| 3     | **ATA Pass-Through** | Default for BOT devices. Final fallback if SCSI UNMAP fails              |

* **BOT Devices**: Directly sends via ATA Pass-Through.
* **UASP Devices**: Attempts DSM TRIM → SCSI UNMAP → ATA Pass-Through in order.
* SCSI UNMAP attempts multi-descriptor mode first, then switches to single-descriptor mode if rejected.

### 6.5 Options

| Option              | Description                                                   | Default |
| ------------------- | ------------------------------------------------------------- | ------- |
| **Dry Run**         | Simulates the operation without sending actual TRIM commands. | OFF     |
| **Flush Volumes**   | Flushes the volume buffers before performing TRIM.            | ON      |
| **Init after TRIM** | Initializes the disk to GPT/MBR after TRIM is complete.       | None    |

### 6.6 Advanced Settings

Checking the **Show Advanced Settings** box reveals additional options:

| Setting               | Description                                  | Default |
| --------------------- | -------------------------------------------- | ------- |
| **Timeout (ms)**      | SCSI timeout duration for each TRIM batch.   | 5,000ms |
| **Retry**             | Number of retries upon failure.              | 3       |
| **Batch Entries**     | Number of TRIM ranges to send at once.       | 32      |
| **Batch Limit**       | Maximum number of batches (1, 10, 100, All). | All     |
| **Allow System Disk** | Allows TRIM on the OS system disk.           | OFF     |
| **Mask Serial**       | Masks the serial number in logs.             | ON      |

### 6.7 Execution

1. Select the disk.
2. Select the TRIM mode.
3. Click the **Start** button.
4. Verify by entering the disk number in the warning confirmation dialog.
5. The progress will be shown on the progress bar and status bar.
6. A success/failure popup will appear upon completion.

You can immediately stop an ongoing TRIM by clicking the **Cancel** button.

### 6.8 USB Notice

You can view guidance regarding the USB bridge device's protocol:

* **BOT**: Sends TRIM via ATA Pass-Through.
* **UASP**: Sends TRIM via SCSI UNMAP (falls back to ATA Pass-Through if failed).

If TRIM fails:

1. Unplug and reconnect the device directly.
2. Try changing the USB hub or cable.
3. Refresh and check the Transport protocol.

***

## 7. Drive Inspect Tab

Investigates detailed partition and volume information of the selected disk.

### Features

* **Run Inspection**: Retrieves detailed volume information for the selected disk.
* **Export Free Space CSV**: Outputs the free space ranges as a CSV file.

### Displayed Information — Summary

* Disk model, size (GiB + total sectors), number of volumes, list of file systems
* Total space, free space, used space (bytes / clusters / sectors / ratio)
* Additional info: Transport protocol, BusHint
* Number of free fragments, Free sectors, Free GiB, Last used LBA

### Displayed Information — Volume Grid

| Column                   | Description                            |
| ------------------------ | -------------------------------------- |
| Drive                    | Drive letter                           |
| FS                       | File system (NTFS, FAT32, exFAT, etc.) |
| Partition#               | Partition number                       |
| Style                    | Partition style (GPT / MBR)            |
| Type                     | Partition type                         |
| Sec/Cluster              | Sectors per cluster                    |
| Total Sectors            | Total number of sectors                |
| Size (GB)                | Capacity (GB)                          |
| Free Sectors             | Free sectors count (Ratio %)           |
| Used Sectors             | Used sectors count (Ratio %)           |
| Physical Start Sector    | Physical starting sector               |
| Partition Length Sectors | Partition length (sectors)             |
| Cluster Bytes            | Cluster size (bytes)                   |

***

## 8. Real Test Tab

Verifies whether TRIM is actually functioning on the SSD through a file write/delete/verify process.

{% hint style="info" %}
**Note**: It is **not mandatory** to run the Real Test for standard TRIM usage. This feature is intended to verify if the USB bridge controller and this software properly execute TRIM on your specific SSD. If verification is needed, running it **once** is sufficient. The time required depends on the disk capacity and USB speed, taking approximately **6 hours** for a 1TB SSD.
{% endhint %}

### 8.1 Test Procedure (STEP 1\~4)

| Step       | Action            | Description                                                                                       |
| ---------- | ----------------- | ------------------------------------------------------------------------------------------------- |
| **STEP 1** | TRIM + Fill Files | First executes Free-space TRIM, then fills 1/3 of the remaining capacity with 500MB random files. |
| **STEP 2** | Delete + TRIM     | Deletes 1 in every 10 files → Flushes → Extracts Free Space CSV → Performs Free-space TRIM.       |
| **STEP 3** | Additional Fill   | Fills the remaining capacity with 1GB random files (leaving about 1GB of free space).             |
| **STEP 4** | Integrity Verify  | Verifies the CRC integrity of the 500MB files.                                                    |

> In STEP 1, TRIM is executed before creating files to ensure the SSD starts the test in an optimal write performance state.

### 8.2 Options

| Option           | Description                                                                                    |
| ---------------- | ---------------------------------------------------------------------------------------------- |
| **Start Step**   | The step number to start from (1\~4).                                                          |
| **End Step**     | The step number to end at (1\~4).                                                              |
| **Target Drive** | Select the logical drive to use for the Real Test.                                             |
| **Wait on Drop** | Wait time (minutes) if write speed drops below 50% of the moving average. Set to 0 to disable. |

### 8.3 Sudden Speed Drop Detection

If the SSD cache is exhausted during writing, the speed may drop sharply. This feature:

* Tracks the average speed based on an **EMA (Exponential Moving Average)**.
* If the 2-second interval speed drops to **50% or less** of the moving average, it pauses for the set duration.
* Speed is recorded as 0 while waiting, and automatically resumes afterward.

### 8.4 Buttons

| Button                 | Function                                                                                |
| ---------------------- | --------------------------------------------------------------------------------------- |
| **Start**              | Begins the entire test (STEP 1\~4). A confirmation popup appears before starting.       |
| **Verify Only**        | Only verifies the CRC integrity of existing files (corresponds to STEP 4).              |
| **Stop**               | Immediately halts the ongoing test.                                                     |
| **Delete Test Folder** | Deletes the temporary files/folders used for the test.                                  |
| **Export FileMap**     | Exports the physical location map of the test files as a CSV.                           |
| **Speed Chart**        | Displays the time-series write speed chart of the last test (enabled after completion). |
| **Clear Log**          | Clears the log and redisplays the instructional message.                                |

### 8.5 Write Speed Chart

Clicking the **Speed Chart** button after a test is completed displays a time-series line chart:

* X-axis: Elapsed time, Y-axis: Write speed (MB/s).
* Speed data measured at 2-second intervals is shown as a blue line.
* Dotted lines mark the boundaries of each STEP, allowing you to see performance changes per stage at a glance.
* Waiting periods are recorded as 0 speed.
* You can save the data as a CSV file using the **Save CSV** button.

### 8.6 Status Display

* **Status**: The currently executing step.
* **Speed**: Real-time write speed (2-second interval average, MB/s).
* **Elapsed**: Total elapsed time (updates every second).
* **Step**: Elapsed time for the current step (updates every second).

### 8.7 TRIM Result Log

After each TRIM execution, the results are output to the log:

```
TRIM completed: batches=32/32, sectors=63,560,392    ← Success
TRIM failed: success=0, failed=32, planned=32        ← Failure
```

### 8.8 Test Completion

Upon completion, a success/failure popup appears:

* **Success**: If all file CRCs match, it means TRIM is functioning correctly.
* **Failure**: If a CRC mismatch occurs, there may be data corruption after TRIM.
* **Cancelled**: If the user pressed the Stop button.

***

## 9. Multilingual Support

You can change the language from the dropdown in the top right corner of the app. The OS language is automatically detected and set as the default.

| Language           | Display Name |
| ------------------ | ------------ |
| Korean             | 한국어          |
| English            | English      |
| Japanese           | 日本語          |
| Simplified Chinese | 简体中文         |
| Spanish            | Español      |
| German             | Deutsch      |
| French             | Français     |
| Russian            | Русский      |

***

## 10. Frequently Asked Questions (FAQ)

<details>

<summary>Q: TRIM fails on a UASP device.</summary>

On UASP devices, the tool automatically tries DSM TRIM → SCSI UNMAP → ATA Pass-Through in order. If all fail:

1. Try unplugging the device and reconnecting it directly.
2. Try changing the USB hub or cable.
3. Some USB bridges simply do not support TRIM commands.

</details>

<details>

<summary>Q: It says ATA Pass-Through is not supported.</summary>

This happens when the USB bridge controller does not support ATA Pass-Through. However, if connected via UASP, TRIM is transmitted via SCSI UNMAP, so TRIM might still be possible even without ATA Pass-Through.

</details>

<details>

<summary>Q: It displays TRIM:NO.</summary>

This means ATA Pass-Through is supported, but the SSD itself does not support TRIM. This happens with very old SSDs or traditional HDDs. TRIM is a command exclusively for SSDs.

</details>

<details>

<summary>Q: Free Space Only TRIM fails with a "No free-space bitmap ranges available" error.</summary>

This occurs when the file system bitmap cannot be read. Ensure that you are using a supported file system (NTFS, FAT32, exFAT).

</details>

<details>

<summary>Q: The disk is not recognized after a Full Device TRIM.</summary>

After a full TRIM, the partition table may be deleted. If you set the **Init after TRIM** option to GPT or MBR, it will automatically initialize the disk afterward.

</details>

<details>

<summary>Q: I am getting an error even though I ran it with Administrator privileges.</summary>

Some antivirus software may block SCSI Pass-Through commands. Try temporarily disabling your antivirus and run it again.

</details>

<details>

<summary>Q: [WARN] DSM TRIM winerr=1 appears in the log.</summary>

This is normal behavior. The USB bridge does not support Windows DSM TRIM, so it automatically fell back to SCSI UNMAP. As long as the final TRIM is successful, there is no issue.

</details>

<details>

<summary>Q: [WARN] SCSI UNMAP winerr=1117 appears in the log.</summary>

This is normal behavior. The bridge rejected multiple descriptors, so it automatically switched to single-descriptor mode. As long as the final TRIM is successful, there is no issue.

</details>

<details>

<summary>Q: The Speed Chart button is disabled.</summary>

Speed data is only collected after running the Real Test at least once. The button becomes enabled after a test is completed.

</details>

***

## 11. Troubleshooting

| Symptom                               | Cause                                 | Solution                                           |
| ------------------------------------- | ------------------------------------- | -------------------------------------------------- |
| **Disk does not appear in list**      | Bad USB cable or not connected        | Check USB connection and refresh                   |
| **"Admin Privileges Required" error** | Ran with standard user rights         | Right-click app → "Run as Administrator"           |
| **APT:N/A displayed**                 | USB bridge lacks ATA command support  | Handled automatically via SCSI UNMAP if UASP       |
| **TRIM batch failed**                 | Timeout or bridge compatibility issue | Increase timeout value, decrease batch size        |
| **DSM TRIM winerr=5**                 | Attempted while volume is dismounted  | Automatic fallback will handle it (Normal)         |
| **SCSI UNMAP winerr=5**               | Attempted while volume is mounted     | Retries automatically after Lock/Dismount (Normal) |
| **CRC mismatch in Real Test**         | Data area corrupted after TRIM        | Possible bridge/SSD compatibility issue            |
| **Wait on Drop doesn't trigger**      | Wait time is set to 0                 | Set the wait on drop value to 1 or higher          |
| **CSV/Log files are not created**     | Ran on a read-only drive              | Run from a writable drive                          |

***

## 12. License

The IODD TRIM Tool is **Freeware**.

* Anyone can use it for free, and it may be freely copied and distributed.
* This software is provided "AS IS".
* Commercial sales are strictly prohibited.
* The developer assumes no responsibility for any damages, including data loss, resulting from the use of this software.
* Reverse engineering, decompiling, and source code extraction are prohibited.

Copyright (c) 2025-2026 IODD. All rights reserved.

***

*This manual is based on IODD TRIM Tool v0.2.0.4.*
