LoginSignup
0
1

More than 5 years have passed since last update.

TinkerBord にKivyを入れる

Last updated at Posted at 2018-09-26

RaspberryPiではkivyの入れ方は公式に掲載されている中、公式に掲載されておらず
TinkerBoard Kivyの記事が少ないため記録として残します。
(おかしな作業も含まれているかもしれません)

TinkerBoardを利用する理由としてRaspberryPiの処理能力より高く、形状も類似しているため上位互換として利用が考えれたため(特にフルスクリーンの動画では顕著に差が発生)

TinkerOS v2.0.7
https://www.asus.com/Single-Board-Computer/Tinker-Board-S/HelpDesk_Download/
or
https://tinkerboarding.co.uk/wiki/index.php/TinkerOS
(日本の公式サイトのOSは古い)

Kivy 1.10
https://kivy.org/doc/stable/installation/installation-linux.html#debian-jessie-or-newer

基本的には、TinkerOSは Debian 9(stretch)なのでインストールマニュアルのdebianの項目を参照

インストール方法

1. /etc/apt/sources.list へdeb追加

マニュアルよりstable版
deb http://ppa.launchpad.net/kivy-team/kivy/ubuntu xenial main

上記コード/etc/apt/sources.list に追記する

/etc/apt/sources.list
deb http://http.debian.net/debian/ stretch main contrib non-free
・・・省略・・・
deb-src http://http.debian.net/debian/ stretch-updates main contrib non-free
deb http://ppa.launchpad.net/kivy-team/kivy/ubuntu xenial main

その後、下記コマンドで登録
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A863D2D6

sudo apt update

これでapt(パッケージ管理システム)に参照されるようになります。
updateを忘れてapt installをすると1.9がインストールされますので注意

2. インストール aptコマンド

sudo apt install python-kivy

python2.7版がインストールが開始されます。
(2.7版にしかないライブラリを使用するため)
python3版は sudo apt install python3-kivy

基本的にここまででkivyインストール完了です。

kivy実行時に エラーが発生する場合 SDL2の変更をお勧めします。おまけ3に記載

おまけ1. examplesのインストール

sudo apt install kivy-examples

おまけ2. pipのインストール

apt install python-pipコマンドで入るpipのバージョンが古いので
kivyインストール後にまともにライブラリが入らないので手動で入れる方法(get-pip.py)
https://pip.pypa.io/en/stable/installing/

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

pip -Vにでバージョン確認

おまけ3 SDL2の変更

今回の記事を書くキッカケです。
デスクトップ環境では動作はするのですが求めていたのは、RaspberryPiと同じくSSHやCLIからの起動、および自動起動をしたい。raspberryと同様に操作すると、下記のエラーがでます。
[CRITICAL] [Window ] Unable to find any valuable Window provider at all!
(あと明らかにデスクトップ環境のkivyの動作が重い、Raspberryの方が軽快と感じるほどに)

解決方法について下記のフォーラムに答えがありました。

https://groups.google.com/forum/#!topic/kivy-users/jwBnYxe969g

SDL2を手動で入れ直しましょうということです。
これがなかったら諦めていました。感謝します。

https://wiki.libsdl.org/Installation#Linux.2FUnix
より インストール方法を参照

*homeディレクトリで操作しています。

hgコマンドを使用可能にする(mercurialのインストール)

インストール方法のhgコマンドがないためmercurialをいれてhgコマンドを使用可能にします。
sudo apt-get install mercurial

SDLのサイト通りの作業

mkdir buildまで実行

hg clone https://hg.libsdl.org/SDL SDL
cd SDL
mkdir build

インストール開始

./configure --disable-video-rpi --disable-video-opengl --enable-video-opengles2 --disable-video-mir --enable-video-kmsdrm && make && make install

上記コマンドで /usr/local/lib に追加されます。

リンクの変更(要方法変更)。

フォーラムのやりとり内でインストールしても動作しないというやり取りがあります。
回答として、インストールしてもライブラリの読み込み上、手動で入れたSDL2じゃなくて元々のSDL2を参照しているからなんとかしてねということらしいです。
参照先を確認します。

$  sudo ldconfig -p | grep SDL
    libSDL2_ttf-2.0.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL2_ttf-2.0.so.0
    libSDL2_mixer-2.0.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL2_mixer-2.0.so.0
    libSDL2_image-2.0.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL2_image-2.0.so.0
    libSDL2-2.0.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL2-2.0.so.0
    libSDL_ttf-2.0.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL_ttf-2.0.so.0
    libSDL_mixer-1.2.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL_mixer-1.2.so.0
    libSDL_image-1.2.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL_image-1.2.so.0
    libSDL-1.2.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL-1.2.so.0

/usr/lib/arm-linux-gnueabihf/libSDL2-2.0.so.0を参照しています。
このファイルはリンクファイル(/usr/lib/arm-linux-gnueabihf/libSDL2-2.0.so.0.4.1)なので参照先を書き換えます。

これで差し替え完了になり想定している動作が行えるようになります。

ライブラリを読まれる順番を替えてあげます。
/etc/ld.so.conf.d/arm-linux-gnueabihf.confより先に読まれる
configファイルを作りその中に/usr/local/libをいれてください。
ldconfigにて先によまれます。

import osによる環境設定

kivyを使用するpyファイルに追記してください

import os
os.environ ['KIVY_GL_BACKEND'] = 'sdl2'

もしくは起動時に
KIVY_GL_BACKEND = sdl2 python xxx.py
として入れても動作します。

SDL2の変更後、GUIまわりの処理能力も上がっている気がします。

さいごに

RaspberryPiに比べて処理能力が高くコストもそこまで高くないのでGUIを回すことを考えると便利です。
Piに比べて情報量が少ないのが難点でしょうか。

一点うまくいってない点はsystemctlにてOS起動時にkivyを動かしたいのに動かないことです。
手動(systemctl start) ではうまくいくのでkivy起動前になにか転けてる感じがします。
(raspberry piのときはうまくいってました)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1