気の向くままに辿るIT/ICT/IoT
ハードウェア

Raspberry Pi 3 Model B+とUSB HDDブート

ホーム前へ次へ
Raspberry Piって?

Raspberry Pi 3 Model B+とUSB HDDブート

Raspberry Pi 3 Model B+とUSB HDDブート

2018/12/02

 先日買ったACアダプタなしUSB給電のUSB 3.0 2.5インチHDDケース2個の内、1つは、Raspberry Pi 3 Model B+をUSB HDDブートできたにはできたのですが、poweroff/shutdown -h nowしても勝手に再起動してしまう事象に遭遇することに。

 また、ログインしそびれると、ログインを忘れて放置していると、これまた、その度に勝手に再起動します。

 USBメモリからブートした場合は、この事象は起きません。

2019/01/29

 あ...、今更ながら...、単にACアダプタの問題だった模様です...。

 デスクトップPC周辺機器とRapsberry Pi 3 B+でPC化後、追加作業の過程で気づきました。

 当時、どのACアダプタを使っていたか覚えていませんが、ラズパイセット付属の5V/2.5Aより、5V/3Aの方が良いだろうと高をくくって2個ほど別途購入したので、その内の1つ、リンク先にある問題のあった5V/3Aを使っていた可能性大。

 セット付属の5V/2.5Aを使えば、液晶ディスプレイ、無線LANを使用、他USB機器を接続したまま、先のバスパワーUSB HDDから起動でき、その後も安定稼働することに気づいたというオチ...です。

 ちなみに、もう1つの5V/3AのACアダプタは、USBメモリブートながら、他USB機器を接続したまま夜中など使わない時はシャットダウンしている無線LANを介し運用している自作スマートスピーカーとして安定稼働している為、同じ5V/3AのACアダプタでも特定の1つが、原因だったと考えて良さそうです。

 それぞれのモノや型番などの情報はリンク先参照。

 尚、最初から安定した電源アダプタを使った場合、後段の作業が不要になるのか否かは未確認。

2018/12/10

 [/boot/config.txt]に[max_usb_current=1]のみ追記したところ、USB HDDブート後のpoweroff/shutdown -h now後の再起動問題もなくなりました。

 ラズパイのUSBポート出力アップ(0.6A=>1.2A)については、[/boot/config.txt]に当初は、[safe_mode_gpio=4]を、後に[max_usb_current=1]を、その過渡期に両方追記しとけばよいんじゃない?という変遷があったようでRaspberry Pi 3 Model B/B+に至っては、後者すら追記せずとも1ポート1.2A出力となっているとのことですが、http://morinezumiiii.hatenablog.com/entry/2018/05/16/000658にもあるように、今回は、後者の追記が必要だったようです。

 ただ、それでも、なぜか、キーボード、マウスをラズパイUSBポートに直接挿すと再起動問題が再燃しますが、USB HDD以外をUSBハブに挿すとバスパワーでも正常に機能します...。

 まさかとは思いますが、もしかして...

 ラズパイのUSBポートに簡易電圧・電流計を介してみてもそんなことはないものの、内部的には、用がなくても全ポート1.2A出力していることになっていて2ポート2.4A、3ポートで3.6A、4ポートで4.8A!わー大変だ!となっているとか...?

 USBメモリでは起こらず、USB HDDで起きることから、1つ電流を多く消費する機器を付けた場合に限定で。

 その計算でいくとUSBハードディスク1つ(ラズパイ3B+と当該HDDで実測1.2A程度だった)、あとUSBハブだけなら2ポート2.4Aだから電源アダプタ5V/3Aなら余力が、5V/2.5Aでもギリギリ微妙なところ、キーボードとマウスを直挿ししたら3.6Aでオーバーヒート...と辻褄は合い、あながち的外れでもないような...。

 ラズパイには、そもそもmicroSDカード、USBメモリHDDケース(基盤)との相性の他、USBハブとも相性がある模様です。

 よって相性が良ければ正常に機能するという、ある種、運任せな部分も...。

 ...んーーー、いけたかと思いきや、再起動させると電源が落ち、改めて途中まで上がったと思ったら、また電源が落ち、そこから再起動してログイン画面が表示されたり、無線LANに繋がっていなかったりする症状が出ることも...。

 やはり、起動時は、モニタを接続している場合は、これもOFF、ラズパイのUSBポートには、USB HDDのみ挿し、起動後、必要ならモニタをON、直接なり、USBハブを介すなりして他のUSB機器を接続した方がよさ気。(もちろん、集中or個別スイッチ付きUSBハブなら全ポートOFFで起動、起動後ONでも可。)

 ...、モニタをOFFにしておくと起動後、ONにしてもNo signalとなり、表示されない...他方、VNCでは表示される...、どっかにしわ寄せがいくのか...いや、もしかして、このHDDが壊れてるのか?あれこれ錯綜して何がどうなのか、わからなくなってきました...。

2018/12/11

 無線LANについては、Raspbianに起因する模様

 USB HDDでもHDMIケーブルの接続及びモニタ(LG.Philips製LP154WX4-TLE1 + LCDコントローラー)の電源は入れておいても起動できることを確認。

 4年も前に書かれたhttp://marshland.hatenablog.com/entry/2014/09/21/143716に倣ってUSBポート1つにつき0.6A出力を1.2A出力にできるということで未だに有効なのかは不明でしたが、[/boot/config.txt]に[safe_mode_gpio=4]と[max_usb_current=1]を追記してみました...

 が、もう少しちゃんと調べるべきでした...ハマった...もちろん自己責任。

2018/12/05

 1度再起動してから、改めてpoweroffしてみるとUSB HDDの電源が一度落ちて、また電源はONにはなるものの、再起動はしなくなりました。

 ただ、違う問題が起きました。

 この設定を行なう前にはなかった1〜2度ブートに失敗する、無線LANにつながらない(もちろんLANケーブルつないで有線にすればつながるが)、既に設定済みのキーボードレイアウトが有効になっていない、fcitx設定が起動しない等。

 キーボードとマウスを外したら起動したりすることもあるので、今となっては、先の設定は、有効ではないか、ラズパイもパワーアップしたので更なる手立てが必要なのか、先の設定は元に戻しつつ...、やはり、なんらかの対策が必要なようです。

 う...設定をコメントアウトしただけじゃダメみたいです...同じ症状になりました...設定値をデフォルトに戻せばいけるのか...デフォルト値って何...。

 あ、初期モデルあたりは、[safe_mode_gpio=4]、ラズパイ1B+や2Bでは、[max_usb_current=1]となり、その中間で両方書いておけば...的な発想が生まれ...、で3 Bや3 B+でどうなったのか...。

 あ!http://akkiesoft.hatenablog.jp/entry/20140727/1406443999によれば、(2017/1/5追記)libraspberrypi-bin-1.20161020-1以降のファームウェアでは、本記事にあるmax_usb_current=1も不要になり、デフォルトで有効==最初から1.2A供給に対応とありました...が、http://morinezumiiii.hatenablog.com/entry/2018/05/16/000658には、それでもArch Linux ARMでは、max_usb_currentが必要だったとあり、https://www.nabeta.tk/nblog/?p=623によれば、Rapberry Pi 3はデフォルトで1.2Aだから設定不要とあり、https://www.yslabannex.net/?p=1177では、3 B+も明記された上で設定不要と...どっち?

 必要ないとしたら、どうりでラズパイ3B+の/boot/config.txtにこれら設定値がなかったわけですねとなるわけですが...。

 うぅ...何れにせよ、元に戻したい場合の初期値は...そもそも情報の大元は!?

 ちなみに/boot/config.txtを書き換えると次回起動時のみ、セーフモードっぽい解像度がおかしく、文字も見づらい状態で起動することに気づき...あ、safe_mode...を設定しちゃったからか...。

 そもそもキーボードとマウスを外し、VNCで操作していた時は、起動はスムースで電源を落としたつもりが、再起動...起動後に接続する分には大丈夫なキーボードとマウスも起動時に接続するとデスクトップ起動直前でリブートしたりしたわけで...。

 ブート時は、キーボードとマウスも負荷となるほどギリギリなのかも...とキーボードとマウスを外し、USB HDDのみで起動してみたら、無線LANにもつながり、キーボード設定も反映された状態になりました。

 1ポート1.2A以前に、USB機器によっては、複数のUSBポート全体、無線LANも含むとなおさら、電源容量が足りなくなるケースがあるようでUSBハードディスク以外にUSB機器をつないでいると動作が不安定になるのでブート時は他のUSB機器は、外しておく必要がありそうです...3B/3B+標準搭載のWiFiも結構な電流を要しますしね...。

 尚、この時、safe_mode_gpio...はコメントアウトしたのですが、セーフモードで起動、その後は、大丈夫かと思いきや、何度起動してもセーフモード.../boot/config.txtの変更が反映されていない模様...。

 その後fcitxは、メニューだけが無効になっているだけでコマンドfcitx...じゃなく、fcitx-configtoolコマンドで設定画面が開き、日本語キーボードを設定したはずが、英語キーボードになっていたので英語キーボードを削除、日本語キーボードを追加、一番上へ移動で設定できましたが、apt remove --purgeして改めてインストールしてもメニューは効かず...あえてデスクトップに追加してテキストエディタで開いてみると...Exec=fcitxになってる...fcitx-configtoolじゃないからですね...なんでこんなことに...。

 ちなみにfcitx-configtool(fcitx設定画面)のinput methodなどは、Raspbianだと?fcitx、fcitx-mozcなどをインストールしただけでは、存在しないようでapt-cacheで探してあれこれやってたら、いつの間にか設定値が出てきました...。

 更にhttp://igarashi-systems.com/sample/translation/raspberry-pi/configuration/config-text.htmlでvcgencmdというコマンドを知り、全て表示されるわけではないとしながらも[vcgencmd get_config 設定]とすると現在の設定値がわかるとのことで先の2つを確認するとコメントアウトした[safe_mode_gpio]は[0]に、[max_usb_current]は[unknown](そんなん知らね)となりましたので以後、これらの影響は考えなくて良さそうです。

 ふぅ...不要とはいえ、vcgencmdに知らないと言われたとは言え、あると状況が改善した気がしなくもない部分もあり、[max_usb_current=1]は有効にしたままな一方、まだ、復旧させたり、見直したりしなければならなそうな点はありますが、とりあえず。

 結局のところ、ここで当初記事にした通り、少なくとも電源アダプタなしのUSB HDDにおいては、電源容量(というか電流)不足はありますね。

USB規格の電流上限超過

 そこで要求スペックには届かないものの、サーバとして運用中のRaspberry Pi 2 Model Bで使っている2.4A AC-USB充電器にUSB電圧・電流計を介し、microUSBケーブルで電源供給する恰好で起動時の電圧・電流の最大値を計測してみたところ、電圧・電流切り替え表示タイプなので正確ではないものの、ラズパイ3B+とUSBメモリだと0.6A程度、USBハードディスクだと1.2A程度であることがわかりました。

 これは、USB HDDをブートディスクとすると少なくとも600mA消費していることになるわけでパソコン、よってラズパイもUSB規格からすると1ポート350mA〜最大でも500mAという上限を超えていることになるので、ウォッチドッグタイマーが働いてリセット、もしくは、暴走しても当然と言え、冒頭の症状も頷けます。

 改めてUSBポートに電圧電流計を介しUSB HDDのみ挿してブートしてみると目視できる限りにおいては、最大630mA(0.63A)でした。

 一方、USBポートに電圧電流計を介しUSBメモリのみ挿してブートしてみると目視できる限りにおいては、なんとHDDの1/10以下の最大60mA(0.06A)でした。

 つまり、ラズパイのUSBポートから電源供給を受ける形でUSBハードディスクを起動ディスクとして使うのは無理があることになります。

2018/12/05

 出力を1.2Aにできれば、改善できるのかと思いきや、前述の通り、Raspberry Pi 3B/3B+では、デフォルトでそうなっているらしいですし、そもそも再起動問題はあったものの、相性さえ合えば、USB HDDブート自体は難なくできていたわけで、vcgencmdには[max_usb_current]なんて知らないって言わつつも[max_usb_current=1]を強行設定してみても勝手に再起動したり挙動は不安定なままですし、他のUSB機器を挿すと容量オーバーらしく、WiFiもつながらなくなるなど、より不安定になるので、これだけを見るとポートあたり1.2A云々の話ではない模様...。

2018/12/07

 USBメモリのブートはラズパイに限らず当たり前にやっていた自身も、これまでモチベーションがなく、USB HDDの起動は、今回初めて思い立ったのですが、改めてぐぐってみるとUSB接続のHDDブートは、イレギュラーな行為のようで情報が少ない、できたというのものは消滅していたりと尚更...。

 ということは、理論上できると想定した後述の余力のあるACアダプタを持つ外付けHDDやセルフパワーのUSBハブがあっても、そもそもダメかもしれませんね...。

回避策・対策

 回避策となり得るのは、次のようなものでしょうか。

  1. USBハードディスクは使わない
  2. USBハードディスクからのブートは諦め、ストレージと割り切る
  3. 余裕を見て概ね出力2A以上のAC電源アダプタから電源供給可能なHDDケースやUSB HDDを使ってブートする
  4. 余裕を見て概ね2A以上出力可能なポートを持つUSBハブにUSB HDDを接続し、ブートする

 コストとしては、1から順に上がっていきます。

 結論から言うとパソコンとして使う場合、1は微妙、果たして出力電流仕様のみで解決できるのか?事前情報から、そうした機器を特定できるのか?という意味で3と4は厳しそう、2は、USBメモリ、USB HDD、キーボード、マウス...と考えるとUSBハブも必要となると思われますし、USBメモリも相性がシビアで選択が難しいですが、それでも現実的な解は、2かと思います。

USBハードディスクを使わない

 USBハードディスクを使わない場合、Raspberry Piのバージョンにも依存しますが、次の3択となるでしょう。

  1. microSDカードにブートパーティション・システムパーティションを入れ、microSDブート
  2. microSDカードにブートパーティション、USBメモリにシステムパーティションを入れ、microSDブート
  3. USBメモリにブートパーティション・システムパーティションを入れ、USBブート

 ブートのみの用途ならまだしもmicroSDカードのみで読み書きの多いOSとしての運用となる1項は耐久性とコストからして厳しいかと。

 2項のブートパーティションをmicroSDカード、システムパーティションをUSBメモリを併用する方法ならRaspberry Pi 2 Model Bでも実現可能ですが、1項に比し、若干コストアップにはなります。

 3項のUSBメモリのみでの運用が3択の中では、無駄がなく、安定していると言えるでしょうが、Raspberry Pi 3(後戻りできないが1回限りならUSBブート可能な設定ができる)か3 Model B+でしか使えません(2Bの最新カーネルではUSBブート可能という噂も)、ただ、コストは、1項と遜色ないでしょう。

 何れにしても単位あたりのコストからするとHDDよりは高い...が、別途、外付けHDDを用意するにもコストはかかるので想定する運用状況とコストとの兼ね合いでの判断になります。

USB HDDはストレージとして使う

 USBハードディスクをストレージと割り切る場合もブートに関しては、前述の通り選択肢は3つとなるでしょう。

 ちなみに自身は、Raspberry Pi 2 Model Bにセルフ・バスパワーながらバスパワーのみで十分なUSBハブを介してWD製外付けHDD 2TBを接続、サーバとして、とは言え、常時稼働ではなく、必要な時のみ電源ONする恰好で2年半以上運用していますが、順調です。

専用電源を持つUSB HDDでブートする

 余力を持って出力1A〜2A以上のACアダプタ付きHDDケースか、外付けHDDからブートできる可能性がありますが、悩ましいのは、全ての機器でブートが可能とは限らないことです。

 録画向きであることを謳う外付けHDDは多い一方、ブート可能であることを謳うものは、多くはなく、情報がない場合、人柱覚悟で自分で試すしかありません。

 また、ブート可能であることがわかっているとしても、それが、Windows、Mac、せいぜい一般的なLinuxの話だとするとRaspbianを始めとするRaspberry Pi用OSのブートが可能か否かは、別の話です。

 なぜなら、Raspberry Piのブートに使う場合、パソコンとは違ったmicroSDカード、USBメモリ、USBハードディスク(内蔵基盤や出力仕様)との相性があり、結構シビアだからです。

 現にラズパイとUSBメモリの相性問題には遭遇済み、また、自身が買ったHDDケースの2つに1つしかRaspberry Piのブートには使えませんでしたし、5割なら良い方です、が、冒頭述べた通り、電源アダプタから供給できるタイプではない(電源をラズパイのUSBポートに完全依存するタイプである)為、そのままでは、常用できる状況ではありません。

 よってRaspberry Piのブート時に電源アダプタから十分な電流を出力できるUSB HDDを見つけることができるか、そしてコスト的に見合うかにかかっています。

出力十分なセルフパワーのUSBハブにUSB HDDを挿してブートする

 余力を持って出力1A〜2A以上の出力ポートを持つセルフパワーのUSBハブにRaspberry Piをブート可能なUSB HDDを接続すれば、起動できる可能性がありますが、それ以外の要件含め、相性の良い両者を見つける必要があります。

 実際、以前買ってRaspberry Pi 2 Bのサーバで使用中、ブート可能という説明はないものの、出力5V/2.3Aの電源アダプタ付きでセルフパワー時:4ポート合計2000mA以内と専用に使えば、いけそうな仕様のiBUFFALO USB2.0ハブ BSH4AE06BKに一応ラズパイをブートできた先のUSB HDDを接続して試したところ、ブートはできますが、やはり、自動再起動問題は解消しませんでした。

 尤も4ポート合計2000mA以内とあるものの、1ポートなら2000mA可能という記載があるわけではなく、1ポートの最大出力仕様は不明、仮に単純割で1ポートあたりMAX 500mAなら、やはり、このUSB HDDでは、容量不足となるわけで...。

 これを踏まえて、まず、2つの内、1つはブートできた自身のケースのようにRaspberry PiのOSをブートできるHDDケース+内蔵HDD、もしくは、外付けHDDが必要です。

 前段述べた通り、事前情報のみから、これを見つけるのは、意外と難しいかもしれません。

 もし、見つかれば、あとは、セルフパワーで十分な電流出力ポートを持つUSBハブがあればよいことになります。

 が、実際探してみると全てのポート合計の出力仕様は記載があっても1ポート最大どれほどかの情報がなかったり、電源アダプタが別売りで電圧仕様の記載はあるにしても、電流仕様はなく、仮に高出力の電源アダプタを調達したとしても、肝心なそのUSBハブ自体の性能がよくわからないというものも。

 スマホやタブレットが全盛の昨今、充電需要で十分な出力ポートを持つUSBハブもあるだろうと思いきや、それら用途には、AC-USB充電器やモバイルバッテリーを使えと言わんばかりにUSBハブで適当なものは、あったとしても見つけにくい状況にあります。

 ただ、USBハブに充電ポートが付いたものは増えているようで1Aとか2A、3Aの出力が謳われていますが、この充電ポートは充電にしか使えないのか?起動にも使えたりするのか?できるとしたら...。

 USBハブとUSBハードディスクの相性の良し悪しというものの有無も気になります。

 もし、可能なハブが存在し、うまく見つかれば、あとは別途用意するはずの外付けHDDもしくは、HDDケース+内蔵HDDを合わせて予算的に見合うかという判断になります。

結論

 いろいろ考えると、やっぱり、USBメモリでブートしてUSB外付けHDDは、ストレージとして使うのが無難なのかも...。

 ただ、USBメモリもラズパイとの相性があって、そもそも起動しないものもあれば、起動はしても操作感がもっさりする遅いものもあり、選択は難しいのですが...。

ホーム前へ次へ