I'm using a Raspberry Pi 5 with an external hard drive connected via USB 3. On boot, it is mounted with the following entry in /etc/fstab:
LABEL=external /mnt/external ext4 defaults,noatime,nofail 0 2
This works well, and I've had no issues. But because this drive only really runs for backups and as a Jellyfin server, I'd like to spin it down when not in use.
hd-idle and hdparm didn't support it, but using sdparm I could set the STANDBY_Z time and enable it. The drive does spin down exactly as wanted after 10 minutes.
The issue: When trying to access the drive, I can hear it spin back up, but nothing is mounted (/mnt/external is empty). I suspect that the drive is unmounted when it spins down, because if I (manually) run sudo mount -a everything works fine again.
As for things I've already tried: the drive shows no issue when not going to sleep, and on windows it can spin down and back up just fine. Additionally, I think I can exclude power delivery issues. The hard drive has an external power brick and the Pi uses the official 5V 5A power supply.
I have an entire log I can share. It begins at boot, at 14:37 I try to access /mnt/external. Two minutes later, I run sudo mount -a. I don't really understand what's going on, does anyone have any idea?
journalctl --dmesg | grep sd
Jan 06 13:53:05 rpi kernel: sdhci: Secure Digital Host Controller Interface driver
Jan 06 13:53:05 rpi kernel: sdhci: Copyright(c) Pierre Ossman
Jan 06 13:53:05 rpi kernel: sdhci-pltfm: SDHCI platform and OF driver helper
Jan 06 13:53:05 rpi kernel: sdhci-brcmstb 1000fff000.mmc: there is not valid maps for state default
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] Spinning up disk...
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] 15628053167 512-byte logical blocks: (8.00 TB/7.28 TiB)
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] 4096-byte physical blocks
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] Write Protect is off
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] Mode Sense: 53 00 00 08
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] Preferred minimum I/O size 4096 bytes
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] Optimal transfer size 33553920 bytes not a multiple of preferred minimum block size (4096 bytes)
Jan 06 13:53:05 rpi kernel: sda: sda1
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] Attached SCSI disk
Jan 06 13:53:09 rpi kernel: sd 0:0:0:0: Attached scsi generic sg0 type 0
Jan 06 13:53:09 rpi kernel: brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6
Jan 06 13:53:11 rpi kernel: EXT4-fs (sda1): mounted filesystem with ordered data mode. Quota mode: none.
Jan 06 14:31:30 rpi kernel: sd 0:0:0:0: [sda] tag#13 uas_zap_pending 0 uas-tag 1 inflight: CMD
Jan 06 14:31:30 rpi kernel: sd 0:0:0:0: [sda] tag#13 CDB: opcode=0x8a 8a 00 00 00 00 00 06 dd 78 08 00 00 00 08 00 00
Jan 06 14:31:30 rpi kernel: sd 0:0:0:0: [sda] tag#13 UNKNOWN(0x2003) Result: hostbyte=0x01 driverbyte=DRIVER_OK cmd_age=5s
Jan 06 14:31:30 rpi kernel: sd 0:0:0:0: [sda] tag#13 CDB: opcode=0x8a 8a 00 00 00 00 00 06 dd 78 08 00 00 00 08 00 00
Jan 06 14:31:30 rpi kernel: I/O error, dev sda, sector 115177480 op 0x1:(WRITE) flags 0x800 phys_seg 1 prio class 2
Jan 06 14:31:30 rpi kernel: EXT4-fs warning (device sda1): ext4_end_bio:343: I/O error 10 writing to inode 77137441 starting block 14397185)
Jan 06 14:31:30 rpi kernel: Buffer I/O error on device sda1, logical block 14396929
Jan 06 14:31:30 rpi kernel: device offline error, dev sda, sector 7814258448 op 0x1:(WRITE) flags 0x800 phys_seg 11 prio class 2
Jan 06 14:31:30 rpi kernel: Aborting journal on device sda1-8.
Jan 06 14:31:30 rpi kernel: device offline error, dev sda, sector 7814252544 op 0x1:(WRITE) flags 0x800 phys_seg 1 prio class 2
Jan 06 14:31:30 rpi kernel: device offline error, dev sda, sector 7814252544 op 0x1:(WRITE) flags 0x800 phys_seg 1 prio class 2
Jan 06 14:31:30 rpi kernel: Buffer I/O error on dev sda1, logical block 976781312, lost sync page write
Jan 06 14:31:30 rpi kernel: JBD2: I/O error when updating journal superblock for sda1-8.
Jan 06 14:31:30 rpi kernel: sd 0:0:0:0: [sda] Synchronizing SCSI cache
Jan 06 14:31:31 rpi kernel: sd 0:0:0:0: [sda] Synchronize Cache(10) failed: Result: hostbyte=0x07 driverbyte=DRIVER_OK
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: Attached scsi generic sg0 type 0
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: [sdb] 15628053167 512-byte logical blocks: (8.00 TB/7.28 TiB)
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: [sdb] 4096-byte physical blocks
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: [sdb] Write Protect is off
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: [sdb] Mode Sense: 53 00 00 08
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: [sdb] Preferred minimum I/O size 4096 bytes
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: [sdb] Optimal transfer size 33553920 bytes not a multiple of preferred minimum block size (4096 bytes)
Jan 06 14:31:44 rpi kernel: sdb: sdb1
Jan 06 14:31:44 rpi kernel: sd 1:0:0:0: [sdb] Attached SCSI disk
Jan 06 14:37:15 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:29 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:39:56 rpi kernel: EXT4-fs (sdb1): recovery complete
Jan 06 14:39:56 rpi kernel: EXT4-fs (sdb1): mounted filesystem with ordered data mode. Quota mode: none.
tfaehse@rpi:~ $ journalctl --dmesg | grep sd
Jan 06 13:53:05 rpi kernel: sdhci: Secure Digital Host Controller Interface driver
Jan 06 13:53:05 rpi kernel: sdhci: Copyright(c) Pierre Ossman
Jan 06 13:53:05 rpi kernel: sdhci-pltfm: SDHCI platform and OF driver helper
Jan 06 13:53:05 rpi kernel: sdhci-brcmstb 1000fff000.mmc: there is not valid maps for state default
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] Spinning up disk...
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] 15628053167 512-byte logical blocks: (8.00 TB/7.28 TiB)
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] 4096-byte physical blocks
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] Write Protect is off
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] Mode Sense: 53 00 00 08
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] Preferred minimum I/O size 4096 bytes
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] Optimal transfer size 33553920 bytes not a multiple of preferred minimum block size (4096 bytes)
Jan 06 13:53:05 rpi kernel: sda: sda1
Jan 06 13:53:05 rpi kernel: sd 0:0:0:0: [sda] Attached SCSI disk
Jan 06 13:53:09 rpi kernel: sd 0:0:0:0: Attached scsi generic sg0 type 0
Jan 06 13:53:09 rpi kernel: brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6
Jan 06 13:53:11 rpi kernel: EXT4-fs (sda1): mounted filesystem with ordered data mode. Quota mode: none.
Jan 06 14:31:30 rpi kernel: sd 0:0:0:0: [sda] tag#13 uas_zap_pending 0 uas-tag 1 inflight: CMD
Jan 06 14:31:30 rpi kernel: sd 0:0:0:0: [sda] tag#13 CDB: opcode=0x8a 8a 00 00 00 00 00 06 dd 78 08 00 00 00 08 00 00
Jan 06 14:31:30 rpi kernel: sd 0:0:0:0: [sda] tag#13 UNKNOWN(0x2003) Result: hostbyte=0x01 driverbyte=DRIVER_OK cmd_age=5s
Jan 06 14:31:30 rpi kernel: sd 0:0:0:0: [sda] tag#13 CDB: opcode=0x8a 8a 00 00 00 00 00 06 dd 78 08 00 00 00 08 00 00
Jan 06 14:31:30 rpi kernel: I/O error, dev sda, sector 115177480 op 0x1:(WRITE) flags 0x800 phys_seg 1 prio class 2
Jan 06 14:31:30 rpi kernel: EXT4-fs warning (device sda1): ext4_end_bio:343: I/O error 10 writing to inode 77137441 starting block 14397185)
Jan 06 14:31:30 rpi kernel: Buffer I/O error on device sda1, logical block 14396929
Jan 06 14:31:30 rpi kernel: device offline error, dev sda, sector 7814258448 op 0x1:(WRITE) flags 0x800 phys_seg 11 prio class 2
Jan 06 14:31:30 rpi kernel: Aborting journal on device sda1-8.
Jan 06 14:31:30 rpi kernel: device offline error, dev sda, sector 7814252544 op 0x1:(WRITE) flags 0x800 phys_seg 1 prio class 2
Jan 06 14:31:30 rpi kernel: device offline error, dev sda, sector 7814252544 op 0x1:(WRITE) flags 0x800 phys_seg 1 prio class 2
Jan 06 14:31:30 rpi kernel: Buffer I/O error on dev sda1, logical block 976781312, lost sync page write
Jan 06 14:31:30 rpi kernel: JBD2: I/O error when updating journal superblock for sda1-8.
Jan 06 14:31:30 rpi kernel: sd 0:0:0:0: [sda] Synchronizing SCSI cache
Jan 06 14:31:31 rpi kernel: sd 0:0:0:0: [sda] Synchronize Cache(10) failed: Result: hostbyte=0x07 driverbyte=DRIVER_OK
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: Attached scsi generic sg0 type 0
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: [sdb] 15628053167 512-byte logical blocks: (8.00 TB/7.28 TiB)
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: [sdb] 4096-byte physical blocks
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: [sdb] Write Protect is off
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: [sdb] Mode Sense: 53 00 00 08
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: [sdb] Preferred minimum I/O size 4096 bytes
Jan 06 14:31:31 rpi kernel: sd 1:0:0:0: [sdb] Optimal transfer size 33553920 bytes not a multiple of preferred minimum block size (4096 bytes)
Jan 06 14:31:44 rpi kernel: sdb: sdb1
Jan 06 14:31:44 rpi kernel: sd 1:0:0:0: [sdb] Attached SCSI disk
Jan 06 14:37:15 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:29 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:37:30 rpi kernel: EXT4-fs warning (device sda1): dx_probe:822: inode #77137068: lblock 0: comm smbd[192.168.17: error -5 reading directory block
Jan 06 14:39:56 rpi kernel: EXT4-fs (sdb1): recovery complete
Jan 06 14:39:56 rpi kernel: EXT4-fs (sdb1): mounted filesystem with ordered data mode. Quota mode: none.
Last but not least, this is all the hard drive info sdparm can read:
sudo sdparm --flexible -6 -l -a /dev/sdb
/dev/sdb: Seagate Expansion HDD 1801
Direct access device specific parameters: WP=0 DPOFUA=0
Caching (SBC) [ca] mode page:
IC 0 [cha: n, def: 0, sav: 0] Initiator control
ABPF 0 [cha: n, def: 0, sav: 0] Abort pre-fetch
CAP 0 [cha: n, def: 0, sav: 0] Caching analysis permitted
DISC 1 [cha: n, def: 1, sav: 1] Discontinuity
SIZE 0 [cha: n, def: 0, sav: 0] Size enable
WCE 1 [cha: y, def: 1, sav: 1] Write cache enable
MF 0 [cha: n, def: 0, sav: 0] Multiplication factor
RCD 0 [cha: n, def: 0, sav: 0] Read cache disable
DRRP 0 [cha: n, def: 0, sav: 0] Demand read retention priority
WRP 0 [cha: n, def: 0, sav: 0] Write retention priority
DPTL -1 [cha: n, def: -1, sav: -1] Disable pre-fetch transfer length
MIPF 0 [cha: n, def: 0, sav: 0] Minimum pre-fetch
MAPF -1 [cha: n, def: -1, sav: -1] Maximum pre-fetch
MAPFC -1 [cha: n, def: -1, sav: -1] Maximum pre-fetch ceiling
FSW 0 [cha: n, def: 0, sav: 0] Force sequential write
LBCSS 0 [cha: n, def: 0, sav: 0] Logical block cache segment size
DRA 0 [cha: n, def: 0, sav: 0] Disable read ahead
SYNC_PROG 0 [cha: n, def: 0, sav: 0] Synchronous cache progress indication
NV_DIS 0 [cha: n, def: 0, sav: 0] Non-volatile cache disable
NCS -1 [cha: n, def: -1, sav: -1] Number of cache segments
CSS 0 [cha: n, def: 0, sav: 0] Cache segment size
Control [co] mode page:
TST 0 [cha: n, def: 0, sav: 0] Task set type
TMF_ONLY 0 [cha: n, def: 0, sav: 0] Task management functions only
DPICZ 0 [cha: n, def: 0, sav: 0] Disable protection information check if protect field zero
D_SENSE 0 [cha: n, def: 0, sav: 0] Descriptor format sense data
GLTSD 0 [cha: n, def: 0, sav: 0] Global logging target save disable
RLEC 0 [cha: n, def: 0, sav: 0] Report log exception condition
QAM 1 [cha: n, def: 1, sav: 1] Queue algorithm modifier
NUAR 0 [cha: n, def: 0, sav: 0] No unit attention on release
QERR 0 [cha: n, def: 0, sav: 0] Queue error management
VS_CTL 0 [cha: n, def: 0, sav: 0] Vendor specific [byte 4, bit 7]
RAC 0 [cha: n, def: 0, sav: 0] Report a check
UA_INTLCK 0 [cha: n, def: 0, sav: 0] Unit attention interlocks control
SWP 0 [cha: n, def: 0, sav: 0] Software write protect
ATO 0 [cha: n, def: 0, sav: 0] Application tag owner
TAS 0 [cha: n, def: 0, sav: 0] Task aborted status
ATMPE 0 [cha: n, def: 0, sav: 0] Application tag mode page enabled
RWWP 0 [cha: n, def: 0, sav: 0] Reject write without protection
SBLP 0 [cha: n, def: 0, sav: 0] Supported block lengths and protection information
AUTOLOAD 0 [cha: n, def: 0, sav: 0] Autoload mode
BTP 0 [cha: n, def: 0, sav: 0] Busy timeout period (100us)
ESTCT 0 [cha: n, def: 0, sav: 0] Extended self test completion time (sec)
Power condition [po] mode page:
PM_BG 0 [cha: n, def: 0, sav: 0] Power management, background functions, precedence
STANDBY_Y 0 [cha: n, def: 0, sav: 0] Standby_y timer enable
IDLE_C 0 [cha: n, def: 0, sav: 0] Idle_c timer enable
IDLE_B 0 [cha: n, def: 0, sav: 0] Idle_b timer enable
IDLE_A 0 [cha: n, def: 0, sav: 0] Idle_a timer enable
STANDBY_Z 1 [cha: y, def: 1, sav: 1] Standby_z timer enable
IACT 0 [cha: n, def: 0, sav: 0] Idle_a condition timer (100 ms)
SZCT 6000 [cha: y, def:9000, sav:6000] Standby_z condition timer (100 ms)
IBCT 0 [cha: n, def: 0, sav: 0] Idle_b condition timer (100 ms)
ICCT 0 [cha: n, def: 0, sav: 0] Idle_c condition timer (100 ms)
SYCT 0 [cha: n, def: 0, sav: 0] Standby_y condition timer (100 ms)
CCF_IDLE 0 [cha: n, def: 0, sav: 0] check condition if from idle_c
CCF_STAND 0 [cha: n, def: 0, sav: 0] check condition if from a standby
CCF_STOPP 0 [cha: n, def: 0, sav: 0] check condition if from stopped