aAPT
dDebian
fFFmpeg
jJava
mMercurial: Usage
oOCaml
pPostgreSQL

Home OS

Enabling TRIM Support on USB/SATA Bridges

The caveat is to set provisioning mode to unmap.

/etc/udev/rules.d/99-discard.rules
ACTION=="add|change", ATTRS{idVendor}=="174c", ATTRS{idProduct}=="55aa", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"

This works at least on StarTech.com USB312SAT3CB (ASM1153E) and USB3S2SAT3CB (ASM1351) adapters, Inateck FE2006 (JMS567).

vid pid controller
174c 55aa ASMedia
152d 3562 JMicron

JMS561U works in UAS mode, however does not seem to support discard (changing provisioning mode to "unmap" results in i/o error when trimming the drive).

IF udev rules don't apply without restart, force trigger them:

# udevadm control --reload-rules && udevadm trigger

And another hack:

ACTION=="add", ATTRS{idVendor}=="174c", ATTRS{idProduct}=="55aa", SUBSYSTEM=="scsi_disk", RUN+="/usr/bin/sh -c 'sleep 1 && udevadm trigger --subsystem-match=scsi_disk'"
ACTION=="change", ATTRS{idVendor}=="174c", ATTRS{idProduct}=="55aa", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"

To check trim/discard on block devices, lsblk may be used with -D/--discard switch.