Kivy: Buster RPi4B๋Š” ๋ฐ์Šคํฌํƒ‘์ด ์—†๋Š” ์ฝ˜์†”์—์„œ ๊ท€์ค‘ํ•œ ์ฐฝ ๊ณต๊ธ‰์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 08์›” 15์ผ  ยท  113์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: kivy/kivy

Raspberry Pi 4B์—์„œ ๋ช…๋ น์ค„์— ๋กœ๊ทธ์ธํ•œ ํ›„(CLI์— ๋Œ€ํ•œ raspi-config ๋ถ€ํŒ… ์‚ฌ์šฉ) kivy ์ฐฝ ๊ณต๊ธ‰์ž(egl_rpi, sdl2, pygame ๋˜๋Š” x11)๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜๋กœ ์ธํ•ด kivy๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์ด๋Ÿฌํ•œ ๊ฐ ์ฐฝ ๊ณต๊ธ‰์ž์˜ ์‹œ๋„์™€ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณต๊ธ‰์ž๋Š” ๋‹ค์Œ ํŽ˜์ด์ง€์— ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

https://kivy.org/doc/stable/guide/environment.html

KIVY_WINDOW
์ฐฝ ์ƒ์„ฑ์— ์‚ฌ์šฉํ•  ๊ตฌํ˜„
๊ฐ’: sdl2, ํŒŒ์ด ๊ฒŒ์ž„, x11, egl_rpi

๋ฒ„์ „

  • ํŒŒ์ด์ฌ: 3.7.3
  • OS: ๋ผ์ฆˆ๋น„์•ˆ ๋ฒ„์Šคํ„ฐ 4.19
  • ํ‚ค๋น„: 1.11.1
  • Kivy ์„ค์น˜ ๋ฐฉ๋ฒ•: https://github.com/kivy/kivy/issues/6413

์„ค๋ช…

์•„๋ž˜ ๋‚˜์—ด๋œ ๋™์ผํ•œ test.py ํ”„๋กœ๊ทธ๋žจ์ด ์œ„์— ๋‚˜์—ด๋œ ๋ชจ๋“  ์ฐฝ ์ œ๊ณต์ž๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„์€ ๊ฐ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

import os
#os.environ['KIVY_WINDOW'] = 'egl_rpi'
from kivy.app import App
from kivy.uix.button import Button

class TestApp(App):
    def build(self):
        return Button(text='Hello World')

TestApp().run()

(๊ธฐ๋ณธ๊ฐ’) KIVY_WINDOW๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ(์œ„์˜ test.py) ๋‹ค์Œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

[DEBUG  ] [Window      ] Provider <egl_rpi> ignored by config
[DEBUG  ] [Window      ] Provider <sdl2> ignored by config
[DEBUG  ] [Window      ] Provider <x11> ignored by config
[CRITICAL] [Window      ] Unable to find any valuable Window provider. 
[CRITICAL] [App         ] Unable to get a Window, abort.

# ๊ธฐํ˜ธ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ 2ํ–‰์„ ๋ณ€๊ฒฝํ•œ ํ›„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

[DEBUG  ] [Window      ] Ignored <egl_rpi> (import error)
[DEBUG  ] [Window      ] Provider <sdl2> ignored by config
[DEBUG  ] [Window      ] Provider <x11> ignored by config
[CRITICAL] [Window      ] Unable to find any valuable Window provider. 
egl_rpi - ImportError: cannot import name 'bcm' from 'kivy.lib.vidcore_lite' (/usr/local/lib/python3.7/dist-packages/kivy/lib/vidcore_lite/__init__.py)
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/__init__.py", line 63, in core_select_lib
    fromlist=[modulename], level=0)
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/window_egl_rpi.py", line 12, in <module>
    from kivy.lib.vidcore_lite import bcm, egl
[CRITICAL] [App         ] Unable to get a Window, abort.

๋ผ์ธ 2๋ฅผ os.environ['KIVY_WINDOW'] = 'sdl2' ๋ณ€๊ฒฝํ•œ ํ›„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

[DEBUG  ] [Window      ] Provider <egl_rpi> ignored by config
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[DEBUG  ] [Window      ] Provider <x11> ignored by config
[CRITICAL] [Window      ] Unable to find any valuable Window provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes
sdl2 - RuntimeError: b'Could not initialize EGL'
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/__init__.py", line 71, in core_select_lib
    cls = cls()
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/window_sdl2.py", line 152, in __init__
    super(WindowSDL, self).__init__()
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/__init__.py", line 981, in __init__
    self.create_window()
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/window_sdl2.py", line 290, in create_window
    self.get_gl_backend_name())
  File "kivy/core/window/_window_sdl2.pyx", line 224, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window
  File "kivy/core/window/_window_sdl2.pyx", line 74, in kivy.core.window._window_sdl2._WindowSDL2Storage.die
[CRITICAL] [App         ] Unable to get a Window, abort.

๋ผ์ธ 2๋ฅผ os.environ['KIVY_WINDOW'] = 'pygame' ๋ณ€๊ฒฝํ•œ ํ›„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

[DEBUG  ] [Window      ] Provider <egl_rpi> ignored by config
[DEBUG  ] [Window      ] Provider <sdl2> ignored by config
[DEBUG  ] [Window      ] Provider <x11> ignored by config
[CRITICAL] [Window      ] Unable to find any valuable Window provider. 
[CRITICAL] [App         ] Unable to get a Window, abort.

๋ผ์ธ 2๋ฅผ os.environ['KIVY_WINDOW'] = 'x11' ๋ณ€๊ฒฝํ•œ ํ›„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

[DEBUG  ] [Window      ] Provider <sdl2> ignored by config
[DEBUG  ] [Window      ] Ignored <x11> (import error)
[CRITICAL] [Window      ] Unable to find any valuable Window provider. 
x11 - ModuleNotFoundError: No module named 'kivy.core.window.window_x11'
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/__init__.py", line 63, in core_select_lib
    fromlist=[modulename], level=0)
[CRITICAL] [App         ] Unable to get a Window, abort.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‹ค์Œ์€ Buster lite์—์„œ ๋ถ€ํŒ…ํ•  ๋•Œ Kivy ์•ฑ์„ ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์ž…๋‹ˆ๋‹ค.

๋จผ์ € ์‹ค์ œ ์ฐฝ์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•˜๋ฏ€๋กœ xserver-org๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo apt-get -y install xserver-xorg

๋‹ค์Œ์œผ๋กœ ์†Œ์Šค์—์„œ nodm์„ ์„ค์น˜ํ•˜๋ฏ€๋กœ ๋‹ค์Œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. https://github.com/spanezz/nodm/pull/10 :

sudo apt-get -y install libpam0g-dev help2man libx11-dev debhelper
git clone https://github.com/slashblog/nodm.git
pushd nodm
    git checkout d48a8f6266d3f464138e0e95b65896917c35c89f
    source /etc/os-release  # Will set the 'VERSION' variable
    if [ "$(echo $VERSION | sed -En 's/[0-9]+ \(([a-z]+)\)/\1/p')" == "buster" ]; then
        wget http://deb.debian.org/debian/pool/main/n/nodm/nodm_0.13-5.debian.tar.xz
    else
        wget http://deb.debian.org/debian/pool/main/n/nodm/nodm_0.13-1.3.debian.tar.xz
    fi
    tar xf nodm_0.13-*.debian.tar.xz
    sudo dpkg-buildpackage -us -uc -b
popd
sudo dpkg -i nodm_0.13-*_armhf.deb
sudo rm -rf nodm*

์ด์ œ ๊ทธ๋ž˜ํ”ฝ ๋กœ๊ทธ์ธ์„ ํ™œ์„ฑํ™”ํ•˜์‹ญ์‹œ์˜ค.

sudo systemctl set-default graphical.target

nodm์„ ๊ตฌ์„ฑํ•˜๊ณ  ๋ถ€ํŒ… ์‹œ ์•ฑ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

# Has the same effect as calling 'sudo dpkg-reconfigure nodm'
sudo sh -c 'echo "NODM_ENABLED=true" > /etc/default/nodm'
sudo sh -c 'echo "NODM_USER=$SUDO_USER" >> /etc/default/nodm' # Note that the variable SUDO_USER is used
sudo sh -c 'echo "NODM_FIRST_VT='\''7'\''" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_XSESSION=/etc/X11/Xsession" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_X_OPTIONS='\''-nolisten tcp'\''" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_MIN_SESSION_TIME=60" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_X_TIMEOUT=300" >> /etc/default/nodm'

# Start the app using nodm
echo '#!/bin/bash' > ~/.xsession
echo 'export DISPLAY=:0.0' >> ~/.xsession
echo "~/venv-kivy/bin/python3 ~/app.py" >> ~/.xsession

๊ฐ€์ƒ ํ™˜๊ฒฝ ์„ค์ •:

sudo apt-get -y install python3-pip python3-venv
sudo pip3 install -U pip
python3 -m venv venv-kivy
source ~/venv-kivy/bin/activate

Kivy ์ข…์†์„ฑ ์„ค์น˜:

sudo apt-get -y install python3-dev libmtdev1 libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev
sudo apt-get -y install pkg-config libgl1-mesa-dev libgles2-mesa-dev libgstreamer1.0-dev gstreamer1.0-plugins-{bad,base,good,ugly} gstreamer1.0-{omx,alsa} libmtdev-dev
pip3 install -U pygments docutils Cython==0.29.10 wheel

์ด์ œ Kivy๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ์„ค์น˜ํ•  ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค. ๋‚ด ํฌํฌ๋ฅผ ํŒจ์น˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ Raspberry Pi 4(https://github.com/Lauszus/kivy/commit/9cdcada34a6149b7fd6bd4c57285afc828d69948)์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋…์  Broadcom ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

export VIDEOCOREMESA=1; pip3 install git+https://github.com/Lauszus/kivy.git@rpi4_auto#egg=kivy

๋งˆ์ง€๋ง‰์œผ๋กœ ์ž‘์€ ํ…Œ์ŠคํŠธ ์•ฑ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

cat <<EOF > ~/app.py
from kivy.app import App
from kivy.uix.button import Button


class TestApp(App):

    def build(self):
        return Button(text='hello world')


if __name__ == '__main__':
    TestApp().run()
EOF

์ด์ œ ์žฌ๋ถ€ํŒ…ํ•˜๊ณ  ์ฆ๊ธฐ์„ธ์š” :)

๋ชจ๋“  113 ๋Œ“๊ธ€

RPi 4B: 1G ๋ฒ„์ „์—์„œ ๋™์ผํ•œ ๋™์ž‘์ด ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— ๋‹ค๋ฅธ SBC ํฌ๋Ÿผ์—์„œ sdl2 ์ฐฝ ๊ณต๊ธ‰์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด KMS ์ง€์›์œผ๋กœ sdl2๋ฅผ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋„์›€์ด ๋ ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ํŒ…์ปค ๋ณด๋“œ: https://groups.google.com/forum/m/#!topic/kivy -users/jwBnYxe969g
์ ฏ์Šจ ๋‚˜๋…ธ:
https://devtalk.nvidia.com/default/topic/1057120/kivy-app-fails-on-jetson-nano-/

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, 4GB RAM์ด ์žฅ์ฐฉ๋œ Raspberry Pi 4B์˜ SunFounder 10" ํ„ฐ์น˜์Šคํฌ๋ฆฐ(ํ‘œ์ค€ Raspberry Pi Foundation ๋””์Šคํ”Œ๋ ˆ์ด์™€ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ํ˜ธํ™˜๋จ)์— GUI๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ Raspbian Lite ๊ตฌ์„ฑ์„ ์ฐพ์œผ๋ ค๊ณ  3์ผ ๋™์•ˆ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ์กฐ๊ฑด: ๋‹ค๋ฅธ ์„ธ์…˜์—์„œ kill ๊ฐ€ ํ•„์š”ํ•œ Kivy ์•ฑ ์ถฉ๋Œ(์‘๋‹ต ์—†์Œ)
์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€: "์„œ๋น„์Šค ์ถ”๊ฐ€ ์‹คํŒจ - ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๊นŒ?" (์ดํ›„ ์‹œ๋„ ํ›„์— ํ‘œ์‹œ๋จ)
์˜ค๋ฅ˜: ๋ถ€ํŒ… ์งํ›„์— GUI ์ถœ๋ ฅ์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์ง€๋งŒ(๋ ˆ๊ฑฐ์‹œ KMS ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ) ๊ฒ‰๋ณด๊ธฐ์—๋Š” ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๋กœ๊ทธ ์ถœ๋ ฅ

๊ธ€์Ž„, ๋‚˜๋Š” ์ด๋ฏธ ์ƒˆ๋กœ์šด ๋“€์–ผ ๋งˆ์ดํฌ๋กœ HDMI ํฌํŠธ๋กœ ์ธํ•ด HDMI๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. 4B ๋ชจ๋ธ์—์„œ 7" ๊ณต์‹ ํ„ฐ์น˜์Šคํฌ๋ฆฐ์„ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ HDMI ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. DSI์— ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค.

egl_rpi ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฒ„์Šคํ„ฐ ํ’€์—์„œ failed to add service - already in use? ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์„ํ•˜์—ฌ ๊ณ ์ • dtoverlay=vc4-kms-v3d ์— /boot/config.txt ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋“  ์‚ฌ๋ผ,ํ•˜์ง€๋งŒ kivy ์ „ํ˜€ ์•„๋ฌด ๊ฒƒ๋„ ๋ณด์ด์ง€ ์•Š์•˜๋‹ค.

๋ฒ„์Šคํ„ฐ ๋ผ์ดํŠธ์—์„œ๋„ ๋™์ผํ•œ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

egl_rpi ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฒ„์Šคํ„ฐ ํ’€์—์„œ failed to add service - already in use? ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์„ํ•˜์—ฌ ๊ณ ์ • dtoverlay=vc4-kms-v3d ์— /boot/config.txt ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋“  ์‚ฌ๋ผ,ํ•˜์ง€๋งŒ kivy ์ „ํ˜€ ์•„๋ฌด ๊ฒƒ๋„ ๋ณด์ด์ง€ ์•Š์•˜๋‹ค.

๋ฒ„์Šคํ„ฐ ๋ผ์ดํŠธ์—์„œ๋„ ๋™์ผํ•œ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ์ด์ œ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. raspi-config์—์„œ OpenGL์„ ๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.
x11 - ImportError: window_x11์ด๋ผ๋Š” ๋ชจ๋“ˆ์ด ์—†์Šต๋‹ˆ๋‹ค.
core_select_lib์—์„œ ํŒŒ์ผ "/home/pi/project/venv/local/lib/python2.7/site-packages/kivy/core/__init__.py", 59ํ–‰
fromlist=[๋ชจ๋“ˆ ์ด๋ฆ„], ๋ ˆ๋ฒจ=0)
raspbian buster, python2.7, virtualenv ๋ฐ kivy 1.10.1 ์‚ฌ์šฉ.

@Gawezi KIVY_WINDOW=egl_rpi ๋ฅผ ์„ค์ •ํ•˜์—ฌ x11์ด ์•„๋‹Œ egl_rpi ์ฐฝ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด kivy๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. x11์„ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์„ค์น˜ ์‹œ x11 ์ง€์›์œผ๋กœ kivy๋ฅผ ์ปดํŒŒ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค( USE_X11=1 ).

#6418์—์„œ Buster๋ฅผ ์‹คํ–‰ํ•˜๋Š” Pi 3B ์—์„œ ๋™์ผ/์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง„ํ–‰ ์ƒํ™ฉ์„ ๊ฒŒ์‹œํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์†”๋ฃจ์…˜์ด ๊ณง ์ œ๊ณต๋˜๊ธฐ๋ฅผ ์ง„์‹ฌ์œผ๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค!

@matham USE_X11=1์„ ์„ค์ •ํ•  ์œ„์น˜๋ฅผ ์ž์„ธํžˆ

@frankgould export VIDEOCOREMESA=1 kivy ์ปดํŒŒ์ผ ์ „ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (https://github.com/kivy/kivy/commit/fa9932d812afd74f8524d17f5a85365e64ac39d7)

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•ญ์ƒ rpi์˜ ๋…์  ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•ด ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ x11์„ ์„ค์น˜ํ•˜๊ณ  ์„ธ์…˜์„ ์‹œ์ž‘ํ•˜๊ณ  x11 ์„ธ์…˜ ๋‚ด์—์„œ kivy ์•ฑ์„ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
i3wm๊ณผ ๊ฐ™์€ ์ตœ์†Œํ•œ์˜ ์ฐฝ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ผ์„ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@rnixx ์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜ ํ•œ๋ฒˆ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

USE_X11=1 ๋Š” kivy๋ฅผ ์ปดํŒŒ์ผํ•  ๋•Œ ํ™˜๊ฒฝ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์Šคํฌํƒ‘ ์—†์ด kivy๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฐ€๋Šฅ์„ฑ์€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ์Šคํฌํƒ‘ ์—†์ด ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ OS์—์„œ x ์ง€์› ์—†์ด ์‹คํ–‰๋˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— kivy์—์„œ x ์ง€์›์ด ๋„์›€์ด ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

egl_rpi๋งŒ x ์ง€์› afaik ์—†์ด ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@matham ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. KIVY_GRAPHICS=โ€œglesโ€ ๋ฐ VIDEOCOREMESA=1๊ณผ ํ•จ๊ป˜ /etc/environment์— key=Val ์ฝค๋ณด๋ฅผ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ๋ฐ์Šคํฌํƒ‘ ์—†์ด๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ฐฝ์„ ์—ด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ALARM์—์„œ ๋ฐ์Šคํฌํ†ฑ ์—†์ด ์‹คํ–‰ํ•˜๋ ค๋ฉด ์ด์ „ RPi3A+๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์น˜ํ–ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: ์œ„์˜ ํ…Œ์ŠคํŠธ๋Š” ๋ฒ„์Šคํ„ฐ๊ฐ€ ์•„๋‹Œ ALARM 4.19์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋Œ“๊ธ€์€ ์ด ์Šค๋ ˆ๋“œ ์™ธ๋ถ€์— ์žˆ์ง€๋งŒ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ฒ„์Šคํ„ฐ์—์„œ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜ ๋‚˜๋Š” ๋‹ค์Œ /etc/environment ๋‚ด์šฉ์œผ๋กœ ์„ค์น˜๋œ RPi4B:4GB Raspbian 4.19 kivy๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

USE_X11=1
VIDEOCOREMESA=1
KIVY_GRAPHICS="gles"

๋‹ค์Œ์€ ๊ธฐ๋ณธ ํ™˜๊ฒฝ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

pi<strong i="9">@SlideShowPi</strong>:~/SlideShow $ python3 test.py
[INFO   ] [Logger      ] Record log in /home/pi/.masterpics/logs/SlideShowPi_19-08-23_15.txt
[INFO   ] [Kivy        ] v1.11.1
[INFO   ] [Kivy        ] Installed at "/usr/local/lib/python3.7/dist-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.7.3 (default, Apr  3 2019, 05:39:12) 
[GCC 8.2.0]
[INFO   ] [Python      ] Interpreter at "/usr/bin/python3"
[INFO   ] [Factory     ] 184 symbols loaded
[DEBUG  ] [Cache       ] register <kv.lang> with limit=None, timeout=None
[DEBUG  ] [Cache       ] register <kv.image> with limit=None, timeout=60
[DEBUG  ] [Cache       ] register <kv.atlas> with limit=None, timeout=None
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[DEBUG  ] [Cache       ] register <kv.texture> with limit=1000, timeout=60
[DEBUG  ] [Cache       ] register <kv.shader> with limit=1000, timeout=3600
[DEBUG  ] [Text        ] Provider <pango> ignored by config
[INFO   ] [Text        ] Provider: sdl2(['text_pango'] ignored)
[DEBUG  ] [App         ] Loading kv <./test.kv>
[DEBUG  ] [App         ] kv <./test.kv> not found
[DEBUG  ] [Window      ] Ignored <egl_rpi> (import error)
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[DEBUG  ] [Window      ] Ignored <x11> (import error)
[CRITICAL] [Window      ] Unable to find any valuable Window provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes
egl_rpi - ImportError: cannot import name 'bcm' from 'kivy.lib.vidcore_lite' (/usr/local/lib/python3.7/dist-packages/kivy/lib/vidcore_lite/__init__.py)
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/__init__.py", line 63, in core_select_lib
    fromlist=[modulename], level=0)
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/window_egl_rpi.py", line 12, in <module>
    from kivy.lib.vidcore_lite import bcm, egl

sdl2 - RuntimeError: b'Could not initialize EGL'
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/__init__.py", line 71, in core_select_lib
    cls = cls()
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/window_sdl2.py", line 152, in __init__
    super(WindowSDL, self).__init__()
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/__init__.py", line 981, in __init__
    self.create_window()
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/window_sdl2.py", line 290, in create_window
    self.get_gl_backend_name())
  File "kivy/core/window/_window_sdl2.pyx", line 224, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window
  File "kivy/core/window/_window_sdl2.pyx", line 74, in kivy.core.window._window_sdl2._WindowSDL2Storage.die

x11 - ModuleNotFoundError: No module named 'kivy.core.window.window_x11'
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/__init__.py", line 63, in core_select_lib
    fromlist=[modulename], level=0)

[CRITICAL] [App         ] Unable to get a Window, abort.
  • 4GB์˜ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด 4B
  • ๋ผ์ฆˆ๋น„์•ˆ ๋ฒ„์Šคํ„ฐ ๋ผ์ดํŠธ 2019๋…„ 7์›” 10์ผ
  • ํ‚ค๋น„ 1.11.1
  • ํŒŒ์ด์ฌ 3.7.3
  • SunFounder 10.1" ์ •์ „์‹ TFT ๋””์Šคํ”Œ๋ ˆ์ด

๋‚ด ์žฅ๋น„์—์„œ segmentation fault ๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

gdb --args python3 test.py # then press 'r' to run it

GNU gdb (Raspbian 8.2.1-2) 8.2.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "arm-linux-gnueabihf".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from python3...(no debugging symbols found)...done.
(gdb) r

Starting program: /usr/bin/python3 test.py
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
[INFO   ] [Logger      ] Record log in /home/pi/.kivy/logs/kivy_19-08-23_16.txt
[INFO   ] [Kivy        ] v1.11.1
[INFO   ] [Kivy        ] Installed at "/usr/local/lib/python3.7/dist-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.7.3 (default, Apr  3 2019, 05:39:12) 
[GCC 8.2.0]
[INFO   ] [Python      ] Interpreter at "/usr/bin/python3"
[Detaching after fork from child process 3301]
[INFO   ] [Factory     ] 184 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2(['text_pango'] ignored)
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[New Thread 0xb4171460 (LWP 3302)]
[New Thread 0xb37ff460 (LWP 3303)]
[New Thread 0xb2ffe460 (LWP 3304)]
[New Thread 0xb27fd460 (LWP 3305)]
[INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
[INFO   ] [GL          ] Backend used <gl>

Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0xb6fbc1dc in strlen () from /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so

RPi3A+์—์„œ Arch Linux ๋นŒ๋“œ๋ฅผ ์œ„ํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ์ž๋™ ๋กœ๊ทธ์ธ ๋ฐ ๋‚ด ์‹œ์ž‘ ํ™”๋ฉด systemd ์„œ๋น„์Šค์—์„œ ๋ถ€ํŒ…์ด ์‹คํ–‰๋˜๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ถ€ํŒ…์ด X11์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ์ด๊ฒƒ์ด kivy๊ฐ€ ์‹œ์ž‘๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค( pastebin ์—์„œ ). ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋ฒ„์Šคํ„ฐ์—์„œ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

.xinitrc ๋‚ด์šฉ:

#!/bin/sh
# ~/.xinitrc
# Executed by startx (run your window manager from here)
if [ -d /etc/X11/xinit/xinitrc.d ]; then
  for f in /etc/X11/xinit/xinitrc.d/*; do
    [ -x "$f" ] && . "$f"
  done
  unset f
fi

exec startlxde

๋‚ด ํ™”๋ฉด ์‹œ์ž‘.์„œ๋น„์Šค:

[Unit]
Description=Remote Control Screen
Requires=time-sync.target
After=time-sync.target

[Service]
Environment="DISPLAY=:0.0"
ExecStart=/usr/bin/python3 /home/remote/app/main.py
RemainAfterExit=yes
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

์‹œ์ž‘ ์‹œ kivy ํ™˜๊ฒฝ ๊ฐ’:

#! /usr/bin/python3
import os
os.environ['KIVY_VIDEO']='ffpyplayer'

์ด๊ฒƒ์€ Pi3B+๊ฐ€ ์žˆ๋Š” Buster์—์„œ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ Pi4์˜ ๊ฒฝ์šฐ ์กฐ์‚ฌํ•ด์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๊ทผ๋ฐ ๊ทธ๊ฒŒ ์›”์š”์ผ @OutsourcedGuru?!

์‚ฌ์‹ค, ๋‚˜๋Š” ํ† ์š”์ผ์— ์ด ๋ง๋„ ์•ˆ๋˜๋Š” ์†Œ๋ฆฌ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ Raspbian Lite ์žฅ๋น„์— x11 ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ตœ์†Œํ•œ์˜ ๊ฒƒ์„ ์–ป์œผ๋ ค๊ณ ํ–ˆ์ง€๋งŒ GUI ๋ฐ์Šคํฌํƒ‘์„ ๋ถˆ๋Ÿฌ ์˜ค์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. x๋ฅผ ์‹œ์ž‘ํ•œ ๋‹ค์Œ Pi ์ž์ฒด์—์„œ ์‹œ์ž‘ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

sudo apt-get install --no-install-recommends xserver-xorg # Trying for the PIXEL desktop
sudo apt-get install --no-install-recommends xinit # Need the startx script
sudo pip3 install --force-reinstall kivy
python3 test.py # Didn't work - segmentation fault
startx # Didn't work - wouldn't start the desktop
sudo apt-get install --yes raspberrypi-ui-mods # Desktop
python3 test.py # Didn't work - segmentation fault
startx # Worked - then open a terminal from the upper menu
python3 test.py # Works - displays a window

๋™์ผํ•œ Raspbian Lite ์žฅ๋น„(x11/Desktop๊ฐ€ ์ถ”๊ฐ€๋จ)๋Š” ์—ฌ์ „ํžˆ Python2 ์„ธ๊ณ„์—์„œ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉˆ์ถ”๊ณ , Ctl-C์— ์‘๋‹ตํ•˜์ง€ ์•Š๊ณ , ๋‹ค๋ฅธ ์ฐฝ์„ ํ‘œ์‹œํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ •์ƒ์ ์œผ๋กœ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

@OutsourcedGuru ์ฒ˜์Œ๋ถ€ํ„ฐ python2 ์‚ฌ์šฉ์„ ๋ฌด์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ฌํ•ด ์ง€์›์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
๋‹น์‹ ์ดํ•ด์•ผ ํ•  ๊ฒƒ์€์—๋งŒ ์„ค์น˜๋˜๋„๋ก python3 ๋งŒ ์‚ฌ์šฉ pip3 . Raspbian ๊ฐ€ python3์„ ๊ธฐ๋ณธ ํŒŒ์ด์ฌ์œผ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์€ ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. Arch Linux ํ›„์† ์กฐ์น˜๋ฅผ ์ทจํ•˜๋ฉด python3 ๊ฐ€ ์™„๋ฒฝํ•œ ๊ธฐ๋ณธ ๋ฒ„์ „์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  1์›”๋ถ€ํ„ฐ OctoPrint ์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. master ๋ถ„๊ธฐ์—์„œ ์•„์ง Py3๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ์•„์นจ ๋‚ด๋‚ด devel ๋ธŒ๋žœ์น˜์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์žฅ๋น„ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”Œ๋žซํผ์œผ๋กœ ํ‘ธ์‹œ๋˜์ง€๋„ ์•Š์€ ๋ฌด์–ธ๊ฐ€์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ๋ฉฐ์น ์„ ๋ณด๋‚ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ๋‚˜๋Š” ์†๊ฐ€๋ฝ์„ ๊ผฌ๊ณ  ๊ทธ๋“ค์˜ ๊ฐœ๋ฐœ ์ฝ”๋“œ๊ฐ€ ๋‚ด ๋ฌผ๊ฑด์„ ๋ง๊ฐ€๋œจ๋ฆฌ์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ด๊ฒƒ์€ ํ”„๋กœ๋•์…˜ ํ”„๋ฆฐํ„ฐ๊ฐ€ ๋  ๊ฒƒ์ด๋ฉฐ ๋ฒ ํƒ€ ์ฝ”๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ด์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ์„ ํ˜ธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.)

"์•„์•„, ๋ถˆ์Œํ•œ ์š”๋ฆญ, ๋‚˜๋Š” ๊ทธ๋ฅผ ์ž˜ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค."

@OutsourcedGuru , ๋‚˜๋Š” ํ•œ ๋ฒˆ Raspberry Pi ์ค‘์žฌ์ž๊ฐ€ ๊ทธ ๋ฌธ์ œ์— ๋Œ€ํ•ด Raspbian ๋˜๋Š” Raspberry Pi์— ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ๋งํ•œ ๊ฒƒ์„ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ์—๋Š” ๊ทธ๊ฐ€ ์˜ณ์•˜์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ๊ทธ๋“ค์€ ๋” ๋งŽ์€ ๊ฐ€๋Šฅ์„ฑ์„ ์œ„ํ•ด ์ง„์ „์„ ์ด๋ฃน๋‹ˆ๋‹ค. ์œ„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋‚ด ์•ฑ๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ALARM์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ์ดํ›„๋กœ HDMI ์˜ค๋””์˜ค๋Š” ํ˜ธ์Šค์ž…๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ ๋ช…๋ น์ค„์—์„œ๋Š” ๊นจ๋—ํ•˜์ง€๋งŒ systemd์—์„œ ์‹คํ–‰ํ•  ๋•Œ๋Š” ์“ฐ๋ ˆ๊ธฐ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ถ”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ์ˆ  ๊ณก์„ ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜ ๋‚˜์ฒ˜๋Ÿผ ํ•˜๋ฃจ ์ข…์ผ ๋‘๋“œ๋ ค๋„ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์„ ์œ„ํ•ด ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ๋ƒฅ ๊ณ„์† ๋‘๋“ค๊ฒจ.

๋ˆ„๊ตฌ๋“ ์ง€์ด ์ œ์•ˆ์„ ์‹œ๋„ ํ–ˆ์Šต๋‹ˆ๊นŒ? KIVY_TEXT๋„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ๋ง์— ๊ธฐํšŒ๊ฐ€ ๋œ๋‹ค๋ฉด ๋„์ „ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

https://stackoverflow.com/questions/56947840/kivy-1-10-1-and-1-11-0-not-working-on-raspberry-pi4-buster

๊ทธ๋ž˜์„œ ๋‹ค๋“ค ์•„์ง๋„ ๋ฒ„์Šคํ„ฐ์—์„œ ํ‚ค๋น„๋ฅผ ๋ชป์“ฐ๊ฒŒ ๋งŒ๋“œ๋„ค..?

๋ฐ์Šคํฌํƒ‘ ๋ฒ„์ „์—์„œ Kivy ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์‰ฝ์ง€๋งŒ ์ฝ˜์†” ๋ถ€ํŒ…์—์„œ ์ง์ ‘ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ?

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ํ•˜ํ•˜, ์ง€๊ธˆ ์‹œ๋„ํ•˜์ง€ ์•Š์€ ๊ฒƒ์— ๋Œ€ํ•ด ๊ฝค ๋ฐ”๋ณด ๊ฐ™์€ ๋Š๋‚Œ์ด ๋“ญ๋‹ˆ๋‹ค. ssh๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์‹œ๋„ํ–ˆ์ง€๋งŒ vnc๋ฅผ ํ†ตํ•ด ํ•œ ๋ฒˆ ์‹œ๋„ํ•ด ๋ณด์•˜๊ณ  ์‹ค์ œ๋กœ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด tkinter(๋‹ค๋ฅธ python UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๋„ ์ฝ˜์†”์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์ง€๋งŒ ๋ฐ์Šคํฌํƒ‘์—์„œ๋Š” ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”์—์„œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ตœ์†Œํ•œ ์‹œ์ž‘์—์„œ ์‹œ์ž‘ํ•˜๋Š” ์•ˆ์ •์ ์ธ ๋ฐฉ๋ฒ•์ด ์ •๋ง ํ•„์š”ํ•˜์ง€๋งŒ ์ด ๋ฌธ์ œ๋ฅผ ์–ธ๊ธ‰ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์นจ๋‚ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค!

@masynthetic ALARM์—์„œ ๋‚ด .xinitrc๊ฐ€ ์ฐฝ์„ ์‹œ์ž‘ํ•œ ๋‹ค์Œ Windows๊ฐ€ ์ผœ์ง„ ํ›„ Kivy ์•ฑ์ด ์ž๋™ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ง€๊ธˆ ์‚ฌ๋ฌด์‹ค์— ์žˆ์ง€ ์•Š๊ณ  ํƒœ๋ธ”๋ฆฟ์„ ๋ถ€ํŒ…ํ•˜์—ฌ ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋งค์šฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋‘๋ฅด์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
ํ˜„์žฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

2019๋…„ 9์›” 14์ผ ํ† ์š”์ผ ์˜ค์ „ 3์‹œ 17๋ถ„ Frank Gould [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@masynthetic https://github.com/masynthetic ์•Œ๋žŒ์—์„œ ๋‚ด .xinitrc
Windows๋ฅผ ์‹œ์ž‘ํ•œ ๋‹ค์Œ Windows๊ฐ€ ์ผœ์ง„ ํ›„ Kivy ์•ฑ์ด ์ž๋™ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋‚œ ์ค„์ˆ˜์žˆ์–ด
๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ ๋” ๋งŽ์€ ์ •๋ณด. ์ง€๊ธˆ ์‚ฌ๋ฌด์‹ค์— ์žˆ์ง€ ์•Š์•„ ๋ถ€ํŒ…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํƒœ๋ธ”๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ ๋ฐฉ๋ฒ•์„ ์ •ํ™•ํžˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kivy/kivy/issues/6474?email_source=notifications&email_token=AEOWUVKTRWPLKDVSMG2ERDQJS25HA5CNFSM4IL7DFSKYY3PNVWWK6GO3TUL52HS4DFVREXG43VMVBW63LDNMVXHJ
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AEOWUVMTOIQUCNBD7EKOK3TQJS25HANCNFSM4IL7DFSA
.

์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. @ํ”„๋žญํฌ๊ตด๋“œ

๋ฐ์Šคํฌํƒ‘์ด ์—†๋Š” ๋ฒ„์ „์— ๋Œ€ํ•œ ์ข‹์€ ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์ด ์ž‘์—…์œผ๋กœ ๋Œ์•„๊ฐ€ ๊ธฐ๋ณธ ์šด์˜ ์ฒด์ œ์™€ ๋“œ๋ผ์ด๋ฒ„ ์„ธํŠธ๊ฐ€ ์ด์ „๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋ƒ‰์†Œ์ ์ด๋ผ ์ข€ ์˜์‹ฌ์Šค๋Ÿฝ๊ธด ํ•ฉ๋‹ˆ๋‹ค.

ํŒจ์น˜ ์—†์ด ๋ฐ๋น„์•ˆ Jessie์—์„œ ์ž‘์—…ํ•  kivy๋„ ์–ป์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ egl์„ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ๋‹ค๋ฉด ๊ณผ๊ฑฐ์— kivy/core/window/window_egl_rpi.py ์˜ ์ดˆ๊ธฐํ™” ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

-    def create_window(self):
+    def create_window(self, *args):

๋‚˜๋Š” ๋ช‡ ๋‹ฌ ์ „์— ์ด์ „ ๋ฒ„์ „์˜ kivy์™€ ๋น„์Šทํ•œ ๋ฌธ์ œ๋ฅผ ๊ฒช์—ˆ๊ณ  ์ด๊ฒƒ์ด ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ œ ๊ธฐ์–ต์ด ๋งž๋‹ค๋ฉด ์ถ”๊ฐ€ ์ธ์ˆ˜๊ฐ€ ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— egl์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฐฝ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์™ธ๋Š” ์–ด๋”˜๊ฐ€์—์„œ ํฌ์ฐฉ๋˜๊ณ  ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

Debian Jessie์—์„œ๋Š” ์ด ํŒจ์น˜๋กœ ๋ชจ๋“  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์ง€๋งŒ Buster์—์„œ๋Š” ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด ์ปค๋ฐ‹์œผ๋กœ ์ธํ•ด ์—ฌ์ „ํžˆ egl ์˜ต์…˜์ด ๋ฌด์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: 333a4cc9c7b4b3168f7427d27f4fdea2a69bc52b.

์–ด์จŒ๋“ , ymmv.

@ahendriksen ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๊ฐ€์ •ํ•˜๋ฉด ํŒŒ์ผ์„ ์ œ์ž๋ฆฌ์— ํŒจ์น˜ํ•˜๊ฑฐ๋‚˜ ํŒจ์น˜ ํ›„ ์žฌ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? (๊ฐ์‚ฌ ํ•ด์š”.)

๊ทธ ์ž๋ฆฌ์—์„œ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฒ„์Šคํ„ฐ ๋ฌธ์ œ์— ๊ฒŒ์‹œ๋œ ํŠธ๋ ˆ์ด์Šค๋ฐฑ์—์„œ ์ด๊ฒƒ์„ ๋ณธ ์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ์ธ์ง€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์—ญ์ถ”์ ์ด ์žˆ์œผ๋ฉด ๊ฒŒ์‹œํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋˜์–ด ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@OutsourcedGuru ๋‚ด ๊ฒฝํ—˜์ƒ ์ œ์ž๋ฆฌ ํŒจ์น˜๊ฐ€ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@matham , ๋ฐฉ๊ธˆ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์— ๋ฒ„์Šคํ„ฐ๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณง ๋‹ค์‹œ ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Buster๊ฐ€ ์žˆ๋Š” Pi 3 Model B+์—์„œ ํ˜„์žฌ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜(2.0.0-dev0)๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค๊ณ  ๋ณด๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
window_egl_rpi.pi์— ๋Œ€ํ•œ ํŒจ์น˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๊ทธ๊ฒƒ์ด ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋น ์ ธ์„œ Buster Desktop์—์„œ Python 3 ์‹œ๋„๋กœ ํ•˜๋ฃจ๋ฅผ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ Raspberry Pi 4์˜ Buster Lite์—์„œ Kivy์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์ด ์—†์—ˆ์Šต๋‹ˆ๊นŒ?
RPi4 4GB
Rpi ๊ณต์‹ ๋””์Šคํ”Œ๋ ˆ์ด
๋ผ์ฆˆ๋น„์•ˆ ๋ฒ„์Šคํ„ฐ 2019-09-26
ํŒŒ์ด์ฌ: 3.7.3
ํ‚ค๋น„: v2.0.0.dev0

๋ถ€ํŒ… ํ›„ ๊ฐ„๋‹จํ•œ Kivy ํŒŒ์ผ์„ ์ฒ˜์Œ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋กœ๊ทธ๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  ํ™”๋ฉด์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค .
[INFO ] [Logger ] /home/pi/.kivy/logs/kivy_19-10-02_7.txt์— ๋กœ๊ทธ์ธ ๊ธฐ๋ก
[์ •๋ณด] [ํ‚ค๋น„] v2.0.0.dev0, git-f223133, 20191002
[์ •๋ณด] [Kivy] "/usr/local/lib/python3.7/dist-packages/kivy/__init__.py"์— ์„ค์น˜๋จ
[์ •๋ณด] [ํŒŒ์ด์ฌ] v3.7.3 (๊ธฐ๋ณธ๊ฐ’, 2019๋…„ 4์›” 3์ผ, 05:39:12)
[GCC 8.2.0]
[INFO ] [Python ] "/usr/bin/python"์˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ
[INFO ] [Factory] 184๊ฐœ์˜ ๊ธฐํ˜ธ๊ฐ€ ๋กœ๋“œ๋จ
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=์—†์Œ, ์‹œ๊ฐ„ ์ดˆ๊ณผ=์—†์Œ
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=์—†์Œ, ์‹œ๊ฐ„ ์ดˆ๊ณผ=60
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=์—†์Œ, ์‹œ๊ฐ„ ์ดˆ๊ณผ=์—†์Œ
[์ •๋ณด] [์ด๋ฏธ์ง€] ๊ณต๊ธ‰์ž: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer๋Š” ๋ฌด์‹œ๋จ)
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=1000, ์‹œ๊ฐ„ ์ดˆ๊ณผ=60
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=1000, ์‹œ๊ฐ„ ์ดˆ๊ณผ=3600
[๋””๋ฒ„๊ทธ] [์•ฑ] kv ๋กœ๋“œ ์ค‘ <./test.kv>
[์ •๋ณด] [ํ…์ŠคํŠธ] ๊ณต๊ธ‰์ž: sdl2
[์ •๋ณด] [์ฐฝ] ๊ณต๊ธ‰์ž: egl_rpi
[DEBUG ] [์ฐฝ ] ์‹ค์ œ ํ‘œ์‹œ ํฌ๊ธฐ: 800x480
[INFO ] [GL ] "OpenGL ES 2" ๊ทธ๋ž˜ํ”ฝ ์‹œ์Šคํ…œ ์‚ฌ์šฉ
[DEBUG] [GL] glShaderBinary๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
[INFO ] [GL ] ๋ฐฑ์—”๋“œ ์‚ฌ์šฉ
[์ •๋ณด] [GL] OpenGL ๋ฒ„์ „ [INFO ] [GL ] OpenGL ๊ณต๊ธ‰์—…์ฒด [์ •๋ณด] [GL] OpenGL ๋ Œ๋”๋Ÿฌ
[INFO ] [GL ] OpenGL ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฒ„์ „: 2, 0
[INFO ] [GL ] ์Œ์˜ ๋ฒ„์ „
[INFO ] [GL ] ํ…์Šค์ฒ˜ ์ตœ๋Œ€ ํฌ๊ธฐ <2048>
[INFO ] [GL ] ํ…์Šค์ฒ˜ ์ตœ๋Œ€ ๋‹จ์œ„ <8>
[DEBUG] [Shader] ์กฐ๊ฐ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ปดํŒŒ์ผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
[DEBUG] [Shader] ์ •์ ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ปดํŒŒ์ผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
[๋””๋ฒ„๊ทธ] [ImageSDL2] ๋กœ๋“œ
[์ •๋ณด] [์ฐฝ] ๊ฐ€์ƒ ํ‚ค๋ณด๋“œ๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Œ, ๋‹จ์ผ ๋ชจ๋“œ, ๋„ํ‚น๋˜์ง€ ์•Š์Œ
[DEBUG] [Resource] ๊ฒฝ๋กœ ๋ชฉ๋ก์— ์ถ”๊ฐ€
[DEBUG] [Resource] ๊ฒฝ๋กœ ๋ชฉ๋ก์— ์ถ”๊ฐ€
[DEBUG] [Resource] ๊ฒฝ๋กœ ๋ชฉ๋ก์— ์ถ”๊ฐ€
[DEBUG] [Resource] ๊ฒฝ๋กœ ๋ชฉ๋ก์— ์ถ”๊ฐ€
[DEBUG] [Resource] ๊ฒฝ๋กœ ๋ชฉ๋ก์— ์ถ”๊ฐ€
[DEBUG ] [Base ] ๋งˆ์šฐ์Šค์—์„œ ๊ณต๊ธ‰์ž ์ƒ์„ฑ
[DEBUG ] [Base ] probesysfs,provider=mtdev์—์„œ ๊ณต๊ธ‰์ž ์ƒ์„ฑ
[DEBUG] [ProbeSysfs] probesysfs ์‚ฌ์šฉ!
[DEBUG ] [ProbeSysfs ] ์žฅ์น˜๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค: /dev/input/event0์—์„œ FT5406 ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ๋“œ๋ผ์ด๋ฒ„
[์ •๋ณด] [ProbeSysfs] ์žฅ์น˜ ์ผ์น˜: /dev/input/event0
[INFO ] [MTD ] ์ด๋ฒคํŠธ ์ฝ๊ธฐ
[DEBUG ] [Base ] probesysfs,provider=hidinput์—์„œ ๊ณต๊ธ‰์ž ์ƒ์„ฑ
[DEBUG] [ProbeSysfs] probesysfs ์‚ฌ์šฉ!
[DEBUG ] [ProbeSysfs ] ์žฅ์น˜๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค: /dev/input/event0์—์„œ FT5406 ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ๋“œ๋ผ์ด๋ฒ„
[์ •๋ณด] [ProbeSysfs] ์žฅ์น˜ ์ผ์น˜: /dev/input/event0
[INFO ] [HIDInput ] ์ด๋ฒคํŠธ ์ฝ๊ธฐ
[INFO ] [Base ] ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”์ธ ๋ฃจํ”„ ์‹œ์ž‘
[INFO] [MTD] ๋ฒ”์œ„ ์œ„์น˜ X๋Š” 0 - 800์ž…๋‹ˆ๋‹ค.
[์ •๋ณด] [MTD] ๋ฒ”์œ„ ์œ„์น˜ Y๋Š” 0 - 480์ž…๋‹ˆ๋‹ค.
[์ •๋ณด] [MTD] ํ„ฐ์น˜ ๋ฉ”์ด์ € ๋ฒ”์œ„๋Š” 0 - 0์ž…๋‹ˆ๋‹ค.
[INFO] [MTD] ํ„ฐ์น˜ ๋งˆ์ด๋„ˆ ๋ฒ”์œ„๋Š” 0 - 0์ž…๋‹ˆ๋‹ค.
[์ •๋ณด] [MTD] ๋ฒ”์œ„ ์••๋ ฅ์€ 0 - 255์ž…๋‹ˆ๋‹ค.
[INFO] [MTD] ์ถ• ๋ฐ˜์ „: X๋Š” 0, Y๋Š” 0
[INFO] [MTD] ํšŒ์ „์ด 0์œผ๋กœ ์„ค์ •๋จ
[์ •๋ณด] [HIDMotionEvent] ์‚ฌ์šฉ
[INFO] [GL] NPOT ํ…์Šค์ฒ˜ ์ง€์› ๊ฐ€๋Šฅ
[์ •๋ณด] [HIDMotion ์ด๋ฒคํŠธ] ๋ฒ”์œ„ ABS X ์œ„์น˜๋Š” 0 - 800์ž…๋‹ˆ๋‹ค.
[์ •๋ณด] [HIDMotion ์ด๋ฒคํŠธ] ๋ฒ”์œ„ ABS Y ์œ„์น˜๋Š” 0 - 480์ž…๋‹ˆ๋‹ค.
[์ •๋ณด] [HIDMotion ์ด๋ฒคํŠธ] ๋ฒ”์œ„ ์œ„์น˜ X๋Š” 0 - 800์ž…๋‹ˆ๋‹ค.
[์ •๋ณด] [HIDMotion ์ด๋ฒคํŠธ] ๋ฒ”์œ„ ์œ„์น˜ Y๋Š” 0 - 480์ž…๋‹ˆ๋‹ค.
[๋””๋ฒ„๊ทธ] [์•„ํ‹€๋ผ์Šค] ๋กœ๋“œ
[DEBUG] [Atlas] 1๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
[๋””๋ฒ„๊ทธ] [์•„ํ‹€๋ผ์Šค] ๋กœ๋“œ
[๋””๋ฒ„๊ทธ] [ImageSDL2] ๋กœ๋“œ

๋‘ ๋ฒˆ์งธ๋กœ ํ™”๋ฉด์ด ์—†์ง€๋งŒ ๋‚ด ๋กœ๊ทธ๊ฐ€ ๋” ์ž‘์Šต๋‹ˆ๋‹ค.
[INFO ] [Logger ] /home/pi/.kivy/logs/kivy_19-10-02_8.txt์— ๋กœ๊ทธ์ธ ๊ธฐ๋ก
[์ •๋ณด] [ํ‚ค๋น„] v2.0.0.dev0, git-f223133, 20191002
[์ •๋ณด] [Kivy] "/usr/local/lib/python3.7/dist-packages/kivy/__init__.py"์— ์„ค์น˜๋จ
[์ •๋ณด] [ํŒŒ์ด์ฌ] v3.7.3 (๊ธฐ๋ณธ๊ฐ’, 2019๋…„ 4์›” 3์ผ, 05:39:12)
[GCC 8.2.0]
[INFO ] [Python ] "/usr/bin/python"์˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ
[INFO ] [Factory] 184๊ฐœ์˜ ๊ธฐํ˜ธ๊ฐ€ ๋กœ๋“œ๋จ
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=์—†์Œ, ์‹œ๊ฐ„ ์ดˆ๊ณผ=์—†์Œ
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=์—†์Œ, ์‹œ๊ฐ„ ์ดˆ๊ณผ=60
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=์—†์Œ, ์‹œ๊ฐ„ ์ดˆ๊ณผ=์—†์Œ
[์ •๋ณด] [์ด๋ฏธ์ง€] ๊ณต๊ธ‰์ž: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer๋Š” ๋ฌด์‹œ๋จ)
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=1000, ์‹œ๊ฐ„ ์ดˆ๊ณผ=60
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=1000, ์‹œ๊ฐ„ ์ดˆ๊ณผ=3600
[๋””๋ฒ„๊ทธ] [์•ฑ] kv ๋กœ๋“œ ์ค‘ <./test.kv>
[์ •๋ณด] [ํ…์ŠคํŠธ] ๊ณต๊ธ‰์ž: sdl2
[์ •๋ณด] [์ฐฝ] ๊ณต๊ธ‰์ž: egl_rpi
[DEBUG ] [์ฐฝ ] ์‹ค์ œ ํ‘œ์‹œ ํฌ๊ธฐ: 800x480

์•„๋ฌด๋„ ๊ทธ๊ฒƒ์„ ์ž‘๋™ํ•˜๋„๋ก ๊ด€๋ฆฌ ํ–ˆ์Šต๋‹ˆ๊นŒ?

๋™์ผํ•œ SD ์นด๋“œ๋Š” RPi3B+์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋กœ๊ทธ๋Š” RPI4 4GB์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Desktop-less Raspbian Buster์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ Raspbian์˜ ๋“œ๋ผ์ด๋ฒ„ ์Šคํƒ์— ์žˆ๋Š” OpenGL ES v3 ์ธํ„ฐํŽ˜์ด์Šค(์˜ˆ์ƒ๋œ v2๊ฐ€ ์•„๋‹Œ) ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜๋Š” ๋“€์–ผ HDMI ์–ด๋Œ‘ํ„ฐ๋กœ ์ธํ•ด ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ Raspberry Pi 4์˜ Buster Lite์—์„œ Kivy์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์ด ์—†์—ˆ์Šต๋‹ˆ๊นŒ?
RPi4 4GB
Rpi ๊ณต์‹ ๋””์Šคํ”Œ๋ ˆ์ด
๋ผ์ฆˆ๋น„์•ˆ ๋ฒ„์Šคํ„ฐ 2019-09-26
ํŒŒ์ด์ฌ: 3.7.3
ํ‚ค๋น„: v2.0.0.dev0

๋ถ€ํŒ… ํ›„ ๊ฐ„๋‹จํ•œ Kivy ํŒŒ์ผ์„ ์ฒ˜์Œ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋กœ๊ทธ๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  ํ™”๋ฉด์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค .
[INFO ] [Logger ] /home/pi/.kivy/logs/kivy_19-10-02_7.txt์— ๋กœ๊ทธ์ธ ๊ธฐ๋ก
[์ •๋ณด] [ํ‚ค๋น„] v2.0.0.dev0, git-f223133, 20191002
[์ •๋ณด] [Kivy] "/usr/local/lib/python3.7/dist-packages/kivy/ init .py"์— ์„ค์น˜๋จ
[์ •๋ณด] [ํŒŒ์ด์ฌ] v3.7.3 (๊ธฐ๋ณธ๊ฐ’, 2019๋…„ 4์›” 3์ผ, 05:39:12)
[GCC 8.2.0]
[INFO ] [Python ] "/usr/bin/python"์˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ
[INFO ] [Factory] 184๊ฐœ์˜ ๊ธฐํ˜ธ๊ฐ€ ๋กœ๋“œ๋จ
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=์—†์Œ, ์‹œ๊ฐ„ ์ดˆ๊ณผ=์—†์Œ
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=์—†์Œ, ์‹œ๊ฐ„ ์ดˆ๊ณผ=60
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=์—†์Œ, ์‹œ๊ฐ„ ์ดˆ๊ณผ=์—†์Œ
[์ •๋ณด] [์ด๋ฏธ์ง€] ๊ณต๊ธ‰์ž: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer๋Š” ๋ฌด์‹œ๋จ)
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=1000, ์‹œ๊ฐ„ ์ดˆ๊ณผ=60
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ์ œํ•œ=1000, ์‹œ๊ฐ„ ์ดˆ๊ณผ=3600
[๋””๋ฒ„๊ทธ] [์•ฑ] kv ๋กœ๋“œ ์ค‘ <./test.kv>
[์ •๋ณด] [ํ…์ŠคํŠธ] ๊ณต๊ธ‰์ž: sdl2
[์ •๋ณด] [์ฐฝ] ๊ณต๊ธ‰์ž: egl_rpi
[DEBUG ] [์ฐฝ ] ์‹ค์ œ ํ‘œ์‹œ ํฌ๊ธฐ: 800x480
[INFO ] [GL ] "OpenGL ES 2" ๊ทธ๋ž˜ํ”ฝ ์‹œ์Šคํ…œ ์‚ฌ์šฉ
[DEBUG] [GL] glShaderBinary๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
[INFO ] [GL ] ๋ฐฑ์—”๋“œ ์‚ฌ์šฉ
[์ •๋ณด] [GL] OpenGL ๋ฒ„์ „ [INFO ] [GL ] OpenGL ๊ณต๊ธ‰์—…์ฒด [์ •๋ณด] [GL] OpenGL ๋ Œ๋”๋Ÿฌ
[INFO ] [GL ] OpenGL ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฒ„์ „: 2, 0
[INFO ] [GL ] ์Œ์˜ ๋ฒ„์ „
[INFO ] [GL ] ํ…์Šค์ฒ˜ ์ตœ๋Œ€ ํฌ๊ธฐ <2048>
[INFO ] [GL ] ํ…์Šค์ฒ˜ ์ตœ๋Œ€ ๋‹จ์œ„ <8>
[DEBUG] [Shader] ์กฐ๊ฐ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ปดํŒŒ์ผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
[DEBUG] [Shader] ์ •์ ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ปดํŒŒ์ผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
[๋””๋ฒ„๊ทธ] [ImageSDL2] ๋กœ๋“œ
[์ •๋ณด] [์ฐฝ] ๊ฐ€์ƒ ํ‚ค๋ณด๋“œ๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Œ, ๋‹จ์ผ ๋ชจ๋“œ, ๋„ํ‚น๋˜์ง€ ์•Š์Œ
[DEBUG] [Resource] ๊ฒฝ๋กœ ๋ชฉ๋ก์— ์ถ”๊ฐ€
[DEBUG] [Resource] ๊ฒฝ๋กœ ๋ชฉ๋ก์— ์ถ”๊ฐ€
[DEBUG] [Resource] ๊ฒฝ๋กœ ๋ชฉ๋ก์— ์ถ”๊ฐ€
[DEBUG] [Resource] ๊ฒฝ๋กœ ๋ชฉ๋ก์— ์ถ”๊ฐ€
[DEBUG] [Resource] ๊ฒฝ๋กœ ๋ชฉ๋ก์— ์ถ”๊ฐ€
[DEBUG ] [Base ] ๋งˆ์šฐ์Šค์—์„œ ๊ณต๊ธ‰์ž ์ƒ์„ฑ
[DEBUG ] [Base ] probesysfs,provider=mtdev์—์„œ ๊ณต๊ธ‰์ž ์ƒ์„ฑ
[DEBUG] [ProbeSysfs] probesysfs ์‚ฌ์šฉ!
[DEBUG ] [ProbeSysfs ] ์žฅ์น˜๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค: /dev/input/event0์—์„œ FT5406 ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ๋“œ๋ผ์ด๋ฒ„
[์ •๋ณด] [ProbeSysfs] ์žฅ์น˜ ์ผ์น˜: /dev/input/event0
[INFO ] [MTD ] ์ด๋ฒคํŠธ ์ฝ๊ธฐ
[DEBUG ] [Base ] probesysfs,provider=hidinput์—์„œ ๊ณต๊ธ‰์ž ์ƒ์„ฑ
[DEBUG] [ProbeSysfs] probesysfs ์‚ฌ์šฉ!
[DEBUG ] [ProbeSysfs ] ์žฅ์น˜๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค: /dev/input/event0์—์„œ FT5406 ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ๋“œ๋ผ์ด๋ฒ„
[์ •๋ณด] [ProbeSysfs] ์žฅ์น˜ ์ผ์น˜: /dev/input/event0
[INFO ] [HIDInput ] ์ด๋ฒคํŠธ ์ฝ๊ธฐ
[INFO ] [Base ] ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”์ธ ๋ฃจํ”„ ์‹œ์ž‘
[INFO] [MTD] ๋ฒ”์œ„ ์œ„์น˜ X๋Š” 0 - 800์ž…๋‹ˆ๋‹ค.
[์ •๋ณด] [MTD] ๋ฒ”์œ„ ์œ„์น˜ Y๋Š” 0 - 480์ž…๋‹ˆ๋‹ค.
[์ •๋ณด] [MTD] ํ„ฐ์น˜ ๋ฉ”์ด์ € ๋ฒ”์œ„๋Š” 0 - 0์ž…๋‹ˆ๋‹ค.
[INFO] [MTD] ํ„ฐ์น˜ ๋งˆ์ด๋„ˆ ๋ฒ”์œ„๋Š” 0 - 0์ž…๋‹ˆ๋‹ค.
[์ •๋ณด] [MTD] ๋ฒ”์œ„ ์••๋ ฅ์€ 0 - 255์ž…๋‹ˆ๋‹ค.
[INFO] [MTD] ์ถ• ๋ฐ˜์ „: X๋Š” 0, Y๋Š” 0
[INFO] [MTD] ํšŒ์ „์ด 0์œผ๋กœ ์„ค์ •๋จ
[์ •๋ณด] [HIDMotionEvent] ์‚ฌ์šฉ
[INFO] [GL] NPOT ํ…์Šค์ฒ˜ ์ง€์› ๊ฐ€๋Šฅ
[INFO] [HIDMotionEvent] ๋ฒ”์œ„ ABS X ์œ„์น˜๋Š” 0 - 800์ž…๋‹ˆ๋‹ค.
[INFO] [HIDMotionEvent] ๋ฒ”์œ„ ABS Y ์œ„์น˜๋Š” 0 - 480์ž…๋‹ˆ๋‹ค.
[INFO] [HIDMotionEvent] ๋ฒ”์œ„ ์œ„์น˜ X๋Š” 0 - 800์ž…๋‹ˆ๋‹ค.
[INFO] [HIDMotionEvent] ๋ฒ”์œ„ ์œ„์น˜ Y๋Š” 0 - 480์ž…๋‹ˆ๋‹ค.
[๋””๋ฒ„๊ทธ] [์•„ํ‹€๋ผ์Šค] ๋กœ๋“œ
[DEBUG] [Atlas] 1๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
[๋””๋ฒ„๊ทธ] [์•„ํ‹€๋ผ์Šค] ๋กœ๋“œ
[๋””๋ฒ„๊ทธ] [ImageSDL2] ๋กœ๋“œ

๋‘ ๋ฒˆ์งธ๋กœ ํ™”๋ฉด์ด ์—†์ง€๋งŒ ๋‚ด ๋กœ๊ทธ๊ฐ€ ๋” ์ž‘์Šต๋‹ˆ๋‹ค.
[INFO ] [Logger ] /home/pi/.kivy/logs/kivy_19-10-02_8.txt์— ๋กœ๊ทธ์ธ ๊ธฐ๋ก
[์ •๋ณด] [ํ‚ค๋น„] v2.0.0.dev0, git-f223133, 20191002
[์ •๋ณด] [Kivy] "/usr/local/lib/python3.7/dist-packages/kivy/ init .py"์— ์„ค์น˜๋จ
[์ •๋ณด] [ํŒŒ์ด์ฌ] v3.7.3 (๊ธฐ๋ณธ๊ฐ’, 2019๋…„ 4์›” 3์ผ, 05:39:12)
[GCC 8.2.0]
[INFO ] [Python ] "/usr/bin/python"์˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ
[INFO ] [Factory] 184๊ฐœ์˜ ๊ธฐํ˜ธ๊ฐ€ ๋กœ๋“œ๋จ
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ ์ œํ•œ=์—†์Œ, ์‹œ๊ฐ„ ์ดˆ๊ณผ=์—†์Œ
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ ์ œํ•œ=์—†์Œ, ์‹œ๊ฐ„ ์ดˆ๊ณผ=60
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ ์ œํ•œ=์—†์Œ, ์‹œ๊ฐ„ ์ดˆ๊ณผ=์—†์Œ
[์ •๋ณด] [์ด๋ฏธ์ง€] ๊ณต๊ธ‰์ž: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer๋Š” ๋ฌด์‹œ๋จ)
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ ์ œํ•œ=1000, ์‹œ๊ฐ„ ์ดˆ๊ณผ=60
[DEBUG] [์บ์‹œ] ๋ ˆ์ง€์Šคํ„ฐ ์ œํ•œ=1000, ์‹œ๊ฐ„ ์ดˆ๊ณผ=3600
[๋””๋ฒ„๊ทธ] [์•ฑ] kv ๋กœ๋“œ ์ค‘ <./test.kv>
[์ •๋ณด] [ํ…์ŠคํŠธ] ๊ณต๊ธ‰์ž: sdl2
[์ •๋ณด] [์ฐฝ] ๊ณต๊ธ‰์ž: egl_rpi
[DEBUG ] [์ฐฝ ] ์‹ค์ œ ํ‘œ์‹œ ํฌ๊ธฐ: 800x480

์•„๋ฌด๋„ ๊ทธ๊ฒƒ์„ ์ž‘๋™ํ•˜๋„๋ก ๊ด€๋ฆฌ ํ–ˆ์Šต๋‹ˆ๊นŒ?

๋™์ผํ•œ SD ์นด๋“œ๋Š” RPi3B+์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋กœ๊ทธ๋Š” RPI4 4GB์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ๋ฐ์Šคํฌํƒ‘์ด ์—†๋Š” RPi4์—์„œ kivy ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋“œ๋ผ์ด๋ฒ„ ์˜ค๋ฅ˜์ด๋ฏ€๋กœ ๋‹ค์Œ kivy ๋ฆด๋ฆฌ์Šค(๋˜๋Š” ๋งˆ์Šคํ„ฐ)์˜ ์ผ๋ถ€ ํŒจ์น˜๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[INFO ] [Window ] Provider: egl_rpi

Kivy๋Š” gles3.h ๋ผ๋Š” ์ด๋ฆ„์˜ ์œ ๋‹ˆ์ฝ˜์ด ์•„๋‹ˆ๋ผ gles2.h ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Kivy(๋ชจ๋“  ๋ฒ„์ „)๊ฐ€ egl_rpi ์ฐฝ ๊ณต๊ธ‰์ž์™€ ๋Œ€ํ™”ํ•˜๊ฒŒ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

Kivy๊ฐ€ sdl2 ๋˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์„ ์š”๊ตฌํ•˜๋„๋ก ๊ตฌ์„ฑ์„ ์กฐ์ •ํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์—ฌ๊ธฐ์—์„œ Frank์˜ ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์œผ์‹ญ์‹œ์˜ค.

Pi์— Google Angle ์ฝ”๋“œ ๋ฅผ ์„ค์น˜ํ•˜๊ณ (์•„๋งˆ๋„ OpenGL ES 3.0 ํ—ค๋”๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด) Kivy egl_rpi ๊ณต๊ธ‰์ž๋ฅผ ํŒจ์น˜ํ•˜์—ฌ gles2.h(๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ) ๋Œ€์‹  gles3.h๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹ค์Œ์€ Buster lite์—์„œ ๋ถ€ํŒ…ํ•  ๋•Œ Kivy ์•ฑ์„ ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์ž…๋‹ˆ๋‹ค.

๋จผ์ € ์‹ค์ œ ์ฐฝ์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•˜๋ฏ€๋กœ xserver-org๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo apt-get -y install xserver-xorg

๋‹ค์Œ์œผ๋กœ ์†Œ์Šค์—์„œ nodm์„ ์„ค์น˜ํ•˜๋ฏ€๋กœ ๋‹ค์Œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. https://github.com/spanezz/nodm/pull/10 :

sudo apt-get -y install libpam0g-dev help2man libx11-dev debhelper
git clone https://github.com/slashblog/nodm.git
pushd nodm
    git checkout d48a8f6266d3f464138e0e95b65896917c35c89f
    source /etc/os-release  # Will set the 'VERSION' variable
    if [ "$(echo $VERSION | sed -En 's/[0-9]+ \(([a-z]+)\)/\1/p')" == "buster" ]; then
        wget http://deb.debian.org/debian/pool/main/n/nodm/nodm_0.13-5.debian.tar.xz
    else
        wget http://deb.debian.org/debian/pool/main/n/nodm/nodm_0.13-1.3.debian.tar.xz
    fi
    tar xf nodm_0.13-*.debian.tar.xz
    sudo dpkg-buildpackage -us -uc -b
popd
sudo dpkg -i nodm_0.13-*_armhf.deb
sudo rm -rf nodm*

์ด์ œ ๊ทธ๋ž˜ํ”ฝ ๋กœ๊ทธ์ธ์„ ํ™œ์„ฑํ™”ํ•˜์‹ญ์‹œ์˜ค.

sudo systemctl set-default graphical.target

nodm์„ ๊ตฌ์„ฑํ•˜๊ณ  ๋ถ€ํŒ… ์‹œ ์•ฑ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

# Has the same effect as calling 'sudo dpkg-reconfigure nodm'
sudo sh -c 'echo "NODM_ENABLED=true" > /etc/default/nodm'
sudo sh -c 'echo "NODM_USER=$SUDO_USER" >> /etc/default/nodm' # Note that the variable SUDO_USER is used
sudo sh -c 'echo "NODM_FIRST_VT='\''7'\''" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_XSESSION=/etc/X11/Xsession" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_X_OPTIONS='\''-nolisten tcp'\''" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_MIN_SESSION_TIME=60" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_X_TIMEOUT=300" >> /etc/default/nodm'

# Start the app using nodm
echo '#!/bin/bash' > ~/.xsession
echo 'export DISPLAY=:0.0' >> ~/.xsession
echo "~/venv-kivy/bin/python3 ~/app.py" >> ~/.xsession

๊ฐ€์ƒ ํ™˜๊ฒฝ ์„ค์ •:

sudo apt-get -y install python3-pip python3-venv
sudo pip3 install -U pip
python3 -m venv venv-kivy
source ~/venv-kivy/bin/activate

Kivy ์ข…์†์„ฑ ์„ค์น˜:

sudo apt-get -y install python3-dev libmtdev1 libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev
sudo apt-get -y install pkg-config libgl1-mesa-dev libgles2-mesa-dev libgstreamer1.0-dev gstreamer1.0-plugins-{bad,base,good,ugly} gstreamer1.0-{omx,alsa} libmtdev-dev
pip3 install -U pygments docutils Cython==0.29.10 wheel

์ด์ œ Kivy๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ์„ค์น˜ํ•  ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค. ๋‚ด ํฌํฌ๋ฅผ ํŒจ์น˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ Raspberry Pi 4(https://github.com/Lauszus/kivy/commit/9cdcada34a6149b7fd6bd4c57285afc828d69948)์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋…์  Broadcom ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

export VIDEOCOREMESA=1; pip3 install git+https://github.com/Lauszus/kivy.git@rpi4_auto#egg=kivy

๋งˆ์ง€๋ง‰์œผ๋กœ ์ž‘์€ ํ…Œ์ŠคํŠธ ์•ฑ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

cat <<EOF > ~/app.py
from kivy.app import App
from kivy.uix.button import Button


class TestApp(App):

    def build(self):
        return Button(text='hello world')


if __name__ == '__main__':
    TestApp().run()
EOF

์ด์ œ ์žฌ๋ถ€ํŒ…ํ•˜๊ณ  ์ฆ๊ธฐ์„ธ์š” :)

Raspbian Buster ์ „์ฒด๊ฐ€ ํฌํ•จ๋œ RPi4B ์„ค์น˜ ์ง€์นจ ํ•„์š”

์‹œํ—˜:

RPi4 4GB
7' HDMI ๋””์Šคํ”Œ๋ ˆ์ด(ํƒ€์ž… C์— ๊ฐ€๊นŒ์šด ํ•˜๋‚˜์˜ ๋งˆ์ดํฌ๋กœ HDMI๋กœ ์ž‘๋™)
config.ini

max_usb_current=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt 1024 600 60 6 0 0 0
hdmi_drive=1

๋ผ์ฆˆ๋น„์•ˆ ๋ฒ„์Šคํ„ฐ 2019-09-26 ์ „์ฒด

๋กœ๊ทธ: ์˜ค๋ฅ˜ "* ์„œ๋น„์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๊นŒ?"

pi@raspberrypi :~/kivy-examples/3Drendering $ python main.py
[์ •๋ณด] [๋กœ๊ฑฐ] /home/pi/.kivy/logs/kivy_19-10-19_10.txt์— ๋กœ๊ทธ์ธ ๊ธฐ๋ก
[์ •๋ณด] [ํ‚ค๋น„] v1.11.0
[์ •๋ณด] [Kivy] "/usr/local/lib/python2.7/dist-packages/kivy/__init__.pyc"์— ์„ค์น˜๋จ
[์ •๋ณด] [ํŒŒ์ด์ฌ] v2.7.16 (๊ธฐ๋ณธ๊ฐ’, 2019๋…„ 4์›” 6์ผ, 01:42:57)
[GCC 8.2.0]
[INFO ] [Python ] "/usr/bin/python"์˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ
[๊ฒฝ๊ณ ] [์ง€์› ์ค‘๋‹จ๋จ] Python 2 Kivy ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 1.11.0 ์ดํ›„ Kivy ๋ฆด๋ฆฌ์Šค๋Š” ๋” ์ด์ƒ Python 2๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
[INFO ] [Factory] 184๊ฐœ์˜ ๊ธฐํ˜ธ๊ฐ€ ๋กœ๋“œ๋จ
[์ •๋ณด] [์ด๋ฏธ์ง€] ๊ณต๊ธ‰์ž: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer๋Š” ๋ฌด์‹œ๋จ)
[์ •๋ณด] [์ฐฝ] ๊ณต๊ธ‰์ž: egl_rpi

  • ์„œ๋น„์Šค ์ถ”๊ฐ€ ์‹คํŒจ - ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๊นŒ?

@Lauszus ์ด๋ฒˆ ์ฃผ๋ง์— ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. :)

@diamond2nv "... with Raspbian Buster full" ๋งŒ์•ฝ ์ด๊ฒƒ์ด Raspbian Buster _Desktop_์„ ์˜๋ฏธํ•œ๋‹ค๋ฉด ์ง€์นจ์€ ์—ฌ๊ธฐ Kivy Issue ์—

์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค !
ํ•ด๋‹น ๋ช…๋ น์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถ”์‹ . "2019-09-26-raspbian-buster-full.img"

@Lauszus ์ข‹์•„, ๋‚˜๋Š” ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค ...

  • ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด 4B(4GB)
  • elo 10.1" ์ •์ „์‹ ํ„ฐ์น˜์Šคํฌ๋ฆฐ
  • Raspbian Buster Lite 9/26/2019 -> "Linux octopi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l"
  • sudo apt-get update && sudo apt-get -y upgrade ์‹œ์ž‘
  • sudo raspi-config ํ˜„์ง€ํ™” ํฌํ•จ, CLI๋กœ ์ž๋™ ๋ถ€ํŒ… _๋‚ด ์„ค์น˜์˜ ๊ฒฝ์šฐ ์ธํ„ฐํŽ˜์ด์Šค ๋ณ€๊ฒฝ(I2C/UART/์นด๋ฉ”๋ผ)_

์ด์ „์— ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด rpi-update ๋ฅผ ์‹คํ–‰ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— Raspbian ๋ณต๊ตฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ด ๋ชจ๋“  ๊ฒƒ์„ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์นฉ์— ์ €์žฅ๋œ ํŽŒ์›จ์–ด๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฏ€๋กœ ์ถœ์‹œ ๋ฒ„์ „์œผ๋กœ ๋˜๋Œ๋ ธ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‚˜๋Š” ๋‹น์‹ ์˜ ์ง€์‹œ๋ฅผ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ„ฐ์น˜์Šคํฌ๋ฆฐ ์žฅ์น˜๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

~/.kivy/config.ini :

[input]
mouse = mouse
#%(name)s = probesysfs,provider=hidinput
mtdev_%(name)s = probesysfs,provider=mtdev
hid_%(name)s = probesysfs,provider=hidinput

์ „์ฒด ํ™”๋ฉด ์ˆ˜์ •

"์ „์ฒด ํ™”๋ฉด"์ด ๋‚˜์˜ค์ง€ ์•Š์•„์„œ ์„ค์ •์„ ์กฐ๊ธˆ ๊ฐ€์ง€๊ณ  ๋†€ ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ƒ๋˜๋Š” 1280x800 ๋Œ€์‹  800x640์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Raspbian /boot/config.txt , Kivy ~/.kivy/config.ini ํŒŒ์ผ ๋˜๋Š” xsession ๊ตฌ์„ฑ์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ง๊ฐ์ ์œผ๋กœ ์ƒ๋‹จ ๊ทผ์ฒ˜์— ๋‹ค์Œ์„ ํฌํ•จํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์•ฑ์„ ์กฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

from kivy.core.window import Window
Window.fullscreen = True

์ด๊ฒƒ์€ ์˜ˆ์ƒ๋Œ€๋กœ ์•ฑ์„ ์ „์ฒด ํ™”๋ฉด์œผ๋กœ ์กฐ์ •ํ•˜๋Š” ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด๊ฒƒ์ด Kivy ์ž์ฒด์˜ master ๋ถ„๊ธฐ์— ์–ธ์ œ ํฌํ•จ๋˜๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@OutsourcedGuru ๋‚ด๊ฐ€ ์—ฐ PR์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค: https://github.com/kivy/kivy/pull/6562.

VIDEOCOREMESA=0 ๋ฐ VIDEOCOREMESA=1 ์‹œ๋„ํ•ด๋ณด๊ณ  ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Lauszus : ์ข‹์€ ์ผ - ์•„์ฃผ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@OutsourcedGuru์—๊ฒŒ๋„.

@Lauszus ์˜ˆ์ „์— ์žฌํ…Œ์ŠคํŠธ ํ•˜๋Ÿฌ ๊ฐ”๋Š”๋ฐ ๊ทธ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜์‹  ๊ฒƒ ๊ฐ™์•„์„œ...(?)

@OutsourcedGuru ๋Š” ์ด์ „์— ์ผ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฒฐ๊ตญ ๊ทธ๊ฒƒ์ด Raspberry Pi 4์—์„œ ์‹คํ–‰๋  ๋•Œ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•  ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์ €๋Š” ๋˜ํ•œ ํœ ์„ ๊ต์ฐจ ์ปดํŒŒ์ผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ Kivy๋ฅผ ์ง์ ‘ ์ปดํŒŒ์ผํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ํœ ์„ ๋‹ค์šด๋กœ๋“œํ•˜์‹ญ์‹œ์˜ค: https://github.com/Lauszus/kivy/suites/285162135/artifacts/197175 ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ–ˆ์„ ๋•Œ ๋‹ค์Œ PR์— ๋Œ€ํ•ด ์˜๊ฒฌ์„ ๋งํ•˜์‹ญ์‹œ์˜ค: https://github.com/kivy/kivy/ ํ’€/6568.

@Lauszus ๊ท€ํ•˜์˜ ๋„์›€ ๋•๋ถ„์— ๊ท€ํ•˜์˜ nodm ๋ฐฉ๋ฒ•์œผ๋กœ RPI4์—์„œ ์‹คํ–‰๋˜๋Š” RPI3B+์˜ ์ด์ „ ์•ฑ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.
๋ถ€ํŒ… ์‹œ ์ž๋™์œผ๋กœ ์‹œ์ž‘๋˜๋ฉฐ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๋””๋ฒ„๊ทธํ•ด์•ผ ํ•˜๋Š” ์•ฑ์— ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉฐ 'python3 app.py'์™€ ๊ฐ™์ด cli์—์„œ ์•ฑ์„ ์‹œ์ž‘ํ•  ๋•Œ์™€ ๊ฐ™์ด ์•ฑ์—์„œ ์ •์ƒ์ ์ธ ์ถœ๋ ฅ์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๊ฒŒ์‹œ๋ฌผ์ด ์—†์—ˆ๋‹ค๋ฉด ์—ฌ๊ธฐ๊นŒ์ง€ ์˜ค์ง€ ๋ชปํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ฑด๋ฐฐ!

@lucasnzone ๋‚˜๋Š” ๋‹จ์ˆœํžˆ ์ธ์‡„๋ฌธ ๋Œ€์‹  ๋กœ๊ฑฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค: https://kivy.org/doc/stable/api-kivy.logger.html.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Kivy๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ๋กœ๊ทธ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

#!/bin/bash -e

if [[ $* == *--restart* ]]; then
    sudo service nodm restart
    inotifywait -q ~/.kivy/logs -e create --format %w%f | xargs tail -f
else
    ls -t -d ~/.kivy/logs/* | head -n1 | xargs tail -f
fi

ํ…Œ์ŠคํŠธ๋ฅผ ๋ชปํ•ด๋ดค๋„ค์š” ๋Šฆ์–ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. FormNext๊ฐ€ ์•ฝ 2์ฃผ ์ •๋„ ๋‚จ์•˜์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์—์„œ ๊ฐ€์น˜ ์žˆ๋Š” ์ผ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ „ ํ…Œ์ŠคํŠธ์—์„œ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋“ฏ์ด ์ž‘์€ Kivy ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ์€ ์ž‘๋™ํ–ˆ์ง€๋งŒ Kivy๋ฅผ ์‚ฌ์šฉํ•˜๋Š” OctoPrint ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋งŒ์กฑ์Šค๋Ÿฝ์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” OctoPrint๊ฐ€ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„์„ ํ• ์• ํ–ˆ์Šต๋‹ˆ๋‹ค( nodm ๊ฐ€ ํ•ด๋‹น ์„œ๋น„์Šค๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด). OctoPrint ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๊ฐ€์ƒ ํ™˜๊ฒฝ ๋‚ด์—์„œ ๋กœ๋“œํ•ด์•ผ ํ•˜๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋น„์Šค๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ ํ† ๋ผ๋ฅผ ๊ตฌ๋ฉ์ด ๋ฐ”๋‹ฅ๊นŒ์ง€ ์ซ“์•„๊ฐˆ ์‹œ๊ฐ„์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

@Lauszus ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ƒ๊ฐํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ฉ‹์ง„ ํ•˜๋ฃจ. ๋‚˜๋Š” ๋‹ค์Œ์— ๋Œ€ํ•œ ์ž‘์—… ํ”Œ๋žซํผ์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์„ค์น˜๋œ Kivy 1.10.1
  • ํŒŒ์ด์ฌ 2.7
  • ๋ผ์ฆˆ๋น„์•ˆ ๋ฒ„์Šคํ„ฐ ๋ผ์ดํŠธ
  • OctoPrint 1.3.12(OctoPi 0.17.0 IMG์—์„œ)
  • ffpyplayer (Pi4B ๋น„ํ˜ธํ™˜์„ฑ์œผ๋กœ ์ธํ•ด gstplayer๋กœ ๋˜๋Œ๋ ค์•ผ ํ•จ)
  • ๋…ธ๋“œ
  • Kivy๋ฅผ ์‚ฌ์šฉํ•˜๋Š” OctoPrint ํ”Œ๋Ÿฌ๊ทธ์ธ

๋ถ€ํŒ… ๋ฐ ์žฌ๋ถ€ํŒ… ์‹œ ์ „์ฒด ํ™”๋ฉด GUI๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.

ํŒŒ์ด์ฌ ์ฝ”๋“œ์—์„œ...

    if pi_type == '4B':
        os.environ['VIDEOCOREMESA'] =       '1'
        os.environ['KIVY_WINDOW'] =         'sdl2'
        os.environ['KIVY_GL_BACKEND'] =     'gl'
        os.environ['rpi'] =                 '0'
        from kivy.core.window               import Window
        Window.fullscreen =                 True

config.ini๋Š” ํ™”๋ฉด ํฌ๊ธฐ๋ฅผ ํฌํ•จํ•˜๊ณ  TFT ํ™”๋ฉด์˜ ์ž…๋ ฅ ์žฅ์น˜์— ๋งž๊ฒŒ ์กฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Raspbian Buster ์ „์ฒด๊ฐ€ ํฌํ•จ๋œ RPi4B ์„ค์น˜ ์ง€์นจ ํ•„์š”

์‹œํ—˜:

RPi4 4GB
7' HDMI ๋””์Šคํ”Œ๋ ˆ์ด(ํƒ€์ž… C์— ๊ฐ€๊นŒ์šด ํ•˜๋‚˜์˜ ๋งˆ์ดํฌ๋กœ HDMI๋กœ ์ž‘๋™)
config.ini

max_usb_current=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt 1024 600 60 6 0 0 0
hdmi_drive=1

๋ผ์ฆˆ๋น„์•ˆ ๋ฒ„์Šคํ„ฐ 2019-09-26 ์ „์ฒด

๋กœ๊ทธ: ์˜ค๋ฅ˜ "* ์„œ๋น„์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๊นŒ?"

pi@raspberrypi :~/kivy-examples/3Drendering $ python main.py
[์ •๋ณด] [๋กœ๊ฑฐ] /home/pi/.kivy/logs/kivy_19-10-19_10.txt์— ๋กœ๊ทธ์ธ ๊ธฐ๋ก
[์ •๋ณด] [ํ‚ค๋น„] v1.11.0
[์ •๋ณด] [Kivy] "/usr/local/lib/python2.7/dist-packages/kivy/ init .pyc"์— ์„ค์น˜๋จ
[์ •๋ณด] [ํŒŒ์ด์ฌ] v2.7.16 (๊ธฐ๋ณธ๊ฐ’, 2019๋…„ 4์›” 6์ผ, 01:42:57)
[GCC 8.2.0]
[INFO ] [Python ] "/usr/bin/python"์˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ
[๊ฒฝ๊ณ ] [์ง€์› ์ค‘๋‹จ๋จ] Python 2 Kivy ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 1.11.0 ์ดํ›„ Kivy ๋ฆด๋ฆฌ์Šค๋Š” ๋” ์ด์ƒ Python 2๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
[INFO ] [Factory] 184๊ฐœ์˜ ๊ธฐํ˜ธ๊ฐ€ ๋กœ๋“œ๋จ
[์ •๋ณด] [์ด๋ฏธ์ง€] ๊ณต๊ธ‰์ž: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer๋Š” ๋ฌด์‹œ๋จ)
[์ •๋ณด] [์ฐฝ] ๊ณต๊ธ‰์ž: egl_rpi

  • ์„œ๋น„์Šค ์ถ”๊ฐ€ ์‹คํŒจ - ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๊นŒ?

@diamond2nv ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฏธ CLI์—์„œ kivy๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@elisandrom ์€ ๋‚ด ์˜๊ฒฌ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค: https://github.com/kivy/kivy/issues/6474#issuecomment -542679712

@elisandrom ๋‚ด ์˜๊ฒฌ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค: #6474 (๋Œ“๊ธ€)

๊ฐ์‚ฌ ํ•ด์š” !!!!!! ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!!!

๊ด€์‹ฌ ์žˆ๋Š” ์‚ฌ๋žŒ์€ ํฌ๋กœ์Šค ์ปดํŒŒ์ผ๋œ ํœ ์„ ์—ฌ๊ธฐ์—์„œ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/kivy/kivy/suites/364981942/artifacts/751103.

๋ชจ๋“  ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‹ค์Œ ์ง€์นจ์„ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค. https://github.com/kivy/kivy/issues/6474#issuecomment -542679712, ๊ทธ๋Ÿฌ๋‚˜ ์†Œ์Šค์—์„œ Kivy๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ๋Œ€์‹  ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ๋œ ํœ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. :

pip install Kivy-2.0.0.dev0-cp37-cp37m-linux_armv7l.whl

๋ช‡ ์‚ฌ๋žŒ์ด ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜๊ฒŒ ํ•˜๋ฉด #6568์ด ๋ณ‘ํ•ฉ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Lauszus ๊ทธ ํœ ์—์„œ Kivy ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ํœ  ์ œ๋ชฉ์—์„œ 2.0.0.dev0์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์•ˆ์— ๋ฌด์—‡์ด ๋“ค์–ด ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ์—๋Š” Python 3์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

@OutsourcedGuru ๋„ค ๋งž์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ #6568์˜ ์ปค๋ฐ‹์ด ์žˆ๋Š” ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜์ž…๋‹ˆ๋‹ค. ๋นŒ๋“œ๋œ ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/kivy/kivy/runs/354828981.

์˜ˆ, ๋ฒ„์Šคํ„ฐ์˜ ํ‘œ์ค€์ธ Python 3.7์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ „์—ญ ๋˜๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ œํ•œ๋œ x Windows ์ง€์›์œผ๋กœ nodm ๋ฅผ ์„ค์น˜ํ•œ Raspbian Lite์—์„œ ํ”„๋กœ๋•์…˜ ํ”Œ๋žซํผ์„ Python 3 + Kivy 1.11.1 ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. Pi 4B์—์„œ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ ๋‹จ์ˆœํžˆ pip install kivy==1.11.1 ์˜€์Šต๋‹ˆ๋‹ค.

sudo apt-get -y install xserver-xorg libpam0g-dev help2man libx11-dev debhelper

https://github.com/kivy/kivy/issues/6474#issuecomment -542679712๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ์ง€๊ธˆ๊นŒ์ง€ Raspberry Pi 4์˜ ์œ ์ผํ•œ ์†”๋ฃจ์…˜์€ X11์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์ „ RPis์—์„œ์™€ ๊ฐ™์ด X๊ฐ€ ์•„๋‹Œ ํ”„๋ ˆ์ž„ ๋ฒ„ํผ๋ฅผ ๋” ์ด์ƒ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ Raspberry Pi 3B+์—์„œ Raspberry Pi 4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ  ํ•˜์ง€๋งŒ ๋‹จ์ง€ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด X11 ์„ค์น˜๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@whitelynx ๋‚˜๋Š” Raspberry Pi 4์—์„œ X ์—†์ด SDL2๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ์‹คํ—˜์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฐฝ์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๊ณ  ๊ณ„์† ๋ถˆํ‰ํ–ˆ์Šต๋‹ˆ๋‹ค: https://github.com/kivy/kivy/pull/6662#issuecomment -573423540. ์ง€๊ธˆ๊นŒ์ง€๋Š” nodm๊ณผ ๊ฐ™์€ ์ฐฝ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ž‘๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ X ์—†์ด rpi4์— opengles ์ฐฝ์„ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.
https://github.com/matusnovak/rpi-opengl-without-x/blob/master/triangle_rpi4.c
https://www.raspberrypi.org/forums/viewtopic.php?t=243707#p1499181
ํ‚ค๋น„ ์ฐฝ์„ ๊ทธ๋ฆฌ๋Š” ๋ฐ ๋น„์Šทํ•œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ฒซ ๋ฒˆ์งธ ์˜ˆ๋Š” gl2.h๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ Pi4B๋Š” gl3์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‚ด rpi4b์—์„œ ๋‘˜ ๋‹ค ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ๋ฌธ์ œ์—†์ด ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์˜ˆ์ œ๋Š” ์›์‹œ ํŒŒ์ผ์— ์“ฐ๊ณ  384ํ–‰์˜ ์ฃผ์„ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ํ™”๋ฉด์—์„œ ์‚ผ๊ฐํ˜•์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Lauszus SDL2 w/o X11๊ณผ ํ•จ๊ป˜ ์‹คํ–‰ํ•  ๋•Œ ์ฐฝ์„ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๋Š” SDL2 ์ฐฝ ๋งŒ๋“ค๊ธฐ ์ฝ”๋“œ๊ฐ€ ์ฐฝ์— ๋Œ€ํ•ด 8์•ŒํŒŒ ๋น„ํŠธ๋ฅผ ์ง€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. kivy.core.window._window_sdl2.pyx์—์„œ 0 ์•ŒํŒŒ ๋น„ํŠธ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@ddimensia ๋ณ€๊ฒฝํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
138: SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8)
์—๊ฒŒ
138: SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0)
๊ทธ๋Ÿฌ๋‚˜ ์ฐฝ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•  ๋•Œ ์—ฌ์ „ํžˆ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
[CRITICAL] [Window ] Unable to find any valuable Window provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes sdl2 - RuntimeError: Could not initialize EGL File "/usr/local/lib/python2.7/dist-packages/Kivy-1.11.0-py2.7-linux-armv7l.egg/kivy/core/__init__.py", line 71, in core_select_lib cls = cls() File "/usr/local/lib/python2.7/dist-packages/Kivy-1.11.0-py2.7-linux-armv7l.egg/kivy/core/window/window_sdl2.py", line 152, in __init__ super(WindowSDL, self).__init__() File "/usr/local/lib/python2.7/dist-packages/Kivy-1.11.0-py2.7-linux-armv7l.egg/kivy/core/window/__init__.py", line 969, in __init__ self.create_window() File "/usr/local/lib/python2.7/dist-packages/Kivy-1.11.0-py2.7-linux-armv7l.egg/kivy/core/window/window_sdl2.py", line 289, in create_window self.fullscreen, resizable, state) File "kivy/core/window/_window_sdl2.pyx", line 225, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window File "kivy/core/window/_window_sdl2.pyx", line 75, in kivy.core.window._window_sdl2._WindowSDL2Storage.die

sdl2 + kivy๊ฐ€ X ์—†์ด rpi4์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ์ €์žฅ์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ตœ์†Œ ์š”๊ตฌ ์‚ฌํ•ญ์œผ๋กœ SDL2(https://github.com/midwan/amiberry/wiki/Compile-SDL2-from-source)๋ฅผ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•œ Amiberry ์ง€์นจ์„ ๋”ฐ๋ฅด๊ณ  ์†Œ์Šค์—์„œ SDL2_mixer๋ฅผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. mp3, flac ๋“ฑ์˜ ์ง€์›์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ _window_sdl2.pyx ํŒŒ์ผ์—์„œ Alpha ๋น„ํŠธ๋ฅผ 0์œผ๋กœ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚˜๋Š” setup.py๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ use_x11์„ False๋กœ ๊ฐ•์ œ ์„ค์ •ํ•˜๊ณ (ํ•œ ๊ณณ์—์„œ๋Š” True๋กœ ์„ค์ •ํ•จ) export VIDEOCOREMESA=1 ๋ฅผ ์‹คํ–‰ํ•œ ๋‹ค์Œ pip install . . ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ „๋ถ€๋ผ๊ณ  ๋ฏฟ๋Š”๋‹ค. ๋ชจ๋“  SDL2 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ปดํŒŒ์ผํ•  ๋•Œ ํ•œ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ ์€ configure๋ฅผ ์‹คํ–‰ํ•  ๋•Œ --prefix=/usr ๋ฅผ ์ธ์ˆ˜์— ์ถ”๊ฐ€ํ•˜์—ฌ /usr/local/lib๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ์œ„์น˜์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ddimensia ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๊ทธ๊ฒƒ์€ ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ๋‹ค :)

@ddimensia ๋ฐฉ๊ธˆ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ PR์„ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค: https://github.com/kivy/kivy/pull/6769. CI๊ฐ€ ๋นŒ๋“œ๋ฅผ ์™„๋ฃŒํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ํœ  ๋นŒ๋“œ๋„ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ddimensia VIDEOCOREMESA=1 ๋Š” ํ•„์š”์—†์–ด์„œ ์ƒ๋žตํ–ˆ์Šต๋‹ˆ๋‹ค.

@Lauszus ์•ˆ๋…• ๋˜ ์นœ๊ตฌ.
https://hub.docker.com/u/lauszus ์—์„œ ํ‚ค๋น„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.
์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ํ‚ค๋น„๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์„ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
๋‚ด ๋ง์€, ์ž˜ ์‹คํ–‰๋˜๊ณ  ํ„ฐ์น˜ ์Šคํฌ๋ฆฐ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋“  ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ํ„ฐ์น˜์Šคํฌ๋ฆฐ์ด ์ž‘๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•„๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
๊ฑด๋ฐฐ

@lucasnzone ์€ ๋นŒ๋“œ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด Kivy๋ฅผ ํฌ๋กœ์Šค ์ปดํŒŒ์ผํ•˜๋Š” ์‹คํ—˜์„ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ ์˜ค๋ž˜๋œ ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹ค์ œ๋กœ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ Kivy๋ฅผ ์‹คํ–‰ํ•œ ์ ์ด ์—†์œผ๋ฉฐ ๊ทธ๋ƒฅ ์ปดํŒŒ์ผํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ๋น ๋ฅธ ๊ฒ€์ƒ‰์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ --device ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์˜ˆ:

--device /dev/input/event0

์ปจํ…Œ์ด๋„ˆ์— ํ„ฐ์น˜์Šคํฌ๋ฆฐ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ์กฐ: https://docs.docker.com/engine/reference/commandline/run/

@Lauszus ํ—ค์ด ๋ฉ”์ดํŠธ, ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋‚ด ๋„์ปค ์‹คํ–‰ ๋ช…๋ น์— ์žˆ์Šต๋‹ˆ๋‹ค.
--privileged --net host --device /dev/gpiomem:/dev/gpiomem --device /dev/ttyAMA0:/dev/ttyAMA0 -v /boot/overlay:/boot/overlay
๋ฐฉ๊ธˆ --device /dev/input/event0 ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ์šด์ด ์—†์Šต๋‹ˆ๋‹ค.
์šฉ๊ธฐ๋ฅผ ๋‹ค ๋ชจ์•„์„œ ํฌ๊ธฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” kivy ์ƒ˜ํ”Œ์„ ์ž‘๋™์‹œํ‚ฌ ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ์šด์—†์ด --privileged ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด ๋„์ปค ๊ตฌ์„ฑ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด kivy ๊ตฌ์„ฑ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?
๋‚˜๋Š” ์†”์งํžˆ ๊ธธ์„ ์žƒ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์— ์ผ์ฃผ์ผ์„ ๋ณด๋ƒˆ๊ณ  ๊ทธ๊ฒƒ์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
๊ท€ํ•˜์˜ ํšŒ์‹ ์— ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํ„ฐ์น˜์Šคํฌ๋ฆฐ์ด ์‹ค์ œ๋กœ /dev/input/event0 ํ•˜์…จ์Šต๋‹ˆ๊นŒ?

์˜ˆ์ œ๋ฅผ ์–ด์ง€๋Ÿฝํžˆ๋Š” ๊ฒฝ์šฐ์—๋„ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? Python ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๊ณ  ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ(์˜ˆ: apt ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ OS์— ํ•„์š”ํ•œ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

@lucasnzone Raspberry Pi ๋˜๋Š” ๋‹ค๋ฅธ ํ”Œ๋žซํผ์„ ์‚ฌ์šฉ ์ค‘์ธ์ง€ ๋ฌป๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๊นŒ? ๋˜ํ•œ ์–ด๋–ค OS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@Lauszus RPI4 with raspbian lite
์˜ค, ์•„๋‹ˆ์š”. ๋ฐฐํฌ ๋ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ๋” ์‰ฌ์›Œ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋Š” ์‹ค์ œ ์•ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ์ œ๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋ฉด kivy ์•ฑ์—์„œ๋„ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์ œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‚ด ํ„ฐ์น˜์Šคํฌ๋ฆฐ์ด /dev/input์— ์žˆ๋Š” ์žฅ์น˜๋ฅผ ์–ด๋–ป๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ํ•˜์ง€ ์•Š์•˜๋‹ค, ์•„๋‹ˆ

@lucasnzone ๋‚ด ์‹œ์Šคํ…œ์˜ ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$ cat /proc/bus/input/devices | grep -P '^[NH]: ' | paste - -
N: Name="eGalax Inc. eGalaxTouch EXC3110-3883-08.00.00" H: Handlers=mouse0 event0

์ด๊ฒƒ์€ ํ„ฐ์น˜์Šคํฌ๋ฆฐ์ด /dev/input/event0 ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜, ๋‚ด ๊ฒƒ๋„ ์ด๋ฒคํŠธ์•ผ.
N: Name="ADS7846 Touchscreen" H: Handlers=mouse0 event0

๊ดœ์ฐฎ์•„. ์•ฑ์ด ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์˜ ํ„ฐ์น˜์Šคํฌ๋ฆฐ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

@Lauszus
์˜ˆ, Kivy-2.0.0rc1-cp37-cp37m-linux_armv7l.whl ํœ ๋กœ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค.
์›๋ž˜ Broadcom ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํฌํฌ๋กœ

๊ดœ์ฐฎ์•„. ์–ด๋–ค ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ? /dev/input/event0 ์ž…๋‹ˆ๊นŒ? ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์žฅ์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋„ค @Lauszus
์ปจํ…Œ์ด๋„ˆ ์•ˆ์— crw-rw---- 1 root i2c 13, 64 Mar 12 22:56 event0 ๋ฐ crw-rw---- 1 root i2c 13, 64 Mar 12 22:56 mouse0 ์žˆ์Šต๋‹ˆ๋‹ค.

cat /dev/input/event0 ๊ณผ ๊ฐ™์€ ์ถœ๋ ฅ์„ cat ๋งŒ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค. ํ™”๋ฉด์„ ํ„ฐ์น˜ํ•˜๋ฉด ์•„๋ฌด ๊ฒƒ๋„ ์ธ์‡„๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

@Lauszus ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค , ์ž„์˜์˜ ๋ฌธ์ž
์ง€๊ธˆ ๋‚œ ์˜ˆ์ „๋ณด๋‹ค ๋” ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ

์Šˆํผ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž…๋ ฅ์„ ๋ฐ›๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ณด๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์›์‹œ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์ด๋ฏ€๋กœ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์ด๊ฒƒ์€ Kivy ๊ตฌ์„ฑ์˜ ๋ฌด์–ธ๊ฐ€๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด C ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

#include <stdio.h>
#include <linux/input.h>
#include <signal.h>
#include <fcntl.h>
#include <unistd.h>

static volatile sig_atomic_t run = 1;

void sigint(int sig) {
    run = 0;
}

int main() {
    signal(SIGINT, sigint);

    int fd = open("/dev/input/event0", /*O_NONBLOCK |*/ O_RDONLY);
    if (fd < 0) {
        printf("Failed to open device\n");
        return 1;
    }

    while (run) {
        struct input_event ev;
        int num_bytes = read(fd, &ev, sizeof(ev));
        if (num_bytes != sizeof(ev)) {
            printf("Failed to read device\n");
            return 1;
        }
        printf("%u, %u, %u, %u, %d\n", ev.time.tv_sec, ev.time.tv_usec, ev.type, ev.code, ev.value);
    }

    printf("Closing device\n");
    close(fd);
    return 0;
}

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ปดํŒŒ์ผํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcc touch.c -o touch && ./touch

@Lauszus
ํ„ฐ์น˜์—์„œ ์ผ๋ถ€ ์ถœ๋ ฅ์„ ์–ป์Šต๋‹ˆ๋‹ค.

1584058230, 998152, 1, 330, 1
1584058230, 998152, 3, 0, 477
1584058230, 998152, 3, 1, 3477
1584058230, 998152, 3, 24, 64790
1584058230, 998152, 0, 0, 0
1584058231, 15687, 1, 330, 0
1584058231, 15687, 3, 24, 0
1584058231, 15687, 0, 0, 0

์™ผ์ชฝ ํ•˜๋‹จ ๋ชจ์„œ๋ฆฌ์ž…๋‹ˆ๋‹ค

๊ดœ์ฐฎ์•„. ์ฝ”๋“œ์˜ ๋งจ ์œ„์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ด ๋ณด์„ธ์š”(๋‹ค๋ฅธ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„์— ์žˆ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•จ).

from kivy.config import Config
Config.set('input', 'mtdev_%(name)s', 'probesysfs,provider=mtdev')

์ข‹์•„, ์ด๊ฒƒ์€ ๋งจ ์œ„์— ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๋‚ด ์•ฑ์„ ์‹คํ–‰ํ•  ๋•Œ์˜ ์ถœ๋ ฅ์ž…๋‹ˆ๋‹ค.

[INFO] ๋กœ๊ฑฐ: /root/.kivy/logs/kivy_20-03-13_3.txt์— ๋กœ๊ทธ์ธ ๊ธฐ๋ก
[์ •๋ณด] ํ‚ค๋น„: v2.0.0.dev0, git-cef99e4, 20191024
[์ •๋ณด] Kivy: "/root/venv-kivy/lib/python3.7/site-packages/kivy/__init__.py"์— ์„ค์น˜๋จ
[์ •๋ณด] Python: v3.7.3(๊ธฐ๋ณธ๊ฐ’, 2019๋…„ 4์›” 3์ผ, 05:39:12)
[GCC 8.2.0]
[์ •๋ณด] Python: "/root/venv-kivy/bin/python3"์˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ
[INFO ] ๊ณต์žฅ: 184๊ฐœ์˜ ๊ธฐํ˜ธ๊ฐ€ ๋กœ๋“œ๋จ
[INFO ] ์ด๋ฏธ์ง€: ์ œ๊ณต์ž: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ๋ฌด์‹œ)
[์ •๋ณด] ํ…์ŠคํŠธ: ๊ณต๊ธ‰์ž: sdl2
[INFO ] ์ฐฝ: ๊ณต๊ธ‰์ž: sdl2(['window_egl_rpi'] ๋ฌด์‹œ๋จ)
[INFO ] GL: "OpenGL ES 2" ๊ทธ๋ž˜ํ”ฝ ์‹œ์Šคํ…œ ์‚ฌ์šฉ
[INFO ] GL: ๋ฐฑ์—”๋“œ ์‚ฌ์šฉ
[์ •๋ณด] GL: OpenGL ๋ฒ„์ „ [์ •๋ณด] GL: OpenGL ๊ณต๊ธ‰์—…์ฒด [์ •๋ณด] GL: OpenGL ๋ Œ๋”๋Ÿฌ
[์ •๋ณด] GL: OpenGL ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฒ„์ „: 2, 1
[INFO ] GL: ์Œ์˜ ๋ฒ„์ „
[INFO] GL: ํ…์Šค์ฒ˜ ์ตœ๋Œ€ ํฌ๊ธฐ <4096>
[INFO ] GL: ํ…์Šค์ฒ˜ ์ตœ๋Œ€ ๋‹จ์œ„ <16>
[INFO] ์ฐฝ: sdl2 ์ž…๋ ฅ ๊ณต๊ธ‰์ž ์ž๋™ ์ถ”๊ฐ€
[INFO] ์ฐฝ: ๊ฐ€์ƒ ํ‚ค๋ณด๋“œ๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Œ, ๋‹จ์ผ ๋ชจ๋“œ, ๋„ํ‚น๋˜์ง€ ์•Š์Œ
[INFO ] Base: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”์ธ ๋ฃจํ”„ ์‹œ์ž‘
[INFO] GL: NPOT ํ…์Šค์ฒ˜ ์ง€์›์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ํ„ฐ์น˜์— ๋ฐ˜์‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

libmtdev1 ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ™•์‹คํžˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ์‹œ๋„ํ•˜๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@Lauszus ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉฐ ๋™์ผํ•œ ๋ฌธ์ œ

@Lauszus ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค! ๋„์™€์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
%(name)s = hidinput,/dev/input/event0
.kivy/config.ini์˜ [input] ์„น์…˜์— ํ•ด๋‹น ํ–‰์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@lucasnzone ๋ฐ˜๊ฐ‘ ์Šต๋‹ˆ๋‹ค :)

์ด ๊ธ€์„ ์ฝ๋Š” ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ์œ„ํ•ด; https://github.com/kivy/kivy/pull/6769 ๊ฐ€ ์ด์ œ ๋ณ‘ํ•ฉ๋˜์—ˆ์œผ๋ฏ€๋กœ Kivy์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ์—ฌ์ „ํžˆ ์†Œ์Šค์—์„œ SDL2๋ฅผ ์ปดํŒŒ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€์นจ์€ ๊ณต์‹ ๋ฌธ์„œ( https://kivy.org/doc/master/installation/installation-rpi.html) ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

@๋ผ์šฐ์ฃผ์Šค ,
2020-02-13 Lite OS๊ฐ€ ์„ค์น˜๋œ 1Gb ๋ฒ„์ „ Raspberry pi 4๋กœ ๊ท€ํ•˜์˜ ์ง€์‹œ๋ฅผ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ๊ท€์ค‘ํ•œ ์ฐฝ ๊ณต๊ธ‰์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ƒ๊ฐ?

์ตœ์ƒ์˜,

@somber02 ๊ณต์‹ ์ง€์› ์ฑ„๋„(์˜ˆ:

@matham ๋ฌธ์ œ๋Š” ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” CI ์›Œํฌํ”Œ๋กœ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์„œ ์›น์‚ฌ์ดํŠธ( https://github.com/kivy/kivy/runs/506000991) ์—์„œ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ

@somber02 ์ง€๊ธˆ์€ ์—ฌ๊ธฐ์—์„œ ๋ฌธ์„œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/Lauszus/kivy/blob/45f7ec3851e09220b2b5dc8f34523d6eebff17c2/doc/sources/installation/installation-rpi.rst

์ข‹์•„, ๋‚ด ๋‚˜์œ, ๋‚˜๋Š” https://github.com/kivy/kivy-server/pull/17 ์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค

@matham ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ ์ž‘์„ฑ์„ ๋ฐฉํ•ดํ•˜๋Š” https://github.com/kivy/kivy/pull/6775 ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

@Lauszus , ์•ˆ๋…•ํ•˜์„ธ์š”. ์ง€์‹œ๋ฅผ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋œ ์ •๋ณด๊ฐ€ ์žˆ๋Š” ๋งํฌ๋ฅผ ๋”ฐ๋ผ๊ฐ”์ง€๋งŒ "์ฐฝ ๊ณต๊ธ‰์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ"๊ณผ ํ•จ๊ป˜ ์—ฌ์ „ํžˆ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ "sdl2-runtimeError"๊ฐ€ EGL์„ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์—†์Œ" ํ…Œ์ŠคํŠธ ์กฐ๊ฑด:

  1. ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด 4 1Gb ๋ฒ„์ „ 2020-02-13 ๋ผ์ดํŠธ ๋ผ์ฆˆ๋ฒ ๋ฆฌ์•ˆ.
  2. sdl2๋ฅผ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•œ ํ›„ ๋‹ค์‹œ ์‹œ์ž‘
  3. ์ตœ์‹  ๋ฆด๋ฆฌ์Šค pypi, ๋งˆ์Šคํ„ฐ ๋ถ„๊ธฐ, ์ตœ์‹  ํœ  ๋ฐ ์ตœ์‹  ๊ฐœ๋ฐœ ๋ฒ„์ „์˜ ์ „์—ญ ์„ค์น˜๋กœ ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  4. ๋ช‡ ๊ฐ€์ง€ ์ƒํ™ฉ์—์„œ๋Š” x11 ์ฐฝ ๊ณต๊ธ‰์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ KIVY_WINDOW=sdl2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•์ œ๋กœ sdl2๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ญ”๊ฐ€ ์ž˜๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@somber02 ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜์—์„œ Kivy๋ฅผ ์ปดํŒŒ์ผํ•˜์…จ๋‚˜์š”? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์‚ฌ์ „ ์ œ์ž‘๋œ ํœ ์ด ์•„์ง ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•˜์‹ญ์‹œ์˜ค.

@somber02 ๋Š” ๋˜ํ•œ apt๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev

์ž์‹ ์ด ์ปดํŒŒ์ผํ•œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ.

@Lauszus ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹จ์ง€ ์ž์„ธํžˆ ๋ณด์ง€ ์•Š๊ณ  ์˜์กด์„ฑ์„ ๋ณต์‚ฌํ–ˆ๋‹ค.... ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์ด์œ ์ž…๋‹ˆ๋‹ค. ์ด ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ปดํŒŒ์ผ๋œ sdl2 ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์‹œ ์„ค์น˜ํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋…ธ๊ณ ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@somber02 ๋ฐ˜๊ฐ‘ ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋˜ ๋‹ค๋ฅธ PR์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค: https://github.com/kivy/kivy/pull/6780.

Btw์ด ๋ฌธ์ œ๋„ ๊ฒฝํ—˜ ํ–ˆ ์Šต๋‹ˆ๊นŒ? https://github.com/kivy/kivy/pull/6778? ์•„๋‹ˆ๋ฉด ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์ด ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

@Lauszus , ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

@Lauszus

apt๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

Kivy ์„ค์น˜ ์ง€์นจ์— ๋Œ€ํ•œ ์ด์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” sdl2 ์ปดํŒŒ์ผํ•˜๊ธฐ ์ „์— ์ฒ˜์Œ์— ํ•ด๋‹น ์งง์€ ๋ชฉ๋ก์— ๋Œ€ํ•ด sudo apt-get remove ... ๋˜๋Š” sudo apt-get purge ... ์„ ์ ๊ทน์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ œ์•ˆํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋Œ€๋ถ€๋ถ„์€ ์ด์ „ ์‹œ๋„๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•  ๊ฒƒ์ด๋ฏ€๋กœ ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ๋ฒ„์ „์„ ์„ค์น˜ํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Lauszus ๋†€๋ผ์šด ์ž‘์—… - ์ด๊ฒƒ์€ ๋ฒ„์Šคํ„ฐ ๋ผ์ดํŠธ์—์„œ kivy๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

pi 4์—์„œ ๋ฒ„์Šคํ„ฐ ๋ผ์ดํŠธ ์„ค์ •์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ€์ด๋“œ์—์„œ 2๋‹จ๊ณ„๋ฅผ ๋ชจ๋‘ ๊ฑด๋„ˆ๋›ด๋‹ค๋Š” ์„ค๋ช…์„ ์œ„ํ•ด ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ ๊ตฌ์„ฑ์„ ์œ„ํ•ด ๋ฐฉํ–ฅ์„ ํšŒ์ „ํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ x11์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ V3D ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://github.com/pimoroni/hyperpixel4/issues/39

@pwdavari SDL2 ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๋Š” ํ•œ ์†Œ์Šค์—์„œ SDL2๋ฅผ ์ปดํŒŒ์ผํ•ด์•ผ ํ•˜๋ฏ€๋กœ Buster lite๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ 2๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

/boot/cmdline.txt ์— ๋‹ค์Œ ์ปค๋„ ๋ช…๋ น์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ํšŒ์ „ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

video=HDMI-A-1:1920x1080M<strong i="9">@60</strong>,margin_left=0,margin_right=0,margin_top=0,margin_bottom=0,rotate=90,reflect_x

์ฐธ์กฐ: https://www.raspberrypi.org/documentation/configuration/cmdline-txt.md

Kivy์—์„œ ๋””์Šคํ”Œ๋ ˆ์ด๋งŒ ํšŒ์ „ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ:

from kivy.config import Config
Config.set('input', 'mtdev_%(name)s', 'probesysfs,provider=mtdev,param=rotation=90,param=invert_y=1')

@Lauszus ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

๋‚˜๋Š” ๋ฌธ์„œ์˜ 3๋‹จ๊ณ„์—์„œ ์ด ์ ์„ ์–ธ๊ธ‰ํ•œ ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

3. Now simply follow the Raspberry Pi 1-4 installation instructions to install Kivy, but do NOT install the SDL2 packages using apt.

์†Œ์Šค์—์„œ ์ด๋ฏธ sdl ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ฐ๊ฐ์— ๋Œ€ํ•ด sudo make install ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ž๋‹ค๋ฉด ์ผ๋ฐ˜ Pi 1-4 ์„ค์ •์˜ 2๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋˜๋Š” ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ์•ผ ํ•˜์ง€๋งŒ apt๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ?

install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev

@Lauszus

๊ฐ™์€ ์ค„์— video= ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  cmdline.txt ๋งค๊ฐœ๋ณ€์ˆ˜/๊ตฌ์„ฑ์ด ํ•œ ์ค„์— ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ๋ช…์‹œ๋˜์–ด ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฌธ์„œ๋กœ ๋‹ค์‹œ ์•Œ๋ ค์ค„ ๋•Œ๊นŒ์ง€๋Š” ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๋ณด ์‹ค์ˆ˜.

๋‹น์‹ ์˜ ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@pwdavari ์˜ˆ "Raspberry Pi 1-4 ์„ค์น˜"์—์„œ 2๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰
bleepcoder.com์€ ๊ณต๊ฐœ์ ์œผ๋กœ ๋ผ์ด์„ ์Šค ๋œ GitHub ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „ ์„ธ๊ณ„ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” GitHub, Inc. ๋˜๋Š” ํ”„๋กœ์ ํŠธ์— GitHub๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์„œ๋ฒ„์—์„œ ๋น„๋””์˜ค ๋‚˜ ์ด๋ฏธ์ง€๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ถŒ๋ฆฌ๋Š” ํ•ด๋‹น ์†Œ์œ ์ž์—๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ํŽ˜์ด์ง€์˜ ์†Œ์Šค: ์ถœ์ฒ˜

์ธ๊ธฐ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
์ธ๊ธฐ์žˆ๋Š” GitHub ํ”„๋กœ์ ํŠธ
๋” ๋งŽ์€ GitHub ํ”„๋กœ์ ํŠธ

ยฉ 2024 bleepcoder.com - Contact
Made with in the Dominican Republic.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.