SDTest on Raspberry Pi 4

この記事ではRaspberry Pi 4 Model Bにインストールした Raspbian Buster を使っています。

##下準備
SD Memory Card Formatterをインストール
[SD Memory Card Formatter - SD Association](https://www.sdcard.org/downloads/formatter/)

balenaEtcherをインストール
[balenaEtcher - Home](https://www.balena.io/etcher/)

Raspbian Buster with desktopをダウンロード
https://www.raspberrypi.org/downloads/raspbian/
SD cardをフォーマットして、balenaEtcherで`2020-02-05-raspbian-buster.zip`を書き込む。

###SSHの有効化
※モニタに接続している場合はVNCを有効化してRealVNC Viewerで接続すれば、この作業は不要。
[【Windows】モニタなしでラズパイ3をセットアップするだけ - Qiita](https://qiita.com/kazupen2018/items/6f4dec396a9db1c5c38a)
microSDカードのドライブを開いて、ドライブ直下に空の `ssh` ファイルを作成

##Raspberry Pi を起動

Raspberry Pi にmicroSDカードを挿入して、LANケーブルと電源ケーブルを接続

###Tera TermでRaspberry Piに接続
[Tera Term Open Source Project](https://ttssh2.osdn.jp/)
ホスト: `raspberrypi.local`
ユーザー名: `pi`
パスフレーズ: `raspberry`

###VNCの有効化
[【Windows】モニタなしでラズパイ3をセットアップするだけ - Qiita](https://qiita.com/kazupen2018/items/6f4dec396a9db1c5c38a)

    sudo raspi-config

Interfacing Options→VNC

###解像度の設定

これをやっておかないと、VNC接続したときに、Raspberry Pi 4 のデスクトップが見えない。
[Raspberry Pi 4 VNC Remote Connection Desktop Error - Raspberry Pi Stack Exchange](https://raspberrypi.stackexchange.com/questions/101796/raspberry-pi-4-vnc-remote-connection-desktop-error)

    sudo raspi-config

Advanced Options→Resolution→DMT Mode 85 1280x720 60Hz 16:9
再起動

###RealVNC ViewerでPCから接続
[Download VNC Viewer | VNC® Connect](https://www.realvnc.com/en/connect/download/viewer/)
Update Software をして再起動

##QTのインストール
###パッケージのダウンロード
    wget http://deb.debian.org/debian/pool/main/q/qtwebengine-opensource-src/qtwebengine5-dev_5.11.3+dfsg-2+deb10u1_armhf.deb
    wget http://deb.debian.org/debian/pool/main/q/qtwebengine-opensource-src/libqt5webengine5_5.11.3+dfsg-2+deb10u1_armhf.deb
    wget http://deb.debian.org/debian/pool/main/q/qtwebengine-opensource-src/libqt5webenginecore5_5.11.3+dfsg-2+deb10u1_armhf.deb
    wget http://deb.debian.org/debian/pool/main/q/qtwebengine-opensource-src/libqt5webenginewidgets5_5.11.3+dfsg-2+deb10u1_armhf.deb

###パッケージのインストール
    sudo apt-get install qt5-default
    sudo apt-get install qtmultimedia5-dev
    sudo apt install ./libqt5webenginecore5_5.11.3+dfsg-2+deb10u1_armhf.deb
    sudo apt install ./libqt5webengine5_5.11.3+dfsg-2+deb10u1_armhf.deb
    sudo apt install ./libqt5webenginewidgets5_5.11.3+dfsg-2+deb10u1_armhf.deb
    sudo apt install ./qtwebengine5-dev_5.11.3+dfsg-2+deb10u1_armhf.deb
##PyQt5のインストール
###パッケージのダウンロード
    wget https://ftp.zcu.cz/debian/pool/main/p/pyqt5/python3-pyqt5.qtwebengine_5.11.3+dfsg-1+b3_armhf.deb
    wget https://ftp.zcu.cz/debian/pool/main/p/pyqt5/python3-pyqt5.qtwebchannel_5.11.3+dfsg-1+b3_armhf.deb
    wget https://ftp.zcu.cz/debian/pool/main/p/pyqt5/python3-pyqt5_5.11.3+dfsg-1+b3_armhf.deb
    wget https://ftp.zcu.cz/debian/pool/main/p/pyqt5/python3-pyqt5.qtmultimedia_5.11.3+dfsg-1+b3_armhf.deb
###パッケージのインストール
    sudo apt install ./python3-pyqt5_5.11.3+dfsg-1+b3_armhf.deb
    sudo apt install ./python3-pyqt5.qtwebchannel_5.11.3+dfsg-1+b3_armhf.deb
    sudo apt install ./python3-pyqt5.qtwebengine_5.11.3+dfsg-1+b3_armhf.deb
    sudo apt install ./python3-pyqt5.qtmultimedia_5.11.3+dfsg-1+b3_armhf.deb

##SDTestの動作環境構築
###必要なパッケージを事前インストール
    sudo apt-get install cmake
    sudo apt-get install libtiff5-dev libjasper-dev
    sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
    sudo apt-get install libxvidcore-dev libx264-dev
    sudo apt-get install libcairo2-dev
    sudo apt-get install libgdk-pixbuf2.0-dev libpango1.0-dev
    sudo apt-get install libgtk2.0-dev libgtk-3-dev
    sudo apt-get install libatlas-base-dev gfortran
    sudo apt-get install libhdf5-dev libhdf5-103
    sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test
    sudo apt-get install llvm
    sudo apt-get install libusb-1.0-0-dev cython
    sudo apt-get install libftdi-dev
###checkinstallのインストール
    mkdir src
    cd ~/src
    git clone https://github.com/giuliomoro/checkinstall
    cd checkinstall
    sudo make install
###libuvcのインストール
    cd ~/src
    git clone https://github.com/pupil-labs/libuvc
    cd libuvc
    cmake .
    make
    sudo checkinstall
    Enter a number to change any of them or press ENTER to continue: 3
    Enter new version: 
    >> 0.0.7
    sudo apt install ./libuvc_0.0.7-1_armhf.deb
    sudo ldconfig

###libjpeg-turboのインストール
    cd ~/src
    wget -O libjpeg-turbo.tar.gz https://sourceforge.net/projects/libjpeg-turbo/files/1.5.1/libjpeg-turbo-1.5.1.tar.gz/download
    tar xvzf libjpeg-turbo.tar.gz
    cd libjpeg-turbo-1.5.1
    ./configure --with-pic --prefix=/usr/local
    sudo make install
    sudo checkinstall
    sudo ldconfig

###pipのインストール
    cd ~
    wget https://bootstrap.pypa.io/get-pip.py
    sudo python get-pip.py
    sudo python3 get-pip.py
    sudo rm -rf ~/.cache/pip

ターミナルを再起動

###cythonのインストール
    sudo pip install cython
###udevルールの設定
    echo 'SUBSYSTEM=="usb",  ENV{DEVTYPE}=="usb_device", GROUP="plugdev", MODE="0664"' | sudo tee /etc/udev/rules.d/10-libuvc.rules > /dev/null
    sudo udevadm trigger
###virtualenvとvirtualenvwrapper のインストールと設定
    sudo pip install virtualenv virtualenvwrapper
    nano ~/.bashrc

シェルの起動ファイルの最後に次を追加

    # virtualenv and virtualenvwrapper
    export WORKON_HOME=$HOME/.virtualenvs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    source /usr/local/bin/virtualenvwrapper.sh

Ctrl+x, y, Enter
起動ファイルを再読み込み

    source ~/.bashrc

##仮想環境の作成
    mkvirtualenv --system-site-packages sdtest -p python3


##SDTestのダウンロードとインストール
###Pi Camera Module を使う場合
※ Raspberry Pi Configuration の Interfeces でカメラを有効に

    cd ~
    git clone -b feature/picamera https://github.com/akiphumi/SDTest.git
    cd SDTest
    workon sdtest
    pip install -r requirements/base.txt -U

###UVCカメラを使う場合
    cd ~
    git clone -b feature/rpi_control_camera https://github.com/akiphumi/SDTest.git
    cd SDTest
    workon sdtest
    pip install -r requirements/base.txt -U
    pip install -r requirements/linux.txt -U

VL805 ファームウェアをロールバック
[Pi4 USB3 freezing locking up - Raspberry Pi Forums](https://www.raspberrypi.org/forums/viewtopic.php?t=256594)

    sudo vl805 -w /lib/firmware/raspberrypi/bootloader/beta/vl805-00013701.bin
    sudo reboot

ファームウェアの自動更新を無効に
[Raspberry Pi 4 boot EEPROM - Raspberry Pi Documentation](https://www.raspberrypi.org/documentation/hardware/raspberrypi/booteeprom.md)

    sudo systemctl mask rpi-eeprom-update
###プログラムの起動
    cd SDTest
    workon sdtest
    python src/build.py run