Showing posts with label UP board. Show all posts
Showing posts with label UP board. Show all posts

2016/10/02

UP board:2016 UP Board Virtual Hackathon黑客松

UP board正在舉辦『2016 UP Board Virtual Hackathon』黑客松活動,只要手上有UP Board的朋友都可以參加,歡迎您將創意產品,藉由這場線上比賽分享給全世界,同時又有獎金可拿,耶。

報名網址:這裡。
參賽條件:握有UP board即可。
參賽產品:採用UP board的原創產品或專題實作。
參賽方式:將作品細節上傳至UP board官網,只會秀出您的作品主旨及參賽者大名。
獎金:從中選出最精采的5名優勝者,將獲合計超過台幣四萬元的高額獎金哦。

報名時間:2016/ 9/ 21 – 10/ 31
競賽時間:2016/ 11/ 1 – 12/ 31
最後展示:2017/ 1/ 10
得獎公佈:2017/ 1/20

比賽為線上參與,最終5名優勝,將安排作品寄至AAEON歐洲公司。

評比分為複雜程度(25%)、商用價值(25%)、獨特性(30%)、可量產性(20%)。

2016/09/18

UP board:簡單試用GPIO

照著RPi.GPIO - UpWiki的範例,運用RPi.GPIO模組、撰寫Python程式來控制UP board的GPIO腳位。

UP board的腳位功能圖,其中Pin欄是板子的實體針腳編號,UP pinout則是UP板子SoC的腳位編號,Linux GPIO是Raspberry Pi板子的SoC腳位編號。底下範例一律使用Pin欄的編號。

首先更新套件:
$ sudo apt-get update
$ sudo apt-get install python-rpi.gpio

接下來三個範例,閃爍LED,LED明暗度,開關控制LED亮滅。

範例,閃爍LED,讓LED亮一秒、滅一秒,不斷重複。電路圖如下:
程式碼:
import RPi.GPIO as GPIO
import time

LED_PIN = 16

GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)

try:
    while True:
        GPIO.output(LED_PIN, GPIO.HIGH)
        time.sleep(1)
        GPIO.output(LED_PIN, GPIO.LOW)
        time.sleep(1)
except:
    GPIO.cleanup()

範例,LED明暗度,以軟體PWM控制LED的亮度,LED會從全暗漸漸到全亮,再漸漸回到全暗。電路圖同前。

程式碼:
import RPi.GPIO as GPIO
import time

LED_PIN = 16

GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)
p = GPIO.PWM(LED_PIN, 50)
p.start(0)

try:
    while True:
        for dc in range(0, 101, 5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.1)
        for dc in range(100, -1, -5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.1)
except:
    pass

p.stop()
GPIO.cleanup()

範例,開關控制LED亮滅,不按下開關時LED熄滅,按下時才亮起。電路圖如下:
程式碼:
import RPi.GPIO as GPIO
import time

LED_PIN = 16
BUTTON_PIN = 13

GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)
GPIO.setup(BUTTON_PIN, GPIO.IN)

try:
    while True:
        print(GPIO.input(BUTTON_PIN))
        if GPIO.input(BUTTON_PIN):
            GPIO.output(LED_PIN, GPIO.HIGH)
        else:
            GPIO.output(LED_PIN, GPIO.LOW)
except:
    GPIO.cleanup()


參考資料:

2016/09/15

UP board:Ubilinux安裝OpenCV

我的環境是UP board、Ubilinux(ubilinux-3.0.iso),自行編譯OpenCV(Open Source Computer Vision Library),我抓的版本是3.1.0。

先更新套件清單並升級:
$ sudo apt-get update
$ sudo apt-get dist-upgrade -y

若是直接安裝現成的套件,指令如下:
$ sudo apt-get install libopencv-dev

不過得到的OpenCV版本通常過舊,因此自行下載原始碼,手動建置編譯。從OpenCV官方的安裝步驟,得知需要先安裝一堆相依套件。

建置與編譯所需工具:
$ sudo apt-get install build-essential gcc cmake pkg-config

抓原始檔需要的工具:
$ sudo apt-get install git

Python相關:
$ sudo apt-get install python python-dev python-numpy

圖形視窗程式庫:
$ sudo apt-get install libgtk2.0-dev

音訊視訊的編解碼、錄製、轉換、串流:
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev

圖檔格式(選用性):
$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libjasper-dev

IEEE 1394相機介面(選用性):
$ sudo apt-get install libdc1394-22-dev

TBB(Intel's Threading Building Blocks)(選用性):
$ sudo apt-get install libtbb2 libtbb-dev

接著是OpenCV,原始碼檔案約580 MB,建置後需要2.6 GB,請先確認儲存空間是否足夠。

以git下載位於GitHub的OpenCV原始碼,得到目錄opencv,切換進去:
$ git clone https://github.com/Itseez/opencv.git
$ cd opencv

目前處於最新的版本分支,到OpenCV官網查詢後,得知目前釋出的正式版本為3.1.0,所以決定切換到該分支:
$ git checkout 3.1.0

新增目錄build存放建置結果,切換進去:
$ mkdir build
$ cd build

先執行cmake產生建置需要的設定檔:
$ cmake -DWITH_TBB:BOOL=TRUE -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

其中「-DWITH_TBB:BOOL=TRUE「代表我們想要使用TBB,「-D CMAKE_INSTALL_PREFIX=/usr/local」代表之後要安裝的路徑,最後的「..」代表原始碼所在路徑。

然後開始建置:
$ make -j4

因為UP board的CPU有4顆核心,所以可下參數「-j4」充分利用,相當快,花了不到一小時。

最後終於出現完成的訊息:
...
[100%] Building CXX object modules/calib3d/CMakeFiles/opencv_test_calib3d.dir/test/test_main.cpp.o
Linking CXX executable ../../bin/opencv_traincascade
[100%] Built target opencv_traincascade
Linking CXX executable ../../bin/opencv_test_calib3d
[100%] Built target opencv_test_calib3d
Linking CXX shared module ../../lib/cv2.so
[100%] Built target opencv_python2

然後安裝:
$ sudo make install

執行指令更新程式庫:
$ sudo ldconfig

試著檢查OpenCV的版本:
$ pkg-config --modversion opencv
3.1.0

耶!

然後是是撰寫C++程式,顯示一張圖檔。新增檔案test.cpp,準備一張圖檔test.png,程式內容如下:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char **argv)
{
    Mat image = imread("test.jpg", CV_LOAD_IMAGE_COLOR);
    namedWindow("test", WINDOW_AUTOSIZE);
    imshow("test", image);
    waitKey(0);
    return 0;
}

以底下兩道指令之一進行編譯:
$ g++ -lopencv_core -lopencv_highgui -lopencv_imgcodecs test.cpp
$ g++ `pkg-config --libs opencv` test.cpp

執行:
$ ./a.out

啊哈,成功囉。

試試Python程式,新增檔案test.py,與圖檔test.png放在一起,程式內容如下:
import cv2

img=cv2.imread('test.jpg')
cv2.imshow('test', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

然後執行:
$ python test.py

結果與先前的C++程式相同。

參考資料:

2016/09/11

UP board:安裝USB音效卡

UP board的音訊輸出,除了HDMI與I2S,應該就剩下加裝USB音效卡。PS:但我不是100%確定。

嗯,怎麼辦呢,雖然我有HDMI螢幕,但沒有兩端都是HDMI的線材;還是要用能把HDMI轉成RGB D-sub與3.5mm耳機孔的轉接器呢?至於I2S,目前似乎尚未支援。

想起以前為Raspberry Pi買了一張USB音效卡,用了一陣子,後來就積灰塵,現在終於可以重見天日。

我買的是這款,接下來要介紹設定程序,基本上,各產品用的晶片皆不同,所以底下內文只適用於這款產品。參考文件在此。

根據文件,首先判斷晶片為何,
$ dmesg | grep cm109
$ dmesg | grep Headphone
[    3.325467] usb 1-7.1: Product: C-Media USB Headphone Set
[    3.327013] input: C-Media USB Headphone Set   as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7.1/1-7.1:1.3/0003:0D8C:000C.0004/input/input3
[    3.380759] hid-generic 0003:0D8C:000C.0004: input,hidraw3: USB HID v1.00 Device [C-Media USB Headphone Set  ] on usb-0000:00:14.0-7.1/input3

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 0424:2530 Standard Microsystems Corp.
Bus 001 Device 005: ID 0d8c:000c C-Media Electronics, Inc. Audio Adapter
Bus 001 Device 004: ID 0424:4603 Standard Microsystems Corp.
Bus 001 Device 003: ID 093a:2521 Pixart Imaging, Inc.
Bus 001 Device 002: ID 046d:c31d Logitech, Inc. Media Keyboard K200
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

代表我拿到的是CM-Headphone Type。然後作設定。

新增檔案/etc/asound.conf,內容如下,
pcm.!default  {
 type hw card 0
}
ctl.!default {
 type hw card 0
}

原始文件說是1,但我改成0才正確,因為,
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Set [C-Media USB Headphone Set], device 0: USB Audio [USB Audio]
  Subdevices: 0/1  Subdevice #0: subdevice #0
card 1: IntelHDMI [IntelHDMI], device 0: IntelHDMI [IntelHDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

然後修改或新增檔案/etc/modprobe.d/alsa-base.conf,修改成或加入底下這行:
options snd-usb-audio index=0

完成,播放mp3音檔與mp4影片檔,都有聲音,但是玩遊戲卻沒有,例如FreeCiv,嗯,為什麼呢?

2016/09/09

UP board:把USB 3.0 Micro埠改為序列埠

UP board在HDMI插槽旁邊,有個USB 3.0 Micro埠,根據此處文件,可以改為序列埠。

PS:另外還有兩個地方提供序列埠。

準備一條USB線, 一頭A公,插電腦,一頭Micro公,插UP board。我這條是2.0的線。

USB 3.0的Micro端子,其實如圖所示,但我只有2.0的線,所以只插入其中一部分而已,但仍相容可用。
開機時按著F7,選Enter Setup進入BIOS設定畫面,修改處有兩個。
第一個,Chipset > South Bridge > Default DRD Config,改成DeviceMode。
第二個,Chipset > South Bridge > USB OTG Support改成PCI mode。
然後重開機,開啟終端機,輸入底下指令,載入驅動模組並啟動該序列埠:
$ sudo modprobe g_serial
$ sudo systemctl start getty@ttyGS0

然後把USB線另一頭插入電腦,我插入的是Win 10,開啟裝置管理員,看到多出一個COM埠,記住是COM4。你的編號不一定與我的相同。
開啟可連接序列埠的終端機模擬軟體,譬如PuTTY,輸入適當的設定。
連線,耶,成功囉,看到登入提示,輸入帳號密碼。
進去囉,試著執行指令「w」,共有三個人登入,分別是從主控台、SSH、以及本篇的序列埠。
但是這個序列埠位於USB之上,所以必須等作業系統準備好後,才能提供,沒辦法輸出開機時的早期訊息,一旦重開機就會斷線。

2016/09/08

UP board:設定USB無線網卡

安裝好Linux系統(Ubilinux),之前都是插RJ-45網路線,現在讓我們來嘗試使用USB無線網卡吧。

我的網卡是這個:Edimax EW-7811Un 150Mbps Wireless 隱形USB無線網卡,其晶片是RTL8188CUS。

插入後,Linux應可自動辨識,並且自動載入驅動程式。
$ lsusb
Bus 001 Device 005: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS] 

但是下達指令ifconfig的話,並未出現網路介面wlan0,需要自己設定網路組態。

安裝相關設定套件:
$ sudo apt-get install wpasupplicant wireless-tools 

修改檔案/etc/network/interfaces,新增部分以紅色標示。
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp


然後,新增∕修改/etc/wpa_supplicant/wpa_supplicant.conf,內容如下,請根據你自己的網路組態做修改:
ctrl_interface=/run/wpa_supplicant
update_config=1

network={
        ssid="你的無線網路名稱"
        psk="密碼"
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP
        auth_alg=OPEN
}


然後下指令,關閉∕啟動無線網路介面,或者重新開機:
$ sudo ifdown wlan0
$ sudo ifup wlan0 



接著,應該就沒問題了。
$ sudo ifconfig
wlan0     Link encap:Ethernet  HWaddr 80:1f:02:e2:93:2f
          inet addr:192.168.1.41  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::821f:2ff:fee2:932f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:621 errors:0 dropped:0 overruns:0 frame:0
          TX packets:409 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:71162 (69.4 KiB)  TX bytes:73832 (72.1 KiB)


耶!

2016/09/07

UP board:播放mp3音檔與mp4影片檔

安裝好Linux系統(Ubilinux),讓我們來嘗試播放mp3音檔與mp4影片檔吧。

首先把一些mp3與mp4檔傳輸到UP board裡。Ubilinux預設已安裝SSH相關套件,所以可使用WinSCP來傳輸檔案。

然後開啟預設已安裝的VLC,

然後拖拉想撥放的檔案,咦,奇怪,我的螢幕變黑了,收不到訊號,哇哩咧。

不過系統仍活著,所以可使用SSH遠端登入,找出VLC的PID,然後kill殺掉。

但是為什麼呢?上論壇一問,原來播放媒體檔案時,會改變成Full HD顯示模式,因為我的螢幕太舊不支援,所以就會變黑。

好吧,換台螢幕,耶,成功囉。
另外,如果你想使用SMPlayer(影片)與LXMusic(音樂)來播放的話,請安裝相關套件:
$ sudo apt-get install lxmusic xmms2 xmms2-plugin-all mplayer smplayer

SMPlayer。
LXMusic。

2016/09/06

UP board:查詢系統狀態的Linux指令

安裝好Linux系統(Ubilinux)之後,簡單試用一些查詢系統狀態的Linux指令吧。

首先,看看Linux核心版本吧。
$ uname -a
Linux ubilinux 4.4.0-ubi3-amd64 #1 SMP Debian 4.4.13-1 (2016-06-17) x86_64 GNU/Linux
$ cat /proc/version
Linux version 4.4.0-ubi3-amd64 (ubilinux@emutex.com) (gcc version 4.9.2 (Debian 4.9.2-10) ) #1 SMP Debian 4.4.13-1 (2016-06-17)

哦,4.4啊,跟官方說的一樣。

接著,查詢UP board的BIOS版本,
$ cat /sys/devices/virtual/dmi/id/bios_version
UPC1BM0S


看來是目前最新的,以後有機會的話,再嘗試更新囉。順帶一提,若要重置BIOS設定值,可拔掉RTC電池,等待10~15分鐘後再裝回去。

然後,查詢UP board板子本身的版本,
$ cat /sys/devices/virtual/dmi/id/board_version
V0.4

嗯,不知道代表什麼意義。

看看有多少記憶體:
$ free -h
             total       used       free     shared    buffers     cached
Mem:          3.3G       516M       2.8G        44M        21M       284M
-/+ buffers/cache:       209M       3.1G
Swap:           0B         0B         0B


嗯,總共應該有4 G才對,其他的,應該是分給GPU繪圖處理器了,可到BIOS調整;除此之外,也有些許部分被BIOS保留作為其他用途。

查詢儲存媒體eMMC的用量:
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             10M     0   10M   0% /dev
tmpfs           673M  8.9M  664M   2% /run
/dev/mmcblk0p3   29G  2.5G   25G   9% /
tmpfs           1.7G     0  1.7G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           1.7G     0  1.7G   0% /sys/fs/cgroup
/dev/mmcblk0p2   48M  119K   48M   1% /boot/efi
tmpfs           337M  4.0K  337M   1% /run/user/110
tmpfs           337M  4.0K  337M   1% /run/user/1000


嗯, 看來我手上這塊板子內建32 GB地eMMC。

查看網路卡取得的IP。我的UP board位於路由器之後,會從DHCP自動取得IP位址。
$ sudo ifconfig
eth0      Link encap:Ethernet  HWaddr 00:07:32:3d:2d:7d
          inet addr:192.168.1.71  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::207:32ff:fe3d:2d7d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1019 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1094 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:206884 (202.0 KiB)  TX bytes:138338 (135.0 KiB)


Ubilinux源自Debian,通樣採用DEB/APT套件管理系統,讓我們更新套件清單,並且升級原已安裝的套件吧,指令如下:
$ sudo apt-get update
$ sudo apt-get dist-upgrade
...省略輸出...

試試安裝新套件吧,例如可查詢CPU狀態的cpufrequtils:
$ sudo apt-get install cpufrequtils

然後執行指令cpufreq-info:
$ cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 0.97 ms.
  hardware limits: 480 MHz - 1.92 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 480 MHz and 1.92 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 940 MHz.
analyzing CPU 1:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 1
  CPUs which need to have their frequency coordinated by software: 1
  maximum transition latency: 0.97 ms.
  hardware limits: 480 MHz - 1.92 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 480 MHz and 1.92 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 1.20 GHz.
analyzing CPU 2:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 2
  CPUs which need to have their frequency coordinated by software: 2
  maximum transition latency: 0.97 ms.
  hardware limits: 480 MHz - 1.92 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 480 MHz and 1.92 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 1.68 GHz.
analyzing CPU 3:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 3
  CPUs which need to have their frequency coordinated by software: 3
  maximum transition latency: 0.97 ms.
  hardware limits: 480 MHz - 1.92 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 480 MHz and 1.92 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 1.68 GHz.


可看到有4個CPU核心,時脈為480 MHz到1.92 GH,動態調整。

嗯,那麼CPU溫度呢,先安裝套件Linux Monitoring Sensors:
$ sudo apt-get install lm-sensors

然後,執行指令sensors-detect設定該載入那些模組,如果不知道的話,最好通通使用預設值,直接按Enter就對了:
$ sudo sensors-detect
# sensors-detect revision 6209 (2014-01-14 22:51:58 +0100)
# System: AAEON UP-CHT01 [V1.0]

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no):
Module cpuid loaded successfully.
Silicon Integrated Systems SIS5595...                       No
VIA VT82C686 Integrated Sensors...                          No
VIA VT8231 Integrated Sensors...                            No
AMD K8 thermal sensors...                                   No
AMD Family 10h thermal sensors...                           No
AMD Family 11h thermal sensors...                           No
AMD Family 12h and 14h thermal sensors...                   No
AMD Family 15h thermal sensors...                           No
AMD Family 15h power sensors...                             No
AMD Family 16h power sensors...                             No
Intel digital thermal sensor...                             Success!
    (driver `coretemp')
Intel AMB FB-DIMM thermal sensor...                         No
VIA C7 thermal sensor...                                    No
VIA Nano thermal sensor...                                  No

Some Super I/O chips contain embedded sensors. We have to write to
standard I/O ports to probe them. This is usually safe.
Do you want to scan for Super I/O sensors? (YES/no):
...省略...

Now follows a summary of the probes I have just done.
Just press ENTER to continue:

Driver `coretemp':
  * Chip `Intel digital thermal sensor' (confidence: 9)

Driver `to-be-written':
  * ISA bus, address 0xca0
    Chip `IPMI BMC KCS' (confidence: 4)
  * ISA bus, address 0xca8
    Chip `IPMI BMC SMIC' (confidence: 4)

Note: there is no driver for IPMI BMC KCS yet.
Check http://www.lm-sensors.org/wiki/Devices for updates.

To load everything that is needed, add this to /etc/modules:
#----cut here----
# Chip drivers
coretemp
#----cut here----
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!

Do you want to add these lines automatically to /etc/modules? (yes/NO)

Unloading cpuid... OK

然後執行指令sensors觀看:
$ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:         +0.0°C  (crit = +90.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +37.0°C  (high = +90.0°C, crit = +90.0°C)
Core 1:       +36.0°C  (high = +90.0°C, crit = +90.0°C)
Core 2:       +40.0°C  (high = +90.0°C, crit = +90.0°C)
Core 3:       +36.0°C  (high = +90.0°C, crit = +90.0°C)

哎呀,好煩,上批踢踢跟網友鄉民大戰吧,咦,怎麼出現亂碼?
$ telnet ptt.cc

安裝中文字型:
$ sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy scim scim-tables-zh scim-chewing scim-pinyin fonts-inconsolata ttf-anonymous-pro ttf-dejavu ttf-bitstream-vera 

也安裝PCMan這套圖形化BBS客戶端軟體:
$ sudo apt-get install pcmanx-gtk2    

啊哈,OK囉。

2016/09/04

UP board:安裝Linux系統

承蒙研揚科技公司好意,贈送一塊UP board。上一篇開箱拍拍照,介紹硬體規格,這一篇要開始安裝軟體囉。

概略步驟如下:

  1. 準備好所需硬體。
  2. 下載想安裝的軟體系統,此處以Linux系統(Ubilinux)為例。
  3. 燒錄安裝用的Linux系統到USB隨身碟(或記憶卡加讀卡機)。
  4. 使用上一步的USB裝置開機,進行安裝程序,把Linux系統安裝到UP board內建的eMMC儲存空間。
  5. 拔除USB裝置,讓UP board自己開機,開始使用Linux系統。
看完介紹若有興趣的話,可UP board線上商店購買,或聯絡研揚公司。

除了電源供應器、螢幕、鍵盤、滑鼠,還需要準備USB隨身碟,或者如下圖的記憶卡加讀卡機,容量大小至少要有1 GB。等一下要把可開機的安裝程式、燒錄進這台USB裝置,以之開機,進行安裝程序,把Linux系統安裝到UP board板子內建的eMMC儲存空間。
因為我想插入UP board的USB 3.0 Micro埠,所以要再準備一條USB A母轉Micro B公的轉接線。
下圖是連接後的樣子。其實,也可插入UP board側邊的USB 2.0埠。總之就是要讓UP board使用這台USB裝置來開機,進行Linux系統的安裝程序。
插上鍵盤、滑鼠、網路線、HDMI、電源供應器。我用的螢幕只有DVI介面,所以加上DVI轉HDMI的轉接頭。呃,糟糕,插座靠太近,插頭大太,插不進去啦。
只好拿出刀子,削減HDMI轉接頭的兩側。
呼,終於可以了。嗯,UP board研發工程師都沒有碰到這個問題嗎?
若想把USB裝置插入UP board側邊的USB 2.0埠,也會遇到卡住的問題,此時可使用USB A母轉A公的延長線。
接下來要把安裝用的Linux系統、燒錄到之前準備好的USB裝置。

首先下載想安裝的軟體系統,到UP community網站的下載區,可看到Ubilinux、Windows 10、Ubuntu等,此處以Ubilinux為例,我下載的檔案是ubilinux-3.0.iso,約700 MB。

燒錄工具,若你的主機電腦是Linux或Mac OS X,可使用指令dd,此處不介紹。若主機電腦是Windows的話,可使用Rufus燒錄工具。下載後執行,看到如下畫面,紅色箭頭處可更改介面語言,我改為英文,因為UP board官方提供的安裝文件,也是英文。
請確認最上面的選項Device,應是你的USB裝置。然後點選「1」的光碟圖示,選擇剛剛下載的Ubilinux映像檔ubilinux-3.0.iso。然後點選「2」,改成「MBR partition scheme for UEFI」,注意,非常重要。
設定完成後的樣子,然後點按「Start」。
嗯,跳出一個對話盒,大意是說Rufus還需要下載一些檔案,選Yes。
然後出現底下畫面,注意,必須選擇「Write in DD Image mode」,非常重要。
然後Rufus警告你,目標裝置裡的東西,都會被摧毀,所以請確認是否選對磁碟機,可不要洗掉你自己電腦的硬碟啊。
進行燒錄中。
燒錄完畢。
插入UP board吧,開啟電源,開機!可看到藍色電源燈亮起,風扇也開始轉動,音量相當低,耳朵必須靠很近,才聽得見。
螢幕應會先出現UP的標示圖誌,但可能跳太快而沒看到。
咦?這是什麼?應該是UP board內建eMMC預設含有的UEFI。
那並不是我要的,請在開機時按著F7,便會進入挑選開機裝置的選單,如下圖。呃,怎麼沒有出現我的USB裝置呢?
如果點按「Enter Setup」,將會進入類似BIOS的設定畫面,這也不是我要的。
原因在於應使用「具備UEFI開機能力的USB裝置」,我之前準備的讀卡機太舊啦,換個新的吧,如下圖,然後重新燒錄。
插入UP board,再試一次。
開機時按著F7,嘿,出現囉,選擇該裝置開機。
啊哈,看到囉。
右下角標示著ubilinux。
選擇左上角的「Install」,進入Ubilinux的安裝程序。
接下來便是Ubilinux安裝程序,跟一般Linux系統的安裝程序差不多,此處僅概略介紹;但其中有一步非常重要,還請注意。

首先選擇安裝時想使用的語言。
選擇所在地。
選擇地區設置。
選擇鍵盤對應。
載入其他元件。
輸入主機名稱。
網域名稱,不知道就別填。
建立使用者帳號與密碼,之後以之登入系統。
注意,此處非常重要,「Force UEFI」必須選擇「Yes」。
開始安裝。
我有插上網路線,途中詢問要到哪裡抓取最新的軟體套件。
也不知道哪個比較快,就選第一個吧。
按照你的網路設置,填入適當的HTTP Proxy。
下載中,去喝杯茶吧。
詢問要把GRUB安裝到哪裡,選擇UP board板子內建的eMMC,也就是/dev/mmcblk0。
終於完成囉。
接下來,便是要用安裝到UP board內建的eMMC的Ubilinux系統來開機。若開機時按著F7,你會看見如下畫面,請選ubilinux;若不按著F7,則會直接進入下個畫面。
選擇第一項,以安裝好的Ubilinux來開機。
預設會直接進入圖形視窗介面,輸入之前建立的使用者帳號與密碼,登入系統。
哇,成功囉,進入Ubilinux囉。
四處玩玩吧,開啟瀏覽器、計算機、終端機,耶!
Ubilinux源自Debian,其實就跟一般的Linux系統沒兩樣。

看完介紹若有興趣的話,可UP board線上商店購買,或聯絡研揚公司。

參考資料: