LinuxでUSB3.0 UASP(USB接続SCSIプロトコル)モードが有効になっているかどうかを確認するにはどうすればよいですか?


25

Ubuntu 15.04(3.19.0-21-generic)を実行しているラップトップと、UASPモード(StarTechのS2510BPU33モデル)をサポートしていると主張する外部USB3.0 2.5インチSATA HDDエンクロージャーがあります。ドライブのマウントまたはそれへの読み書き。

次のことを確認できるようにしたいと思います。

  1. デバイス自体が実際にUASPをサポートしていること
  2. チップセットもUASPをサポートしているかどうか
  3. デバイスがマウント時にUASPを使用しているかどうか

この情報はどこで入手できますか?

回答:


25

デバイスの名前がわかっている場合は、USBバスとデバイス番号を見つけます。

$ lsusb
...
Bus 002 Device 005: ID xxxx:yyyy MyDeviceManufacturer
...

次に、USBツリーを見てデバイスを見つけます(バス2、開発5)。

$ lsusb -t
...
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
    |__ Port 2: Dev 5, If 0, Class=Mass Storage, Driver=uas, 5000M
    |__ Port 4: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
...

私の場合、uasドライバーを見ることができます。

UASが使用されていない場合は表示されますusb-storage(私の場合はDev 3のように)。


1
すばらしい-ポイント3にうまく対応します。表示されない場合はDriver=uas、理由を見つけることができればいいと思います。たとえば、チップセットまたはデバイス(あるいはその両方)がUASをサポートしていない可能性があります。 。誰かが他の2つのポイントに答えられるように、週末まで質問を開いたままにしますが、そうでなければ、あなたの答えを受け入れます。
ali_m

1
1と2の答えも知りたいので、答えがわかったら編集します
オースティンマートン

10

オースティンマートンが与えた答えに加えて、あなたは実行することができます

lsusb -v -d VPID | grep -i interface

ここで、VPIDはで報告されたベンダー/製品ID lsusbです。例えば:

$ lsusb -v -d 1234:5678 | grep -i interface
Couldn't open device, some information will be missing
  bDeviceClass            0 (Defined at Interface level)
    bNumInterfaces          1
    Interface Descriptor:
      bInterfaceNumber        0
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              6 

bInterfaceProtocolリストされている値はのみであることに注意してください80 Bulk-Only。このデバイスは、UASPで構成されたデバイスではありません。ただし、追加のが表示される場合bInterfaceProtocol 98、これ UASPで構成されたデバイスです。

これらの値は10進数で指定されていますが、仕様では16進数値でそれらを参照しています...

50h (80d): USB Mass Storage Class Bulk-Only (BBB) Transport
62h (98d): Allocated by USB-IF for UAS. 

この情報は、usb.orgのMass Storage Specificationのセクション3プロトコルコード、表2 — Mass Storage Transport Protocolにあります。

ただし、この値がUASPをサポートするマシン/デバイスとサポートしないマシン/デバイスの両方で報告されるかどうかは不明であるため、これが最初の質問か2番目の質問のどちらに答えるかはわかりません。


マスストレージ仕様ドキュメントは現在で発見されusb.org/sites/default/files/...
ネイサン

3

回答を完了するには:

コントローラーがUASをサポートしていない場合、Linuxカーネルは親切にそれを伝えます:

$ dmesg | grep "UAS"
[58669.959610] usb 4-2: USB controller 0000:03:00.0 does not support streams, which are required by the UAS driver.
[58669.959613] usb 4-2: Please try an other USB controller if you wish to use UAS.

また、lsusbはbInterfaceProtocol 98の行を表示しますが、空です:

$ lsusb -v -d 0080:a001 | grep -i interface
bDeviceClass            0 (Defined at Interface level)
  bNumInterfaces          1
  Interface Descriptor:
    bInterfaceNumber        0
    bInterfaceClass         8 Mass Storage
    bInterfaceSubClass      6 SCSI
    bInterfaceProtocol     80 Bulk-Only
    iInterface              0 
  Interface Descriptor:
    bInterfaceNumber        0
    bInterfaceClass         8 Mass Storage
    bInterfaceSubClass      6 SCSI
    bInterfaceProtocol     98 
    iInterface              0

HTH、

R.ダニールオリバウ、
ヒューマンロボットインサイド。


明確にするために、bInterfaceProtocol 98行の存在は、この特定のデバイスがUASに必要なプロトコルをサポートすることを示しますが、UASがサポートされているかどうかにかかわらず、行は常に「空」です(つまり、テキスト記述文字列がありません)。(実際には、プロトコル50に指定された「バルクのみ」の説明に合わせて、クラス8 /サブクラス6 /プロトコル62の説明が/var/lib/usbutils/usb.idsに指定されていないため、単に空です。)
ネイサン

-1

UASドライバーがディスクに使用されているかどうかを確認する必要があります。まず、問題のディスクを特定します。

   # dmesg | grep sdb
   ...................
   sd 9:0:0:1: [sdb] Attached SCSI disk

私のデバイスはSCSIディスクです。ここでは、現在使用中のドライバーに関する情報が表示されます。

   # ls /sys/bus/scsi/drivers
     sd  sr

したがって、私の場合、適切なドライバーはsdまたはsrです。どれを確認するために、私は試します

   # cd /sys/bus/scsi/drivers/sd/9:0:0:1
   # 

したがって、私のドライバーはsdです。ディレクトリ/ sys / bus / scsi / drivers / sr / 9:0:0:1が存在しないことを再確認できます。したがって、私の外部ディスクはUASPではありません。


3
私はこの答えが正しいとは思わない、SDとSRドライバーはUASについて教えてくれない。UASを使用してディスクを取得し、SDドライバー(lxr.free-electrons.com/source/drivers/scsi/sd.c)を使用しています。かなり確信してSRドライバは(CD / DVDドライバ用であるlxr.free-electrons.com/source/drivers/scsi/sr.c
austinmarton

これは、sd / srがuas / usb-storageとは異なるレイヤーで動作するためです。
悲しみ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.