AVコマンド対応HDDの識別方法

 PanasonicのHDDレコーダーのDIGAシリーズに接続する外付けHDDは、AVコマンドに対応したHDDであることが要求されます。ですが、外付けHDDにしろ、ベアドライブにしろ、AVコマンド対応を訴求している製品は(監視カメラ録画用などの特殊な製品を除き)ほとんどありません。このため、DIGAで使うためには動作確認済みリストに掲載された比較的割高感の強いHDDを購入することになってしまいます。

 かつてAVコマンド対応可否を識別する方法を調べたことがあるのですが、当時はっきりとしたことは判りませんでした。が、他のことを調べていたら確定的なことが判ったので、以下に記載しておきます。
f:id:kachine:20191102000531j:plain
↑今となっては数百円のSDカードにも劣る28.5GBという小容量の骨董品Seagate ST328040Aの画像を撮っていたので適当なHDD画像として使ってみたものの、もちろんこれは非対応(そもそも当時はAVコマンド自体存在しない)。ちなみにDATE CODE:0024は1999年7月製造モデルを意味し、20年以上前のシロモノ。それでも多くの消えていったHDDメーカーとは異なり、現在までSeagateは生き残ったしBarracudaブランドも残っている。
 

AVコマンド対応可否識別方法

 結論から書いておくと、ATA/ATAPI Command Setで定義されるIDENTIFY DEVICEのword 84のbit 4が立っていればAVコマンドに対応していることになります。
(かといって、Panasonic DIGA等で必ず動作することを保証するものではありません、念のため。動作保証が必要な方は各メーカーの動作確認済み機器を購入してください。) 
 

ソース

 HDDなどのストレージインタフェースのATA規格の標準化を行っている、情報技術規格国際委員会 技術委員会 T13で以下のPDFが公開されています。
Information technology -AT Attachment 8 - ATA/ATAPI Command Set (ATA8-ACS)(PDF)
※このPDF自体は提案されたドラフトだと書かれており、正式に発行されたものではありませんが、AVコマンドの対応可否を識別する方法に関してはこの通りで問題無いようです*1
 上記PDFの"4.20 Streaming feature set"にAVコマンドのことが定義されています。その前に、通称AVコマンドと日本語圏で言われているものは正確には"Streaming feature set"と規定されているようです*2

The Streaming feature set is an optional feature set that allows a host to request delivery of data within an allotted time, placing a priority on the time to transfer the data rather than the integrity of the data. This feature set is defined to satisfy the requirements for AV type applications.

 すなわち適当に意訳すると「ストリーミングフィーチャーセットはオプションの機能セットで、割り当てられた時間内でホストがデータ転送を要求できるようにするもので、データの整合性よりもデータ転送時間に優先度を置いたものです。この機能セットはオーディオビジュアル(AV)用途の要件を満たすために定義されます。」といった感じになります。企業の情報システムに携わる人などであれば、データの整合性より転送時間を優先するという選択は通常あり得ないと思いますが、HDDレコーダーのような用途では、一定のビットレートの映像データを実時間以内に記録できなければ映像記録装置として破綻してしまいます。記録が停止してしまうよりも(多少データ損失が発生してコマ飛びや音飛びが起きてしまっても)記録を続けられることを重視する用途においては、”Streaming feature set"は有益と言えるでしょう。
 PDFの続きには"Streaming feature set"にはCONFIGURE STREAM, READ STREAM EXT, WRITE STREAM EXT, READ STREAM DMA EXT, WRITE STREAM DMA EXT, READ LOG EXT, WRITE LOG EXT, READ LOG DMA EXT, WRITE LOG DMA EXTの9個のコマンドが実装されなければならないと規定されています*3。そして、"Streaming feature set"をサポートしている事は、IDENTIFY DEVICEの84ワードの4ビット目で示すように明示されています。

Support of the Streaming feature set is indicated in IDENTIFY DEVICE data word 84 bit 4

 

具体的識別方法

Windows

 IDENTIFY DEVICE情報は、Crystal Disk Infoを使うと簡単に取得できます。調べたいHDDをCrystal Disk Infoで表示し、Ctrl+Cでコピーすると、テキスト形式でクリップボードに情報が取得されます。抜粋すると以下の例のようになります。

(..省略..)

-- IDENTIFY_DEVICE ---------------------------------------------------------
        0    1    2    3    4    5    6    7    8    9
070: 0000 0000 0000 0000 0000 001F 850E 0086 0044 0040
080: 03F0 0110 346B 7509 4063 3469 B409 4063 207F 0001
090: 0001 0080 07D7 0000 0000 0000 0000 0000 0000 0000

(..省略..)

 Crystal Disk Infoの表現では、ワード84の情報は、080の行で4の列に示されています。すなわちこの例では4063がそれです。なお、他のワード値から察せられますが、これは16進数で表現されていますので、0x4063がワード84の値です。2進数に変換すると、100000001100011になります。最下位ビットを0ビット目として数えて*4、4ビット目は0ですので、このHDDはAVコマンドに対応していないと判断できます。
 

Linux(Ubuntu, ReadyNASOS等)

 Linuxで定番のS.M.A.R.T.チェックツールのsmartctlコマンドでIDENTIFY DEVICE情報を確認できます。
 Ubuntu Serverにはデフォルトでは導入されていないので、smartmontoolsパッケージを予めインストールしておきます*5

sudo apt install smartmontools

 IDENTIFY DEVICE情報を確認するには以下のようなコマンドを叩きます。

smartctl [対象デバイス] --identify

 なお、identify指定だけでは有効なIDENTIFY DEVICE情報しか出力されないので、すべてのIDENTIFY DEVICE情報を出力するにはwbオプションを指定します。

smartctl [対象デバイス] --identify=wb

 また、USB接続(UASP)のHDDの場合は-d satと指定して、対象デバイスがUASPのHDDであることを教えてあげる必要があります。

smartctl [対象デバイス] -d sat --identify=wb

 すなわち、以下のようになります。

# 内蔵HDDの場合
sudo smartctl /dev/sda --identify=wb

# 外付けUSB(UASP) HDDの場合
sudo smartctl /dev/sdb -d sat --identify=wb

 この実行結果を標準出力から抜粋すると、以下のようになります。

smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-66-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== ATA IDENTIFY DATA ===
Word     Bit     Value   Description

(..省略..)

  84      -     0x4163   Commands and feature sets supported
  84     15:14     0x1   Must be set to 0x1
  84     13          0   IDLE IMMEDIATE with UNLOAD feature supported
  84     12:11     0x0   Reserved for TLC [OBS-ACS-3]
  84     10          0   URG bit for WRITE STREAM (DMA) EXT supported [OBS-8]
  84      9          0   URG bit for READ STREAM (DMA) EXT supported [OBS-8]
  84      8          1   64-bit World Wide Name supported
  84      7          0   WRITE DMA QUEUED FUA EXT supported
  84      6          1   WRITE DMA/MULTIPLE FUA EXT supported
  84      5          1   GPL feature set supported
  84      4          0   Streaming feature set supported [OBS-ACS-3]
  84      3          0   Media Card Pass Through Command supported [OBS-ACS-2]
  84      2          0   Media serial number supported [RES-ACS-3]
  84      1          1   SMART self-test supported
  84      0          1   SMART error logging supported

(..省略..)

 Word84の4bit目(Streaming feature set supported [OBS-ACS-3])は0、すなわちAVコマンド非対応であることが判ります。
 

サマリ

 SSHアクセス可能なNASや手元のWindows PC等で動いているHDDについて調べてみたところ、以下の通りでした。

メーカー 型番 AVコマンド
HITACHI HTS54323 2A7A384 非対応
Hitachi HTS54501 6B9A300 非対応
Seagate ST2000DM001-1ER164 非対応
Seagate ST2000VN000-1HJ164 対応
Seagate ST3000DM003-2AE16L 対応
Seagate ST4000DM004-2CV104 非対応
Western Digital WD30EZRZ-00GXCB0 非対応
Western Digital WD30EZRZ-00Z5HB0 非対応

 ST2000VN000-1HJ164はNASDISKブランドの割高なHDDのため対応していても驚きはないのですが、普通の安価なSeagate Desktop HDDブランドの3TBモデルであるST3000DM003-2AE16Lが対応しているのはちょっと驚きです。かといって、4TB版のST4000DM004-2CV104や2TBのST2000DM001-1ER164では非対応となっています。ちなみに4TBの方はSeagate BarraCudaブランドになっていたり、2TBの方は特にブランドは謳っていないもののサポートページ等ではBarracudaブランドとして扱われているようです。いずれも発売時期が違うだけでSeagate Desktop HDDと同じ位置づけの製品ラインアップだと思われ、何故3TBと4TBでこのような差異があるのか解りません。もしかするとファームウェアや型番末尾の枝番によっても対応状況は異なるのかもしれません。
 



以上。

*1:なお、正式に発行された標準文書(Published standards)はANSIかGlobal Engineering Documentsから購入できるようです。

*2:このため、かつて私が"AV command"をキーに検索しても知りたい情報が出てこなかったのでしょう。

*3:これらの9個のコマンドを使う場合においてのみ、整合性より転送時間が優先される動作となるはずで、これらのコマンドを発行しない普通のPC等で使用している際にデータ整合性が”Streaming feature set"非対応のHDDより劣るということは無いはずです。

*4:注: 1~32ビットではなく、0~31ビットで表現しています。

*5:ちなみにReadyNASOS 6.10.1にはデフォルトで導入されていました。