コンテンツへスキップ

Raspberry Pi 3 B+ のOSカーネルバージョンアップ

Jetson Nano のUbuntuやIntel NUCに入れたUbuntuを整備していて、Raspberry PiのOSバージョンが気になったので、ファームウェアのアップデートとOSカーネルのアップグレードを実施。
ちなみにJetson Nanoには、Ubuntu 18.04.3 LTS、Intel NUCにも18.04.3 LTSが導入されています。CPUがことなるので、それぞれaarch64,とx86_64版が入ってます。
同じ世代のOSだと、同じ管理方法となり扱いが楽です。

Raspberry Pi OSアップグレード方法

  1. sudo rpi-update ファームウェアとOSのアップグレード
  2. sudo reboot 再起動
  3. sudo apt update 更新パッケージ更新
  4. sudo apt dist-upgrade -y パッケージアップデート
  5. sudo apt autoremove -y 不要パッケージ削除
  6. sudo apt autoclean 不要ファイル削除
  7. sudo reboot 再起動

sudo rpi-update

Raspberry Pi のOSアップグレードの最初のステップ。Raspberry PiのファームウェアとOSのカーネルをバージョンアップします。

Raspberry Piに導入しているOS

Linux raspberrypi 4.19.85-v7+ #1279 SMP Fri Nov 22 15:41:04 GMT 2019 armv7l GNU/Linux

Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster

Jetson Nanoに導入しているOS

Linux jetson 4.9.140-tegra #1 SMP PREEMPT Tue Jul 16 17:04:49 PDT 2019 aarch64 aarch64 aarch64 GNU/Linux

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"

Intel NUCに導入しているOS

Linux Intel-NUC 4.15.0-1064-oem #73-Ubuntu SMP Tue Nov 12 12:25:21 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"

USBのブートディスクをSD Cardに変更

USBブート構成にしていたUSB HDDの領域をSD Cardにコピーしました。
通常の記事は、別方向(ノーマルのSD CardからUSB HDDへクローン作成)ですが、
この記事は、逆方向となります。
実は、Intel NSCが不安定だったり、USB Cameraカメラが不安定だったりと、実は、USB接続機器が不安定な事象が続きました。
この手順でSD Cardブート構成に戻すと安定稼働となりました。

Raspberry PiにSD Card Copierを導入し、ディスクコピー/クローンを作成しました。

  • 小さい容量のSDカードにコピー
  • USB HDDでブート中のシステムで実施(稼働中システムのブート領域をコピー)

コピー元ディスク(USB HDDディスク)

/sda1がブート領域、/sda2がルート領域です。

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: SPZX-00Z10T0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5d7437c0

Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 194559 192512 94M c W95 FAT32 (LBA)
/dev/sda2 194560 976773119 976578560 465.7G 83 Linux

コピー先SDカード

Disk /dev/sdb: 119.1 GiB, 127865454592 bytes, 249737216 sectors
Disk model: Flash Reader
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00032c03

SD Card Copierでデータコピー実施

SD Card Copierを起動し、Copy From Device(コピー元)とCopy To Device(コピー先)を選択して、データコピーを行います。

コピー後のブート関係およびマウント関係のデバイスパス変更

コピーして作成した/dev/sdb1のcmdline.txtと、/dev/sdb2の /etc/fstabを変更。

cmdline.txt変更

変更前:

変更後:

/etc/fstab変更

変更前:

変更後:

bootしてこない場合などは、fstabの設定を確認してください。
上手く変更出来ていない事があるようです。

Tensorflowのインストール

Tensorflowは、Kerasのバックエンドに使われていたり、各種機械学習のフレームワークを利用する際に、よく出てきます。
個人的には、GPU対応パッケージが準備されており、そのサポート範囲が広いので重宝しております。

使用できるパッケージ

  • tensorflow - 最新の安定版リリース、CPU のみ(Ubuntu、Windows 用)
  • tensorflow-gpu - 最新の安定版リリース、GPU サポートを含む(Ubuntu、Windows 用)
  • tf-nightly - ナイトリー ビルドのプレビュー、CPU のみ(不安定)
  • tf-nightly-gpu - ナイトリー ビルドのプレビュー、GPU サポートを含む(不安定、Ubuntu と Windows 用)

Pip/Pip3コマンドでTensorFlow/TnesorFlow-GPUをインストール

インストールコマンドのサンプルを記載しておきます。

以下が、Windows環境にGPU対応版をインストールした場合です。

参考にさせて頂いたサイト

pip での TensorFlow のインストール

NVIDIA Jetson Nano

NVIDIA CUDA Toolkit 10.0 に対応しcuDNN 7.3など、機械学習時にデファクトスタンダートとなっているライブラリやフレームワークが、利用可能になっています。
TensorFlow や PyTorch、Caffe、Keras、MXNet などの機械学習 (ML) フレームワークに対応しています。ネイティブにインストールすることができます。

Raspberry Pi with NCS2 VS Jetson

導入時に気になったのは、開発者コミュニティーです。
Raspberry Piは、歴史もあり、世界中の方々が同じような悩みを持ち、各種解決策がWEBに公開されています。一方で、NVIDIA Jetson Nanoは、どの程度このようなコアユーザーによる情報公開などがされているのか気になりました。

結論からするとNVIDIAの社員や関係者が協力にサポート、情報発信。
さすが、大手ですね、ハードの共有体制もRaspberry Pi と比べて感心しましたが、開発コミュニティーへの社員の書き込みが、本当にすごい。
オープンコミュニティの新しい形にも見えました。ハードでビジネスは成立し、技術者が率先して、コミュニティに参加。これは、弱点と感じた部分を、むしろ強み(正しい情報、責任感ある素早い対応)にしております。
あとは、ケースやファンなど、市場の大きさに合わせて、周辺のアクセサリーメーカーが追従してくれば、IoTにおけるローエンドエッジデバイスの筆頭になりそうです。
個人的には、Intel NCS2も引き続き注目して行きます。OpenCVのDNNに対応していたりと、まだまだ一長一短があるように感じます。
ただし、機械学習や推論を目的としたIoTデバイスの本命は、Jetson Nanoになりそうです。IntelのNCSはベアボーン系のミニPCかな。

関連記事:

NVIDIA Jetson Nanoで機械学習(推論)

Movidius Neural Compute Stick2とRaspberry Pi 3B +も利用しておりますが、GPU/推論向けデバイスが一体化されており、少しサイズは大きいです。
USB3.0などI/Fに差分もあるので、Raspberry Pi 4Bと比較したほうが良いかもしれません。ただし、Raspberry Pi 4B と NCS2を同時導入すると考えると、Jetson Nanoのほうがコストパフォーマンスが良いと思いますし、便利なフレームワーク利用により、開発時の手間(コスト)も考えると、機械学習にはNVIDIA Jetson Nanoがベストな選択と思います。NVIDIAですから。

Jetson Nano、Raspberry Pi 3B + with NCS2 速度比較

めざましじゃんけん時に取得したWEBカメラ画像を216枚で画像認識エンジンを動作させた際の性能比較です。
以前同じテストを用いて、NCS2(Movidius Neural Compute Stick 2)導入により十分高速化された結果となりました。今回は、その結果と比べても十分に魅力的なJetson Nanoの結果が出ました。

参考記事:ディープラーニング向けUSBアクセラレーターNeural Compute Stick 2ー

Windows(GPU未使用)
Core i7 6700/(Skylake) クロック周波数:3.4GHz
15秒 opencv.dnn
Raspberry Pi 3
Model B+
ARM Cortex-A53 1.4GHz
785秒 opencv.dnn
Raspberry Pi 3
Model B+
ARM Cortex-A53 1.4GHz
+  Movidius Vision Processing Unit(Myriad 2)
105秒 opencv.dnn
NVIDIA Jetson Nano
Quad-core ARM A57 @ 1.43 GHz
109秒 opencv.dnn
NVIDIA Jetson Nano
Quad-core ARM A57 @ 1.43 GHz
+ 128-core Maxwell
46秒 Keras-YOLO

created by Rinker
NVIDIA
¥15,600 (2020/09/26 22:20:41時点 Amazon調べ-詳細)

関連記事:NVIDIA JETSON NANO

Intel Neural Compute Stick 2

Rapberry PiからPHPでメール送信(SSMTP経由)

PHPの利用するコンフィグファイルを確かめます。
コマンドラインで実行する場合は、WEBサーバで利用するコンフィグファイルは、通常異なります。

コマンドライン向けPHP構成ファイルphp.iniのsendmail_pathを変更

PHPのメール送信サンプルスクリプト

メールヘッダーにマルチバイト文字を利用する際は、mb_encode_mimeheaderを用いて、エンコーディングを行います。

SSMTP利用時のFromアドレス

SSMTPの設定によって、メールを送付するプログラムで指定したFromアドレスが無効化されます。プログラムで指定したFromアドレスを有効化するために、ssmtp.confの設定を確認します。

2019/10/08 EaseUS様より連絡いただき、ダウンロードサイトのURLを日本語ページに修正しました。

Raspberry Pi ブートUSB HDDから異音

SDカードブートから変更:Raspberry Pi 3B + SDカードブートからUSBブートへ変更

結論として、HDDブート構成で運用しておりました。
SSDとHDDでのブート構成を比較し、速度的にも理論上最速。USB2.0接続の時点で、HDD性能で十分(HDD以上の性能はUSB2.0がボトルネック)

SDカード
CLASS6
6MB/S
SDカード
CLASS10
10MB/S
USB2.060MB/S
SSD470MB/S
HDD140MB/S
USB3.0(参考)640MB/S

突然の異音、たしかにHDDとSSDを施行した際に、試行で利用した10年前ぐらいのHDDを利用しておりました。

Raspberry Pi ブートHDD交換方法

Raspberry Piに新規HDDを接続し、コピーする方法もありますが、前回Windowsの起動ディスクを交換する際に利用した「EaseUS Todo Backup」を用います。
EaseUS Todo Backup Free
関連記事:Windows起動ディスク交換

Raspberry Pi システム停止

動作中HDD情報を確認し、Raspberry Piを停止します。

Raspberry Pi ブートHDDのクローン作成

利用したいたRaspberry Pi ブートハードディスクと新規ハードディスクをWindowsに接続し、EaseUS Todo Backupを用いて、ディスクのクローンを作成します。

 

Raspberry Pi クローン後HDDで起動

WESTERNDIGITAL HDD 内蔵ハードディスク 2.5インチ 1TB WD Blue WD10SPZX

WESTERNDIGITAL (WD)のHDDへ交換しました。
はじめは、TOSHIBA 東芝 2.5インチ 1TB HDD MQ04ABF100を購入予定でした。
各種口コミにおいて、SMR方式(プラッタあたり1TB、1TBのHDDならばプラッタ1枚)なので、ランダムアクセス時の性能が安定しないとの書き込みや、ベンチマークが多くみられました。比較的、最近リリースされた製品であり、価格も魅力的だったのですが、今回は、WDのHDDとしました。

Benfei SATA USB変換アダプターもHDDのクローンを作成する際に利用するのに同時に購入しました。

Benfei SATA USB変換アダプター 2.5インチSSD /HDD用 SATA3 ケーブル コンバーター 5Gbps 高速 SATA USB3.0変換ケーブル 給電不要[un]

Raspberry PiのApache2にドメイン名指定の仮想ホスト

サブドメインを用いて、Apache2のVirtualHostを設定します。
Raspberry Piで運用している「aaa.com」がApacheのメインサイトに設定されている環境で、「bbb.aaa.com」のサブドメインに新規WEBサーバーバーチャルホストを設定します。WEBリクエストのURLの違いにより、表示する/利用するWEBサーバーの切替が行われます。

前提条件など

VirtualHost向け設定ファイル

テンプレートファイル「000-default.conf」をコピーして、今回作成するVirtualHost設定ファイルの雛形を作成し、設定ファイルを作成します。

コピーして作成したbbb.aaa.com.confファイルを編集。

VirtualHost設定の有効化とApache2への反映

a2ensite コマンドを用いて、作成した設定ファイルをAvailable からEnabelへ。

Apacheを再起動して、VirtualHostは利用可能となります。
sudo service apache2 restart

NVIDIA Jetson NanoのCUDAが最適では?

4GB Raspberry Pi 4 Computer Model Bをついに導入かと秒読み状態でしたが、
そういえば、NVIDIAから気になるシングルボードNvidia Jetson Nano。
少し調べましたが、NVIDIA JETSON NANOが正解では?

「Raspberry Pi 4 model B」の発売日が、2019年6月24日。
「NVIDIA JETSON NANO」の発売発表が、2019年3月。
ほとんど差がありません。しかも、国内での発売状況を見ると、しっかりとリリースに向けて準備できているNVIDIA。更に数多くの上位機種。品質面も安心?

すべての機械学習や画像検出を、シングルボードコンピューターで動作させることを考えている方におすすめだと思います。

画像検出のFPSパフォーマンス

一目瞭然、ここまでの速度が達成出来るんだ。
しかも、こんなに多くのフレームワークに対応している。
たしかに、NVIDIA CUDAですものね。。

Raspberry Pi3やIntel Neural Compute Stick2などとの比較もバッチリです。
Raspberry Pi 4とIntel Neural Compute Stick2の組み合わせを考えましたが、おそらく、NVIDIA128CUDAコアに、数多くのフレームワークサポート。
どちらが安全な買い物かと考えると、答えは簡単と思います。

さて、Intel Neural Compute Stick2をすでに導入している私のシステムですが、そのような状況下でもNVIDIA Jetson Nanoの導入を判断しました。

NVIDIA Jetson Nano仕様

GPU128 基の NVIDIA CUDA® コアを実装した NVIDIA Maxwell アーキテクチャ
CPUクアッドコア ARM® Cortex®-A57 MPCore プロセッサ
メモリ4 GB 64 ビット LPDDR4
ストレージ16 GB eMMC 5.1 フラッシュ
ビデオ エンコード4K @ 30 (H.264/H.265)
ビデオ デコード4K @ 60 (H.264/H.265)
カメラ12 レーン (3x4 または 4x2) MIPI CSI-2 DPHY 1.1 (1.5 Gbps)
コネクティビティギガビット イーサネット
ディスプレイHDMI 2.0 または DP1.2 | eDP 1.4 | DSI (1 x2) の 2 つ同時
UPHY1 x1/2/4 PCIE、1x USB 3.0、3x USB 2.0
I/O1x SDIO / 2x SPI / 4x I2C / 2x I2S / GPIOs
サイズ69.6 mm x 45 mm
コネクタ260 ピン エッジ コネクタ

NVIDIA Jetson NanoとRaspberry Pi4との比較

Raspberry Pi 4NVIDIA Jetson Nano
CPUQuad-core ARM Cortex-A72 64-bit @ 1.5 GhzQuad-Core ARM Cortex-A57 64-bit @ 1.42 Ghz
GPUBroadcom VideoCore VI (32-bit)NVIDIA Maxwell w/ 128 CUDA cores @ 921 Mhz
Memory4 GB LPDDR4**4 GB LPDDR4
NetworkingGigabit Ethernet / Wifi 802.11acGigabit Ethernet / M.2 Key E (for Wifi support)
Display2x micro-HDMI (up to 4Kp60)HDMI 2.0 and eDP 1.4
USB2x USB 3.0, 2x USB 2.04x USB 3.0, USB 2.0 Micro-B
Other40-pin GPIO40-pin GPIO
Video EncodeH264(1080p30)H.264/H.265 (4Kp30)
Video DecodeH.265(4Kp60), H.264(1080p60)H.264/H.265 (4Kp60, 2x 4Kp30)
CameraMIPI CSI portMIPI CSI port
StorageMicro-SDMicro-SD
created by Rinker
NVIDIA
¥15,600 (2020/09/26 22:20:41時点 Amazon調べ-詳細)

アダプタでの給電を利用する方は、ジャンパーピンが必要です。

created by Rinker
BULLET
¥665 (2020/09/26 12:53:48時点 Amazon調べ-詳細)

ラズベリーパイ4 コンピューターモデルB

基盤のパワーアップもしていたし、発表当初より気になっていた、Raspberry Pi4が手に入らないかと、Amazonを探したら、すでに発売されていますね。

以前の記事:1GB,2GB,4GBメモリサイズが選べるRaspberry Pi 4、3 +との比較情報

確かに、9月発売ぐらいが予想されていたから、ちょうど今のタイミングかもしれませんね。
残念ながら、公式のHPに4Bの日本での認証取得は掲載されておりませんでした。

https://www.raspberrypi.org/documentation/hardware/raspberrypi/conformity.md

Raspberry Pi 4 Computer Model Bの特徴

  • CPU
    Raspberry Pi 4 Model BのCPUは、高性能スマートフォンなどにも採用されている最新のARM Cortex-A72 アーキテクチャーを採用し、よりリアルPCへと進化しています。
    動作クロックもPi3の1.2GHzから1.5GHzになり、アーキテクチャーの更新と合わせて異次元のスピードとなっています。
  • RAM
    旧モデルまでの1GBに加え、2GB、4GBのモデルがラインナップに加わりました。
    AI、データベースなど、よりリッチなアプリケーションで応用いただけます。
  • ビデオ出力・GPU
    搭載GPUは、4Kp@60をサポートし、新たにH.265デコード、OpenGL ES 3.0などにも対応しました。
    ビデオ出力は、より小型なコネクターのmicro HDMIが2つ搭載され、2画面出力にも対応しました。
  • USB 3.0
    新しいSoCになり、I/O周りも高速化し、ついにUSB 3.0に対応しました。
    USBブートなどもより高速になり、さらに便利になりました。
  • ネットワーク
    Gigabit Ethernet(有線LAN)も、Pi 3B+の300Mbpsから、1000Mbps(論理値)に大幅スピードアップしました。
    また、Bluetoothも対応バージョンが5.0にアップし、2倍の転送速度となりました。
  • 電源入力コネクター
    電源入力コネクターがUSB type Cに変更されました。 micro USBに比べ使い勝手もよく、より大電流を確実に給電できるようになりました。
    なお、Raspberry Pi 4 Model Bの電源要件は5V 3.0Aと旧モデルより高くなっています。
  • ビジネス ユース向けサポート
    Raspberry Pi 4 Model Bの供給継続予定は少なくとも2026年1月まで、また動作温度範囲の目安が0~50℃と、ビジネス ユースでも安心してご採用いただけます。
  • 互換性
    Raspberry Pi 4 Model Bは、旧モデルからビデオ出力、電源入力コネクターなどが変更されたため、 ケース、電源など一部のオプションに互換性がなくなりました。
    ただ、サイズ、形状、GPIOピンの仕様などには変更がないため、ほとんどのHAT、モジュールなどは、 旧モデルと共通のものが使用できます。

仕様

基本仕様

SoCBroadcom BCM2711
CPU1.5GHz クアッドコア Cortex-A72(ARMv8、64bit)
GPUデュアルコア VideoCore IV®
OpenGL ES 3.0対応、ハードウェアOpenVG対応、1080p60 H.264 デコード、 4Kp60 H.265 デコード
メモリー1GB DDR2 450MHz 低電圧 SDRAM
2GB DDR2 450MHz 低電圧 SDRAM
4GB DDR2 450MHz 低電圧 SDRAM
電源USB type Cソケット 5V 3.0A / 2.54mm ピンヘッダー / PoE(要オプションPoE HAT)
サイズ85 × 56 × 18mm

インターフェース

イーサネット10/100/1000 Base-T RJ45 ソケット
無線LAN(WiFi)IEEE 802.11 b/g/n/ac  2.4/5GHz ディアルバンド
BluetoothBluetooth 5.0, Bluetooth Low Energy
ビデオ出力micro HDMI、コンポジット 3.5mm 4極ジャック(PAL、NTSC)、DSI
オーディオ出力3.5mm 4極ジャック、HDMI(ビデオ出力と共有)、I2Sピンヘッダー
USBUSB 2.0 × 2
USB 3.0 × 2
GPIO コネクター40ピン 2.54mm ピンヘッダー(GPIO×26 3.3V 16mA、UART、I2C、SPI、I2S、PWM、5V出力(使用電源に依存)、3.3V出力 50mA(GPIO信号との総和))
メモリー カード スロットmicro SDメモリーカード(SDIO)

Raspberry Pi 4のUSB Type-C充電不具合(eMaker)

動作検証出来ておりませんが、公式もこの不具合を認めており、導入時には注意が必要です。

不具合内容は、ケーブルの電気的特性などを記録するeMakerを内蔵したUSB Type-Cケーブルを利用すると、Raspberry Pi 4に給電が出来ません。Raspberry Pi 4側の設計がUSB Type-Cの仕様に準拠していないことが要因なので、eMakerを内蔵しない方法で電源を供給する必要があります。

eMakerに対応していないケーブルを探すのも良いのですが、スペックの低いケーブルを探すのも難しく、「USB-AのACアダプタ + A to Cケーブル」を使用する方法が簡単と思います。3A出せるUSB-AのACアダプタが必要になりますが、Amazonなどで感t何位見つけることが出来ます。

created by Rinker
Amazonベーシック(AmazonBasics)
¥898 (2020/09/27 07:31:46時点 Amazon調べ-詳細)

 

dnsutilsをRaspberry Piに導入

GMO とくとく BB 固定IPアドレスの逆引き設定などをしていると、ネットワークユーティリティnslookupやdigなどが利用したくなります。
Raspberry Piには、デフォルトで導入されておらず、自分でインストールする必要がありました。

nslookupとdig実行例