Betaflight-ConfiguratorをRaspberryPi4にインストールする

##構成
RasberryPi4(Desktop)
Betaflight-Configurator 10.7.0

## RaspberryPi4 + Desktopを準備する
https://www.raspberrypi.org/downloads/
SDカードに焼くとかは、記事は沢山あるのでそちらを参照してください
起動後、ネットワークに接続してupgradeまで済ませます

```bash
$ sudo apt update
$ sudo apt upgrade
```

##Betaflight Configuratorのコンパイル
### ソースファイルののダウンロード
https://github.com/betaflight/betaflight-configurator/releases
Betaflight Configurator 10.7.0
Source code(zip)をダウンロードします。

```bash
$ wget https://github.com/betaflight/betaflight-configurator/archive/10.7.0.zip
```

###nodejsをv10にする
Betaflight Configuratorのインストール方法は<a href="https://github.com/betaflight/betaflight-configurator/">本家</a>に書いてあります。
nodejsはバージョン10にする必要があります。ここではnを使っていますがnvmでもいいです。

```bash
$ sudo n v10
  installing : node-v10.21.0
       mkdir : /usr/local/n/versions/node/10.21.0
       fetch : https://nodejs.org/dist/v10.21.0/node-v10.21.0-linux-armv7l.tar.xz

   installed : v10.21.0 (with npm 6.14.4)

$ node -v
v10.21.0
```

### yarnでコンパイル
```bash
$ unzip 10.7.0.zip
$ cd betaflight-configurator-10.7.0
$ sudo npm install yarn -g
$ yarn install
$ yarn start
```

yarn startするとlinux64版のnw.jsをダウンロードしてきます。v0.44.2がダウンロードされているのがわかりますが、後述のv0.28.4を使います。

```bash
Downloading: https://dl.nwjs.io/v0.44.2/nwjs-sdk-v0.44.2-linux-x64.tar.gz
  downloading [====================] 100% 0.0s
```

##NW.jsを準備する
### NWJSのARMv7バイナリのダウンロード
https://github.com/LeonardLaszlo/nw.js-armv7-binaries
ここのv0.28.4をダウンロードします。
（他の新しいバージョンはコンパイル前のソースファイルです）

提供者曰く・・・
<i>Building NW.js requires a bunch of resources. The build was done with a new installation of Docker. Use as many CPU cores as possible and at least 10 GB of RAM, 4GB swap and 110 GB of disk.</i>
だそうなので、我こそはと思う猛者はぜひ頑張っていただきたい。

```bash
$ wget https://github.com/LeonardLaszlo/nw.js-armv7-binaries/releases/download/v0.28.4/nwjs-v0.28.4-linux-arm.tar.gz

$ tar xvf nwjs-v0.28.4-linux-arm.tar.gz
$ cd nwjs-v0.28.4-linux-arm.tar.gz
$ cp -r * ../betaflight-configurator-10.7.0/dist/

```
###ライブラリのインストール
以前はいらなかったのですが、Google Chromeのパッケージの変更に伴って依存関係としてlibgconf-2-4 をプルしなくなったらしい。

```bash
$ sudo apt-get install libgconf-2-4
```
###nwの起動
起動までできれば、あとはショートカットをデスクトップに作るだけです。

```bash
$ cd ../betaflight-configurator-10.7.0/dist/
$ ./nw --use-gl=egl --ignore-gpu-blacklist --disable-accelerated-2d-canvas --num-raster-threads=2
```
## 実際に動かすまでにやること
###Distファイルを移動

```bash
$ cd
$ mv Downloads/betaflight-configurator-10.7.0/dist/ ./bf10.7.0
```
###デスクトップにショートカットを作成する

```bash
$ cd Desktop
$ vi betaflight.desktop
```

中身を下記のようにする

```config
[Desktop Entry]
Name=Betaflight-Configurator
Comment=Betaflight
Icon=/home/pi/bf10.7.0/images/bf_icon_128.png
Exec=/home/pi/bf10.7.0/nw　--use-gl=egl --ignore-gpu-blacklist --disable-accelerated-2d-canvas --num-raster-threads=2
Type=Application
Encoding=UTF-8
Terminal=false
Categories=None;
```
デスクトップにアイコンが表示されて、起動できれば成功

###DFUのルールを作成

```bash
(echo '# DFU (Internal bootloader for STM32 MCUs)' echo 'ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0664", GROUP="plugdev"') | sudo tee /etc/udev/rules.d/45-stdfu-permissions.rules > /dev/null
```

###/dev/ttyACM0 に書き込めるように dialout グループにユーザを追加

```bash
sudo usermod -a -G dialout pi
```


##参考URL
<a href="https://gist.github.com/wlgrd/17b3f8626fe3bff29a4bcad2622f2177">How to set up betaflight fc with Ubuntu</a>
<a href="https://support.circleci.com/hc/ja/articles/360004086734-%E5%85%B1%E6%9C%89%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E3%83%AD%E3%83%BC%E3%83%89%E4%B8%AD%E3%81%AB%E7%99%BA%E7%94%9F%E3%81%99%E3%82%8B-libgconf-2-so-4-cannot-open-shared-object-file-No-such-file-or-directory-%E3%82%A8%E3%83%A9%E3%83%BC
">libgconf-2.so.4 Google Chromeの依存関係</a>