###### tags: `產品開發` `FlagsBlock`,`esp8266`,`arduino`,`測試`
[TOC]
# 在 Linux 上執行 Flag's Block
## 下載軟體
以下假設下載的檔案都放在預設的 `下載` 資料夾下, 而目前工作資料夾在家目錄下:
1. [Flag's Block Linux 版下載]() 並解開壓縮檔:
```bash
$ tar Jxvf 下載/FlagsBlock.tar.xz
```
## 完成 Flag's Block 軟體執行前的準備工作
以下根據不同發行版本, 使用個別的安裝程序:
- [Ubuntu (Debia-based) Linux](#Ubuntu-1804-Debian-based-Linux)
- [Manjaro (Arch-based) Linux](#Manjaro-Linux-180-Arch-based-Linux)
- [Fedora (RedHat) Linux](#Fedora-29-Red-Hat-Linux)
- [OpenSuse](#OpenSuse)
### Ubuntu 18.04 (Debian-based Linux)
1. 安裝顯示圖檔的工具 feh、Python 2.7 以及所需的套件 Tkinter:
```bash
$ sudo apt install feh python python-tk
```
1. 安裝 nwjs 所需的程式庫 libgconf2-4 及 GTK 相關模組:
```bash
$ sudo apt install libgconf2-4 libcanberra-gtk-module libcanberra-gtk3-module
```
3. 將自己加入具備通訊埠權限的 dialout 群組:
```bash
$ sudo usermod -a -G dialout <你的使用者名稱>
```
記得要重新啟動後才會生效, 這樣才會具備 dialout 群組的權限。
### Manjaro Linux 18.0 (Arch-based Linux)
1. 安裝顯示圖檔的工具 feh、Python 所需的 Tkinter 套件、nwjs 所需的 gconf 套件:
```bash
$ sudo pacman -S feh tk gconf
```
3. 將自己加入具備通訊埠權限的 uucp 群組:
```bash
$ ls -l /dev/ttyUSB0
crw-rw---- 1 root uucp 188, 0 3月 21 13:38 /dev/ttyUSB0
$ sudo usermod -a -G uucp <你的使用者名稱$
```
記得要重新啟動後才會生效, 這樣才會具備 uucp 群組的權限。
### Fedora 29 (Red Hat Linux)
1. 安裝顯示圖片的工具程式 feh:
```bash
$ sudo yum install feh
```
1. 安裝 Python 環境與所需的套件 tkinter:
```bash
$ sudo yum install python tkinter
```
1. 將自己加入具備通訊埠權限的 dialout 群組:
```bash
sudo usermod -a -G dialout <你的使用者名稱>
```
記得要先重新啟動後才會生效, 這樣才會具備 dialout 群組的權限。
### OpenSuse
1. 安裝 gconf2, 官方已不提供套件, 請下載[社群維護版本](https://software.opensuse.org/download/package?package=gconf2&project=openSUSE%3ALeap%3A15.2)安裝。
1. 安裝 feh:
```bash
$ sudo zypper install feh
```
1. 安裝 Python Tkinter 套件:
```bash
$ sudo zypper install python-tkinter
```
3. 將自己加入具備通訊埠權限的 dialout 群組:
```bash
$ sudo usermod -a -G dialout <你的使用者名稱>
```
記得要重新啟動後才會生效, 這樣才會具備 dialout 群組的權限。
## 啟動 Flag's Block
假設您將 Flag's Block 解壓縮在家目錄下:
```bash
$ cd FlagsBlock/
$ ./start.sh
```
## FAQ
### 上傳程式
1. 控制板的連接埠應該選那一個?
根據你所使用的控制板, 在 Linux 上的序列埠名稱會不一樣:
|控制板型號|序列埠名稱|
|:----|:----|
|Flag One|/dev/ttyACM0|
|Flag 1|/dev/ttyUSB0|
|D1 mini|/dev/ttyUSB0|
2. 插上 USB 傳輸線後就是看不到序列埠的名稱?
建議安裝 CH340 驅動程式, 可參考[在 Linux 上安裝 D1 mini 驅動程式](/k5bQTTmoTHON1gsrQ0WaJg)。
3. 如果上傳程式到 **D1 mini** 控制板看到以下錯誤訊息:

畫面下方的橘色錯誤訊息為:
```
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
上傳草稿碼時發生錯誤
```
而你確認序列埠設定都正確, 請拿一條杜邦線將 D3 與 G 短路, 應該就可以正常上傳了