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
์๋ ๋์ด๋ ๋์ผํ 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.
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.
๋ด ์ฅ๋น์์ 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๋ ๋ณ๊ฒฝํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฒ ์ฃผ๋ง์ ๊ธฐํ๊ฐ ๋๋ค๋ฉด ๋์ ํด ๋ณด๊ฒ ์ต๋๋ค.
๊ทธ๋์ ๋ค๋ค ์์ง๋ ๋ฒ์คํฐ์์ ํค๋น๋ฅผ ๋ชป์ฐ๊ฒ ๋ง๋๋ค..?
๋ฐ์คํฌํ ๋ฒ์ ์์ 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] [์บ์] ๋ ์ง์คํฐ
[DEBUG] [์บ์] ๋ ์ง์คํฐ
[์ ๋ณด] [์ด๋ฏธ์ง] ๊ณต๊ธ์: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer๋ ๋ฌด์๋จ)
[DEBUG] [์บ์] ๋ ์ง์คํฐ
[DEBUG] [์บ์] ๋ ์ง์คํฐ
[๋๋ฒ๊ทธ] [์ฑ] 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 ์ด๋ฒคํธ]
[์ ๋ณด] [HIDMotion ์ด๋ฒคํธ]
[์ ๋ณด] [HIDMotion ์ด๋ฒคํธ]
[์ ๋ณด] [HIDMotion ์ด๋ฒคํธ]
[๋๋ฒ๊ทธ] [์ํ๋ผ์ค] ๋ก๋
[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] [์บ์] ๋ ์ง์คํฐ
[DEBUG] [์บ์] ๋ ์ง์คํฐ
[์ ๋ณด] [์ด๋ฏธ์ง] ๊ณต๊ธ์: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer๋ ๋ฌด์๋จ)
[DEBUG] [์บ์] ๋ ์ง์คํฐ
[DEBUG] [์บ์] ๋ ์ง์คํฐ
[๋๋ฒ๊ทธ] [์ฑ] 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
์ด์ ์ฌ๋ถํ ํ๊ณ ์ฆ๊ธฐ์ธ์ :)
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 ์ข์, ๋๋ ์ด๊ฒ์ ํ ์คํธํ์ต๋๋ค ...
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 ๊ทธ๊ฒ์ ๋ํด ๋๋ฌด ๊ฐ์ฌํฉ๋๋ค. ์๊ฐํ์ง ๋ชปํ์ต๋๋ค. ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
๋ค์ ํ ๋ฒ ๊ฐ์ฌํฉ๋๋ค.
๋ฉ์ง ํ๋ฃจ. ๋๋ ๋ค์์ ๋ํ ์์ ํ๋ซํผ์ ์ป์ ์ ์์์ต๋๋ค.
๋ถํ ๋ฐ ์ฌ๋ถํ ์ ์ ์ฒด ํ๋ฉด 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.inimax_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์ ์ด๊ธฐํํ ์ ์์" ํ ์คํธ ์กฐ๊ฑด:
๋ด๊ฐ ๋ญ๊ฐ ์๋ชปํ๊ณ ์์ต๋๊น?
@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 ๋๋ผ์ด๋ฒ๋ฅผ ๋นํ์ฑํํ๋ ๊ฒ์ ๋๋ค.
@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๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ์ด์ผ ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ค์์ Buster lite์์ ๋ถํ ํ ๋ Kivy ์ฑ์ ์ค์นํ๊ณ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ ๋๋ค.
๋จผ์ ์ค์ ์ฐฝ์ ํ์ํ๋ ๋ฐ ํ์ํ๋ฏ๋ก xserver-org๋ฅผ ์ค์นํฉ๋๋ค.
๋ค์์ผ๋ก ์์ค์์ nodm์ ์ค์นํ๋ฏ๋ก ๋ค์ ์์ ์ฌํญ์ด ํฌํจ๋ฉ๋๋ค. https://github.com/spanezz/nodm/pull/10 :
์ด์ ๊ทธ๋ํฝ ๋ก๊ทธ์ธ์ ํ์ฑํํ์ญ์์ค.
nodm์ ๊ตฌ์ฑํ๊ณ ๋ถํ ์ ์ฑ์ ์์ํฉ๋๋ค.
๊ฐ์ ํ๊ฒฝ ์ค์ :
Kivy ์ข ์์ฑ ์ค์น:
์ด์ Kivy๋ฅผ ์ปดํ์ผํ๊ณ ์ค์นํ ์ฐจ๋ก์ ๋๋ค. ๋ด ํฌํฌ๋ฅผ ํจ์น์ ํจ๊ป ์ฌ์ฉํ๋ฏ๋ก Raspberry Pi 4(https://github.com/Lauszus/kivy/commit/9cdcada34a6149b7fd6bd4c57285afc828d69948)์์ ์ฌ์ฉํ ์ ์๋ ๋ ์ Broadcom ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ์์ ํ ์คํธ ์ฑ์ ๋ง๋ญ๋๋ค.
์ด์ ์ฌ๋ถํ ํ๊ณ ์ฆ๊ธฐ์ธ์ :)