Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
999の夜
~Raspberry Pi の堅牢性向上手法~
たたかえ!オープンフォース #72
Version 1 2015.09.19
こえどらぐ オフなあつまり #158
Version 1.1 2015.10.12
AKBROBOT #4...
Raspberry Pi
● ワークショップなど
● 小学生も!!
世界初?
CUI のみで
入門させる
RaspberryPi の
本!!
オープンフォース
● 秘密結社
● 勉強会などを開催する非営利組織
あくのはかいかつどう
● (オープン)の
● (イノベーション)活動
● OSSを実戦に
今日の発表
● Raspberry Piの
● 動作不良の
● 原因を探ったり
● あれやこれやで
● 対策したり
Raspberry Pi
● あんなこと
● こんなこと
● できるのではないか!
組み込み
● 「これを実現するには100万円
かかります」
● 「こんなのRaspberry Piでできる
んじゃな〜い? 安くしてよ」
● 「死ね」
組み込みボード
● いかにがっちり動かすか
● ウォッチドッグ
● ECC
● 宇宙線
脆弱!
● Raspberry Piはおもちゃ
● まともに動かない(組み込み的
に)
● 動作が変
おもちゃだ!!
● 手に入らない
● 情報公開もない(組み込み的に)
● 電源SWが無い
● SDカード上にルートファイルシステム
● 糞熱設計
● 不安定!!!
● 電源がアホだ!
● レイアウトがクソ
電源
● 最初期から指摘されている
● microUSBコネクタが電源コネクタ
代わり
● ケーブルやUSB電源
● 要5V 1A以上
そもそも
● 5V → 3.3V → 1.8V
● 5Vが落ち込んでも3.3Vや
1.8V系には影響はないはず
● 実際にCPUは動作している
けれどもIO系が
おかしくなっている
LAN対策
● 使っているとしばらくダンマリ
● PINGしているとときどき欠損する
LANがおかしくなるとき
● USB系の異常も同時に出ています
[ 317.308394] ieee80211 phy0: rt2x00usb_vendor_request: Error - Vendor Request9
[ 317.3085...
原因
● smcのLAN9512/4チップである
● Raspbery PiのModel B系統に
採用
● USBコントローラであるが
● LANの機能も入っている
● これの不安定
● 結局USBの不安定ということ
になります。
LAN95...
USB対策
● Raspberry Pi B+に鳴る前は
● Wi-Fiドングルなどをつなげるだけ
で
● CPUリセットがかかっていた!!
330uFの電解コンデンサを
つける
写真は初期バージョンへの対策であるが
最近のRaspberryPiにも効果あり
熱による不安定
● 放熱を妨げない
(RaspberryHabu)
● その後の検証で放熱はLAN9512/9514チッ
プではなくレギュレータかも?
レイアウト!!
ネジ穴
ネジ穴
熱
熱
熱
● 初期は入手性☓
● 電源脆弱(特に初期
Raspberry Pi 2
● 長期で手に入るみたいだ
● 電源が大きく改善
●
SDカードがクラッシュす
る!!
● SDカードをルートファイルシステ
ムに
するなんて
● 書き換え限界があるのに!
案の定
● SDカードがクラッシュする!!
● ところが・・・
● 書き換えエラーではないようだ
● ビットエラーの痕跡が見つからな
い
ちゃんとやるか!
● トラブルシューティング
● クラッシュのパターン
● ある日突然fsck
● その後起動しなくなる
仮説
● 電源を直接断をするオペレーショ
ンの問題ではないか
● fsckは症状が顕在化するだけで過
去のファイルシステムのダメージ
が原因ではないか
まずは再現
● 起動→ファイル書き換え→電源強制断
→次回起動で書き換えが保存されてい
るかどうかをチェック
● fsckを毎回行うように設定
– 他の擾乱を排除する
– 電源はバスから供給
– メディアはsandiskのclass4、4GBに...
ストレステスト
● 200回ほど
● 異常1回のみ
● 書換が反映されていない 1回
● クラッシュ 0回
● 再現できているようには見えない
● (実使用上ではもっと高頻度で起こってい
る)
テストの結論
● SDカードのクラッシュは
● (RasPiのありがちなクラッシュは)
● 書き換え限界によるものではない
● 電源断によるsync失敗によるもの
ではない
では何?
● その後もクラッシュには遭遇せず
1年後
● 電子工作していて
● ショートで電圧降下したときに
● クラッシュが発生した
● 電圧は4.4Vを割り込んでいた
推測
● 5V電圧不足→SDカードのWrite不
良原因?
– 突然の電源断→不整合はタイミングによる
– Write不良→syncをする際に失敗、ないし異常
データの書き込み
● この事象の方がより深刻である
対策
● 5Vバスから電源供給
● 330uF電解コンデンサ
BBBの方がいい!
● banana piの方がいい!
● USBがアレだ!!
パケづまり
● 応答がなくなる!
● 使っているとプチフリ
● vim入力していると有線LANでsshする時
もUSBキーボードで入力するときも同様
にカクつく
● LAN9512/LAN9514チップの問題だろうJK
1:15頃
● VID_20150823_002525.mp4
ところが
● Raspberry Pi Model A+でも同様の
問題が発生。
● LAN9512/9514チップを搭載して
いない
● うーむ。
ちゃんとトラブルシュー
トするか!
● まずはModel B系統からテスト
● 診断しようとすると機嫌が良くなる
● Raspberry Pi Model B+ および 
Raspberry Pi Model B
● UbuntuPCから180...
テスト方法
● scpの転送結果表示や、転送途中の
pingには異常が無い
● vim上でのキータイプインはカクつ
く
原因わかたぽい
● scp fugafuga@hogehoge:/home/fugafuga/test
/dev/null # <- 問題発生しない
● scp fugafuga@hogehoge:/home/fugafuga/test
/ho...
過去のUSBコントローラ
仮説の修正
● 今まで、5Vラインが不安定になる
と 真っ先にLAN9512/LAN9514
チップ周りがコケるイメージだっ
たが
● 回路図上ではLAN9512/LAN9514
には直接5V入ってない。
一方、SDカードは
● 直接BCM2835に接続、5Vライン
はBCM2835に接続。
● ということは、5Vが不安定になる
とSDカード書き込みが不安定にな
り、LAN9812/LAN9514に影響
が出るのでは。
DMA
● 恐らくSDカードアクセス時に割り込み禁止DMA転送を使ってい
て
● SDカード書き込み時にはプチフリが起こる
● SDカードカード書き込みが何らかの原因で時間かかったりコケ
たりしたらLAN9512/9514チップなどの動作に影響...
検証
● あきばおーに行ったら80MB/sec対
応のSanDisk Ultra(Class 10 UHS-
I)が入荷したということで、買っ
てきた。
● 今まで使っていたのはSanDiskの
Class4 のもの。
テスト
● Raspberry Pi 2 Model B
● scp fugafuga@hogehoge:/home/fugafuga/test
/home/pi/test
● vimで「i」キーを押しっぱなしにしてプチフリが起こ
るかどうかを...
プチフリ解消
● 以下の3項目を同時に行う
– ・SDカードを80MB/s対応のClass 10のものに変
更
– ・Raspberry Piの電源供給をGPIO端子からに変更
– ・Raspberry PiのGPIO 5V-GND端子間に15...
今回は8/23にトラシュー
を終えないといけなかっ
たのでここまで。
● VID_20150823_190558.mp4
成果
● 魔と原さんの農業
オートメーション
– 1年程度稼働
● モニタリングポスト
– 一年程度稼働実績
● 某14台クラスターで
クリスマスツリー
– (2ヶ月弱ノートラブル)
組み込み
● 「これを実現するには100万円
かかります」
● 「こんなのRaspberry Piでできる
んじゃな〜い? 安くしてよ」
● 「うっ」
俺たちの戦いはこれから
だ!
● 次回作にご期待ください!
20150919 raspistable (bis)
Upcoming SlideShare
Loading in …5
×

20150919 raspistable (bis)

Raspberry Pi の不安定性ハンティング

  • Login to see the comments

20150919 raspistable (bis)

  1. 1. 999の夜 ~Raspberry Pi の堅牢性向上手法~ たたかえ!オープンフォース #72 Version 1 2015.09.19 こえどらぐ オフなあつまり #158 Version 1.1 2015.10.12 AKBROBOT #40 オープンフォース総統 河野 悦昌
  2. 2. Raspberry Pi ● ワークショップなど ● 小学生も!! 世界初? CUI のみで 入門させる RaspberryPi の 本!!
  3. 3. オープンフォース ● 秘密結社 ● 勉強会などを開催する非営利組織
  4. 4. あくのはかいかつどう ● (オープン)の ● (イノベーション)活動 ● OSSを実戦に
  5. 5. 今日の発表 ● Raspberry Piの ● 動作不良の ● 原因を探ったり ● あれやこれやで ● 対策したり
  6. 6. Raspberry Pi ● あんなこと ● こんなこと ● できるのではないか!
  7. 7. 組み込み ● 「これを実現するには100万円 かかります」 ● 「こんなのRaspberry Piでできる んじゃな〜い? 安くしてよ」 ● 「死ね」
  8. 8. 組み込みボード ● いかにがっちり動かすか ● ウォッチドッグ ● ECC ● 宇宙線
  9. 9. 脆弱! ● Raspberry Piはおもちゃ ● まともに動かない(組み込み的 に) ● 動作が変
  10. 10. おもちゃだ!! ● 手に入らない ● 情報公開もない(組み込み的に) ● 電源SWが無い ● SDカード上にルートファイルシステム ● 糞熱設計 ● 不安定!!! ● 電源がアホだ! ● レイアウトがクソ
  11. 11. 電源 ● 最初期から指摘されている ● microUSBコネクタが電源コネクタ 代わり ● ケーブルやUSB電源 ● 要5V 1A以上
  12. 12. そもそも ● 5V → 3.3V → 1.8V ● 5Vが落ち込んでも3.3Vや 1.8V系には影響はないはず ● 実際にCPUは動作している けれどもIO系が おかしくなっている
  13. 13. LAN対策 ● 使っているとしばらくダンマリ ● PINGしているとときどき欠損する
  14. 14. LANがおかしくなるとき ● USB系の異常も同時に出ています [ 317.308394] ieee80211 phy0: rt2x00usb_vendor_request: Error - Vendor Request9 [ 317.308558] wlan0: deauthenticating from 10:6f:3f:33:ed:1c by local choice () [ 317.319983] usb 1-1: USB disconnect, device number 2 [ 317.320016] usb 1-1.1: USB disconnect, device number 3 [ 317.320274] smsc95xx 1-1.1:1.0 eth0: unregister 'smsc95xx' usb-bcm2708_usb-1t [ 317.331666] ieee80211 phy0: rt2800usb_watchdog: Warning - TX HW queue 0 timek [ 317.367090] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup [ 317.369369] cfg80211: Calling CRDA to update world regulatory domain [ 317.402530] usb 1-1.2: USB disconnect, device number 4 [ 317.512532] usb 1-1.4: USB disconnect, device number 5 [ 317.661689] usb 1-1.5: USB disconnect, device number 6 有線LANインターフェース異常 無線LANドングル異常 USB系全部異常 smsc9512チップ
  15. 15. 原因 ● smcのLAN9512/4チップである ● Raspbery PiのModel B系統に 採用 ● USBコントローラであるが ● LANの機能も入っている ● これの不安定 ● 結局USBの不安定ということ になります。 LAN9512
  16. 16. USB対策 ● Raspberry Pi B+に鳴る前は ● Wi-Fiドングルなどをつなげるだけ で ● CPUリセットがかかっていた!!
  17. 17. 330uFの電解コンデンサを つける 写真は初期バージョンへの対策であるが 最近のRaspberryPiにも効果あり
  18. 18. 熱による不安定 ● 放熱を妨げない (RaspberryHabu) ● その後の検証で放熱はLAN9512/9514チッ プではなくレギュレータかも?
  19. 19. レイアウト!! ネジ穴 ネジ穴 熱 熱 熱 ● 初期は入手性☓ ● 電源脆弱(特に初期
  20. 20. Raspberry Pi 2 ● 長期で手に入るみたいだ ● 電源が大きく改善 ●
  21. 21. SDカードがクラッシュす る!! ● SDカードをルートファイルシステ ムに するなんて ● 書き換え限界があるのに!
  22. 22. 案の定 ● SDカードがクラッシュする!! ● ところが・・・ ● 書き換えエラーではないようだ ● ビットエラーの痕跡が見つからな い
  23. 23. ちゃんとやるか! ● トラブルシューティング ● クラッシュのパターン ● ある日突然fsck ● その後起動しなくなる
  24. 24. 仮説 ● 電源を直接断をするオペレーショ ンの問題ではないか ● fsckは症状が顕在化するだけで過 去のファイルシステムのダメージ が原因ではないか
  25. 25. まずは再現 ● 起動→ファイル書き換え→電源強制断 →次回起動で書き換えが保存されてい るかどうかをチェック ● fsckを毎回行うように設定 – 他の擾乱を排除する – 電源はバスから供給 – メディアはsandiskのclass4、4GBに絞る
  26. 26. ストレステスト ● 200回ほど ● 異常1回のみ ● 書換が反映されていない 1回 ● クラッシュ 0回 ● 再現できているようには見えない ● (実使用上ではもっと高頻度で起こってい る)
  27. 27. テストの結論 ● SDカードのクラッシュは ● (RasPiのありがちなクラッシュは) ● 書き換え限界によるものではない ● 電源断によるsync失敗によるもの ではない
  28. 28. では何? ● その後もクラッシュには遭遇せず
  29. 29. 1年後 ● 電子工作していて ● ショートで電圧降下したときに ● クラッシュが発生した ● 電圧は4.4Vを割り込んでいた
  30. 30. 推測 ● 5V電圧不足→SDカードのWrite不 良原因? – 突然の電源断→不整合はタイミングによる – Write不良→syncをする際に失敗、ないし異常 データの書き込み ● この事象の方がより深刻である
  31. 31. 対策 ● 5Vバスから電源供給 ● 330uF電解コンデンサ
  32. 32. BBBの方がいい! ● banana piの方がいい! ● USBがアレだ!!
  33. 33. パケづまり ● 応答がなくなる! ● 使っているとプチフリ ● vim入力していると有線LANでsshする時 もUSBキーボードで入力するときも同様 にカクつく ● LAN9512/LAN9514チップの問題だろうJK
  34. 34. 1:15頃 ● VID_20150823_002525.mp4
  35. 35. ところが ● Raspberry Pi Model A+でも同様の 問題が発生。 ● LAN9512/9514チップを搭載して いない ● うーむ。
  36. 36. ちゃんとトラブルシュー トするか! ● まずはModel B系統からテスト ● 診断しようとすると機嫌が良くなる ● Raspberry Pi Model B+ および  Raspberry Pi Model B ● UbuntuPCから180Gと10G程度のファイル を有線LAN経由でscp ● 快調そのもの。
  37. 37. テスト方法 ● scpの転送結果表示や、転送途中の pingには異常が無い ● vim上でのキータイプインはカクつ く
  38. 38. 原因わかたぽい ● scp fugafuga@hogehoge:/home/fugafuga/test /dev/null # <- 問題発生しない ● scp fugafuga@hogehoge:/home/fugafuga/test /home/pi/test # <- 問題発生する ● sdカード書き込み時にプチフリ
  39. 39. 過去のUSBコントローラ 仮説の修正 ● 今まで、5Vラインが不安定になる と 真っ先にLAN9512/LAN9514 チップ周りがコケるイメージだっ たが ● 回路図上ではLAN9512/LAN9514 には直接5V入ってない。
  40. 40. 一方、SDカードは ● 直接BCM2835に接続、5Vライン はBCM2835に接続。 ● ということは、5Vが不安定になる とSDカード書き込みが不安定にな り、LAN9812/LAN9514に影響 が出るのでは。
  41. 41. DMA ● 恐らくSDカードアクセス時に割り込み禁止DMA転送を使ってい て ● SDカード書き込み時にはプチフリが起こる ● SDカードカード書き込みが何らかの原因で時間かかったりコケ たりしたらLAN9512/9514チップなどの動作に影響が出るという ことではなかろうか。 ● 参考文献 ● https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=8010&start= ● "FTDI USB Serial Hangs" でも、2014/8/3の書き込みに ● "slow SDs make RPI lose irqs" とありますね。
  42. 42. 検証 ● あきばおーに行ったら80MB/sec対 応のSanDisk Ultra(Class 10 UHS- I)が入荷したということで、買っ てきた。 ● 今まで使っていたのはSanDiskの Class4 のもの。
  43. 43. テスト ● Raspberry Pi 2 Model B ● scp fugafuga@hogehoge:/home/fugafuga/test /home/pi/test ● vimで「i」キーを押しっぱなしにしてプチフリが起こ るかどうかを観測。 ● 2015-05-05-raspbian-wheezy.img を元にして設定。 ● カーネル 3.18.11-v7+。
  44. 44. プチフリ解消 ● 以下の3項目を同時に行う – ・SDカードを80MB/s対応のClass 10のものに変 更 – ・Raspberry Piの電源供給をGPIO端子からに変更 – ・Raspberry PiのGPIO 5V-GND端子間に150μFの 超低ESR固体コンデンサを追加
  45. 45. 今回は8/23にトラシュー を終えないといけなかっ たのでここまで。 ● VID_20150823_190558.mp4
  46. 46. 成果 ● 魔と原さんの農業 オートメーション – 1年程度稼働 ● モニタリングポスト – 一年程度稼働実績 ● 某14台クラスターで クリスマスツリー – (2ヶ月弱ノートラブル)
  47. 47. 組み込み ● 「これを実現するには100万円 かかります」 ● 「こんなのRaspberry Piでできる んじゃな〜い? 安くしてよ」 ● 「うっ」
  48. 48. 俺たちの戦いはこれから だ! ● 次回作にご期待ください!

×