Estoy trabajando en escribir una aplicación gráfica que use la GPU de Pi, y constantemente obtengo * failed to open vchiq instance
errores al ejecutar mis programas. Esto generalmente se soluciona con un sudo chmod 777 /dev/vchiq
, pero (1) esta es una solución muy insegura que definitivamente no es adecuada para la implementación en dispositivos propiedad del usuario, y (2) se restablece después de cada reinicio.
¿Cómo puedo solucionar mis /dev/vchiq
problemas "de la manera correcta", de manera persistente, sin presentar problemas de seguridad?
fuente
sudo usermod -a -G video $(whoami)
), también recomendaría (por razones de seguridad) agregar un usuario dedicado para cualquier proceso que necesite acceso a la cámara y agregar solo ese usuario alvideo
grupo.Puede crear una regla de udev para establecer permisos específicos en el dispositivo. Como root, podrías:
fuente
/lib/udev/rules.d/91-permissions.rules
así que intentaría escribir esto en uno aún más alto (y tal vez incluir local en el nombre para identificarlo como una modificación local), es decir:echo `SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"\' > /etc/udev/rules.d/92-local-vchiq-permissions.rules
Podrías establecer un
SUID
permisofuente
setuid
atributo a un archivo ejecutable , los usuarios normales en el sistema que tienen permiso para ejecutar este archivo obtienen los privilegios del usuario que posee el archivo (comúnmente root). Puede configurar esto en su programa (suponiendo que sea propiedad de root). Como/dev/vchiq
pertenece al grupo,video
otra opción es configurarsetgid
y el grupo en su programavideo
.www-data
está envideo
grupo, pero tuve éxito conchmod a+rw /dev/vchiq
Raspbian Stretch.añadir
para
boot/config.txt
luego corrersudo raspistill -o cam.jpg
Por supuesto, agregué el camino para el raspistill. A mí me funcionó en Ubuntu.
fuente
Si está ejecutando raspistill desde un script php al que se accede a través de un navegador, debe ingresar:
sudo usermod -a -G video www-data
para otorgar a Apache los permisos necesarios.fuente