---
# System prepended metadata

title: 在 Linux 上執行 Flag's Block
tags: [arduino, esp8266, 測試, FlagsBlock, 產品開發]

---

###### 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** 控制板看到以下錯誤訊息：

    ![](https://i.imgur.com/fTrhDtt.png)

    畫面下方的橘色錯誤訊息為：

    ```
    warning: espcomm_sync failed
    error: espcomm_open failed
    error: espcomm_upload_mem failed
    上傳草稿碼時發生錯誤
    ```

    而你確認序列埠設定都正確, 請拿一條杜邦線將 D3 與 G 短路, 應該就可以正常上傳了
