お兄ちゃん!
USB 3.0 に接続した
USB メモリの読み込みが
なんだかおかしいんだ
ちょっと読み込んだと思ったら
待たされたりして
何だか安定して
動いていないようなんだよ…
これは Raspberry Pi ユーザの間で
有名な問題なんだ
今回はこの対処法を紹介するね!
ストレージを USB 3.0 に接続すると
「UASP(USB Attached SCSI Protocol)」という
高速通信を実現する仕組みが使われるんだ
でも Raspberry Pi の USB コントローラと
一部の USB ストレージの互換性が不完全で
通信が不安定になる場合があるんだよ
特に大容量データ転送時に
顕著になることが多いんだ
高速化の仕組みなのに安定しなくて
読み込みが遅くなると本末転倒だよ
どうにかならないものなのかな?
UASP を無効にして対処できるよ
今回はこの方法で対応するね
lsusb
は
USB デバイス情報を
表示するよ
lsusb [オプション]...
まずは USB デバイスを特定する「USB ID」という値を確認しよう 問題の USB ストレージを接続し
lsusb
を実行してねlsusb
へぇ!実行してみるね!
...
Bus 001 Device 004: ID 1234:5678 Example USB Flash Drive
...
各行が USB デバイスの情報だよ自分の USB メモリのメーカ名などを手がかりにして
ID
の後ろにあるxxxx:xxxx
という番号をメモしよう私の場合
1234:5678
がUSB ID だね!メモに控えておいたよ!今度はこの USB デバイスでUASP を無効にするよう設定しよう設定ファイル
/boot/firmware/cmdline.txt
に以下の記述を記述するよusb-storage.quirks=1234:5678:u
最初に
USB_ID
変数に目的の USB ID 1234:5678
を設定しよう値は実際の内容に置き換えてねUSB_ID=1234:5678
設定したよ!
この変数を使って
sed
で設定を追記しよう!sudo sed -i.dist \
"s/$/ usb-storage.quirks=$USB_ID:u/" \
/boot/firmware/cmdline.txt
できたよ!
では設定がちゃんと記述されているか確認しよう
cat /boot/firmware/cmdline.txt
設定末尾に以下のような記述があるはずだよこれは USB ID が
xxxx:xxxx
のUSB デバイスではUASP を使わないという指定だよusb-storage.quirks=xxxx:xxxx:u
usb-storage.quirks=1234:5678:u
という記述があるね設定は大丈夫みたい!設定ができたら再起動しよう!これで指定された USB デバイスでUASP が使われなくなるんだ
sudo systemctl reboot
おお!再起動後は安定してUSB メモリを読み込めるようになったよ!
今回は USB 3.0 の読み込みが不安定になる問題をUASP を無効にして解決したよ!
UASP が使われない場合「BOT (Bulk-Only Transport)」 が使われるんだBOT は UASP のような最適化が行われずアクセス速度は少し落ちるよそれでも USB 3.0 は USB 2.0 より十分高速に利用可能だよ