ASUS Tinker Board 2S新版Debian 10 V2.0.3 系統與相依套件安裝教學

前言

ASUS Tinker Board 2 / 2S 推出至今,搭配Debian作業系統操作的版本也從先前介紹的2.0.0版更新到了2.0.3版,上次的安裝教學內容連結如下:https://blog.cavedu.com/2021/09/01/tinker-board-2s-2/

撰寫/攝影 曾俊霖
前情提要 Tinker Board 2 / 2S 推出至今,搭配Debian作業系統操作的版本也從先前介紹的2.0.0版更新到了2.0.3版,上次的安裝教學內容連結如下:https://blog.cavedu.com/2021/09/01/tinker-board-2s-2/
時間 6小時以上 材料表 ASUS  Tinker Board 2S / 2GB-連結

這次華碩IoT團隊更新了Debian作業系統的內容,這次更新的內容強化了通訊的功能、周邊介面存取的功能,相關的更新內容請參考下表(原廠文件):

1. Fix OV5647 mirror issue
2. Fix ufw and iptables not working in Debian 10
3. xfce4-power-manager: set blank after to “never”
4. Add auto_ums config in config.txt
5. Add modem manager
6. Add ASUS.GPIO library for Python 3
7. Support Quectel EM06-E LTE module
8. Support USB to Serial Chip CH934X
9. Support WinChipHead CH340/CH341
10. Add support for ASUS API
11. Enable CONFIG_TUN kernel config
12. Power Manager add support for GPU configuration
13. Fix Debian apt-get repo issue
14. Fix UART0 RTS not working

本篇教學將主要說明各種常用的Python相依套件程式安裝流程,也透過本篇的內容強化即將使用Tinker Board 2S進行各種專案開發的朋友,有更多可以參考的文件,這些Python相依套件基本上都已經過各種範例的實測,在目前最新發表的Debian-10 2.0.3版 作業系統都是可以正常操作。

本次的安裝教學主要是針對新版核心(Debian-10 2.0.3版)進行安裝,相關安裝流程與較舊版本核心的安裝流程略有差異,若是新版核心建議還是按照本篇教學進行安裝,以確保相關的套件流程都可以正確安裝與執行。


本篇教學文將會針對以下這些AI應用程式設計中常用的套件程式安裝進行說明:
1. nano (用於簡易文字編輯器操作)
2. OpenCV 4.5.0 (用於相關視覺影像的介面操作)
3. imutils(用於視覺影像處理的介面操作)
4. pillow (用於視覺影像處理的介面操作)
5. tkinter (用於圖形化使用者介面 GUI 程式設計)
6. Tensorflow 2.4.1 與 Tensorflow-Lite Runtime 2.5.0 (用於神經網路運算)
7. SciKit-Learn(用於神經網路運算)
8. mediapipe(用於各種人體肢體或表情變化偵測操作)
9. pygame(用於各種多媒體遊戲或媒體撥放功能操作)
10. AudioPlayer、Playsound(用於播放mp3或wav音訊檔案)
11. I2C介面與PCA9685電路驅動(用於周邊電路的控制)

一、安裝簡易文字編輯器nano

由於在許多的終端機操作環境下需要快速編修文件,採用精巧且功能完整的 nano 文字編輯器,一直是許多系統操作者的最愛之一,以下說明安裝流程:

[pastacode lang=”bash” manual=”sudo%20apt-get%20update%0Asudo%20apt-get%20upgrade%0Asudo%20apt-get%20install%20nano” message=”” highlight=”” provider=”manual”/]

 

二、安裝GTK-2.0相依套件libgtk2.0-dev

本次安裝測試的過程當中,在安裝OpenCV 4.5.0套件程式時,發生了相依套件斷裂的問題,在Tinker Board 2S的Debian 10 Linux系統中因為沒有安裝GTK-2.0  的libgtk2.0-dev套件程式,這將導致在OpenCV 4.5.0因cmake無法將 libgtk2.0-dev相依套件進行編譯設定,雖然在後續的make流程都能完成,但最後會在最後Python程式執行階段無法正確使用如imshow、putText等畫面顯示或繪圖的函數,並且會在執行階段報錯,並且提示需要重新進行cmake。

為了將libgtk2.0-dev相依套件程式安裝至系統,筆者初期使用sudo apt-get install libgtk2.0-dev這種方式安裝相依套件程式,但系統卻又報錯,表示還有許多其他相關相依套件有「相依斷裂」的問題,筆者嘗試再以sudo apt-get install去安裝那些相依套件程式,卻依然發現更多的「相依斷裂」,更糟糕的是還發生「循環相依」,所謂「循環相依」表示其他的相依套件程式又循環相依libgtk2.0-dev。

為了解決這種「相依斷裂」與「循環相依」的問題,最後只能透過額外安裝「套件安裝設定程式」的方式來解決,本文將透過 aptitude 套件程式來解決這個問題。
透過「aptitude」套件程式便可以進行libgtk2.0-dev套件程式安裝,以下說明安裝流程:

[pastacode lang=”bash” manual=”sudo%20apt-get%20install%20aptitude%0Asudo%20aptitude%20install%20libgtk2.0-dev” message=”” highlight=”” provider=”manual”/]

三、安裝OpenCV 4.5.0套件

本文使用 OpenCV 4.5.0 來進行視覺影像介面處理,筆者曾嘗試以 sudo apt-get install python-opencv 來安裝。但經過檢查發現,以這種方式安裝的OpenCV版本是3.6版,雖然簡單Python程式函式還是可以執行,可是當遇到更進階的函式如DNN等相關進階應用時,便會產生函數缺漏的問題,有鑑於此,筆者選擇重新以Build from Source的方式進行安裝。

在這裡要特別強調一個重要關鍵,在安裝OpenCV 4.5.0套件程式之前,「一定要」先裝好上一步的GTK-2.0相依套件 libgtk2.0-dev,切莫跳過這個重要步驟。

由於OpenCV 4.5.0的安裝過程需要大量的記憶體運作空間以進行後續的make流程,因此必須先行安裝虛擬記憶體的套件程式,並且將虛擬記憶體設為10240MB,並且將Tinker Board 2S重新開機,以下說明虛擬記憶體設定流程:

[pastacode lang=”bash” manual=”sudo%20apt-get%20update%0Asudo%20apt-get%20upgrade%0A%0A%23%E5%AE%89%E8%A3%9Ddphys-swapfile%E5%A5%97%E4%BB%B6%E7%A8%8B%E5%BC%8F%0Asudo%20apt-get%20install%20dphys-swapfile%0A%0A%23%E4%BB%A5nano%E7%B7%A8%E8%BC%AF%20%2Fetc%2Fdphys-swapfile%E8%A8%AD%E5%AE%9A%E6%AA%94%E6%A1%88%0Asudo%20nano%20%2Fetc%2Fdphys-swapfile%0A%23%E5%B0%8B%E6%89%BE%20%23CONF_SWAPSIZE%3D%C2%A0%20%E5%AD%97%E4%B8%B2%E5%85%A7%E5%AE%B9%EF%BC%8C%E4%B8%A6%E4%B8%94%E5%B0%87%E8%A8%BB%E8%A7%A3%E7%AC%A6%E8%99%9F%20%23%20%E5%8F%96%E6%B6%88%E3%80%82%0A%23%E8%A8%AD%E5%AE%9ACONF_SWAPSIZE%3D10240%0A%23%E9%9B%A2%E9%96%8Bnano%E6%96%87%E5%AD%97%E7%B7%A8%E8%BC%AF%E5%99%A8%0A%0Asudo%20reboot%20%23%E9%87%8D%E6%96%B0%E9%96%8B%E6%A9%9F” message=”” highlight=”” provider=”manual”/]

下載並編譯安裝OpenCV 4.5.0,請注意,這個階段的安裝時間非常久,筆者大約安裝了近4小時,且在make階段時Tinker Board 2S的散熱片會產生高溫。筆者使用 make -j4 等多核心編譯指令來以加快make流程。另外在編譯過程務必確保電源穩定,最好拿電風扇幫忙散熱,以確保編譯過程順利完成。以下說明OpenCV 4.5.0的安裝流程:

[pastacode lang=”bash” manual=”sudo%20apt-get%20update%0Asudo%20apt-get%20upgrade%0A%0Asudo%20apt-get%20install%20cmake%20git%20libgtk2.0-dev%20pkg-config%20libavcodec-dev%20libavformat-dev%20libswscale-dev%0A%0Asudo%20apt-get%20install%20libjpeg-dev%20libpng-dev%0Asudo%20apt-get%20install%20libavcodec-dev%20libavformat-dev%20libswscale-dev%0Asudo%20apt-get%20install%20libgtk2.0-dev%20libcanberra-gtk*%20libgtk-3-dev%0Asudo%20apt-get%20install%20python3-dev%20python3-numpy%20python3-pip%0Asudo%20apt-get%20install%20libtbb2%20libtbb-dev%20libdc1394-22-dev%0Asudo%20apt-get%20install%20libv4l-dev%20v4l-utils%0Asudo%20apt-get%20install%20libopenblas-dev%20libatlas-base-dev%20libblas-de%0Asudo%20apt-get%20install%20liblapack-dev%20gfortran%20libhdf5-dev%0Asudo%20apt-get%20install%20libprotobuf-dev%20libgoogle-glog-dev%20libgflags-dev%0Asudo%20apt-get%20install%20protobuf-compiler%0Asudo%20apt-get%20install%20qt5-default%0A%0Awget%20-O%20opencv.zip%20https%3A%2F%2Fgithub.com%2Fopencv%2Fopencv%2Farchive%2F4.5.0.zip%0A%0Awget%20-O%20opencv_contrib.zip%20https%3A%2F%2Fgithub.com%2Fopencv%2Fopencv_contrib%2Farchive%2F4.5.0.zip%0A%0Aunzip%20opencv.zip%0Aunzip%20opencv_contrib.zip%0A%0Amv%20opencv-4.5.0%20opencv%0Amv%20opencv_contrib-4.5.0%20opencv_contrib” message=”更新並取得 openCV” highlight=”” provider=”manual”/] [pastacode lang=”bash” manual=”cd%20~%2Fopencv%0Amkdir%20build%0Acd%20build%0A%0Acmake%20-D%20CMAKE_BUILD_TYPE%3DRELEASE%20%5C%0A-D%20CMAKE_INSTALL_PREFIX%3D%2Fusr%2Flocal%20%5C%0A-D%20OPENCV_EXTRA_MODULES_PATH%3D~%2Fopencv_contrib%2Fmodules%20%5C%0A-D%20ENABLE_NEON%3DON%20%5C%0A-D%20WITH_OPENMP%3DON%20%5C%0A-D%20BUILD_TIFF%3DON%20%5C%0A-D%20WITH_FFMPEG%3DON%20%5C%0A-D%20WITH_TBB%3DON%20%5C%0A-D%20BUILD_TBB%3DON%20%5C%0A-D%20BUILD_TESTS%3DOFF%20%5C%0A-D%20WITH_EIGEN%3DOFF%20%5C%0A-D%20WITH_GSTREAMER%3DOFF%20%5C%0A-D%20WITH_V4L%3DON%20%5C%0A-D%20WITH_LIBV4L%3DON%20%5C%0A-D%20WITH_VTK%3DOFF%20%5C%0A-D%20WITH_QT%3DON%20%5C%0A-D%20OPENCV_ENABLE_NONFREE%3DON%20%5C%0A-D%20INSTALL_C_EXAMPLES%3DOFF%20%5C%0A-D%20INSTALL_PYTHON_EXAMPLES%3DOFF%20%5C%0A-D%20BUILD_NEW_PYTHON_SUPPORT%3DON%20%5C%0A-D%20BUILD_opencv_python3%3DTRUE%20%5C%0A-D%20OPENCV_GENERATE_PKGCONFIG%3DON%20%5C%0A-D%20BUILD_EXAMPLES%3DOFF%20%5C%0A-D%20WITH_GTK%3DON%20..%0A%0Amake%20-j4%0Asudo%20make%20install%0Asudo%20ldconfig%0Amake%20clean” message=”build and make” highlight=”” provider=”manual”/]

接著要透過 .bashrc 設定OpenCV 4.5.0路徑,安裝完成OpenCV 4.5.0之後,必須要設定相關執行路徑,若跳過這個步驟,會導致Python程式在 import cv2 時產生allocation memory 報錯,以下說明 .bashrc 路徑設定方式:

[pastacode lang=”bash” manual=”cd%20~%0A%0A%23%E4%BB%A5nano%E6%96%87%E5%AD%97%E7%B7%A8%E8%BC%AF%E5%99%A8%E7%B7%A8%E8%BC%AF%20.bashrc%20%E8%A8%AD%E5%AE%9A%E6%AA%94%0Asudo%20nano%20~%2F.bashrc%0A%0A%23%E5%88%B0%E6%96%87%E4%BB%B6%E6%9C%AB%E7%AB%AF%E5%B0%87%E4%BB%A5%E4%B8%8B%E6%95%98%E8%BF%B0%E8%A3%9C%E5%9C%A8%E6%9C%80%E5%BE%8C%E4%B8%80%E8%A1%8C%0Aexport%20LD_PRELOAD%3D%2Fusr%2Flib%2Faarch64-linux-gnu%2Flibgomp.so.1″ message=”” highlight=”” provider=”manual”/]

 

[pastacode lang=”bash” manual=”%23%E5%9F%B7%E8%A1%8C%20.bashrc%20%E5%85%A7%E5%AE%B9%0Asource%20~%2F.bashrc” message=”” highlight=”” provider=”manual”/]

 

四、安裝其他視覺影像處理與圖形化使用者介面套件程式

本段要安裝多個乘用的影像處理與 GUI 套件

[pastacode lang=”bash” manual=”%23%E5%AE%89%E8%A3%9Dpillow%E5%A5%97%E4%BB%B6%E7%A8%8B%E5%BC%8F%0Acd%20~%0Asudo%20apt-get%20update%0Asudo%20apt-get%20upgrade%0Apip3%20install%20setuptools%0Apip3%20install%20pillow%0A%0A%23%E5%AE%89%E8%A3%9Dtkinter%E5%A5%97%E4%BB%B6%E7%A8%8B%E5%BC%8F%0Acd%20~%0Asudo%20apt-get%20update%0Asudo%20apt-get%20upgrade%0Asudo%20apt-get%20install%20python3-tk%0Asudo%20apt-get%20install%20python3-pil.imagetk%0A%0A%23%E5%AE%89%E8%A3%9Dimutils%E5%A5%97%E4%BB%B6%E7%A8%8B%E5%BC%8F%0Acd%20~%0Asudo%20apt-get%20update%0Asudo%20apt-get%20upgrade%0Apip3%20install%20imutils” message=”” highlight=”” provider=”manual”/]

五、安裝Tensorflow 2.4.1 神經網路運算套件程式

Tinker Board 2S 具有強大的CPU與GPU運算效能,可進行神經網路運算,搭配OpenCV可以進行各種AI影像辨識的應用,依照Tinker Board 2S的各種硬體規格,筆者認為神經網路的框架可採用Tensorflow 2.4.1來進行神經網路的推論(Inference)運算,以下說明套件程式安裝流程:

[pastacode lang=”bash” manual=”%23%E6%9B%B4%E6%96%B0%E4%BD%9C%E6%A5%AD%E7%B3%BB%E7%B5%B1%E5%A5%97%E4%BB%B6%E8%B3%87%E8%A8%8A%0Asudo%20apt-get%20update%0Asudo%20apt-get%20upgrade%0A%0A%23%E6%9B%B4%E6%96%B0%E5%AE%89%E8%A3%9Dpip3%E5%A5%97%E4%BB%B6%E7%A8%8B%E5%BC%8F%0Asudo%20apt-get%20install%20python-pip%20python3-pip%0A%0A%23%E7%A7%BB%E9%99%A4%E8%88%8A%E7%89%88Tensoflow%E5%A5%97%E4%BB%B6%E7%A8%8B%E5%BC%8F%0Asudo%20pip%20uninstall%20tensorflow%0Asudo%20pip3%20uninstall%20tensorflow%0A%0A%23%E5%AE%89%E8%A3%9D%E5%90%84%E7%A8%AE%E7%B3%BB%E7%B5%B1%E7%9B%B8%E4%BE%9D%E5%A5%97%E4%BB%B6%E7%A8%8B%E5%BC%8F%0Asudo%20apt-get%20install%20gfortran%0Asudo%20apt-get%20install%20libhdf5-dev%20libc-ares-dev%20libeigen3-dev%0Asudo%20apt-get%20install%20libatlas-base-dev%20libopenblas-dev%20libblas-dev%0Asudo%20apt-get%20install%20liblapack-dev%0A%0A%23%E5%AE%89%E8%A3%9D%E5%90%84%E7%A8%AEPython3%E5%90%84%E7%A8%AE%E5%A5%97%E4%BB%B6%E7%A8%8B%E5%BC%8F%0Asudo%20-H%20pip3%20install%20–upgrade%20setuptools%0Asudo%20-H%20pip3%20install%20pybind11%0Asudo%20-H%20pip3%20install%20wrapt%0Asudo%20-H%20pip3%20install%20termcolor%0Asudo%20-H%20pip3%20install%20Cython%3D%3D0.29.21%0Asudo%20-H%20pip3%20install%20h5py%3D%3D2.10.0%C2%A0″ message=”更新系統套件” highlight=”” provider=”manual”/] [pastacode lang=”bash” manual=”%23%E5%AE%89%E8%A3%9D%E4%B8%8B%E8%BC%89%E5%B7%A5%E5%85%B7%0Apip3%20install%20gdown%0Asudo%20cp%20~%2F.local%2Fbin%2Fgdown%20%2Fusr%2Flocal%2Fbin%2Fgdown%0A%0A%23%E4%B8%8B%E8%BC%89Tensorflow%202.4.1%E5%A5%97%E4%BB%B6%E7%A8%8B%E5%BC%8F%E5%AE%89%E8%A3%9D%E6%AA%94%0Agdown%20https%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D1WDG8Rbi0ph0sQ6TtD3ZGJdIN_WAnugLO%0A%0A%23%E5%AE%89%E8%A3%9DTensorflow%202.4.1%E5%A5%97%E4%BB%B6%E7%A8%8B%E5%BC%8F%0Asudo%20-H%20pip3%20install%20tensorflow-2.4.1-cp37-cp37m-linux_aarch64.whl” message=”安裝 tensorflow” highlight=”” provider=”manual”/]

 

六、安裝Tensorflow-Lite Runtime 2.5.0 套件程式

對於Tinker Board 2S / 2GB而言,由於受限於主記憶體僅有2GB的緣故,因此對於神經網路進行推論運算時所需使用的主記憶體容量,就必須要謹慎運用這有限的容量,若需要在神經網路推論時有較高的運算效能,往往就必須要選擇神經網路模型規模較小的模型格式,在Tensorflow族系裡有種Tensorflow-Lite格式就是一種模型規模較小的格式,在Tensorflow的原廠網站裡也特別將Tensorflow-Lite格式定義適用於物聯網應用場域。以下說明套件程式安裝的方式,也歡迎參考我們的相關文章:https://blog.cavedu.com/?s=tensorflow

[pastacode lang=”bash” manual=”cd%20~%0Asudo%20apt-get%20update%0Asudo%20apt-get%20upgrade%0A%0Apip3%20install%20https%3A%2F%2Fgithub.com%2Fgoogle-coral%2Fpycoral%2Freleases%2Fdownload%2Fv2.0.0%2Ftflite_runtime-2.5.0.post1-cp37-cp37m-linux_aarch64.whl” message=”更新系統與安裝 tf runtime” highlight=”” provider=”manual”/]

七、安裝其他支援神經運算的套件程式SciKit-Learn

[pastacode lang=”bash” manual=”cd%20~%0Asudo%20apt-get%20update%0Asudo%20apt-get%20upgrade%0Asudo%20pip3%20install%20sklearn” message=”” highlight=”” provider=”manual”/]

八、安裝mediapipe Python相依套件

Google mediapipe 是最近非常熱門的 ML 套件,把各種視覺辨識變得更簡單好用,也歡迎參考我們的相關文章:https://blog.cavedu.com/?s=mediapipe

[pastacode lang=”bash” manual=”sudo%20apt%20update%0Asudo%20apt%20install%20-y%20python3-dev%20protobuf-compiler%20python3-pip%20git%20make%20libssl-dev%0Asudo%20pip3%20install%20pip%20–upgrade%0Asudo%20pip3%20install%20opencv_contrib_python%0Agit%20clone%20https%3A%2F%2Fgithub.com%2FPINTO0309%2Fmediapipe-bin%20%26%26%20cd%20mediapipe-bin%0A%0A.%2Fv0.8.4%2Fnumpy120x%2Fmediapipe-0.8-cp37-none-linux_aarch64_numpy120x_download.sh” message=”” highlight=”” provider=”manual”/] [pastacode lang=”bash” manual=”sudo%20pip3%20install%20%5C%0Acmake-3.20.2-cp37-none-linux_aarch64.whl%20%5C%0Anumpy-1.20.3-cp37-none-linux_aarch64.whl%20%5C%0Amediapipe-0.8-cp37-none-linux_aarch64.whl%0A%0Asudo%20pip3%20install%20opencv-python%20dataclasses” message=”安裝 mediapipe 與相關套件” highlight=”” provider=”manual”/]

 

九、安裝pygame套件

https://www.pygame.org/news

[pastacode lang=”bash” manual=”sudo%20aptitude%20install%20libsdl-image1.2-dev%0A%0Awget%20https%3A%2F%2Ffiles.pythonhosted.org%2Fpackages%2F0f%2F9c%2F78626be04e193c0624842090fe5555b3805c050dfaa81c8094d6441db2be%2Fpygame-1.9.6.tar.gz%0A%0Asudo%20apt-get%20install%20python-dev%20libsdl-image1.2-dev%20libsdl-mixer1.2-dev%20libsdl-ttf2.0-dev%20libsdl1.2-dev%20libsmpeg-dev%20python-numpy%20subversion%20libportmidi-dev%20ffmpeg%20libswscale-dev%20libavformat-dev%20libavcodec-dev%0A%0Asudo%20apt-get%20install%20libfreetype6-dev%0A%0Apip3%20install%20pygame-1.9.6.tar.gz” message=”” highlight=”” provider=”manual”/]

十、安裝AudioPlayer套件

https://pypi.org/project/audioplayer/

[pastacode lang=”bash” manual=”sudo%20apt-get%20install%20python-gst-1.0%0Asudo%20apt-get%20install%20gir1.2-gstreamer-1.0%C2%A0%0Asudo%20apt-get%20install%20gstreamer1.0-tools%0Asudo%20apt-get%20install%20gir1.2-gst-plugins-base-1.0%C2%A0%0Asudo%20apt-get%20install%20gstreamer1.0-plugins-good%0Asudo%20apt-get%20install%20gstreamer1.0-plugins-ugly%0Apip3%20install%20audioplayer%0Apip3%20install%20playsound%3D%3D1.2.2″ message=”” highlight=”” provider=”manual”/]

十一、安裝Playsound套件

https://pypi.org/project/playsound/

[pastacode lang=”bash” manual=”sudo%20apt-get%20install%20python-gst-1.0%0Asudo%20apt-get%20install%20gir1.2-gstreamer-1.0%C2%A0%0Asudo%20apt-get%20install%20gstreamer1.0-tools%0Asudo%20apt-get%20install%20gir1.2-gst-plugins-base-1.0%C2%A0%0Asudo%20apt-get%20install%20gstreamer1.0-plugins-good%0Asudo%20apt-get%20install%20gstreamer1.0-plugins-ugly%0Apip3%20install%20playsound%3D%3D1.2.2″ message=”” highlight=”” provider=”manual”/]

十二、安裝I2C介面與PCA9685電路驅動套件程式

在操作I2C介面驅動套件程式安裝之前,必須先至 tinker-config 系統管理工具啟用 I2C 介面服務,之後才能安裝相關套件與操作範例程式。

[pastacode lang=”bash” manual=”sudo%20tinker-config” message=”” highlight=”” provider=”manual”/]

設定完成之後,繼續安裝,快完工了!https://pypi.org/project/smbus2/

[pastacode lang=”bash” manual=”pip3%20install%20SMBUS2%0A%0Apip3%20install%20setuptools%0Asudo%20pip3%20install%20adafruit-circuitpython-servokit%0Asudo%20pip3%20install%20adafruit-pca9685″ message=”” highlight=”” provider=”manual”/]

總結

本次的安裝教學主要是針對新版核心(Debian-10 2.0.3版)進行安裝,相關安裝流程與較舊版本核心的安裝流程略有差異,若是新版核心建議還是按照本篇教學進行安裝,以確保相關的套件流程都可以正確安裝與執行。

相關文章

 

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *