Kivy: Buster RPi4B incapable de trouver un fournisseur Windows précieux à partir d'une console sans bureau

Créé le 15 août 2019  ·  113Commentaires  ·  Source: kivy/kivy

Après avoir connecté le Raspberry Pi 4B à la ligne de commande (à l'aide de raspi-config boot to CLI), impossible d'exécuter kivy en raison d'une erreur critique lors de la tentative d'utilisation de n'importe quel fournisseur kivy Window : egl_rpi, sdl2, pygame ou x11. Ce problème répertorie les tentatives et les résultats de chacun de ces fournisseurs Windows. Ces fournisseurs sont répertoriés sur la page suivante :

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

KIVY_WINDOW
Implémentation à utiliser pour créer la fenêtre
Valeurs : sdl2, pygame, x11, egl_rpi

Versions

La description

Le même programme test.py répertorié ci-dessous a été utilisé pour tester tous les fournisseurs Windows répertoriés ci-dessus. La deuxième ligne est modifiée pour chaque résultat de test.

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

Lorsqu'aucun (par défaut) KIVY_WINDOW défini (test.py ci-dessus), obtient les résultats suivants :

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

Après avoir modifié la ligne 2 en supprimant le signe #, j'ai obtenu les résultats suivants :

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

Après avoir changé la ligne 2 en os.environ['KIVY_WINDOW'] = 'sdl2' , vous obtenez les résultats suivants :

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

Après avoir changé la ligne 2 en os.environ['KIVY_WINDOW'] = 'pygame' , vous obtenez les résultats suivants :

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

Après avoir changé la ligne 2 en os.environ['KIVY_WINDOW'] = 'x11' , vous obtenez les résultats suivants :

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

Commentaire le plus utile

Voici les instructions pour installer et exécuter une application Kivy au démarrage sur Buster lite :

Installez d'abord xserver-org, car nous en avons besoin pour afficher la fenêtre réelle :

sudo apt-get -y install xserver-xorg

Ensuite, j'installe nodm à partir des sources, il inclut donc le correctif suivant : 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*

Activez maintenant la connexion graphique :

sudo systemctl set-default graphical.target

Configurez nodm et démarrez notre application au démarrage :

# 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

Configurez un environnement virtuel :

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

Installez les dépendances 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

Il est maintenant temps de compiler et d'installer Kivy. A noter que j'utilise mon fork avec un patch, il n'utilise donc pas les drivers propriétaires Broadcom qui ne sont pas disponibles sur le 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

Créez enfin une petite application de test :

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

Maintenant, redémarrez et profitez-en :)

Tous les 113 commentaires

même comportement trouvé dans RPi 4B : version 1G. Auparavant, j'ai vu dans un autre forum SBC que pour utiliser le fournisseur de fenêtres sdl2, il fallait recompiler le sdl2 avec le support KMS. Je ne sais pas si cela sera utile.
Tableau de bricolage : 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-/

De même, j'ai passé trois jours à tester, à essayer de trouver une configuration Raspbian Lite viable qui afficherait une interface graphique sur l'écran tactile SunFounder 10" (raisonnablement compatible avec l'écran standard Raspberry Pi Foundation) sur un Raspberry Pi 4B avec 4 Go de RAM.

Condition d'erreur : crash de l'application Kivy (ne répond pas) nécessitant un kill d'une autre session
Message d'erreur : "Impossible d'ajouter le service - déjà utilisé ?" (vu après des tentatives ultérieures)
Erreur : aucune sortie GUI (lors de l'utilisation de l'option Legacy KMS) immédiatement après le démarrage, mais une sortie de journal apparemment satisfaisante

Eh bien, j'ai déjà eu des problèmes avec le HDMI qui ne fonctionnait pas correctement en raison des nouveaux ports micro-HDMI doubles. Je n'ai pas testé l'écran tactile officiel 7" avec les modèles 4B et je peux imaginer qu'il y a des problèmes avec cela. J'ai signalé le problème micro-HDMI. Bonne chance avec le DSI.

J'ai rencontré failed to add service - already in use? sur buster full, en essayant d'utiliser le backend egl_rpi . Le corriger en commentant dtoverlay=vc4-kms-v3d dans /boot/config.txt fait disparaître l'erreur, mais kivy n'a rien montré du tout.

Je me demande si c'est pareil sur buster lite ?

J'ai rencontré failed to add service - already in use? sur buster full, en essayant d'utiliser le backend egl_rpi . Le corriger en commentant dtoverlay=vc4-kms-v3d dans /boot/config.txt fait disparaître l'erreur, mais kivy n'a rien montré du tout.

Je me demande si c'est pareil sur buster lite ?

J'ai eu le même problème mais j'ai maintenant. Je viens de désactiver openGL dans raspi-config
x11 - ImportError : aucun module nommé window_x11
Fichier "/home/pi/project/venv/local/lib/python2.7/site-packages/kivy/core/__init__.py", ligne 59, dans core_select_lib
fromlist=[nommodule], niveau=0)
En utilisant raspbian buster, python2.7, virtualenv et kivy 1.10.1.

@Gawezi Vous devez configurer kivy pour utiliser la fenêtre egl_rpi, pas x11 en définissant KIVY_WINDOW=egl_rpi . Si vous vouliez exécuter x11, assurez-vous de compiler kivy avec le support x11 au moment de l'installation ( USE_X11=1 ).

Ayant le même problème/similaire sur Pi 3B exécutant Buster sur #6418, merci d'avoir publié vos progrès et j'espère vraiment que la solution arrivera bientôt !

@matham Pouvez-vous préciser où définir USE_X11=1 ? Je pense que c'est mon problème avec Buster et ALARM (je n'ai pas testé ce même problème à partir du démarrage de la console sans bureau). J'ai essayé d'exécuter Kivy sans ordinateur et je pense que c'est mon problème. J'ai besoin de compiler kivy avec le support x11 comme vous le dites.

@frankgould exporte la variable d'environnement VIDEOCOREMESA=1 avant de compiler kivy (https://github.com/kivy/kivy/commit/fa9932d812afd74f8524d17f5a85365e64ac39d7)

Sinon, il sera toujours compilé avec les pilotes propriétaires sur rpi.
De plus, vous devez installer x11 et démarrer une session et démarrer l'application kivy dans la session x11.
Vous pouvez utiliser un gestionnaire de fenêtres minimal comme i3wm qui simplifie les choses.

@rnixx Merci pour l'info. Je vais essayer ça aujourd'hui.

USE_X11=1 doit être dans l'environnement lorsque vous compilez kivy.

Cependant, cela ne résoudra probablement pas vos problèmes d'exécution de kivy sans bureau, car si vous exécutez sans bureau, je suppose que vous exécutez sans support x dans le système d'exploitation, donc avoir le support x dans kivy n'aidera pas.

Seul egl_rpi est censé fonctionner sans support x, autant que je sache.

Merci @matham. J'ai ajouté ce combo key=Val dans /etc/environment avec KIVY_GRAPHICS="gles" et VIDEOCOREMESA=1 mais aucun n'a fonctionné sans le bureau. Il ne pouvait pas ouvrir une fenêtre. J'ai besoin d'aller creuser dans un ancien RPi3A+ pour voir comment je l'ai installé pour le faire fonctionner sans bureau sur ALARM.

Mise à jour : le test ci-dessus était sur ALARM 4.19, pas sur Buster. Donc, ce commentaire est en dehors de ce fil mais pertinent. Je testerai ça sur Buster la prochaine fois.

Aujourd'hui, j'ai testé RPi4B : 4 Go Raspbian 4.19 kivy installé avec le contenu suivant /etc/environment :

USE_X11=1
VIDEOCOREMESA=1
KIVY_GRAPHICS="gles"

Voici les résultats de l'exécution en utilisant les valeurs d'environnement par défaut :

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 avec 4 Go
  • Raspbian Buster Lite 7-10-2019
  • Kivy 1.11.1
  • Python 3.7.3
  • Écran TFT capacitif 10,1" SunFounder

Je reçois un segmentation fault sur ma plate-forme.

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

Je pense avoir trouvé ma solution pour la construction d'Arch Linux sur RPi3A+. Vous trouverez ci-dessous ce que le démarrage exécute lors de la connexion automatique et de mon service systemd d'écran de démarrage, également ci-dessous. Donc, il semble que le démarrage démarre X11 et c'est ainsi que kivy démarre (sur pastebin ). Je dois tester cela sur Buster pour voir si j'obtiens les mêmes résultats.

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

Mon screen-start.service :

[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

La valeur de l'environnement kivy au démarrage :

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

Cela fonctionne dans les deux sens sur Buster avec Pi3B+
Mais pour le Pi4, j'ai trouvé quelques éléments sur lesquels je devrais enquêter. Mais c'est lundi @OutsourcedGuru ?!

En fait, je suis ici un samedi pour tester ce non-sens.

Même plate-forme Raspbian Lite comme indiqué ci-dessus, plus en essayant d'ajouter l'interface x11. J'ai essayé d'obtenir le strict minimum, mais cela ne ferait pas apparaître le bureau de l'interface graphique. Le démarrer à partir du Pi lui-même après avoir démarré x puis a fonctionné comme indiqué ci-dessous.

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 même plate-forme Raspbian Lite (avec x11/Desktop ajouté) souffre toujours dans le monde Python2. Il se bloque, ne répond pas à Ctl-C, n'affiche pas d'autre fenêtre, se connecte normalement autrement.

@OutsourcedGuru Vous devez ignorer l'utilisation de python2 depuis le début. Son soutien se termine cette année.
Donc, ce que vous devez faire est d'installer uniquement pour python3 et d'utiliser uniquement pip3 . Je ne sais pas pourquoi Raspbian n'a pas mis python3 comme python par défaut. Si vous continuez avec Arch Linux vous saurez que python3 est la version par défaut qui est parfaite.

Et pourtant, depuis janvier je travaille sur un plugin pour OctoPrint . Il ne prend pas encore en charge Py3 sur la branche master . Je viens de passer toute la matinée à préparer quelque chose à leur branche devel pour tester cela. Je vais probablement passer des jours à modifier mon plugin dans le but de le faire fonctionner sur quelque chose qui n'est même pas poussé vers la plate-forme viable. Et puis je peux croiser les doigts et espérer que leur code en développement ne casse pas mes propres trucs. (C'est pour ce qui sera une imprimante de production et le code bêta n'est normalement pas ce que vous préférez dans un cas comme celui-ci.)

« Hélas, pauvre Yorick, je le connaissais bien.

@OutsourcedGuru , j'ai lu une fois un modérateur de Raspberry Pi dire que personne ne devrait baser un modèle commercial sur Raspbian, ou Raspberry Pi d'ailleurs. Il pourrait avoir raison à l'époque mais au fil du temps, ils progressent pour plus de possibilités. Comme vous pouvez le voir ci-dessus, ALARM fonctionne avec mon application ; cependant, depuis lors, l'audio HDMI est arrosé. C'est propre en ligne de commande python mais lors de l'exécution à partir de systemd, c'est de la poubelle.

C'est donc une courbe technologique que les développeurs poursuivent. Vous pouvez le battre toute la journée, comme je l'ai fait aujourd'hui, et n'obtenir toujours aucun résultat. Continuez à battre, si cela en vaut la peine pour vous.

Quelqu'un a-t-il essayé cette suggestion ? On dirait qu'il change également KIVY_TEXT. J'essaierai ce week-end si j'en ai l'occasion.

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

Donc, tout le monde est toujours incapable de faire fonctionner Kivy sur Buster ..?

Il est facile d'exécuter des programmes Kivy sur la version de bureau, mais je n'ai toujours pas trouvé le moyen de travailler moi-même pour le démarrer au démarrage de la console.

Quelqu'un d'autre?

Merci haha, je me sens assez stupide de ne pas avoir essayé ça maintenant... Je n'avais essayé que via ssh, mais je viens de tenter le coup via vnc et cela a effectivement fonctionné. Si cela présente un intérêt, tkinter (autre bibliothèque d'interface utilisateur python) ne fonctionne pas non plus via la console mais avec le bureau.

J'ai vraiment besoin d'un moyen fiable pour démarrer depuis la console ou au moins le démarrage, mais merci de l'avoir mentionné, j'ai enfin une solution de contournement!

@masynthetic Sur ALARM, mon .xinitrc démarre Windows, puis mon application Kivy s'exécute automatiquement une fois les fenêtres ouvertes. Je peux donner plus d'informations si vous en avez besoin. Je ne suis pas dans mon bureau en ce moment et j'ai besoin de démarrer la tablette pour voir exactement comment je l'ai implémentée.

Ce serait extrêmement utile merci, pas de précipitation car j'ai surtout besoin d'un
environnement de développement en ce moment

Le samedi 14 septembre 2019, 03h17, Frank Gould [email protected] a écrit :

@masynthetic https://github.com/masynthetic Sur ALARM, mon .xinitrc
démarre Windows, puis mon application Kivy s'exécute automatiquement une fois les fenêtres ouvertes. je peux donner
plus d'infos si besoin. Je ne suis pas dans mon bureau en ce moment et j'ai besoin de démarrer
la tablette pour voir exactement comment je l'ai mis en œuvre.

-
Vous recevez ceci parce que vous avez été mentionné.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/kivy/kivy/issues/6474?email_source=notifications&email_token=AEOWUVKTRWPPLKDVSMG2ERDQJS25HA5CNFSM4IL7DFSKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJ80com#6WWZW2ZMA146
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AEOWUVMTOIQUCNBD7EKOK3TQJS25HANCNFSM4IL7DFSA
.

Ce serait utile. @frankgould

Je pense que nous avons besoin d'une bonne solution pour la version sans bureau de cela. J'espère y revenir plus tard et le système d'exploitation sous-jacent et l'ensemble de pilotes fonctionnent comme avant. Étant cynique, j'en doute un peu.

Je n'ai jamais fait travailler Kivy sur Debian Jessie sans patch non plus. Mais si vous êtes d'accord avec l'utilisation d'egl, j'ai trouvé utile dans le passé de patcher l'initialiseur dans kivy/core/window/window_egl_rpi.py , en remplaçant :

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

J'ai eu des problèmes similaires avec une ancienne version de kivy il y a quelques mois, et cela a fait l'affaire.

Si je me souviens bien, la création d'une fenêtre à l'aide d'egl échoue par défaut car des arguments supplémentaires sont transmis. L'exception est interceptée quelque part et ignorée.

Sur Debian Jessie, ce patch a résolu tous les problèmes pour moi, mais je ne l'ai pas testé sur Buster.

Il se peut toujours que l'option egl soit ignorée à cause de ce commit : 333a4cc9c7b4b3168f7427d27f4fdea2a69bc52b.

Quoi qu'il en soit, ymmv.

@ahendriksen En supposant un environnement virtuel, faut-il simplement corriger le fichier en place ou une réinstallation est-elle nécessaire après le patch ? (Merci.)

Vous pouvez le faire sur place, mais je doute que ce soit le problème ici, car je n'ai vu cela dans aucun retraçage publié dans les numéros de buster. Mais, s'il y a un retraçage montrant cette erreur, il serait utile de le publier afin que nous puissions le corriger.

@OutsourcedGuru D'après mon expérience, les correctifs sur place devraient fonctionner.

@matham , je viens d'installer buster sur un raspberry pi. Je posterai bientôt.

Je peux signaler que sur un Pi 3 Model B+ avec Buster, la branche principale actuelle (2.0.0-dev0) fonctionne bien.
Aucun correctif n'a été nécessaire pour window_egl_rpi.pi.

Cela ne semble pas fonctionner pour moi, pour ce que ça vaut. J'ai sauté dessus et j'ai passé la journée sur Buster Desktop avec Python 3.

Jusqu'à présent, pas de solution pour Kivy sur Buster Lite sur Raspberry Pi 4, non ?
RPi4 4 Go
Affichage officiel Rpi
Raspbian Buster 2019-09-26
Python : 3.7.3
Kivy : v2.0.0.dev0

La première fois que j'exécute un simple fichier Kivy après le démarrage, j'ai le journal suivant et aucun écran :
[INFO ] [Logger ] Enregistrer le journal dans /home/pi/.kivy/logs/kivy_19-10-02_7.txt
[INFO ] [Kivy ] v2.0.0.dev0, git-f223133, 20191002
[INFO ] [Kivy ] Installé dans "/usr/local/lib/python3.7/dist-packages/kivy/__init__.py"
[INFO ] [Python ] v3.7.3 (par défaut, 3 avril 2019, 05:39:12)
[CCG 8.2.0]
[INFO ] [Python ] Interprète dans "/usr/bin/python"
[INFO ] [Usine ] 184 symboles chargés
Registre [DEBUG ] [Cache ]avec limit=None, timeout=None
Registre [DEBUG ] [Cache ]avec limit=None, timeout=60
Registre [DEBUG ] [Cache ]avec limit=Aucun, timeout=Aucun
[INFO ] [Image ] Fournisseurs : img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignoré)
Registre [DEBUG ] [Cache ]avec limite=1000, timeout=60
Registre [DEBUG ] [Cache ]avec limite=1000, timeout=3600
[DEBUG ] [App ] Chargement kv <./test.kv>
[INFO ] [Texte ] Fournisseur : sdl2
Fournisseur [INFO ] [Fenêtre ] : egl_rpi
[DEBUG ] [Fenêtre ] Taille réelle de l'affichage : 800x480
[INFO ] [GL ] Utilisation du système graphique "OpenGL ES 2"
[DEBUG ] [GL ] glShaderBinary n'est pas disponible
[INFO ] [GL ] Backend utilisé
[INFO ] [GL ] Version OpenGL [INFO ] [GL ] Fournisseur OpenGL [INFO ] [GL ] Rendu OpenGL
[INFO ] [GL ] Version analysée OpenGL : 2, 0
[INFO ] [GL ] Version d'ombrage
[INFO ] [GL ] Taille max de la texture <2048>
[INFO ] [GL ] Unités max de texture <8>
[DEBUG ] [Shader ] Fragment compilé avec succès
[DEBUG ] [Shader ] Vertex compilé avec succès
[DEBUG ] [ImageSDL2 ] Charger
[INFO ] [Window ] clavier virtuel non autorisé, mode unique, non ancré
[DEBUG ] [Ressource ] ajouter dans la liste des chemins
[DEBUG ] [Ressource ] ajouter dans la liste des chemins
[DEBUG ] [Ressource ] ajouter dans la liste des chemins
[DEBUG ] [Ressource ] ajouter dans la liste des chemins
[DEBUG ] [Ressource ] ajouter dans la liste des chemins
[DEBUG ] [Base ] Créer un fournisseur à partir de la souris
[DEBUG ] [Base ] Créer un fournisseur à partir de probesysfs,provider=mtdev
[DEBUG ] [ProbeSysfs ] en utilisant probesysfs !
[DEBUG ] [ProbeSysfs ] a trouvé le périphérique : pilote basé sur la mémoire FT5406 dans /dev/input/event0
[INFO ] [ProbeSysfs ] correspondance de périphérique : /dev/input/event0
[INFO ] [MTD ] Lire l'événement de
[DEBUG ] [Base ] Créer un fournisseur à partir de probesysfs,provider=hidinput
[DEBUG ] [ProbeSysfs ] en utilisant probesysfs !
[DEBUG ] [ProbeSysfs ] a trouvé le périphérique : pilote basé sur la mémoire FT5406 dans /dev/input/event0
[INFO ] [ProbeSysfs ] correspondance de périphérique : /dev/input/event0
[INFO ] [HIDInput ] Lire l'événement depuis
[INFO ] [Base ] Lancer la boucle principale de l'application
La position X de la plage [INFO ] [MTD ] est 0 - 800
La position de la plage [INFO ] [MTD ] Y est 0 - 480
[INFO ] [MTD ] plage tactile majeur est 0 - 0
[INFO ] [MTD ] plage tactile mineur est 0 - 0
[INFO ] [MTD ] plage de pression est 0 - 255
Inversion des axes [INFO ] [MTD ] : X vaut 0, Y vaut 0
Rotation [INFO ] [MTD ] réglée sur 0
[INFO ] [HIDMotionEvent] en utilisant
[INFO ] [GL ] La prise en charge des textures NPOT est disponible
[INFO ] [HIDMotionEvent] plage ABS X position est 0 - 800
[INFO ] [HIDMotionEvent] plage ABS Y position est 0 - 480
[INFO ] [HIDMotionEvent] la position de plage X est 0 - 800
[INFO ] [HIDMotionEvent] la position de plage Y est 0 - 480
[DEBUG ] [Atlas ] Charger
[DEBUG ] [Atlas ] Besoin de charger 1 images
[DEBUG ] [Atlas ] Charger
[DEBUG ] [ImageSDL2 ] Charger

Et la deuxième fois je n'ai pas d'écran, mais mon log est plus petit :
[INFO ] [Logger ] Enregistrer le journal dans /home/pi/.kivy/logs/kivy_19-10-02_8.txt
[INFO ] [Kivy ] v2.0.0.dev0, git-f223133, 20191002
[INFO ] [Kivy ] Installé dans "/usr/local/lib/python3.7/dist-packages/kivy/__init__.py"
[INFO ] [Python ] v3.7.3 (par défaut, 3 avril 2019, 05:39:12)
[CCG 8.2.0]
[INFO ] [Python ] Interprète dans "/usr/bin/python"
[INFO ] [Usine ] 184 symboles chargés
Registre [DEBUG ] [Cache ]avec limit=Aucun, timeout=Aucun
Registre [DEBUG ] [Cache ]avec limit=None, timeout=60
Registre [DEBUG ] [Cache ]avec limit=Aucun, timeout=Aucun
[INFO ] [Image ] Fournisseurs : img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignoré)
Registre [DEBUG ] [Cache ]avec limite=1000, timeout=60
Registre [DEBUG ] [Cache ]avec limite=1000, timeout=3600
[DEBUG ] [App ] Chargement kv <./test.kv>
[INFO ] [Texte ] Fournisseur : sdl2
Fournisseur [INFO ] [Fenêtre ] : egl_rpi
[DEBUG ] [Fenêtre ] Taille réelle de l'affichage : 800x480

Quelqu'un a-t-il réussi à le faire fonctionner ?

La même carte SD fonctionne bien sur le RPi3B+. Ces journaux proviennent de RPI4 4 Go.

Je n'ai rien réussi à faire fonctionner sur Raspbian Buster sans bureau. C'est probablement dû à l'interface OpenGL ES v3 (plutôt que la v2 attendue) dans la pile de pilotes de Raspbian. Ou c'est quelque chose d'étrange en raison des deux adaptateurs HDMI.

Jusqu'à présent, pas de solution pour Kivy sur Buster Lite sur Raspberry Pi 4, non ?
RPi4 4 Go
Affichage officiel Rpi
Raspbian Buster 2019-09-26
Python : 3.7.3
Kivy : v2.0.0.dev0

La première fois que j'exécute un simple fichier Kivy après le démarrage, j'ai le journal suivant et aucun écran :
[INFO ] [Logger ] Enregistrer le journal dans /home/pi/.kivy/logs/kivy_19-10-02_7.txt
[INFO ] [Kivy ] v2.0.0.dev0, git-f223133, 20191002
[INFO ] [Kivy ] Installé dans "/usr/local/lib/python3.7/dist-packages/kivy/ init .py"
[INFO ] [Python ] v3.7.3 (par défaut, 3 avril 2019, 05:39:12)
[CCG 8.2.0]
[INFO ] [Python ] Interprète dans "/usr/bin/python"
[INFO ] [Usine ] 184 symboles chargés
Registre [DEBUG ] [Cache ]avec limit=Aucun, timeout=Aucun
Registre [DEBUG ] [Cache ]avec limit=None, timeout=60
Registre [DEBUG ] [Cache ]avec limit=Aucun, timeout=Aucun
[INFO ] [Image ] Fournisseurs : img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignoré)
Registre [DEBUG ] [Cache ]avec limite=1000, timeout=60
Registre [DEBUG ] [Cache ]avec limite=1000, timeout=3600
[DEBUG ] [App ] Chargement kv <./test.kv>
[INFO ] [Texte ] Fournisseur : sdl2
Fournisseur [INFO ] [Fenêtre ] : egl_rpi
[DEBUG ] [Fenêtre ] Taille réelle de l'affichage : 800x480
[INFO ] [GL ] Utilisation du système graphique "OpenGL ES 2"
[DEBUG ] [GL ] glShaderBinary n'est pas disponible
[INFO ] [GL ] Backend utilisé
[INFO ] [GL ] Version OpenGL [INFO ] [GL ] Fournisseur OpenGL [INFO ] [GL ] Rendu OpenGL
[INFO ] [GL ] Version analysée OpenGL : 2, 0
[INFO ] [GL ] Version d'ombrage
[INFO ] [GL ] Taille max de la texture <2048>
[INFO ] [GL ] Unités max de texture <8>
[DEBUG ] [Shader ] Fragment compilé avec succès
[DEBUG ] [Shader ] Vertex compilé avec succès
[DEBUG ] [ImageSDL2 ] Charger
[INFO ] [Window ] clavier virtuel non autorisé, mode unique, non ancré
[DEBUG ] [Ressource ] ajouter dans la liste des chemins
[DEBUG ] [Ressource ] ajouter dans la liste des chemins
[DEBUG ] [Ressource ] ajouter dans la liste des chemins
[DEBUG ] [Ressource ] ajouter dans la liste des chemins
[DEBUG ] [Ressource ] ajouter dans la liste des chemins
[DEBUG ] [Base ] Créer un fournisseur à partir de la souris
[DEBUG ] [Base ] Créer un fournisseur à partir de probesysfs,provider=mtdev
[DEBUG ] [ProbeSysfs ] en utilisant probesysfs !
[DEBUG ] [ProbeSysfs ] a trouvé le périphérique : pilote basé sur la mémoire FT5406 dans /dev/input/event0
[INFO ] [ProbeSysfs ] correspondance de périphérique : /dev/input/event0
[INFO ] [MTD ] Lire l'événement de
[DEBUG ] [Base ] Créer un fournisseur à partir de probesysfs,provider=hidinput
[DEBUG ] [ProbeSysfs ] en utilisant probesysfs !
[DEBUG ] [ProbeSysfs ] a trouvé le périphérique : pilote basé sur la mémoire FT5406 dans /dev/input/event0
[INFO ] [ProbeSysfs ] correspondance de périphérique : /dev/input/event0
[INFO ] [HIDInput ] Lire l'événement depuis
[INFO ] [Base ] Lancer la boucle principale de l'application
La position X de la plage [INFO ] [MTD ] est 0 - 800
La position de la plage [INFO ] [MTD ] Y est 0 - 480
[INFO ] [MTD ] plage tactile majeur est 0 - 0
[INFO ] [MTD ] plage tactile mineur est 0 - 0
[INFO ] [MTD ] plage de pression est 0 - 255
Inversion des axes [INFO ] [MTD ] : X vaut 0, Y vaut 0
Rotation [INFO ] [MTD ] réglée sur 0
[INFO ] [HIDMotionEvent] en utilisant
[INFO ] [GL ] La prise en charge des textures NPOT est disponible
[INFO ] [HIDMotionEvent] plage ABS La position X est 0 - 800
[INFO ] [HIDMotionEvent] plage ABS Y position est 0 - 480
[INFO ] [HIDMotionEvent] position de la plage X est 0 - 800
[INFO ] [HIDMotionEvent] position de plage Y est 0 - 480
[DEBUG ] [Atlas ] Charger
[DEBUG ] [Atlas ] Besoin de charger 1 images
[DEBUG ] [Atlas ] Charger
[DEBUG ] [ImageSDL2 ] Charger

Et la deuxième fois je n'ai pas d'écran, mais mon log est plus petit :
[INFO ] [Logger ] Enregistrer le journal dans /home/pi/.kivy/logs/kivy_19-10-02_8.txt
[INFO ] [Kivy ] v2.0.0.dev0, git-f223133, 20191002
[INFO ] [Kivy ] Installé dans "/usr/local/lib/python3.7/dist-packages/kivy/ init .py"
[INFO ] [Python ] v3.7.3 (par défaut, 3 avril 2019, 05:39:12)
[CCG 8.2.0]
[INFO ] [Python ] Interprète dans "/usr/bin/python"
[INFO ] [Usine ] 184 symboles chargés
Registre [DEBUG ] [Cache ] avec limit=Aucun, timeout=Aucun
Registre [DEBUG ] [Cache ] avec limit=None, timeout=60
Registre [DEBUG ] [Cache ] avec limit=Aucun, timeout=Aucun
[INFO ] [Image ] Fournisseurs : img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignoré)
Registre [DEBUG ] [Cache ] avec limite=1000, timeout=60
Registre [DEBUG ] [Cache ] avec limite=1000, timeout=3600
[DEBUG ] [App ] Chargement kv <./test.kv>
[INFO ] [Texte ] Fournisseur : sdl2
Fournisseur [INFO ] [Fenêtre ] : egl_rpi
[DEBUG ] [Fenêtre ] Taille réelle de l'affichage : 800x480

Quelqu'un a-t-il réussi à le faire fonctionner ?

La même carte SD fonctionne bien sur le RPi3B+. Ces journaux proviennent de RPI4 4 Go.

À l'heure actuelle, il est impossible d'exécuter une application kivy dans un RPi4 sans ordinateur de bureau. C'est un échec des pilotes, nous devons donc attendre un correctif dans la prochaine version de Kivy (ou master).

[INFO ] [Window ] Provider: egl_rpi

Je ne pense vraiment pas que Kivy (n'importe quelle version) parlera au fournisseur de egl_rpi Window parce que Kivy est lié à gles2.h plutôt qu'à une licorne nommée gles3.h qui n'existe pas d'après ce que je peux voir. Le Pi4B utilise OpenGL ES v3.

Essayez d'ajuster la configuration pour que Kivy demande sdl2 ou autre chose. Lisez les messages de Frank ici.

Existe-t-il un moyen d'installer le code Google Angle sur le Pi (pour obtenir les en-têtes OpenGL ES 3.0 peut-être), puis de corriger le fournisseur Kivy egl_rpi pour extraire le gles3.h au lieu de gles2.h (ou similaire) ?

Voici les instructions pour installer et exécuter une application Kivy au démarrage sur Buster lite :

Installez d'abord xserver-org, car nous en avons besoin pour afficher la fenêtre réelle :

sudo apt-get -y install xserver-xorg

Ensuite, j'installe nodm à partir des sources, il inclut donc le correctif suivant : 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*

Activez maintenant la connexion graphique :

sudo systemctl set-default graphical.target

Configurez nodm et démarrez notre application au démarrage :

# 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

Configurez un environnement virtuel :

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

Installez les dépendances 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

Il est maintenant temps de compiler et d'installer Kivy. A noter que j'utilise mon fork avec un patch, il n'utilise donc pas les drivers propriétaires Broadcom qui ne sont pas disponibles sur le 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

Créez enfin une petite application de test :

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

Maintenant, redémarrez et profitez-en :)

Besoin d'instructions d'installation pour RPi4B avec Raspbian Buster complet

Test:

RPi4 4 Go
Écran HDMI 7' (fonctionne avec un micro HDMI proche du type C)
config.ini

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

Raspbian Buster 2019-09-26 complet

Journal : erreur "* échec de l'ajout du service - déjà utilisé ?"

pi@raspberrypi :~/kivy-examples/3Drendering $ python main.py
[INFO ] [Logger ] Enregistrer le journal dans /home/pi/.kivy/logs/kivy_19-10-19_10.txt
[INFO ] [Kivy ] v1.11.0
[INFO ] [Kivy ] Installé dans "/usr/local/lib/python2.7/dist-packages/kivy/__init__.pyc"
[INFO ] [Python ] v2.7.16 (par défaut, 6 avril 2019, 01:42:57)
[CCG 8.2.0]
[INFO ] [Python ] Interprète dans "/usr/bin/python"
[AVERTISSEMENT] [Déprécié] La prise en charge de Python 2 Kivy a été dépréciée. La version Kivy après 1.11.0 ne supportera plus Python 2
[INFO ] [Usine ] 184 symboles chargés
[INFO ] [Image ] Fournisseurs : img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignoré)
Fournisseur [INFO ] [Fenêtre ] : egl_rpi

  • n'a pas réussi à ajouter le service - déjà en cours d'utilisation ?

@Lauszus, je

@diamond2nv "...avec Raspbian Buster full" Si vous entendez par là Raspbian Buster _Desktop_, les instructions se trouvent dans un numéro Kivy ici .

Merci beaucoup !
Problème résolu par cette instruction.

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

@Lauszus D'accord, j'ai testé ça sur...

  • Raspberry Pi 4B (4 Go)
  • Écran tactile capacitif elo 10.1"
  • Raspbian Buster Lite 26/09/2019 -> "Linux octopi 4.19.75-v7l+ #1270 SMP mar. 24 sept. 18:51:41 BST 2019 armv7l"
  • sudo apt-get update && sudo apt-get -y upgrade pour commencer
  • sudo raspi-config avec localisation, démarrage automatique sur CLI _et pour mon installation, changements d'interfaces (I2C/UART/caméra)_

Je note que j'ai préparé tout cela en effectuant le processus de récupération Raspbian car j'avais précédemment exécuté rpi-update pour tenter de faire fonctionner cela. Ceci est connu pour changer le firmware stocké sur une puce, je suis donc revenu à la version publiée.

Sinon, j'ai suivi vos instructions. De plus, j'ai mis à jour la configuration pour permettre à l'appareil à écran tactile de fonctionner.

Modifier en ~/.kivy/config.ini :

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

Correction pour le plein écran

Il ne s'affiche pas en "plein écran", donc je pense que je vais devoir jouer un peu avec les paramètres. C'est peut-être 800x640 au lieu des 1280x800 attendus. Cela peut être dans le fichier Raspbian /boot/config.txt , le fichier Kivy ~/.kivy/config.ini ou la configuration xsession...

Sur une intuition, cependant, je viens d'ajuster l'application de test en incluant ce qui suit près du haut :

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

Cela semble faire l'affaire pour ajuster l'application pour qu'elle soit en plein écran, comme prévu.

Merci beaucoup! Je serais très intéressé de savoir quand cela sera inséré dans la branche master de Kivy elle-même.

@OutsourcedGuru, veuillez consulter le PR que j'ai ouvert : https://github.com/kivy/kivy/pull/6562.

Ce serait génial si vous pouviez l'essayer avec VIDEOCOREMESA=0 et VIDEOCOREMESA=1 et voir s'il y a une différence de performance.

@Lauszus : Beau travail - fonctionne très bien.

Aussi à @OutsourcedGuru.

@Lauszus Je suis allé re-tester plus tôt mais je pensais que vous aviez supprimé cette branche... (?) donc je n'ai pas pu.

@OutsourcedGuru comme je l'ai écrit plus tôt. J'ai fini par en ouvrir un nouveau qui détectera automatiquement quand il s'exécute dans un Raspberry Pi 4. Quoi qu'il en soit, j'ai également trouvé un moyen de compiler la roue de manière croisée, afin que les utilisateurs n'aient pas à compiler Kivy eux-mêmes. Veuillez télécharger la roue ici : https://github.com/Lauszus/kivy/suites/285162135/artifacts/197175 , puis commentez le PR suivant lorsque vous l'avez testé : https://github.com/kivy/kivy/ tirer/6568.

@Lauszus Grâce à votre aide, j'ai obtenu une ancienne application de RPI3B+ fonctionnant sur RPI4 avec votre méthode nodm.
Il démarre automatiquement au démarrage et c'est génial, c'est comme ça que je compte l'utiliser.
Mais j'ai d'autres problèmes avec l'application que je dois déboguer et je ne sais pas comment en obtenir une sortie normale comme lorsque je démarre l'application à partir de la cli comme dans 'python3 app.py'.
Avez-vous des conseils sur la façon dont je peux y parvenir?
Cela serait très apprécié.
Merci encore, je ne serais pas allé aussi loin sans votre message.
À votre santé!

@lucasnzone J'utilise simplement la fonctionnalité d'enregistrement au lieu des déclarations d'impression : https://kivy.org/doc/stable/api-kivy.logger.html.

Ensuite, j'utilise le script suivant pour redémarrer Kivy et suivre le log :

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

Je n'ai pas pu tester, désolé pour le retard. Il s'agit d'environ deux semaines pour FormNext, nous nous efforçons donc ici, pour ce que ça vaut.

Si je me souviens de mes tests précédents, le petit programme de test Kivy fonctionnait mais le plugin OctoPrint qui utilisait Kivy ne semblait pas être content. J'ai passé pas mal de temps à essayer de modifier le mode de chargement d'OctoPrint (pour permettre à nodm de contrôler ce service). Le plugin OctoPrint doit se charger dans un environnement virtuel et se produit normalement en tant que service. Je n'ai pas eu le temps de chasser ce lapin jusqu'au fond de son trou.

@Lauszus Merci beaucoup pour cela, je n'y avais pas pensé, je vais essayer.
Merci encore mon pote

Journée Frabjous. J'ai réussi à obtenir une plate-forme de travail pour les éléments suivants :

  • Kivy 1.10.1 installé dans un environnement virtuel
  • Python 2.7
  • Raspbian Buster Lite
  • OctoPrint 1.3.12 (à partir de l'OctoPi 0.17.0 IMG)
  • ffpyplayer (a dû revenir au gstplayer en raison d'incompatibilités Pi4B)
  • nom
  • Plugin OctoPrint utilisant Kivy

Il affiche avec succès une interface graphique plein écran au démarrage et aux redémarrages.

Du code 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

Le fichier config.ini doit inclure les dimensions de l'écran et s'adapter au périphérique d'entrée de l'écran TFT.

Besoin d'instructions d'installation pour RPi4B avec Raspbian Buster complet

Test:

RPi4 4 Go
Écran HDMI 7' (fonctionne avec un micro HDMI proche du type C)
config.ini

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

Raspbian Buster 2019-09-26 complet

Journal : erreur "* échec de l'ajout du service - déjà utilisé ?"

pi@raspberrypi :~/kivy-examples/3Drendering $ python main.py
[INFO ] [Logger ] Enregistrer le journal dans /home/pi/.kivy/logs/kivy_19-10-19_10.txt
[INFO ] [Kivy ] v1.11.0
[INFO ] [Kivy ] Installé dans "/usr/local/lib/python2.7/dist-packages/kivy/ init .pyc"
[INFO ] [Python ] v2.7.16 (par défaut, 6 avril 2019, 01:42:57)
[CCG 8.2.0]
[INFO ] [Python ] Interprète dans "/usr/bin/python"
[AVERTISSEMENT] [Déprécié] La prise en charge de Python 2 Kivy a été dépréciée. La version Kivy après 1.11.0 ne supportera plus Python 2
[INFO ] [Usine ] 184 symboles chargés
[INFO ] [Image ] Fournisseurs : img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignoré)
Fournisseur [INFO ] [Fenêtre ] : egl_rpi

  • n'a pas réussi à ajouter le service - déjà en cours d'utilisation ?

Salut @diamond2nv , Pouvez-vous déjà exécuter kivy depuis la CLI ?

@elisandrom s'il vous plaît voir mon commentaire: https://github.com/kivy/kivy/issues/6474#issuecomment -542679712

@elisandrom s'il vous plaît voir mon commentaire: #6474 (commentaire)

Merci !!!!!! Fonctionne parfaitement !!!

Pour toute personne intéressée, une roue compilée de manière croisée peut être téléchargée ici : https://github.com/kivy/kivy/suites/364981942/artifacts/751103.

Suivez simplement ces instructions pour savoir comment installer toutes les dépendances : https://github.com/kivy/kivy/issues/6474#issuecomment -542679712, mais au lieu de compiler Kivy à partir de la source, vous devriez pouvoir l'installer à l'aide de la roue précompilée :

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

Ce serait formidable si nous pouvions faire tester cela par quelques personnes, afin que #6568 puisse être fusionné.

@Lauszus Pouvons-nous confirmer la version Kivy sur cette roue? Je dois supposer que c'est 2.0.0.dev0 du titre de la roue. Je ne sais vraiment pas ce qu'il y a dedans. Je suppose que cela nécessite Python 3 pour l'environnement virtuel, cependant.

@OutsourcedGuru oui c'est correct. Il s'agit essentiellement de la branche master avec les commits dans #6568. Voici l'action où elle a été construite : https://github.com/kivy/kivy/runs/354828981.

Oui, il nécessite Python 3.7, car c'est la norme dans Buster. Vous pouvez l'installer globalement ou dans un environnement virtuel, c'est à vous de décider.

Pour ce que ça vaut, j'ai réussi à mettre à niveau ma plate-forme de production vers Python 3 + Kivy 1.11.1 sur Raspbian Lite, après avoir installé nodm avec une prise en charge limitée de x Windows, comme indiqué ci-dessous. Cela fonctionne comme prévu sur le Pi 4B. L'installation était simplement pip install kivy==1.11.1 dans l'environnement virtuel.

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

Compte tenu de https://github.com/kivy/kivy/issues/6474#issuecomment -542679712, il semble que la seule solution à ce jour sur le Raspberry Pi 4 soit d'utiliser X11. N'y a-t-il plus de support pour le framebuffer non-X comme c'était le cas sur les RPis précédents ? J'essaie de mettre à niveau mon projet d'un Raspberry Pi 3B+ vers un Raspberry Pi 4, mais je ne veux pas commencer à installer X11 juste pour pouvoir afficher des choses.

@whitelynx J'ai expérimenté la compilation de SDL2 sans X sur le Raspberry Pi 4. Cependant, il n'arrêtait pas de se plaindre de ne pas pouvoir trouver de fenêtre : https://github.com/kivy/kivy/pull/6662#issuecomment -573423540. Jusqu'à présent, je ne peux le faire fonctionner que si j'utilise un gestionnaire de fenêtres comme nodm.

Voici un exemple de code qui crée une fenêtre opengles sur rpi4 sans X.
https://github.com/matusnovak/rpi-opengl-without-x/blob/master/triangle_rpi4.c
https://www.raspberrypi.org/forums/viewtopic.php?t=243707#p1499181
Est-il possible qu'un code similaire puisse être utilisé pour dessiner une fenêtre Kivy ?

Notez que le premier exemple apporte gl2.h. Au meilleur de ma connaissance, le Pi4B utilise gl3.

Je les ai testés tous les deux sur mon rpi4b et ils ont fonctionné sans problème. Le premier exemple écrit dans un fichier brut et vous pouvez afficher le triangle à l'écran en décommentant la ligne 384.

@Lauszus Le problème de l'impossibilité de trouver une fenêtre lors de l'exécution avec SDL2 sans X11 est dû au fait que le code de création de fenêtre SDL2 spécifie 8 bits alpha pour la fenêtre. S'il est remplacé par 0 bits alpha dans kivy.core.window._window_sdl2.pyx, cela fonctionnera.

@ddimensia j'ai essayé de changer
138 : SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8)
à
138 : SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0)
Mais j'obtiens toujours les mêmes erreurs lorsque j'essaie de créer une fenêtre :
[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

Avez-vous un dépôt avec toutes les modifications nécessaires pour que sdl2 + kivy fonctionne sur un rpi4 sans X ?

Je suis essentiellement les instructions Amiberry pour compiler SDL2 (https://github.com/midwan/amiberry/wiki/Compile-SDL2-from-source) avec les exigences minimales et compiler également SDL2_mixer à partir de la source, ce qui nécessite quelques autres bibliothèques si vous voulez un support mp3, flac, etc. Ensuite, j'ai modifié les bits Alpha à 0 dans le fichier _window_sdl2.pyx. Enfin, j'ai modifié le setup.py pour forcer use_x11 à False (à un endroit, il le définit sur True) et j'ai exécuté export VIDEOCOREMESA=1 puis pip install . . Je crois que c'était ça. Une chose que j'ai faite de différent lors de la compilation de toutes les bibliothèques SDL2 est que lorsque j'ai exécuté configure, j'ai ajouté --prefix=/usr aux arguments pour installer les bibliothèques à l'emplacement normal plutôt que /usr/local/lib.

@ddimensia merci ! Ça a marché :)

@ddimensia Je viens d'ouvrir un PR avec les changements : https://github.com/kivy/kivy/pull/6769. J'attends que le CI termine la construction, donc je peux vérifier que la roue construite par celui-ci fonctionnera également.

@ddimensia le VIDEOCOREMESA=1 n'était pas nécessaire, alors je l'ai laissé de côté.

@Lauszus Re-bonjour mon pote.
J'ai trouvé votre conteneur Kivy sur https://hub.docker.com/u/lauszus
Je me demandais si vous pouviez m'orienter dans la bonne direction en faisant courir Kivy à l'intérieur d'un conteneur.
Je veux dire, je l'ai bien fonctionné, il s'affiche sur un écran tactile.
Mais quoi que je fasse, je n'arrive pas à faire fonctionner l'écran tactile à l'intérieur du conteneur.
En saurais-tu quelque chose ?
Merci d'avance.
À votre santé

@lucasnzone c'est un ancien conteneur que j'ai utilisé lors de l'expérimentation de la compilation croisée Kivy pour accélérer mes constructions. Je n'ai jamais fait tourner Kivy à l'intérieur du conteneur, je l'ai juste utilisé pour le compiler.

Quoi qu'il en soit, une recherche rapide me dit qu'il devrait être possible d'utiliser l'argument --device lors de l'exécution du conteneur, c'est-à-dire :

--device /dev/input/event0

devrait ajouter votre écran tactile au conteneur.

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

@Lauszus salut mon pote, merci pour ta réponse.
c'est dans ma commande docker run
--privileged --net host --device /dev/gpiomem:/dev/gpiomem --device /dev/ttyAMA0:/dev/ttyAMA0 -v /boot/overlay:/boot/overlay
Je viens de le tester en ajoutant --device /dev/input/event0
mais toujours pas de chance.
Je suis sur le point d'arrêter d'essayer avec un conteneur tous ensemble. Je n'arrive même pas à faire fonctionner les échantillons de kivy.
J'exécute même le conteneur avec --privileged sans succès.
Diriez-vous qu'il s'agit d'un problème de configuration de docker ou d'un problème de configuration de kivy ?
Je suis honnêtement perdu, j'ai passé une semaine là-dessus et je ne pouvais pas le comprendre.
merci encore pour ta réponse mon pote, vraiment apprécié

Avez-vous vérifié que votre écran tactile est bien /dev/input/event0 ?

Pourquoi voulez-vous l'exécuter dans un conteneur de toute façon si vous vous contentez de jouer avec les exemples ? Utilisez simplement un environnement virtuel Python et installez les dépendances requises pour votre système d'exploitation à l'aide du package manage, c'est- apt dire

@lucasnzone J'ai oublié de demander si vous utilisez un Raspberry Pi ou une autre plate-forme ? Et tu utilises quel OS ?

@Lauszus RPI4 avec raspbian lite
oh, non, j'ai une application actuelle que je veux exécuter dans un conteneur car cela facilitera la distribution et le contrôle de version.
J'essayais avec les exemples parce que si je les faisais fonctionner, je pourrais faire la même chose avec mon application kivy.
Comment puis-je vérifier que quel périphérique se trouve mon écran tactile dans /dev/input ? je ne l'ai pas fait, non

@lucasnzone voici la sortie sur mon système :

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

Cela signifie que l'écran tactile est à /dev/input/event0 .

ouais, le mien est un événement - aussi
N: Name="ADS7846 Touchscreen" H: Handlers=mouse0 event0

D'accord. L'application fonctionne-t-elle avec l'écran tactile à l'extérieur du conteneur ?

@Lauszus
oui, je l'ai fait avec la roue Kivy-2.0.0rc1-cp37-cp37m-linux_armv7l.whl
à l'origine avec votre fork qui n'utilise pas les drivers broadcom

D'accord. Quelles erreurs obtenez-vous ? Est-ce que le /dev/input/event0 ? dispositif présent à l'intérieur du conteneur?

oui @Lauszus
j'ai crw-rw---- 1 root i2c 13, 64 Mar 12 22:56 event0 et crw-rw---- 1 root i2c 13, 64 Mar 12 22:56 mouse0 à l'intérieur du conteneur

Essayez simplement de catégoriser la sortie, c'est- cat /dev/input/event0 dire

@Lauszus c'est le cas, caractères aléatoires
maintenant je suis plus confus qu'avant

Super cela signifie que le conteneur reçoit l'entrée. Ce que vous voyez est le flux d'octets brut, donc cela n'aura aucun sens pour vous. Quoi qu'il en soit, cela signifie que quelque chose dans votre configuration Kivy n'est pas correct.

Pouvez-vous essayer de compiler et d'exécuter ce code C (c'est un ancien code que j'ai utilisé pour déboguer mon écran):

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

Vous pouvez le compiler et l'exécuter comme ceci :

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

@Lauszus
J'obtiens une sortie de toucher:

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

c'est en bas à gauche

D'accord. Essayez d'ajouter ce qui suit tout en haut du code (il est important qu'il soit au-dessus de toute autre importation) :

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

ok, voici le résultat lorsque j'exécute mon application, avec ce code tout en haut :

[INFO ] Logger : Enregistrez le journal dans /root/.kivy/logs/kivy_20-03-13_3.txt
[INFO] Kivy : v2.0.0.dev0, git-cef99e4, 20191024
[INFO ] Kivy : Installé dans "/root/venv-kivy/lib/python3.7/site-packages/kivy/__init__.py"
[INFO ] Python : v3.7.3 (par défaut, 3 avril 2019, 05:39:12)
[CCG 8.2.0]
[INFO ] Python : Interprète à "/root/venv-kivy/bin/python3"
[INFO ] Usine : 184 symboles chargés
[INFO ] Image : Fournisseurs : img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignoré)
[INFO ] Texte : Fournisseur : sdl2
[INFO ] Fenêtre : Fournisseur : sdl2(['window_egl_rpi'] ignoré)
[INFO ] GL : Utilisation du système graphique "OpenGL ES 2"
[INFO ] GL : Backend utilisé
[INFO ] GL : version OpenGL [INFO ] GL : fournisseur OpenGL [INFO ] GL : moteur de rendu OpenGL
[INFO ] GL : version analysée OpenGL : 2, 1
[INFO ] GL : version Ombrage
[INFO ] GL : Taille max de la texture <4096>
[INFO ] GL : Unités max de texture <16>
[INFO] Fenêtre : ajouter automatiquement le fournisseur d'entrée sdl2
[INFO ] Fenêtre : clavier virtuel non autorisé, mode unique, non ancré
[INFO] Base : Lancer la boucle principale de l'application
[INFO ] GL : la prise en charge des textures NPOT est disponible

il ne répond toujours pas au toucher

Pouvez-vous essayer d'installer le package libmtdev1 ?

bien sûr, je vais essayer maintenant et le relancer

@Lauszus il était déjà installé, mêmes problèmes

@Lauszus, je l'ai fait fonctionner! Merci pour toute votre aide camarade!
%(name)s = hidinput,/dev/input/event0
J'ai ajouté cette ligne à la section [input] dans .kivy/config.ini
Merci encore mon pote !

@lucasnzone super d'entendre ça :)

Pour tous ceux qui lisent ceci ; https://github.com/kivy/kivy/pull/6769 a maintenant été fusionné, donc aucune modification de Kivy n'est plus nécessaire, mais vous devez toujours compiler SDL2 à partir de la source. Les instructions peuvent être trouvées dans les documents officiels : https://kivy.org/doc/master/installation/installation-rpi.html.

@Lauszus ,
J'ai suivi vos instructions avec la version 1Gb Raspberry pi 4 avec 2020-02-13 Lite OS. Mais ne peut toujours pas trouver un fournisseur de fenêtre précieux. Toute pensée?

Meilleur,

@somber02 Il serait préférable que vous demandiez une assistance supplémentaire sur nos canaux d'assistance officiels (par exemple, Discord). Nous préférons utiliser les problèmes de github principalement pour les bogues réels et non pour le support.

@matham le problème est qu'il y a un problème avec le flux de travail CI qui génère les documents, il n'est donc pas mis à jour sur le site Web : https://github.com/kivy/kivy/runs/506000991.

@somber02 pour l'instant, vous pouvez trouver la documentation ici : https://github.com/Lauszus/kivy/blob/45f7ec3851e09220b2b5dc8f34523d6eebff17c2/doc/sources/installation/installation-rpi.rst jusqu'à ce que le site Web soit mis à jour.

Ok, mon mauvais, j'ai oublié de fusionner https://github.com/kivy/kivy-server/pull/17. Devrait être corrigé maintenant.

@matham merci. Veuillez consulter : https://github.com/kivy/kivy/pull/6775 , car cela empêche la construction de la documentation.

@Lauszus , Salut Lauszus. Merci pour l'instruction. J'ai suivi le lien avec des informations mises à jour mais cela a toujours échoué avec "Impossible de trouver un fournisseur de fenêtres". et "sdl2-runtimeError" n'a pas pu initialiser EGL" Condition de test :

  1. raspberry pi 4 1Gb version 2020-02-13 Lite Raspberrian.
  2. après sdl2 recompilé, redémarrer
  3. testé avec l'installation globale de la dernière version pypi, de la branche master, de la dernière roue et de la dernière version de développement.
  4. Dans quelques situations, le message d'erreur indique qu'il ne peut pas trouver le fournisseur de fenêtres x11, je vais KIVY_WINDOW=sdl2 pour le forcer à utiliser sdl2 dans ce cas.

Est-ce que je fais quelque chose de mal?

@somber02 avez-vous compilé Kivy à partir de la branche master ? Si ce n'est pas le cas, veuillez le faire, car les roues pré-construites n'ont pas encore été mises à jour.

@somber02 notez également que vous ne devez PAS installer ces dépendances à l'aide d'apt :

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

Comme vous voulez utiliser la version que vous avez vous-même compilée.

@Lauszus Merci. Je viens de copier les dépendances sans regarder de près... Merci c'est la raison. Après avoir purgé ces packages et réinstallé le package sdl2 compilé, cela fonctionne.

Merci beaucoup pour votre travail acharné.

@ sombre02 super d'entendre ça. Je viens d'envoyer un autre PR pour que ce soit plus clair : https://github.com/kivy/kivy/pull/6780.

Au fait, avez-vous également rencontré ce problème : https://github.com/kivy/kivy/pull/6778 ? Ou était-ce une accélération matérielle ?

@Lauszus , je peux confirmer qu'il s'agit d'une accélération matérielle. Merci

@Lauszus

notez que vous ne devez PAS installer ces dépendances en utilisant apt :

Dans un cas comme celui-ci pour les instructions d'installation de Kivy, vous pouvez même suggérer à l'utilisateur de faire activement un sudo apt-get remove ... ou sudo apt-get purge ... pour cette courte liste au début avant de compiler sdl2 . Pour la plupart d'entre nous, nous essayons probablement de corriger une tentative antérieure et nous aurions donc installé la version du package par défaut.

@Lauszus Un travail incroyable - cela a résolu tous les problèmes de fonctionnement de Kivy sur Buster Lite pour moi.

Puis-je suggérer juste pour clarifier que le guide indique que l'étape 2 est complètement ignorée si vous effectuez une configuration buster lite sur pi 4?

De plus, existe-t-il une solution de contournement pour maintenir l'accélération matérielle qui vous permettrait de faire pivoter l'orientation pour la configuration ? La seule façon pour moi de voir que cela fonctionne est avec x11 ou en désactivant le pilote V3D.

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

L' étape 2 de

Vous pouvez faire pivoter l'affichage en ajoutant les commandes de noyau suivantes dans /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

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

Si vous souhaitez uniquement faire pivoter l'affichage dans Kivy :

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

@Lauszus Merci pour la réponse

Je faisais juste référence à ce point de l'étape 3 de la documentation :

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

Ne devrions-nous pas simplement ignorer l'étape 2 de la configuration normale de Pi 1-4 si vous avez déjà installé des packages sdl à partir de la source et suivi les étapes -> sudo make install pour chacun?

Ou est-ce que cela dit que vous devez suivre les étapes mais ne pas installer avec apt donc vous feriez:

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

@Lauszus

Je ne mettais pas les paramètres video= sur la même ligne. Ce n'est que lorsque vous m'avez redirigé vers la documentation que j'ai remarqué qu'elle indique très explicitement que tous les paramètres/configurations cmdline.txt doivent être sur une seule ligne. Erreur de débutant.

Merci pour ton aide!

@pwdavari oui, vous devez ignorer l'étape 2 sous "Installation de Raspberry Pi 1-4".

Cette page vous a été utile?
0 / 5 - 0 notes
bleepcoder.com utilise des informations sous licence publique GitHub pour fournir aux développeurs du monde entier des solutions à leurs problèmes. Nous ne sommes pas affiliés à GitHub, Inc. ni à aucun développeur qui utilise GitHub pour ses projets. Nous n'hébergeons aucune des vidéos ou images sur nos serveurs. Tous les droits appartiennent à leurs propriétaires respectifs.
Source pour cette page: Source

Langages de programmation populaires
Projets GitHub populaires
Plus de projets 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.