Camcontrol question related to Seagate disks

From: Karl Denninger <karl_at_denninger.net>
Date: Tue, 06 Jun 2023 13:24:00 UTC
Certain "newer" Seagate drives have an EPC profile that doesn't interact 
as expected with the camcontrol "standard" way to tell spinning disks to 
go into an idle state.

Specifically those that support this: 
https://www.seagate.com/files/docs/pdf/en-GB/whitepaper/tp608-powerchoice-tech-provides-gb.pdf

The usual has been "camcontrol idle da{x} -t 600" has typically resulted 
in a 10 minute timeout, after which it goes into low power (sometimes 
you want "standby" rather than "idle" depending on the recovery time and 
power mode you're after and the specifics of the drive in question.)

On these Seagate drives, however, you get this back after the time expires:

root@NewFS:/home/karl # camcontrol epc da0 -c status
APM: NOT Supported, NOT Enabled
EPC: Supported, Enabled
Low Power Standby NOT Supported
Set EPC Power Source NOT Supported
Current power state: PM0:Active or PM1:Idle(0xff)

In other words it did NOT go into low-power mode even though it says it 
is supported, on said timer AND the "600 second" setting "took":

root@NewFS:/home/karl # camcontrol epc da0 -c list
ATA Power Conditions Log:
   Idle power conditions page:
     Idle A condition:
       Flags: Supported, Saveable, Changeable, Default Timer Enabled,
              Saved Timer Enabled, Current Timer Enabled
       Default timer setting: 0.0 sec
       Saved timer setting: 0.0 sec
       Current timer setting: 0.0 sec
       Nominal time to active: 0.0 sec
       Minimum timer: 0.0 sec
       Maximum timer: 1.0 sec
       Number of transitions to power condition: 0
       Hours in power condition: 0
     Idle B condition:
       Flags: Supported, Saveable, Changeable, Default Timer Enabled,
              Saved Timer Enabled, Current Timer Enabled
       Default timer setting: 120.0 sec
       Saved timer setting: 120.0 sec
       Current timer setting: 120.0 sec
       Nominal time to active: 0.0 sec
       Minimum timer: 0.0 sec
       Maximum timer: 4294967.0 sec
       Number of transitions to power condition: 0
       Hours in power condition: 0
     Idle C condition:
       Flags: Supported, Saveable, Changeable
       Default timer setting: 600.0 sec
       Saved timer setting: 600.0 sec
       Current timer setting: 0.0 sec
       Nominal time to active: 6.0 sec
       Minimum timer: 0.0 sec
       Maximum timer: 4294967.0 sec
       Number of transitions to power condition: 0
       Hours in power condition: 0
   Standby power conditions page:
     Standby Y condition:
       Flags: None
       Default timer setting: 0.0 sec
       Saved timer setting: 0.0 sec
       Current timer setting: 0.0 sec
       Nominal time to active: 0.0 sec
       Minimum timer: 0.0 sec
       Maximum timer: 0.0 sec
       Number of transitions to power condition: 0
       Hours in power condition: 0
     Standby Z condition:
       Flags: Supported, Saveable, Changeable, Current Timer Enabled
       Default timer setting: 900.0 sec
       Saved timer setting: 900.0 sec
       Current timer setting: 600.0 sec
       Nominal time to active: 22.0 sec
       Minimum timer: 0.0 sec
       Maximum timer: 4294967.0 sec
       Number of transitions to power condition: 0
       Hours in power condition: 0

The reason is that /it appears //these drives, on power-up, do not 
enable the timers /until and unless you send a SSU "START" with the 
correct power conditioning bits. Specifically, the power conditioning 
value of "7h" has to be specified.  If its not then the EPC timers are 
present but, it appears, they are not used.

Does anyone know the proper camcontrol command to do this?  The "start" 
command sent when the system spins up does not appear to do so.  If I 
send an "idle" or "standby" to the drive with a timeout it takes effect 
immediately but any access to it spins it up (as expected) and it does 
not re-enter the lower-power mode on the timer, implying that the SSU 
command did not enable the timers, and thus they remain inactive even 
though they ARE set and camcontrol does report them.

This would appear to be fixable with a line in /etc/rc.local aimed at 
said drives that sends a "start" with the correct bits set but 
camcontrol's man page is rather ambiguous on exactly how to do that.

Thanks in advance!

-- 
Karl Denninger
karl@denninger.net
/The Market Ticker/
/[S/MIME encrypted email preferred]/