USB-C ports seem to struggle to write at high speed

I have been using a ~5 year old external HDD to hold large files. Around a week ago, I started experiencing issues with loading files onto it. For the first couple GB (varied between around 2-4), transfer would go as normal, and then the process would suddenly stall. It would freeze for a while, and then occasionally pull through a couple hundred MB, and go back to freezing.

If I had Dolphin open to the drive, Dolphin would crash. When I tried using dd status=progress, the status indicator would constantly freeze for between a couple seconds and up to a minute. These issues occured when writing to a LUKS ext4 partition, or just directly to the /dev/sda file, or to a partition like /dev/sda1. It makes me theorize that some sort of IO problem is blocking the programs from functioning. Reading from the drive works perfectly fine, and at good speeds.

These issues occured on Manjaro, but I also have an Ubuntu partition that I tried this on. That partition hasn’t been connected to the internet in months, and it could write just fine a few weeks ago, so a software update couldn’t be the cause. I also haven’t done any firmware updates recently.

SMART tests all came up green, but I figured that the drive had given out in some way, so I ordered a brand new external SSD. Fast forward to now, it arrived, and I am experiencing the same problems. I have tried everything I said about the HDD, plus using different cables and trying all 3 USB-C ports on my computer, with no luck.

I tried using a flash drive, and it worked perfectly well, even with large files that the other two couldn’t handle. However, its write speed is considerably slower than the other two, so that might be the reason?
Update: same issue on flash drive

I am hoping that someone here has any insight before I have to go speak to Dell support about replacing my USB-C ports. They still work fine for my mouse, keyboard, monitor, and reading from drives, but I don’t know what else would cause this besides some strange hardware failure.

System Info

  • /dev/sda is the flash drive
  • /dev/sdb is the new SSD
  • /dev/sdc is the old HDD
inxi -v7azy
System:
  Kernel: 6.2.11-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 12.2.1
    parameters: BOOT_IMAGE=/vmlinuz-6.2-x86_64
    root=UUID=d10cb460-c32f-4e3c-b883-afb0d4c1d53d rw quiet
    cryptdevice=UUID=4eedbe31-4667-41d3-8f2d-59c2a59f8cd1:luks-4eedbe31-4667-41d3-8f2d-59c2a59f8cd1
    root=/dev/mapper/luks-4eedbe31-4667-41d3-8f2d-59c2a59f8cd1
    udev.log_priority=3
  Desktop: KDE Plasma v: 5.27.4 tk: Qt v: 5.15.9 wm: kwin_x11 vt: 1 dm: SDDM
    Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Laptop System: Dell product: XPS 15 9520 v: N/A
    serial: <superuser required> Chassis: type: 10 serial: <superuser required>
  Mobo: Dell model: 0MWGD4 v: A00 serial: <superuser required> UEFI: Dell
    v: 1.10.0 date: 12/14/2022
Battery:
  ID-1: BAT0 charge: 22.6 Wh (33.3%) condition: 67.8/84.3 Wh (80.4%)
    volts: 11.0 min: 11.4 model: BYD DELL M59JH24 type: Li-poly serial: <filter>
    status: discharging
Memory:
  RAM: total: 15.3 GiB used: 4.33 GiB (28.3%)
  RAM Report: permissions: Unable to run dmidecode. Root privileges required.
CPU:
  Info: model: 12th Gen Intel Core i7-12700H bits: 64 type: MST AMCP
    arch: Alder Lake gen: core 12 level: v3 note: check built: 2021+
    process: Intel 7 (10nm ESF) family: 6 model-id: 0x9A (154) stepping: 3
    microcode: 0x429
  Topology: cpus: 1x cores: 14 mt: 6 tpc: 2 st: 8 threads: 20 smt: enabled
    cache: L1: 1.2 MiB desc: d-8x32 KiB, 6x48 KiB; i-6x32 KiB, 8x64 KiB
    L2: 11.5 MiB desc: 6x1.2 MiB, 2x2 MiB L3: 24 MiB desc: 1x24 MiB
  Speed (MHz): avg: 2058 high: 2700 min/max: 400/4600:4700:3500 scaling:
    driver: intel_pstate governor: powersave cores: 1: 2700 2: 2700 3: 498
    4: 2700 5: 2700 6: 2700 7: 604 8: 2700 9: 2700 10: 553 11: 576 12: 2700
    13: 500 14: 638 15: 2700 16: 2700 17: 2700 18: 2700 19: 2700 20: 2700
    bogomips: 107560
  Flags: 3dnowprefetch abm acpi adx aes aperfmperf apic arat
    arch_capabilities arch_lbr arch_perfmon art avx avx2 avx_vnni bmi1 bmi2
    bts clflush clflushopt clwb cmov constant_tsc cpuid cpuid_fault cx16 cx8
    de ds_cpl dtes64 dtherm dts epb ept ept_ad erms est f16c flexpriority
    flush_l1d fma fpu fsgsbase fsrm fxsr gfni hfi ht hwp hwp_act_window
    hwp_epp hwp_notify hwp_pkg_req ibpb ibrs ibrs_enhanced ibt ida intel_pt
    invpcid invpcid_single lahf_lm lm mca mce md_clear mmx monitor movbe
    movdir64b movdiri msr mtrr nonstop_tsc nopl nx ospke pae pat pbe pcid
    pclmulqdq pdcm pdpe1gb pebs pge pku pln pni popcnt pse pse36 pts rdpid
    rdrand rdseed rdtscp rep_good sdbg sep serialize sha_ni smap smep smx
    split_lock_detect ss ssbd sse sse2 sse4_1 sse4_2 ssse3 stibp syscall tm
    tm2 tpr_shadow tsc tsc_adjust tsc_deadline_timer tsc_known_freq umip vaes
    vme vmx vnmi vpclmulqdq vpid waitpkg x2apic xgetbv1 xsave xsavec xsaveopt
    xsaves xtopology xtpr
  Vulnerabilities:
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: retbleed status: Not affected
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: Enhanced IBRS, IBPB: conditional, RSB
    filling, PBRSB-eIBRS: SW sequence
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: Intel Alder Lake-P Integrated Graphics vendor: Dell driver: i915
    v: kernel arch: Gen-12.2 process: Intel 10nm built: 2021-22+ ports:
    active: eDP-1 empty: DP-1, DP-2, DP-3, DP-4, HDMI-A-1 bus-ID: 0000:00:02.0
    chip-ID: 8086:46a6 class-ID: 0300
  Device-2: NVIDIA GA107M [GeForce RTX 3050 Mobile] vendor: Dell
    driver: nvidia v: 530.41.03 alternate: nouveau,nvidia_drm non-free: 530.xx+
    status: current (as of 2023-03) arch: Ampere code: GAxxx
    process: TSMC n7 (7nm) built: 2020-22 bus-ID: 0000:01:00.0
    chip-ID: 10de:25a2 class-ID: 0302
  Device-3: Microdia Integrated_Webcam_HD type: USB driver: uvcvideo
    bus-ID: 3-6:2 chip-ID: 0c45:6a15 class-ID: 0e02
  Display: x11 server: X.Org v: 21.1.8 compositor: kwin_x11 driver: X:
    loaded: modesetting,nvidia alternate: fbdev,nouveau,nv,vesa dri: iris
    gpu: i915 display-ID: :0 screens: 1
  Screen-1: 0 s-res: 1920x1200 s-dpi: 96 s-size: 508x317mm (20.00x12.48")
    s-diag: 599mm (23.57")
  Monitor-1: eDP-1 model: Sharp 0x1515 built: 2021 res: 1920x1200 hz: 60
    dpi: 145 gamma: 1.2 size: 336x210mm (13.23x8.27") diag: 396mm (15.6")
    ratio: 16:10 modes: 1920x1200
  API: OpenGL v: 4.6 Mesa 23.0.2 renderer: Mesa Intel Graphics (ADL GT2)
    direct-render: Yes
Audio:
  Device-1: Intel Alder Lake PCH-P High Definition Audio vendor: Dell
    driver: snd_hda_intel v: kernel alternate: snd_sof_pci_intel_tgl
    bus-ID: 0000:00:1f.3 chip-ID: 8086:51c8 class-ID: 0403
  API: ALSA v: k6.2.11-1-MANJARO status: kernel-api with: aoss
    type: oss-emulator tools: alsamixer,amixer
  Server-1: JACK v: 1.9.22 status: off tools: N/A
  Server-2: PipeWire v: 0.3.68 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Intel Alder Lake-P PCH CNVi WiFi driver: iwlwifi v: kernel
    bus-ID: 0000:00:14.3 chip-ID: 8086:51f0 class-ID: 0280
  IF: wlp0s20f3 state: up mac: <filter>
  IP v4: <filter> type: dynamic noprefixroute scope: global
    broadcast: <filter>
  IP v6: <filter> type: noprefixroute scope: link
  WAN IP: <filter>
Bluetooth:
  Device-1: Intel type: USB driver: btusb v: 0.8 bus-ID: 3-10:3
    chip-ID: 8087:0033 class-ID: e001
  Report: rfkill ID: hci0 rfk-id: 0 state: up address: see --recommends
Logical:
  Message: No logical block device data found.
  Device-1: luks-4eedbe31-4667-41d3-8f2d-59c2a59f8cd1 maj-min: 254:0
    type: LUKS dm: dm-0 size: 263.61 GiB
  Components:
  p-1: nvme0n1p3 maj-min: 259:3 size: 263.61 GiB
RAID:
  Hardware-1: Intel Volume Management Device NVMe RAID Controller driver: vmd
    v: 0.6 port: N/A bus-ID: 0000:00:0e.0 chip-ID: 8086:467f rev: class-ID: 0104
Drives:
  Local Storage: total: 2.34 TiB used: 58.69 GiB (2.4%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Western Digital
    model: PC SN810 NVMe WDC 512GB size: 476.94 GiB block-size: physical: 512 B
    logical: 512 B speed: 63.2 Gb/s lanes: 4 type: SSD serial: <filter>
    rev: 61520012 temp: 40.9 C scheme: GPT
  ID-2: /dev/sda maj-min: 8:0 type: USB vendor: Samsung model: Type-C
    size: 59.75 GiB block-size: physical: 512 B logical: 512 B type: N/A
    serial: <filter> rev: 1100
  SMART Message: Unknown USB bridge. Flash drive/Unsupported enclosure?
  ID-3: /dev/sdb maj-min: 8:16 type: USB vendor: Samsung model: PSSD T7
    size: 931.51 GiB block-size: physical: 512 B logical: 512 B type: SSD
    serial: <filter> scheme: GPT
  SMART Message: Unknown USB bridge. Flash drive/Unsupported enclosure?
  ID-4: /dev/sdc maj-min: 8:32 type: USB vendor: Western Digital
    model: WD10SDZW-11UMGS0 size: 931.48 GiB block-size: physical: 512 B
    logical: 512 B type: HDD rpm: 5400 serial: <filter> rev: 1021
  Message: No optical or floppy data found.
Partition:
  ID-1: / raw-size: 263.61 GiB size: 258.42 GiB (98.03%)
    used: 58.45 GiB (22.6%) fs: ext4 dev: /dev/dm-0 maj-min: 254:0
    mapped: luks-4eedbe31-4667-41d3-8f2d-59c2a59f8cd1 label: N/A
    uuid: d10cb460-c32f-4e3c-b883-afb0d4c1d53d
  ID-2: /boot raw-size: 1024 MiB size: 973.4 MiB (95.06%)
    used: 152.3 MiB (15.6%) fs: ext4 dev: /dev/nvme0n1p2 maj-min: 259:2
    label: N/A uuid: cdb47359-d9ef-4216-8f7c-0c7c2c160219
  ID-3: /boot/efi raw-size: 240 MiB size: 236 MiB (98.33%)
    used: 93.4 MiB (39.6%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1 label: ESP
    uuid: C8BF-C023
Swap:
  Alert: No swap data was found.
Unmounted:
  ID-1: /dev/nvme0n1p4 maj-min: 259:4 size: 15 GiB fs: ext4 label: N/A
    uuid: 47163614-89c9-4fa0-988d-ab87851f704c
USB:
  Hub-1: 1-0:1 info: Hi-speed hub with single TT ports: 1 rev: 2.0
    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900
  Hub-2: 2-0:1 info: Super-speed hub ports: 2 rev: 3.1 speed: 20 Gb/s
    chip-ID: 1d6b:0003 class-ID: 0900
  Device-1: 2-2:4 info: Silicon Motion - Taiwan (formerly Feiya ) Flash Drive
    type: Mass Storage driver: usb-storage interfaces: 1 rev: 3.1 speed: 5 Gb/s
    power: 304mA chip-ID: 090c:1000 class-ID: 0806 serial: <filter>
  Hub-3: 3-0:1 info: Hi-speed hub with single TT ports: 12 rev: 2.0
    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900
  Device-1: 3-1:6 info: Samsung PSSD T7 type: Mass Storage driver: uas
    interfaces: 1 rev: 2.1 speed: 480 Mb/s power: 500mA chip-ID: 04e8:4001
    class-ID: 0806 serial: <filter>
  Hub-4: 3-3:7 info: VIA Labs USB2.0 Hub ports: 4 rev: 2.1 speed: 480 Mb/s
    chip-ID: 2109:2211 class-ID: 0900
  Device-1: 3-3.2:8 info: Dell DA20 Adapter type: Billboard driver: N/A
    interfaces: 1 rev: 2.1 speed: 12 Mb/s power: 2mA chip-ID: 413c:b080
    class-ID: 1100 serial: <filter>
  Device-2: 3-6:2 info: Microdia Integrated_Webcam_HD type: Video
    driver: uvcvideo interfaces: 4 rev: 2.0 speed: 480 Mb/s power: 500mA
    chip-ID: 0c45:6a15 class-ID: 0e02
  Device-3: 3-10:3 info: Intel type: Bluetooth driver: btusb interfaces: 2
    rev: 2.0 speed: 12 Mb/s power: 100mA chip-ID: 8087:0033 class-ID: e001
  Hub-5: 4-0:1 info: Super-speed hub ports: 4 rev: 3.1 speed: 10 Gb/s
    chip-ID: 1d6b:0003 class-ID: 0900
  Hub-6: 4-1:2 info: VIA Labs USB3.0 Hub ports: 1 rev: 3.1 speed: 5 Gb/s
    chip-ID: 2109:0211 class-ID: 0900
  Device-1: 4-1.1:3 info: Western Digital My Passport (WD20NMVW)
    type: Mass Storage driver: usb-storage interfaces: 1 rev: 3.1 speed: 5 Gb/s
    power: 896mA chip-ID: 1058:25e1 class-ID: 0806 serial: <filter>
Sensors:
  System Temperatures: cpu: 39.0 C mobo: N/A
  Fan Speeds (RPM): N/A
Info:
  Processes: 397 Uptime: 42m wakeups: 52074 Init: systemd v: 252
  default: graphical tool: systemctl Compilers: gcc: 12.2.1 clang: 15.0.7
  Packages: 1239 pm: pacman pkgs: 1216 libs: 318 tools: pamac,yay pm: flatpak
  pkgs: 23 Shell: Zsh v: 5.9 default: Bash v: 5.1.16 running-in: yakuake
  inxi: 3.3.26
smartctl -x -d scsi /dev/sda
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.2.11-1-MANJARO] (local build)
Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               Samsung
Product:              Type-C
Revision:             1100
Compliance:           SPC-4
User Capacity:        64,160,400,896 bytes [64.1 GB]
Logical block size:   512 bytes
scsiModePageOffset: response length too short, resp_len=4 offset=4 bd_len=0
Logical Unit id:      0x534d490033323830
Serial number:        AA00000000000489
Device type:          disk
scsiModePageOffset: response length too short, resp_len=4 offset=4 bd_len=0
Local Time is:        Tue Apr 18 17:00:19 2023 EDT
SMART support is:     Available - device has SMART capability.
SMART support is:     Disabled
Temperature Warning:  Disabled or Not Supported
Read Cache is:        Enabled
Writeback Cache is:   Disabled

=== 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

scsiModePageOffset: response length too short, resp_len=4 offset=4 bd_len=0
Device does not support Self Test logging
Device does not support Background scan results logging
smartctl -x -d sntasmedia /dev/sdb
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.2.11-1-MANJARO] (local build)
Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       Samsung Portable SSD T7
Serial Number:                      S6X9NS0TC01713D
Firmware Version:                   FXG42P2Q
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.3
Number of Namespaces:               1
Namespace 1 Size/Capacity:          1,000,204,886,016 [1.00 TB]
Namespace 1 Utilization:            22,558,265,344 [22.5 GB]
Namespace 1 Formatted LBA Size:     512
Local Time is:                      Tue Apr 18 16:57:23 2023 EDT
Firmware Updates (0x16):            3 Slots, no Reset required
Optional Admin Commands (0x0007):   Security Format Frmw_DL
Optional NVM Commands (0x001f):     Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat
Log Page Attributes (0x03):         S/H_per_NS Cmd_Eff_Lg
Maximum Data Transfer Size:         512 Pages
Warning  Comp. Temp. Threshold:     52 Celsius
Critical Comp. Temp. Threshold:     56 Celsius

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       0
 3 -   0.0500W       -        -    3  3  3  3    26000    1000

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:                        25 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    0%
Data Units Read:                    78 [39.9 MB]
Data Units Written:                 61,737 [31.6 GB]
Host Read Commands:                 6,302
Host Write Commands:                242,946
Controller Busy Time:               0
Power Cycles:                       10
Power On Hours:                     0
Unsafe Shutdowns:                   5
Media and Data Integrity Errors:    0
Error Information Log Entries:      0
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               25 Celsius
Temperature Sensor 2:               26 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
smartctl -x /dev/sdc
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.2.11-1-MANJARO] (local build)
Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     WDC WD10SDZW-11UMGS0
Serial Number:    WD-WXB1A28NFY12
LU WWN Device Id: 5 0014ee 6087e2fe0
Firmware Version: 01.01A01
User Capacity:    1,000,171,331,584 bytes [1.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic
Device is:        Not in smartctl database 7.3/5319
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Tue Apr 18 16:56:13 2023 EDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
AAM feature is:   Unavailable
APM level is:     128 (minimum power consumption without standby)
Rd look-ahead is: Enabled
Write cache is:   Enabled
DSN feature is:   Unavailable
ATA Security is:  Disabled, NOT FROZEN [SEC1]
Wt Cache Reorder: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                                        was never started.
                                        Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever 
                                        been run.
Total time to complete Offline 
data collection:                (11280) seconds.
Offline data collection
capabilities:                    (0x51) SMART execute Offline immediate.
                                        No Auto Offline data collection support.
                                        Suspend Offline collection upon new
                                        command.
                                        No Offline surface scan supported.
                                        Self-test supported.
                                        No Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine 
recommended polling time:        (   2) minutes.
Extended self-test routine
recommended polling time:        ( 187) minutes.
SCT capabilities:              (0x7035) SCT Status supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
  1 Raw_Read_Error_Rate     POSR-K   200   200   051    -    0
  3 Spin_Up_Time            POS--K   170   162   021    -    2483
  4 Start_Stop_Count        -O--CK   100   100   000    -    236
  5 Reallocated_Sector_Ct   PO--CK   200   200   140    -    0
  7 Seek_Error_Rate         -OSR-K   200   200   000    -    0
  9 Power_On_Hours          -O--CK   100   100   000    -    101
 10 Spin_Retry_Count        -O--CK   100   100   000    -    0
 11 Calibration_Retry_Count -O--CK   100   100   000    -    0
 12 Power_Cycle_Count       -O--CK   100   100   000    -    129
192 Power-Off_Retract_Count -O--CK   200   200   000    -    32
193 Load_Cycle_Count        -O--CK   200   200   000    -    909
194 Temperature_Celsius     -O---K   119   096   000    -    24
196 Reallocated_Event_Count -O--CK   200   200   000    -    0
197 Current_Pending_Sector  -O--CK   200   200   000    -    0
198 Offline_Uncorrectable   ----CK   100   253   000    -    0
199 UDMA_CRC_Error_Count    -O--CK   200   200   000    -    0
200 Multi_Zone_Error_Rate   ---R--   100   253   000    -    0
                            ||||||_ K auto-keep
                            |||||__ C event count
                            ||||___ R error rate
                            |||____ S speed/performance
                            ||_____ O updated online
                            |______ P prefailure warning

General Purpose Log Directory Version 1
SMART           Log Directory Version 1 [multi-sector log support]
Address    Access  R/W   Size  Description
0x00       GPL,SL  R/O      1  Log Directory
0x01           SL  R/O      1  Summary SMART error log
0x02           SL  R/O      5  Comprehensive SMART error log
0x03       GPL     R/O      6  Ext. Comprehensive SMART error log
0x06           SL  R/O      1  SMART self-test log
0x07       GPL     R/O      1  Extended self-test log
0x09           SL  R/W      1  Selective self-test log
0x10       GPL     R/O      1  NCQ Command Error log
0x11       GPL     R/O      1  SATA Phy Event Counters log
0x24       GPL     R/O    288  Current Device Internal Status Data log
0x30       GPL,SL  R/O      9  IDENTIFY DEVICE data log
0x80-0x9f  GPL,SL  R/W     16  Host vendor specific log
0xa0-0xa7  GPL,SL  VS      16  Device vendor specific log
0xa8-0xb6  GPL,SL  VS       1  Device vendor specific log
0xb7       GPL,SL  VS      74  Device vendor specific log
0xb9       GPL,SL  VS       4  Device vendor specific log
0xbd       GPL,SL  VS       1  Device vendor specific log
0xc0       GPL,SL  VS       1  Device vendor specific log
0xc1       GPL     VS      93  Device vendor specific log
0xcf       GPL     VS   65535  Device vendor specific log
0xe0       GPL,SL  R/W      1  SCT Command/Status
0xe1       GPL,SL  R/W      1  SCT Data Transfer

SMART Extended Comprehensive Error Log Version: 1 (6 sectors)
Device Error Count: 1
        CR     = Command Register
        FEATR  = Features Register
        COUNT  = Count (was: Sector Count) Register
        LBA_48 = Upper bytes of LBA High/Mid/Low Registers ]  ATA-8
        LH     = LBA High (was: Cylinder High) Register    ]   LBA
        LM     = LBA Mid (was: Cylinder Low) Register      ] Register
        LL     = LBA Low (was: Sector Number) Register     ]
        DV     = Device (was: Device/Head) Register
        DC     = Device Control Register
        ER     = Error register
        ST     = Status register
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 1 [0] occurred at disk power-on lifetime: 50 hours (2 days + 2 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER -- ST COUNT  LBA_48  LH LM LL DV DC
  -- -- -- == -- == == == -- -- -- -- --
  40 -- 51 01 00 00 00 11 77 6f 28 40 00  Error: UNC 256 sectors at LBA = 0x11776f28 = 293039912

  Commands leading to the command that caused the error were:
  CR FEATR COUNT  LBA_48  LH LM LL DV DC  Powered_Up_Time  Command/Feature_Name
  -- == -- == -- == == == -- -- -- -- --  ---------------  --------------------
  25 00 00 01 00 00 00 11 77 6f 08 40 00     00:09:35.263  READ DMA EXT
  25 00 00 01 00 00 00 11 77 6e 08 40 00     00:09:35.262  READ DMA EXT
  25 00 00 01 00 00 00 11 77 6d 08 40 00     00:09:35.261  READ DMA EXT
  25 00 00 01 00 00 00 11 77 6c 08 40 00     00:09:35.260  READ DMA EXT
  25 00 00 01 00 00 00 11 77 6b 08 40 00     00:09:35.259  READ DMA EXT

SMART Extended Self-test Log Version: 1 (1 sectors)
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Aborted by host               90%       101         -
# 2  Short offline       Completed without error       00%       101         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

SCT Status Version:                  3
SCT Version (vendor specific):       258 (0x0102)
Device State:                        Active (0)
Current Temperature:                    23 Celsius
Power Cycle Min/Max Temperature:     23/23 Celsius
Lifetime    Min/Max Temperature:     16/47 Celsius
Under/Over Temperature Limit Count:   0/0
Vendor specific:
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

SCT Temperature History Version:     2
Temperature Sampling Period:         1 minute
Temperature Logging Interval:        1 minute
Min/Max recommended Temperature:      0/60 Celsius
Min/Max Temperature Limit:           -41/85 Celsius
Temperature History Size (Index):    128 (59)

Index    Estimated Time   Temperature Celsius
  60    2023-04-18 14:49    33  **************
  61    2023-04-18 14:50    34  ***************
  62    2023-04-18 14:51    34  ***************
  63    2023-04-18 14:52    33  **************
  64    2023-04-18 14:53    33  **************
  65    2023-04-18 14:54     ?  -
  66    2023-04-18 14:55    21  **
  67    2023-04-18 14:56    21  **
  68    2023-04-18 14:57    23  ****
  69    2023-04-18 14:58    25  ******
  70    2023-04-18 14:59     ?  -
  71    2023-04-18 15:00    21  **
  72    2023-04-18 15:01     ?  -
  73    2023-04-18 15:02    21  **
  74    2023-04-18 15:03    22  ***
  75    2023-04-18 15:04    24  *****
  76    2023-04-18 15:05    26  *******
  77    2023-04-18 15:06    27  ********
  78    2023-04-18 15:07    28  *********
  79    2023-04-18 15:08    29  **********
  80    2023-04-18 15:09    30  ***********
  81    2023-04-18 15:10    31  ************
  82    2023-04-18 15:11     ?  -
  83    2023-04-18 15:12    32  *************
  84    2023-04-18 15:13    32  *************
  85    2023-04-18 15:14    32  *************
  86    2023-04-18 15:15    33  **************
  87    2023-04-18 15:16    34  ***************
  88    2023-04-18 15:17    34  ***************
  89    2023-04-18 15:18    35  ****************
  90    2023-04-18 15:19    35  ****************
  91    2023-04-18 15:20    35  ****************
  92    2023-04-18 15:21     ?  -
  93    2023-04-18 15:22    21  **
  94    2023-04-18 15:23    22  ***
  95    2023-04-18 15:24    24  *****
  96    2023-04-18 15:25    25  ******
  97    2023-04-18 15:26    27  ********
  98    2023-04-18 15:27     ?  -
  99    2023-04-18 15:28    22  ***
 100    2023-04-18 15:29    23  ****
 101    2023-04-18 15:30    25  ******
 102    2023-04-18 15:31    26  *******
 103    2023-04-18 15:32     ?  -
 104    2023-04-18 15:33    22  ***
 105    2023-04-18 15:34    23  ****
 106    2023-04-18 15:35    25  ******
 107    2023-04-18 15:36    26  *******
 108    2023-04-18 15:37    28  *********
 109    2023-04-18 15:38     ?  -
 110    2023-04-18 15:39    21  **
 111    2023-04-18 15:40     ?  -
 112    2023-04-18 15:41    26  *******
 113    2023-04-18 15:42     ?  -
 114    2023-04-18 15:43    26  *******
 115    2023-04-18 15:44    27  ********
 116    2023-04-18 15:45    28  *********
 117    2023-04-18 15:46    29  **********
 118    2023-04-18 15:47    30  ***********
 119    2023-04-18 15:48    31  ************
 ...    ..(  2 skipped).    ..  ************
 122    2023-04-18 15:51    31  ************
 123    2023-04-18 15:52    32  *************
 124    2023-04-18 15:53    32  *************
 125    2023-04-18 15:54     ?  -
 126    2023-04-18 15:55    34  ***************
 127    2023-04-18 15:56    34  ***************
   0    2023-04-18 15:57    34  ***************
   1    2023-04-18 15:58     ?  -
   2    2023-04-18 15:59    33  **************
   3    2023-04-18 16:00    33  **************
   4    2023-04-18 16:01    33  **************
   5    2023-04-18 16:02    34  ***************
 ...    ..(  2 skipped).    ..  ***************
   8    2023-04-18 16:05    34  ***************
   9    2023-04-18 16:06    35  ****************
  10    2023-04-18 16:07    35  ****************
  11    2023-04-18 16:08    35  ****************
  12    2023-04-18 16:09     ?  -
  13    2023-04-18 16:10    34  ***************
 ...    ..(  2 skipped).    ..  ***************
  16    2023-04-18 16:13    34  ***************
  17    2023-04-18 16:14    35  ****************
  18    2023-04-18 16:15    36  *****************
  19    2023-04-18 16:16    36  *****************
  20    2023-04-18 16:17    35  ****************
 ...    ..(  2 skipped).    ..  ****************
  23    2023-04-18 16:20    35  ****************
  24    2023-04-18 16:21    34  ***************
  25    2023-04-18 16:22    35  ****************
  26    2023-04-18 16:23    35  ****************
  27    2023-04-18 16:24    36  *****************
  28    2023-04-18 16:25    36  *****************
  29    2023-04-18 16:26    37  ******************
  30    2023-04-18 16:27    37  ******************
  31    2023-04-18 16:28    38  *******************
  32    2023-04-18 16:29    38  *******************
  33    2023-04-18 16:30     ?  -
  34    2023-04-18 16:31    39  ********************
  35    2023-04-18 16:32     ?  -
  36    2023-04-18 16:33    37  ******************
  37    2023-04-18 16:34     ?  -
  38    2023-04-18 16:35    38  *******************
  39    2023-04-18 16:36     ?  -
  40    2023-04-18 16:37    38  *******************
  41    2023-04-18 16:38     ?  -
  42    2023-04-18 16:39    22  ***
  43    2023-04-18 16:40    22  ***
  44    2023-04-18 16:41    24  *****
  45    2023-04-18 16:42    25  ******
  46    2023-04-18 16:43    26  *******
  47    2023-04-18 16:44    27  ********
  48    2023-04-18 16:45    29  **********
  49    2023-04-18 16:46    29  **********
  50    2023-04-18 16:47    29  **********
  51    2023-04-18 16:48    30  ***********
  52    2023-04-18 16:49    30  ***********
  53    2023-04-18 16:50    31  ************
  54    2023-04-18 16:51    32  *************
  55    2023-04-18 16:52     ?  -
  56    2023-04-18 16:53    22  ***
  57    2023-04-18 16:54     ?  -
  58    2023-04-18 16:55    23  ****
  59    2023-04-18 16:56    23  ****

SCT Error Recovery Control command not supported

Device Statistics (GP/SMART Log 0x04) not supported

Pending Defects log (GP Log 0x0c) not supported

SATA Phy Event Counters (GP Log 0x11)
ID      Size     Value  Description
0x0001  2            0  Command failed due to ICRC error
0x0002  2            0  R_ERR response for data FIS
0x0003  2            0  R_ERR response for device-to-host data FIS
0x0004  2            0  R_ERR response for host-to-device data FIS
0x0005  2            0  R_ERR response for non-data FIS
0x0006  2            0  R_ERR response for device-to-host non-data FIS
0x0007  2            0  R_ERR response for host-to-device non-data FIS
0x0008  2            0  Device-to-host non-data FIS retries
0x0009  2            0  Transition from drive PhyRdy to drive PhyNRdy
0x000a  2            1  Device-to-host register FISes sent due to a COMRESET
0x000b  2            0  CRC errors within host-to-device FIS
0x000d  2            0  Non-CRC errors within host-to-device FIS
0x000f  2            0  R_ERR response for host-to-device data FIS, CRC
0x0012  2            0  R_ERR response for host-to-device non-data FIS, CRC
0x8000  4           99  Vendor specific

Open a dmesg -w window, alongside journalctl -f, usually something will be spitted there in case of hardware failure.

A bit ashamed I didn’t already think to do that, but nothing out of the ordinary came up. I’ll include what I did get from dmesg just in case.

dmesg
[  368.280189] usb 3-3: new high-speed USB device number 4 using xhci_hcd
[  368.422994] usb 3-3: New USB device found, idVendor=04e8, idProduct=4001, bcdDevice= 1.00
[  368.423017] usb 3-3: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[  368.423025] usb 3-3: Product: PSSD T7
[  368.423031] usb 3-3: Manufacturer: Samsung
[  368.423035] usb 3-3: SerialNumber: S6X9NS0TC01713D
[  368.477835] usbcore: registered new interface driver usb-storage
[  368.488124] scsi host0: uas
[  368.488264] usbcore: registered new interface driver uas
[  368.488991] scsi 0:0:0:0: Direct-Access     Samsung  PSSD T7          0    PQ: 0 ANSI: 6
[  368.493155] sd 0:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB)
[  368.493414] sd 0:0:0:0: [sda] Write Protect is off
[  368.493419] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[  368.493843] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[  368.493969] sd 0:0:0:0: [sda] Preferred minimum I/O size 512 bytes
[  368.493973] sd 0:0:0:0: [sda] Optimal transfer size 33553920 bytes
[  368.531282]  sda: sda1
[  368.531898] sd 0:0:0:0: [sda] Attached SCSI disk
[  375.859537] audit: type=1338 audit(1681933401.267:142): module=crypt op=ctr ppid=1 pid=878 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="pool-udisksd" exe="/usr/lib/udisks2/udisksd" dev=254:1 error_msg='success' res=1
[  375.859810] audit: type=1300 audit(1681933401.267:142): arch=c000003e syscall=16 success=yes exit=0 a0=14 a1=c138fd09 a2=7f9228032590 a3=1 items=6 ppid=1 pid=878 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="pool-udisksd" exe="/usr/lib/udisks2/udisksd" key=(null)
[  375.859815] audit: type=1307 audit(1681933401.267:142): cwd="/"
[  375.859818] audit: type=1302 audit(1681933401.267:142): item=0 name=(null) inode=1032 dev=00:07 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
[  375.859827] audit: type=1302 audit(1681933401.267:142): item=1 name=(null) inode=53239 dev=00:07 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=CREATE cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
[  375.859831] audit: type=1302 audit(1681933401.267:142): item=2 name=(null) inode=27 dev=00:07 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
[  375.859843] audit: type=1302 audit(1681933401.267:142): item=3 name=(null) inode=53240 dev=00:07 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=CREATE cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
[  375.859855] audit: type=1302 audit(1681933401.267:142): item=4 name=(null) inode=53240 dev=00:07 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
[  375.859858] audit: type=1302 audit(1681933401.267:142): item=5 name=(null) inode=53241 dev=00:07 mode=0100444 ouid=0 ogid=0 rdev=00:00 nametype=CREATE cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
[  375.859861] audit: type=1327 audit(1681933401.267:142): proctitle="/usr/lib/udisks2/udisksd"
[  376.470556] EXT4-fs (dm-1): mounted filesystem 954be4de-2ffb-4aee-a616-2c2a0bae4b39 with ordered data mode. Quota mode: none.

LGTM. Other than kernel buffer flushing (and the disk controller might have a little trouble writing several GB of data at once), bad selection of I/O scheduler or drive overheating, I have no other suspects.

You can test if vm.vfs_cache_pressure = 200 may help. The higher the number the more often the kernel will flush the buffer. But before that, what’s the output of cat /sys/block/<the drive in question>/queue/scheduler?

All three drives had the following scheduler:

none [mq-deadline] kyber bfq

Changing the vm.vfs_cache_pressure kernel arg had no noticeable effect.

My head canon rule of thumb is best for each;
nvme = ‘none’
ssd = multiple, ‘mq-deadline’ being common.
hdd = multiple, ‘bfq’ being common.

You can use a script for all of the mentioned options so far, and some extras.
(running alone will try to calculate and apply values for you, you can also skip sections)

I’m out of suspect then, maybe try bfq but my HDD also uses mq-deadline and it doesn’t suffer from the same problem as yours. It’s also a HDD from my laptop, so it’s around 4-5 years old.

indeed try bfq, in my experience the only io scheduler that works without weird freezing when old hdd:s or USB sticks are heavily loaded. And if your SSD has bad controller, even such might be affected.

Thank you for the suggestions everyone. Time for the plot to thicken… My HDD has decided that it wants to work properly again. My flash drive too, but it has been inconsistent throughout this problem so I will disregard it. I have no idea what to make of this, and I’m not sure how to test it if it’s working. My SSD, however, continues to have problems. I tried every scheduler available, with no noticeable effect.

The freezing in dd kind of reminded me of how it would freeze at the end of a completed operation, while waiting for cache to write(?). So, I played around with running the sync command alongside my testing. I noticed some correlation, though far from hard evidence, between when sync would work and when the drives would work. This makes me theorize it is some sort of issues syncing cache to the drives, and then dd is blocking on the cache rather than I/O? I’m not really an expert so I’m just grasping at straws here.