Kivy: Buster RPi4B no puede encontrar un proveedor de Windows valioso desde una consola sin escritorio

Creado en 15 ago. 2019  ·  113Comentarios  ·  Fuente: kivy/kivy

Después de iniciar sesión en Raspberry Pi 4B en la línea de comando (usando raspi-config boot en CLI), no se puede ejecutar kivy debido a un error crítico al intentar usar cualquier proveedor de Windows kivy: egl_rpi, sdl2, pygame o x11. Este problema enumera los intentos y los resultados de cada uno de estos proveedores de Windows. Estos proveedores se enumeran en la siguiente página:

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

KIVY_WINDOW
Implementación a utilizar para crear la ventana
Valores: sdl2, pygame, x11, egl_rpi

Versiones

Descripción

El mismo programa test.py que se enumera a continuación se utilizó para probar todos los proveedores de Windows enumerados anteriormente. La segunda línea se cambia para los resultados de cada prueba.

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()

Cuando no hay (predeterminado) KIVY_WINDOW definido (test.py arriba), obtiene los siguientes resultados:

[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.

Después de cambiar la línea 2 eliminando el signo #, obtuve los siguientes resultados:

[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.

Después de cambiar la línea 2 a os.environ['KIVY_WINDOW'] = 'sdl2' , obtuve los siguientes resultados:

[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.

Después de cambiar la línea 2 a os.environ['KIVY_WINDOW'] = 'pygame' , obtuve los siguientes resultados:

[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.

Después de cambiar la línea 2 a os.environ['KIVY_WINDOW'] = 'x11' , obtuve los siguientes resultados:

[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.

Comentario más útil

Aquí están las instrucciones sobre cómo instalar y ejecutar una aplicación Kivy al arrancar en Buster lite:

Primero instale xserver-org, ya que lo necesitamos para mostrar la ventana real:

sudo apt-get -y install xserver-xorg

A continuación, instalo nodm desde la fuente, por lo que incluye la siguiente solución: 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*

Ahora habilite el inicio de sesión gráfico:

sudo systemctl set-default graphical.target

Configure nodm e inicie nuestra aplicación en el arranque:

# 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

Configura un espectáculo virtual:

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

Instale las dependencias de 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

Ahora es el momento de compilar e instalar Kivy. Tenga en cuenta que uso mi bifurcación con un parche, por lo que no usa los controladores Broadcom patentados que no están disponibles en Raspberry Pi 4 (https://github.com/Lauszus/kivy/commit/9cdcada34a6149b7fd6bd4c57285afc828d69948):

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

Finalmente crea una pequeña aplicación de prueba:

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

Ahora reinicia y disfruta :)

Todos 113 comentarios

mismo comportamiento encontrado en la versión RPi 4B: 1G. Anteriormente, vi en otro foro de SBC, para usar el proveedor de ventanas sdl2, es necesario volver a compilar el sdl2 con soporte KMS. No estoy seguro de si esto será útil.
Tinker Board: https://groups.google.com/forum/m/#!topic/kivy -users / jwBnYxe969g
Jetson Nano:
https://devtalk.nvidia.com/default/topic/1057120/kivy-app-fails-on-jetson-nano-/

Asimismo, pasé tres días de pruebas, tratando de encontrar una configuración Raspbian Lite viable que mostrara una GUI en la pantalla táctil SunFounder 10 "(razonablemente compatible con la pantalla estándar Raspberry Pi Foundation) en una Raspberry Pi 4B con 4GB RAM.

Condición de error: bloqueo de la aplicación Kivy (no responde) que requiere kill de otra sesión
Mensaje de error: "no se pudo agregar el servicio, ¿ya está en uso?" (visto después de intentos posteriores)
Error: No hay salida de GUI (cuando se usa la opción Legacy KMS) inmediatamente después del arranque, pero aparentemente una salida de registro feliz

Bueno, ya he tenido problemas con HDMI que no funciona correctamente debido a los nuevos puertos duales micro-HDMI. No he probado la pantalla táctil oficial de 7 "con los modelos 4B y puedo imaginar que hay problemas con eso. He informado del problema del micro-HDMI. Buena suerte con el DSI.

Encontré failed to add service - already in use? en buster full, al intentar usar el backend egl_rpi . Arreglarlo comentando dtoverlay=vc4-kms-v3d en /boot/config.txt hizo que el error desapareciera, pero luego kivy no mostró nada en absoluto.

Me pregunto si es lo mismo en buster lite.

Encontré failed to add service - already in use? en buster full, al intentar usar el backend egl_rpi . Arreglarlo comentando dtoverlay=vc4-kms-v3d en /boot/config.txt hizo que el error desapareciera, pero luego kivy no mostró nada en absoluto.

Me pregunto si es lo mismo en buster lite.

Tuve el mismo problema pero ahora tengo. Acabo de deshabilitar openGL en raspi-config
x11 - ImportError: ningún módulo llamado window_x11
Archivo "/home/pi/project/venv/local/lib/python2.7/site-packages/kivy/core/__init__.py", línea 59, en core_select_lib
fromlist = [nombre del módulo], nivel = 0)
Usando raspbian buster, python2.7, virtualenv y kivy 1.10.1.

@Gawezi Debes configurar kivy para usar la ventana egl_rpi, no x11 configurando KIVY_WINDOW=egl_rpi . Si quería ejecutar x11, asegúrese de compilar kivy con soporte x11 en el momento de la instalación ( USE_X11=1 ).

Tener el mismo / problema similar en Pi 3B ejecutando Buster en # 6418 gracias por publicar su progreso y realmente espero que la solución llegue pronto.

@matham ¿Puede explicar dónde establecer USE_X11 = 1? Creo que este es mi problema tanto con Buster como con ALARM (no he probado este mismo problema desde el inicio de la consola sin el escritorio). He intentado ejecutar kivy sin escritorio y creo que ese es mi problema. Necesito compilar kivy con soporte x11 como dices.

@frankgould exportar VIDEOCOREMESA = 1 variable de entorno antes de compilar kivy (https://github.com/kivy/kivy/commit/fa9932d812afd74f8524d17f5a85365e64ac39d7)

De lo contrario, siempre se compilará con controladores propietarios en rpi.
Además, debe instalar x11 e iniciar una sesión e iniciar la aplicación kivy dentro de la sesión x11.
Puede usar un administrador de ventanas mínimo como i3wm que simplifica las cosas.

@rnixx Gracias por la información. Lo intentaré hoy.

USE_X11=1 debe estar en el entorno cuando compila kivy.

Sin embargo, no es probable que eso solucione sus problemas al ejecutar kivy sin escritorio porque si lo ejecuta sin escritorio, supongo que se está ejecutando sin soporte x en el sistema operativo, por lo que tener soporte x en kivy no ayudará.

Se supone que solo egl_rpi funciona sin el soporte x afaik.

Gracias @matham. Agregué ese combo key = Val en / etc / environment junto con KIVY_GRAPHICS = “gles” y VIDEOCOREMESA = 1 pero ninguno funcionó sin el escritorio. No pudo abrir una ventana. Necesito profundizar en un RPi3A + más antiguo para ver cómo lo instalé para que se ejecute sin un escritorio en ALARM.

Actualización: La prueba anterior se realizó en ALARM 4.19, no en Buster. Entonces, este comentario está fuera de este hilo, pero es relevante. Probaré esto en Buster a continuación.

Hoy probé RPi4B: 4GB Raspbian 4.19 kivy instalado con el siguiente contenido / etc / environment:

USE_X11=1
VIDEOCOREMESA=1
KIVY_GRAPHICS="gles"

Estos son los resultados de la ejecución utilizando valores de entorno predeterminados:

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.
  • Raspberry Pi 4B con 4GB
  • Raspbian Buster Lite 7-10-2019
  • Kivy 1.11.1
  • Python 3.7.3
  • Pantalla TFT capacitiva SunFounder de 10.1 "

Obtengo un segmentation fault en mi plataforma.

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

Creo que encontré mi solución para la compilación de Arch Linux en RPi3A +. A continuación se muestra lo que ejecuta el arranque en el inicio de sesión automático y el servicio systemd de mi pantalla de inicio, también a continuación. Entonces, parece que el arranque inicia X11 y así es como comienza kivy (en pastebin ). Necesito probar esto en Buster para ver si obtengo los mismos resultados.

.xinitrc contenido:

#!/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

Mi servicio de inicio de pantalla:

[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

El valor del entorno kivy al inicio:

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

Esto funciona en ambos sentidos en Buster con Pi3B +
Pero para el Pi4 encontré algunas cosas que debería investigar. ¡¿Pero eso es el lunes @OutsourcedGuru ?!

De hecho, estoy aquí un sábado probando estas tonterías.

La misma plataforma Raspbian Lite que se indicó anteriormente, además de intentar agregar la interfaz x11. Traté de obtener lo mínimo, pero eso no mostraba el escritorio de la GUI. Comenzarlo desde el propio Pi después de haber comenzado x y luego funcionó como se ve a continuación.

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

La misma plataforma Raspbian Lite (con x11 / Desktop agregado) todavía sufre en el mundo Python2. Se congela, no responde a Ctl-C, no muestra otra ventana, de lo contrario registra normalmente.

@OutsourcedGuru Debes ignorar el uso de python2 desde el principio. Su apoyo finaliza este año.
Entonces, lo que debe hacer es instalar solo por python3 y usar solo pip3 . No sé por qué Raspbian no ha puesto python3 como python predeterminado. Si sigue con Arch Linux , sabrá que python3 es la versión predeterminada, que es perfecta.

Y, sin embargo, desde enero he estado trabajando en un complemento para OctoPrint . Todavía no es compatible con Py3 en la rama master . Acabo de pasar toda la mañana montando algo en su rama devel para probar esto. Probablemente pasaré días modificando mi complemento en un esfuerzo por hacer que funcione en algo que ni siquiera se ha introducido en la plataforma viable. Y luego puedo cruzar los dedos y esperar que su código en desarrollo no rompa mis propias cosas. (Esto es para lo que será una impresora de producción y el código beta normalmente no es lo que prefiere en un caso como este).

Ay, pobre Yorick, lo conocía bien.

@OutsourcedGuru , una vez leí a un moderador de Raspberry Pi que decía que nadie debería basar un modelo de negocio en Raspbian o Raspberry Pi para el caso. Podría tener razón en ese momento, pero con el tiempo, avanzan para tener más posibilidades. Como puede ver arriba, conseguí que ALARM funcionara con mi aplicación; sin embargo, desde entonces, el audio HDMI está bloqueado. Está limpio en la línea de comandos de Python, pero cuando se ejecuta desde systemd, es basura.

Entonces, es una curva tecnológica que los desarrolladores están persiguiendo. Puede golpearlo todo el día, como lo hice hoy, y aún así no obtener resultados. Sigue golpeando, si vale la pena para ti.

¿Alguien probó esta sugerencia? Parece que también está cambiando KIVY_TEXT. Lo intentaré este fin de semana si tengo la oportunidad.

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

¿Entonces todos siguen sin poder hacer que Kivy funcione con Buster ...?

Es fácil ejecutar programas de Kivy en la versión de escritorio, pero todavía no encontré una manera de trabajar para iniciarlo en el arranque de la consola.

¿Alguien mas?

Gracias jaja, me siento bastante tonto por no intentar eso ahora ... Solo lo había intentado a través de ssh, pero lo intenté a través de vnc y de hecho funcionó. Si tiene algún interés, tkinter (otra biblioteca de interfaz de usuario de Python) tampoco funciona a través de la consola, pero sí con el escritorio.

Realmente necesito una forma confiable de comenzar desde la consola o al menos el inicio, pero gracias por mencionar esto, ¡finalmente tengo una solución!

@masynthetic En ALARM, mi .xinitrc inicia Windows y luego mi aplicación Kivy se ejecuta automáticamente después de que Windows esté activo. Puedo dar más información si la necesita. No estoy en mi oficina en este momento y necesito arrancar la tableta para ver exactamente cómo lo implementé.

Eso sería de gran ayuda, gracias, no hay prisa, ya que la mayoría de las veces solo necesito un
entorno de desarrollo en este momento

El sábado, 14 de septiembre de 2019 a las 3:17 a.m., Frank Gould [email protected] escribió:

@masynthetic https://github.com/masynthetic En ALARMA, mi .xinitrc
inicia Windows y luego mi aplicación Kivy se ejecuta automáticamente después de que Windows esté activo. Puedo dar
más información si la necesita. No estoy en mi oficina ahora mismo y necesito arrancar
la tableta para ver exactamente cómo lo implementé.

-
Recibes esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/kivy/kivy/issues/6474?email_source=notifications&email_token=AEOWUVKTRWPPLKDVSMG2ERDQJS25HA5CNFSM4IL7DFSKYY3PNVWWK3TUL52HS4DFVREXG43LSMVN5 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AEOWUVMTOIQUCNBD7EKOK3TQJS25HANCNFSM4IL7DFSA
.

Eso sería útil. @frankgould

Creo que necesitamos una buena solución para la versión sin escritorio de esto. Espero volver a esto más tarde y el sistema operativo subyacente y el conjunto de controladores funcionan como antes. Siendo cínico, lo dudo.

Tampoco conseguí que kivy trabajara en Debian Jessie sin un parche. Pero si está de acuerdo con el uso de egl, entonces he encontrado útil en el pasado parchear el inicializador en kivy/core/window/window_egl_rpi.py , reemplazando:

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

Tuve problemas similares con una versión anterior de kivy hace un par de meses, y esto funcionó.

Si mal no recuerdo, la creación de una ventana usando egl falla de forma predeterminada porque se pasan argumentos adicionales. La excepción se detecta en alguna parte y se ignora.

En Debian Jessie, este parche me resolvió todos los problemas, pero no lo he probado en Buster.

Aún podría ser que la opción egl se ignore debido a esta confirmación: 333a4cc9c7b4b3168f7427d27f4fdea2a69bc52b.

De todos modos, mmmv.

@ahendriksen Suponiendo un entorno virtual, ¿uno simplemente parchea el archivo en su lugar o es necesario reinstalarlo después de la revisión? (Gracias.)

Puede hacerlo en el lugar, pero dudo que este sea el problema aquí, porque no he visto esto en ningún rastreo publicado en los problemas de buster. Pero, si hay un rastreo que muestre este error, sería útil publicarlo para que podamos solucionarlo.

@OutsourcedGuru En mi experiencia, la aplicación de parches en el lugar debería funcionar.

@matham , acabo de instalar buster en una frambuesa pi. Volveré a publicar pronto.

Puedo informar que en un Pi 3 Model B + con Buster, la rama maestra actual (2.0.0-dev0) funciona bien.
No fue necesario ningún parche para window_egl_rpi.pi.

No parece funcionar para mí, por lo que vale. Lo abandoné y pasé el día en Buster Desktop con el intento de Python 3.

Hasta ahora, no hay solución para Kivy en Buster Lite en Raspberry Pi 4, ¿verdad?
RPi4 4 GB
Pantalla oficial de Rpi
Raspbian Buster 2019-09-26
Python: 3.7.3
Kivy: v2.0.0.dev0

La primera vez que ejecuto un archivo Kivy simple después del arranque, tengo el siguiente registro y no tengo
[INFO] [Logger] Registro de inicio de sesión /home/pi/.kivy/logs/kivy_19-10-02_7.txt
[INFO] [Kivy] v2.0.0.dev0, git-f223133, 20191002
[INFO] [Kivy] Instalado en "/usr/local/lib/python3.7/dist-packages/kivy/__init__.py"
[INFO] [Python] v3.7.3 (predeterminado, 3 de abril de 2019, 05:39:12)
[GCC 8.2.0]
[INFO] [Python] Intérprete en "/ usr / bin / python"
[INFO] [Fábrica] 184 símbolos cargados
[DEBUG] [Caché] registrocon límite = Ninguno, tiempo de espera = Ninguno
[DEBUG] [Caché] registrocon límite = Ninguno, tiempo de espera = 60
[DEBUG] [Caché] registrocon límite = Ninguno, tiempo de espera = Ninguno
[INFO] [Imagen] Proveedores: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignorado)
[DEBUG] [Cache] registrocon límite = 1000, tiempo de espera = 60
[DEBUG] [Caché] registrocon límite = 1000, tiempo de espera = 3600
[DEBUG] [Aplicación] Cargando kv <./ test.kv>
[INFO] Proveedor de [texto]: sdl2
[INFO] [Ventana] Proveedor: egl_rpi
[DEBUG] [Window] Tamaño de visualización real: 800x480
[INFO] [GL] Uso del sistema de gráficos "OpenGL ES 2"
[DEBUG] [GL] glShaderBinary no está disponible
[INFO] [GL] Backend utilizado
[INFO] [GL] Versión OpenGL [INFO] [GL] Proveedor de OpenGL [INFO] [GL] Procesador OpenGL
[INFO] [GL] Versión analizada de OpenGL: 2, 0
[INFO] [GL] Versión sombreada
[INFO] [GL] Tamaño máximo de textura <2048>
[INFO] [GL] Unidades máximas de textura <8>
[DEBUG] [Shader] Fragmento compilado correctamente
[DEBUG] [Shader] Vertex compilado correctamente
[DEBUG] [ImageSDL2] Cargar
[INFO] [Ventana] teclado virtual no permitido, modo único, no acoplado
[DEBUG] [Recurso] agregar en la lista de ruta
[DEBUG] [Recurso] agregar en la lista de ruta
[DEBUG] [Recurso] agregar en la lista de ruta
[DEBUG] [Recurso] agregar en la lista de ruta
[DEBUG] [Recurso] agregar en la lista de ruta
[DEBUG] [Base] Crear proveedor desde el mouse
[DEBUG] [Base] Crear proveedor a partir de probesysfs, proveedor = mtdev
[DEBUG] [ProbeSysfs] usando probesysfs!
[DEBUG] [ProbeSysfs] dispositivo encontrado: controlador basado en memoria FT5406 en / dev / input / event0
[INFO] Coincidencia de dispositivo [ProbeSysfs]: / dev / input / event0
[INFO] [MTD] Leer evento de
[DEBUG] [Base] Crear proveedor a partir de probesysfs, proveedor = hidinput
[DEBUG] [ProbeSysfs] usando probesysfs!
[DEBUG] [ProbeSysfs] dispositivo encontrado: controlador basado en memoria FT5406 en / dev / input / event0
[INFO] Coincidencia de dispositivo [ProbeSysfs]: / dev / input / event0
[INFO] [HIDInput] Leer evento de
[INFO] [Base] Iniciar bucle principal de la aplicación
[INFO] [MTD] rango de posición X es 0 - 800
[INFO] [MTD] posición de rango Y es 0 - 480
[INFO] [MTD] rango táctil mayor es 0 - 0
[INFO] [MTD] rango táctil menor es 0 - 0
[INFO] [MTD] rango de presión es 0-255
[INFO] [MTD] inversión de ejes: X es 0, Y es 0
[INFO] Rotación de [MTD] establecida en 0
[INFO] [HIDMotionEvent] usando
[INFO] [GL] El soporte de textura NPOT está disponible
[INFO] [HIDMotionEvent] rango ABS posición X es 0 - 800
[INFO] [HIDMotionEvent] rango ABS posición Y es 0 - 480
[INFO] [HIDMotionEvent] la posición del rango X es 0 - 800
[INFO] [HIDMotionEvent] la posición del rango Y es 0 - 480
[DEBUG] [Atlas] Cargar
[DEBUG] [Atlas] Necesita cargar 1 imágenes
[DEBUG] [Atlas] Cargar
[DEBUG] [ImageSDL2] Cargar

Y la segunda vez no tengo pantalla, pero mi registro es más pequeño:
[INFO] [Logger] Registro de inicio de sesión /home/pi/.kivy/logs/kivy_19-10-02_8.txt
[INFO] [Kivy] v2.0.0.dev0, git-f223133, 20191002
[INFO] [Kivy] Instalado en "/usr/local/lib/python3.7/dist-packages/kivy/__init__.py"
[INFO] [Python] v3.7.3 (predeterminado, 3 de abril de 2019, 05:39:12)
[GCC 8.2.0]
[INFO] [Python] Intérprete en "/ usr / bin / python"
[INFO] [Fábrica] 184 símbolos cargados
[DEBUG] [Caché] registrocon límite = Ninguno, tiempo de espera = Ninguno
[DEBUG] [Caché] registrocon límite = Ninguno, tiempo de espera = 60
[DEBUG] [Caché] registrocon límite = Ninguno, tiempo de espera = Ninguno
[INFO] [Imagen] Proveedores: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignorado)
[DEBUG] [Caché] registrocon límite = 1000, tiempo de espera = 60
[DEBUG] [Caché] registrocon límite = 1000, tiempo de espera = 3600
[DEBUG] [Aplicación] Cargando kv <./ test.kv>
[INFO] Proveedor de [texto]: sdl2
[INFO] [Ventana] Proveedor: egl_rpi
[DEBUG] [Window] Tamaño de visualización real: 800x480

¿Alguien ha logrado que funcione?

La misma tarjeta SD funciona bien en el RPi3B +. Estos registros son de RPI4 4GB.

No he podido hacer que nada funcione en el Raspbian Buster sin escritorio. Probablemente se deba a la interfaz OpenGL ES v3 (en lugar de la v2 esperada) en la pila de controladores de Raspbian. O es algo extraño debido a los adaptadores HDMI duales.

Hasta ahora, no hay solución para Kivy en Buster Lite en Raspberry Pi 4, ¿verdad?
RPi4 4 GB
Pantalla oficial de Rpi
Raspbian Buster 2019-09-26
Python: 3.7.3
Kivy: v2.0.0.dev0

La primera vez que ejecuto un archivo Kivy simple después del arranque, tengo el siguiente registro y no tengo
[INFO] [Logger] Registro de inicio de sesión /home/pi/.kivy/logs/kivy_19-10-02_7.txt
[INFO] [Kivy] v2.0.0.dev0, git-f223133, 20191002
[INFO] [Kivy] Instalado en "/usr/local/lib/python3.7/dist-packages/kivy/ init .py"
[INFO] [Python] v3.7.3 (predeterminado, 3 de abril de 2019, 05:39:12)
[GCC 8.2.0]
[INFO] [Python] Intérprete en "/ usr / bin / python"
[INFO] [Fábrica] 184 símbolos cargados
[DEBUG] [Caché] registrocon límite = Ninguno, tiempo de espera = Ninguno
[DEBUG] [Caché] registrocon límite = Ninguno, tiempo de espera = 60
[DEBUG] [Caché] registrocon límite = Ninguno, tiempo de espera = Ninguno
[INFO] [Imagen] Proveedores: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignorado)
[DEBUG] [Caché] registrocon límite = 1000, tiempo de espera = 60
[DEBUG] [Caché] registrocon límite = 1000, tiempo de espera = 3600
[DEBUG] [Aplicación] Cargando kv <./ test.kv>
[INFO] Proveedor de [texto]: sdl2
[INFO] [Ventana] Proveedor: egl_rpi
[DEBUG] [Window] Tamaño de visualización real: 800x480
[INFO] [GL] Uso del sistema de gráficos "OpenGL ES 2"
[DEBUG] [GL] glShaderBinary no está disponible
[INFO] [GL] Backend utilizado
[INFO] [GL] Versión OpenGL [INFO] [GL] Proveedor de OpenGL [INFO] [GL] Procesador OpenGL
[INFO] [GL] Versión analizada de OpenGL: 2, 0
[INFO] [GL] Versión sombreada
[INFO] [GL] Tamaño máximo de textura <2048>
[INFO] [GL] Unidades máximas de textura <8>
[DEBUG] [Shader] Fragmento compilado correctamente
[DEBUG] [Shader] Vertex compilado correctamente
[DEBUG] [ImageSDL2] Cargar
[INFO] [Ventana] teclado virtual no permitido, modo único, no acoplado
[DEBUG] [Recurso] agregar en la lista de ruta
[DEBUG] [Recurso] agregar en la lista de ruta
[DEBUG] [Recurso] agregar en la lista de ruta
[DEBUG] [Recurso] agregar en la lista de ruta
[DEBUG] [Recurso] agregar en la lista de ruta
[DEBUG] [Base] Crear proveedor desde el mouse
[DEBUG] [Base] Crear proveedor a partir de probesysfs, proveedor = mtdev
[DEBUG] [ProbeSysfs] usando probesysfs!
[DEBUG] [ProbeSysfs] dispositivo encontrado: controlador basado en memoria FT5406 en / dev / input / event0
[INFO] Coincidencia de dispositivo [ProbeSysfs]: / dev / input / event0
[INFO] [MTD] Leer evento de
[DEBUG] [Base] Crear proveedor a partir de probesysfs, proveedor = hidinput
[DEBUG] [ProbeSysfs] usando probesysfs!
[DEBUG] [ProbeSysfs] dispositivo encontrado: controlador basado en memoria FT5406 en / dev / input / event0
[INFO] Coincidencia de dispositivo [ProbeSysfs]: / dev / input / event0
[INFO] [HIDInput] Leer evento de
[INFO] [Base] Iniciar bucle principal de la aplicación
[INFO] [MTD] rango de posición X es 0 - 800
[INFO] [MTD] posición de rango Y es 0 - 480
[INFO] [MTD] rango táctil mayor es 0 - 0
[INFO] [MTD] rango táctil menor es 0 - 0
[INFO] [MTD] rango de presión es 0-255
[INFO] [MTD] inversión de ejes: X es 0, Y es 0
[INFO] Rotación de [MTD] establecida en 0
[INFO] [HIDMotionEvent] usando
[INFO] [GL] El soporte de textura NPOT está disponible
[INFO] [HIDMotionEvent] rango ABS X posición es 0 - 800
[INFO] [HIDMotionEvent] rango ABS Y posición es 0 - 480
[INFO] [HIDMotionEvent] la posición del rango X es 0 - 800
[INFO] [HIDMotionEvent] la posición del rango Y es 0 - 480
[DEBUG] [Atlas] Cargar
[DEBUG] [Atlas] Necesita cargar 1 imágenes
[DEBUG] [Atlas] Cargar
[DEBUG] [ImageSDL2] Cargar

Y la segunda vez no tengo pantalla, pero mi registro es más pequeño:
[INFO] [Logger] Registro de inicio de sesión /home/pi/.kivy/logs/kivy_19-10-02_8.txt
[INFO] [Kivy] v2.0.0.dev0, git-f223133, 20191002
[INFO] [Kivy] Instalado en "/usr/local/lib/python3.7/dist-packages/kivy/ init .py"
[INFO] [Python] v3.7.3 (predeterminado, 3 de abril de 2019, 05:39:12)
[GCC 8.2.0]
[INFO] [Python] Intérprete en "/ usr / bin / python"
[INFO] [Fábrica] 184 símbolos cargados
[DEBUG] [Caché] registro con límite = Ninguno, tiempo de espera = Ninguno
[DEBUG] [Caché] registro con límite = Ninguno, tiempo de espera = 60
[DEBUG] [Caché] registro con límite = Ninguno, tiempo de espera = Ninguno
[INFO] [Imagen] Proveedores: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignorado)
[DEBUG] [Caché] registro con límite = 1000, tiempo de espera = 60
[DEBUG] [Caché] registro con límite = 1000, tiempo de espera = 3600
[DEBUG] [Aplicación] Cargando kv <./ test.kv>
[INFO] Proveedor de [texto]: sdl2
[INFO] [Ventana] Proveedor: egl_rpi
[DEBUG] [Window] Tamaño de visualización real: 800x480

¿Alguien ha logrado que funcione?

La misma tarjeta SD funciona bien en el RPi3B +. Estos registros son de RPI4 4GB.

A estas alturas, es imposible ejecutar ninguna aplicación kivy en un RPi4 sin escritorio. Es una falla de los controladores, por lo que tenemos que esperar algún parche en la próxima versión de kivy (o master).

[INFO ] [Window ] Provider: egl_rpi

Realmente no creo que vayas a conseguir que Kivy (cualquier versión) hable con el proveedor de egl_rpi Window porque Kivy está vinculado con gles2.h lugar de un unicornio llamado gles3.h que no existe por lo que puedo ver. El Pi4B usa OpenGL ES v3.

Intente ajustar la configuración para que Kivy solicite sdl2 o algo más. Lea las publicaciones de Frank aquí.

¿Hay alguna forma de instalar el código de Google Angle en el Pi (para obtener los encabezados de OpenGL ES 3.0 quizás) y luego parchear el proveedor de Kivy egl_rpi para extraer gles3.h en lugar de gles2.h (o similar)?

Aquí están las instrucciones sobre cómo instalar y ejecutar una aplicación Kivy al arrancar en Buster lite:

Primero instale xserver-org, ya que lo necesitamos para mostrar la ventana real:

sudo apt-get -y install xserver-xorg

A continuación, instalo nodm desde la fuente, por lo que incluye la siguiente solución: 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*

Ahora habilite el inicio de sesión gráfico:

sudo systemctl set-default graphical.target

Configure nodm e inicie nuestra aplicación en el arranque:

# 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

Configura un espectáculo virtual:

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

Instale las dependencias de 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

Ahora es el momento de compilar e instalar Kivy. Tenga en cuenta que uso mi bifurcación con un parche, por lo que no usa los controladores Broadcom patentados que no están disponibles en Raspberry Pi 4 (https://github.com/Lauszus/kivy/commit/9cdcada34a6149b7fd6bd4c57285afc828d69948):

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

Finalmente crea una pequeña aplicación de prueba:

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

Ahora reinicia y disfruta :)

Necesita instrucciones de instalación para RPi4B con Raspbian Buster completo

Prueba:

RPi4 4 GB
Pantalla HDMI de 7 '(funciona con un micro hdmi cerca del tipo C)
config.ini

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

Raspbian Buster 2019-09-26 completo

Registro: Error "* no se pudo agregar el servicio - ¿ya está en uso?"

pi @ raspberrypi : ~ / kivy-examples / 3Drendering $ python main.py
[INFO] [Logger] Registro de inicio de sesión /home/pi/.kivy/logs/kivy_19-10-19_10.txt
[INFO] [Kivy] v1.11.0
[INFO] [Kivy] Instalado en "/usr/local/lib/python2.7/dist-packages/kivy/__init__.pyc"
[INFO] [Python] v2.7.16 (predeterminado, 6 de abril de 2019, 01:42:57)
[GCC 8.2.0]
[INFO] [Python] Intérprete en "/ usr / bin / python"
[ADVERTENCIA] [En desuso] La compatibilidad con Python 2 Kivy ha quedado obsoleta. La versión de Kivy posterior a la 1.11.0 ya no será compatible con Python 2
[INFO] [Fábrica] 184 símbolos cargados
[INFO] [Imagen] Proveedores: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignorado)
[INFO] [Ventana] Proveedor: egl_rpi

  • no se pudo agregar el servicio - ¿ya está en uso?

@Lauszus Lo

@ diamond2nv "... con Raspbian Buster completo" Si con esto te refieres a Raspbian Buster _Desktop_ entonces las instrucciones están en un número de Kivy aquí .

Muchas gracias !
Problema resuelto por esa instrucción.

PD. "2019-09-26-raspbian-buster-full.img"

@Lauszus Está bien, he probado esto en ...

  • Raspberry Pi 4B (4 GB)
  • pantalla táctil capacitiva elo de 10,1 "
  • Raspbian Buster Lite 26/9/2019 -> "Linux octopi 4.19.75-v7l + # 1270 SMP Mar 24 de septiembre 18:51:41 BST 2019 armv7l"
  • sudo apt-get update && sudo apt-get -y upgrade para empezar
  • sudo raspi-config con localización, autoarranque en CLI _ y para mi instalación, cambios de interfaces (I2C / UART / cámara) _

Estoy señalando que preparé todo esto realizando el proceso de recuperación de Raspbian porque antes había ejecutado rpi-update en un intento de hacer que esto funcione. Se sabe que esto cambia el firmware almacenado en un chip, por lo que volví a la versión publicada.

De lo contrario, seguí tus instrucciones. Además, actualicé la configuración para permitir que el dispositivo de pantalla táctil funcione.

Edite a ~/.kivy/config.ini :

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

Arreglo para pantalla completa

No aparece en "pantalla completa", así que creo que tendré que jugar un poco con la configuración. Quizás sea 800x640 en lugar del esperado 1280x800. Esto podría estar en el archivo Raspbian /boot/config.txt , el archivo Kivy ~/.kivy/config.ini o la configuración xsession ...

Sin embargo, por una corazonada, simplemente ajusté la aplicación de prueba al incluir lo siguiente cerca de la parte superior:

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

Esto parece funcionar para ajustar la aplicación a pantalla completa, como se esperaba.

¡Muchas gracias! Me interesaría mucho saber cuándo se introduce esto en la rama master de Kivy.

@OutsourcedGuru , consulte el PR que abrí: https://github.com/kivy/kivy/pull/6562.

Sería genial si pudieras probarlo con VIDEOCOREMESA=0 y VIDEOCOREMESA=1 y ver si hay alguna diferencia de rendimiento.

@Lauszus : Buen trabajo, funciona muy bien.

También a @OutsourcedGuru.

@Lauszus Fui a volver a probar antes, pero pensé que borraste esa rama ... (?) Así que no pude.

@OutsourcedGuru como escribí antes. Terminé abriendo uno nuevo que detectará automáticamente cuando se esté ejecutando en una Raspberry Pi 4. De todos modos, también encontré una manera de realizar una compilación cruzada de la rueda, para que los usuarios no tengan que compilar Kivy ellos mismos. Descargue la rueda aquí: https://github.com/Lauszus/kivy/suites/285162135/artifacts/197175 y luego comente el siguiente PR cuando lo haya probado: https://github.com/kivy/kivy/ tirar / 6568.

@Lauszus Gracias a su ayuda, obtuve una aplicación anterior de RPI3B + que se ejecuta en RPI4 con su método nodm.
Se inicia automáticamente en el arranque y es genial, así es como planeo usarlo.
Pero tengo otros problemas con la aplicación que necesito depurar y ahora no estoy seguro de cómo obtener un resultado normal, como cuando inicio la aplicación desde la cli como en 'python3 app.py'.
¿Tiene algún consejo sobre cómo puedo lograrlo?
Esto sera realmente apreciado.
Muchas gracias de nuevo, no habría llegado tan lejos sin tu publicación.
¡Salud!

@lucasnzone Simplemente uso la funcionalidad del registrador en lugar de imprimir declaraciones: https://kivy.org/doc/stable/api-kivy.logger.html.

Luego utilizo el siguiente script para reiniciar Kivy y sigo el registro:

#!/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

No he podido probar esto, perdón por la demora. Son aproximadamente dos semanas para FormNext, así que estamos luchando aquí, por lo que vale.

Como recuerdo de mis pruebas anteriores, el pequeño programa de prueba de Kivy funcionó, pero el complemento OctoPrint que usaba Kivy no parecía estar contento. Pasé bastante tiempo tratando de cambiar la forma en que se cargó OctoPrint (para permitir que nodm controle ese servicio). El complemento OctoPrint debe cargarse dentro de un entorno virtual y normalmente ocurre como un servicio. No tuve el tiempo de calidad para perseguir a ese conejo hasta el fondo de su agujero.

@Lauszus Muchas gracias por eso, no lo había pensado, lo intentaré.
Gracias de nuevo amigo

Día de Frabjous. Me las arreglé para conseguir una plataforma de trabajo para lo siguiente:

  • Kivy 1.10.1 instalado en un entorno virtual
  • Python 2.7
  • Raspbian Buster Lite
  • OctoPrint 1.3.12 (desde OctoPi 0.17.0 IMG)
  • ffpyplayer (tuvo que volver al gstplayer debido a incompatibilidades Pi4B)
  • nodm
  • Complemento OctoPrint con Kivy

Muestra con éxito una GUI de pantalla completa al arrancar y al reiniciar.

Desde el código Python ...

    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

El config.ini debe incluir las dimensiones de la pantalla, así como ajustarse al dispositivo de entrada de la pantalla TFT.

Necesita instrucciones de instalación para RPi4B con Raspbian Buster completo

Prueba:

RPi4 4 GB
Pantalla HDMI de 7 '(funciona con un micro hdmi cerca del tipo C)
config.ini

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

Raspbian Buster 2019-09-26 completo

Registro: Error "* no se pudo agregar el servicio - ¿ya está en uso?"

pi @ raspberrypi : ~ / kivy-examples / 3Drendering $ python main.py
[INFO] [Logger] Registro de inicio de sesión /home/pi/.kivy/logs/kivy_19-10-19_10.txt
[INFO] [Kivy] v1.11.0
[INFO] [Kivy] Instalado en "/usr/local/lib/python2.7/dist-packages/kivy/ init .pyc"
[INFO] [Python] v2.7.16 (predeterminado, 6 de abril de 2019, 01:42:57)
[GCC 8.2.0]
[INFO] [Python] Intérprete en "/ usr / bin / python"
[ADVERTENCIA] [En desuso] La compatibilidad con Python 2 Kivy ha quedado obsoleta. La versión de Kivy posterior a la 1.11.0 ya no será compatible con Python 2
[INFO] [Fábrica] 184 símbolos cargados
[INFO] [Imagen] Proveedores: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignorado)
[INFO] [Ventana] Proveedor: egl_rpi

  • no se pudo agregar el servicio - ¿ya está en uso?

Hola @ diamond2nv , ¿

@elisandrom por favor vea mi comentario: https://github.com/kivy/kivy/issues/6474#issuecomment -542679712

@elisandrom por favor vea mi comentario: # 6474 (comentario)

Gracias !!!!!! Funciona perfecto !!!

Para cualquiera que esté interesado, puede descargar una rueda de compilación cruzada aquí: https://github.com/kivy/kivy/suites/364981942/artifacts/751103.

Simplemente siga estas instrucciones sobre cómo instalar todas las dependencias: https://github.com/kivy/kivy/issues/6474#issuecomment -542679712, pero en lugar de compilar Kivy desde la fuente, debería poder instalarlo usando la rueda precompilada :

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

Sería genial si pudiéramos hacer que un par de personas probaran esto, para que # 6568 se pueda fusionar.

@Lauszus ¿Podemos confirmar la versión de Kivy en esa rueda? Debo suponer que es 2.0.0.dev0 del título de la rueda. Realmente no estoy seguro de qué hay en esto. Sin embargo, supongo que requiere Python 3 para el entorno virtual.

@OutsourcedGuru sí, eso es correcto. Básicamente es solo la rama maestra con las confirmaciones en # 6568. Aquí está la acción donde se construyó: https://github.com/kivy/kivy/runs/354828981.

Sí, requiere Python 3.7, ya que es estándar en Buster. Puede instalarlo globalmente o en un entorno virtual, eso depende de usted.

Por lo que vale, logré actualizar mi plataforma de producción a Python 3 + Kivy 1.11.1 en Raspbian Lite, habiendo instalado nodm con soporte limitado para x windows como se ve a continuación. Funciona como se esperaba en el Pi 4B. La instalación fue simplemente pip install kivy==1.11.1 en el entorno virtual.

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

Dado https://github.com/kivy/kivy/issues/6474#issuecomment -542679712, parece que la única solución hasta ahora en la Raspberry Pi 4 es usar X11. ¿Ya no hay soporte para el framebuffer que no es X como lo había en RPis anteriores? Estoy tratando de actualizar mi proyecto de una Raspberry Pi 3B + a una Raspberry Pi 4, pero no quiero comenzar a instalar X11 solo para poder mostrar cosas.

@whitelynx Experimenté compilando SDL2 sin X en la Raspberry Pi 4. Sin embargo, seguía quejándose de que no podía encontrar una ventana: https://github.com/kivy/kivy/pull/6662#issuecomment -573423540. Hasta ahora, solo puedo hacerlo funcionar si uso un administrador de ventanas como nodm.

Aquí hay un ejemplo de código que crea una ventana de opengles en rpi4 sin X.
https://github.com/matusnovak/rpi-opengl-without-x/blob/master/triangle_rpi4.c
https://www.raspberrypi.org/forums/viewtopic.php?t=243707#p1499181
¿Es posible que se pueda usar algún código similar para dibujar una ventana de kivy?

Tenga en cuenta que el primer ejemplo incluye gl2.h. Hasta donde yo sé, el Pi4B usa gl3.

Los probé en mi rpi4b y funcionaron sin problemas. El primer ejemplo escribe en un archivo sin formato y puede ver el triángulo en pantalla descomentando la línea 384.

@Lauszus El problema de no poder encontrar una ventana cuando se ejecuta con SDL2 sin X11 se debe a que el código de ventana de creación de SDL2 especifica 8 bits alfabéticos para la ventana. Si se cambia a 0 bits alfa en kivy.core.window._window_sdl2.pyx, funcionará.

@ddimensia intenté cambiar
138: SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8)
para
138: SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0)
Pero sigo recibiendo los mismos errores al intentar crear una ventana:
[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

¿Tiene un repositorio con todos los cambios necesarios para que sdl2 + kivy funcione en un rpi4 sin X?

Básicamente, sigo las instrucciones de Amiberry para compilar SDL2 (https://github.com/midwan/amiberry/wiki/Compile-SDL2-from-source) con los requisitos mínimos y también compilo SDL2_mixer desde la fuente, que requiere algunas otras bibliotecas si desea compatibilidad con mp3, flac, etc. Luego modifiqué los bits Alpha a 0 en el archivo _window_sdl2.pyx. Finalmente modifiqué setup.py para forzar use_x11 a False (en un lugar lo establece en True) y ejecuté export VIDEOCOREMESA=1 y luego pip install . . Creo que fue eso. Una cosa que hice diferente al compilar todas las bibliotecas SDL2 es que cuando ejecuté configure agregué --prefix=/usr a los argumentos para instalar las bibliotecas en la ubicación normal en lugar de / usr / local / lib.

@ddimensia gracias! Eso funciono :)

@ddimensia Acabo de abrir un PR con los cambios: https://github.com/kivy/kivy/pull/6769. Estoy esperando que el CI complete la compilación, para poder verificar que la compilación de la rueda también funcionará.

@ddimensia el VIDEOCOREMESA=1 no era necesario, así que lo dejé fuera.

@Lauszus Hola de nuevo compañero.
Encontré su contenedor kivy en https://hub.docker.com/u/lauszus
Me preguntaba si podría indicarme la dirección correcta para hacer que Kivy corra dentro de un contenedor.
Quiero decir, lo tengo funcionando bien, se muestra en una pantalla táctil.
Pero no importa lo que haga, no puedo hacer que la pantalla táctil funcione dentro del contenedor.
¿Sabrías algo sobre eso?
Gracias por adelantado.
Salud

@lucasnzone es un contenedor antiguo que usé cuando experimentaba con la compilación cruzada de Kivy para acelerar mis compilaciones. En realidad, nunca ejecuté Kivy dentro del contrainer, solo lo usé para compilarlo.

De todos modos, una búsqueda rápida me dice que debería ser posible usar el argumento --device al ejecutar el contenedor, es decir:

--device /dev/input/event0

debe agregar su pantalla táctil al contenedor.

Ver: https://docs.docker.com/engine/reference/commandline/run/

@Lauszus hola amigo, gracias por tu respuesta.
esto está en mi comando ejecutar docker
--privileged --net host --device /dev/gpiomem:/dev/gpiomem --device /dev/ttyAMA0:/dev/ttyAMA0 -v /boot/overlay:/boot/overlay
Lo acabo de probar agregando --device /dev/input/event0
pero aun así no tuve suerte.
Estoy a punto de dejar de intentarlo con un recipiente todos juntos. Ni siquiera puedo hacer que funcionen las muestras de kivy.
Incluso estoy ejecutando el contenedor con --privileged sin suerte.
¿Diría que esto es un problema de configuración de Docker o un problema de configuración de kivy?
Sinceramente, estoy perdido, he pasado una semana en esto y no pude entenderlo.
gracias de nuevo por tu respuesta amigo, muy apreciado

¿Ha verificado que su pantalla táctil realmente es /dev/input/event0 ?

¿Por qué quiere ejecutarlo en un contenedor de todos modos si solo está jugando con los ejemplos? Simplemente use un entorno virtual de Python e instale las dependencias requeridas para su sistema operativo usando el paquete administrar, es decir, apt etc.

@lucasnzone Olvidé preguntar si está utilizando una Raspberry Pi o alguna otra plataforma. Además, ¿qué sistema operativo estás usando?

@Lauszus RPI4 con raspbian lite
oh, no, tengo una aplicación actual que quiero ejecutar en un contenedor porque facilitará la distribución y el control de versiones.
Estaba probando con los ejemplos porque si los conseguía funcionar, podría hacer lo mismo con mi aplicación kivy.
¿Cómo puedo verificar en qué dispositivo está mi pantalla táctil / dev / input? No he hecho eso, no

@lucasnzone aquí está la salida en mi sistema:

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

Esto significa que la pantalla táctil está en /dev/input/event0 .

sí, el mío es un evento, también
N: Name="ADS7846 Touchscreen" H: Handlers=mouse0 event0

Bueno. ¿La aplicación funciona con la pantalla táctil fuera del contenedor?

@Lauszus
sí, lo he hecho con Kivy-2.0.0rc1-cp37-cp37m-linux_armv7l.whl wheel
originalmente con su bifurcación que no usa los controladores de broadcom

Bueno. ¿Qué errores está recibiendo? ¿Es /dev/input/event0 ? dispositivo presente dentro del contenedor?

si @Lauszus
tengo crw-rw---- 1 root i2c 13, 64 Mar 12 22:56 event0 y crw-rw---- 1 root i2c 13, 64 Mar 12 22:56 mouse0 dentro del contenedor

Intente simplemente capturar la salida, es decir, cat /dev/input/event0 . ¿Imprime algo cuando toca la pantalla?

@Lauszus lo hace, personajes aleatorios
ahora estoy más confundido que antes

Súper eso significa que el contenedor está recibiendo la entrada. Lo que está viendo es el flujo de bytes sin procesar, por lo que no tendrá sentido para usted. De todos modos, esto significa que hay algo en su configuración de Kivy que no es correcto.

¿Puedes intentar compilar y ejecutar este código C (es un código antiguo que usé para depurar mi pantalla)?

#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;
}

Puede compilarlo y ejecutarlo así:

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

@Lauszus
Obtengo algo de salida del tacto:

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

esa es la esquina inferior izquierda

Bueno. Intente agregar lo siguiente en la parte superior del código (es importante que esté por encima de cualquier otra importación):

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

ok, esta es la salida cuando ejecuto mi aplicación, con ese código en la parte superior:

[INFO] Registrador: registro de registro en /root/.kivy/logs/kivy_20-03-13_3.txt
[INFORMACIÓN] Kivy: v2.0.0.dev0, git-cef99e4, 20191024
[INFO] Kivy: instalado en "/root/venv-kivy/lib/python3.7/site-packages/kivy/__init__.py"
[INFO] Python: v3.7.3 (predeterminado, 3 de abril de 2019, 05:39:12)
[GCC 8.2.0]
[INFO] Python: intérprete en "/ root / venv-kivy / bin / python3"
[INFO] Fábrica: 184 símbolos cargados
[INFO] Imagen: Proveedores: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignorado)
[INFO] Texto: Proveedor: sdl2
[INFO] Ventana: Proveedor: sdl2 (['window_egl_rpi'] ignorado)
[INFO] GL: Uso del sistema de gráficos "OpenGL ES 2"
[INFO] GL: Backend usado
[INFO] GL: versión OpenGL [INFO] GL: proveedor de OpenGL [INFO] GL: renderizador OpenGL
[INFO] GL: Versión analizada de OpenGL: 2, 1
[INFO] GL: versión sombreada
[INFO] GL: Tamaño máximo de textura <4096>
[INFO] GL: Unidades máximas de textura <16>
Ventana [INFO]: agregar automáticamente proveedor de entrada sdl2
[INFO] Ventana: teclado virtual no permitido, modo único, no acoplado
[INFO] Base: iniciar el bucle principal de la aplicación
[INFO] GL: El soporte de textura NPOT está disponible

todavía no responde al tacto

¿Puedes intentar instalar el paquete libmtdev1 ?

seguro que puedo, lo intentaré ahora y lo ejecutaré de nuevo

@Lauszus ya estaba instalado, mismos problemas

@Lauszus ¡ Lo tengo funcionando! ¡Gracias por toda tu ayuda amigo!
%(name)s = hidinput,/dev/input/event0
Agregué esa línea a la sección [input] en .kivy / config.ini
¡Gracias de nuevo amigo!

@lucasnzone es genial escuchar eso :)

Para cualquiera que lea esto; https://github.com/kivy/kivy/pull/6769 ahora se ha fusionado, por lo que ya no se necesitan cambios en Kivy, pero aún necesita compilar SDL2 desde la fuente. Las instrucciones se pueden encontrar en los documentos oficiales: https://kivy.org/doc/master/installation/installation-rpi.html.

@Lauszus ,
Seguí sus instrucciones con la versión de 1Gb Raspberry pi 4 con 2020-02-13 Lite OS. Pero todavía no puede encontrar un proveedor de ventanas valioso. ¿Cualquier pensamiento?

Mejor,

@ somber02 Sería mejor si solicitara más soporte en nuestros canales de soporte oficiales (por ejemplo, discordia). Preferimos usar problemas de github principalmente para errores reales y no para soporte.

@matham, el problema es que hay un problema con el flujo de trabajo de CI que genera los documentos, por lo que no está actualizado en el sitio web: https://github.com/kivy/kivy/runs/506000991.

@ somber02 por ahora puede encontrar la documentación aquí: https://github.com/Lauszus/kivy/blob/45f7ec3851e09220b2b5dc8f34523d6eebff17c2/doc/sources/installation/installation-rpi.rst hasta que el sitio web se actualice.

Ok, mi culpa, olvidé fusionar https://github.com/kivy/kivy-server/pull/17. Debería arreglarse ahora.

@matham gracias. Consulte: https://github.com/kivy/kivy/pull/6775 , ya que eso impide que se compilen los documentos.

@Lauszus , Hola Lauszus. Gracias por la instrucción. Seguí el enlace con la información actualizada, pero todavía falló con "No se pudo encontrar ningún proveedor de ventanas". y "sdl2-runtimeError" no pudo inicializar EGL "Condición de prueba:

  1. raspberry pi 4 1Gb versión 2020-02-13 Lite Raspberrian.
  2. después de sdl2 recompilado, reinicie
  3. probado con instalación global desde la última versión de pypi, desde la rama maestra, desde la última rueda y desde la última versión de desarrollo.
  4. En algunas situaciones, el mensaje de error muestra que no puede encontrar el proveedor de ventanas x11, haré KIVY_WINDOW = sdl2 para forzarlo a usar sdl2 en ese caso.

¿Estoy haciendo algo mal?

@ somber02, ¿

@ somber02 también tenga en cuenta que NO debe instalar estas dependencias usando apt:

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

Como quieran usar la versión que compilaron ustedes mismos.

@Lauszus Gracias. Acabo de copiar las dependencias sin mirar de cerca ... Gracias, esa es la razón. Después de purgar estos paquetes y reinstalar el paquete sdl2 compilado, funciona.

Muchas gracias por su arduo trabajo.

@ somber02 es genial escuchar eso. Acabo de enviar otro RP para que quede más claro: https://github.com/kivy/kivy/pull/6780.

Por cierto, ¿también experimentó este problema: https://github.com/kivy/kivy/pull/6778? ¿O fue acelerado por hardware?

@Lauszus , puedo confirmar que es acelerado por hardware. Gracias

@Lauszus

tenga en cuenta que NO debe instalar estas dependencias usando apt:

En un caso como este para las instrucciones de instalación de Kivy, incluso podría sugerir que el usuario haga activamente un sudo apt-get remove ... o sudo apt-get purge ... para esa lista corta al principio antes de luego compilar sdl2 . Para la mayoría de nosotros, probablemente estemos intentando arreglar un intento anterior, por lo que habríamos instalado la versión predeterminada del paquete.

@Lauszus Increíble trabajo: esto resolvió todos los problemas de hacer funcionar kivy en buster lite para mí.

¿Puedo sugerir solo para aclarar que la guía indica que el paso 2 se omite por completo si está haciendo una configuración de buster lite en pi 4?

Además, ¿existe una solución alternativa para mantener la aceleración de hardware que le permitiría rotar la orientación para la configuración? La única forma en que puedo ver que esto funciona es con x11 o desactivando el controlador V3D.

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

@pwdavari, el paso 2 no debe

Puede rotar la pantalla agregando los siguientes comandos del kernel en /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

Ver: https://www.raspberrypi.org/documentation/configuration/cmdline-txt.md

Si solo desea rotar la pantalla en Kivy:

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

@Lauszus Gracias por la respuesta

Solo me refería a este punto del paso 3 de la documentación:

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

¿No deberíamos simplemente omitir el paso 2 de la configuración normal de Pi 1-4 si ya instaló paquetes sdl desde la fuente y siguió los pasos -> sudo make install para cada uno?

O está diciendo que debe seguir los pasos pero no instalar con apt, por lo que haría:

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

@Lauszus

No estaba poniendo los parámetros de video = en la misma línea. No fue hasta que me indicó la documentación que noté que afirma muy explícitamente que todos los parámetros / configuraciones de cmdline.txt deben estar en una línea. Error de principiante.

¡Gracias por tu ayuda!

@pwdavari sí, debe omitir el paso 2 en "Instalación de Raspberry Pi 1-4".

¿Fue útil esta página
0 / 5 - 0 calificaciones
bleepcoder.com utiliza la información de GitHub con licencia pública para proporcionar a los desarrolladores de todo el mundo soluciones a sus problemas. No estamos afiliados a GitHub, Inc. o a ningún desarrollador que use GitHub para sus proyectos. No alojamos ninguno de los vídeos o imágenes en nuestros servidores. Todos los derechos pertenecen a sus respectivos propietarios.
Fuente de esta página: Fuente

Lenguajes de programación populares
Proyectos populares de GitHub
Más proyectos de 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.