Estoy trabajando en escribir una aplicación gráfica que use la GPU de Pi, y constantemente obtengo * failed to open vchiq instanceerrores 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/vchiqproblemas "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 alvideogrupo.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.rulesasí 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.rulesPodrías establecer un
SUIDpermisofuente
setuidatributo 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/vchiqpertenece al grupo,videootra opción es configurarsetgidy el grupo en su programavideo.www-dataestá envideogrupo, pero tuve éxito conchmod a+rw /dev/vchiqRaspbian Stretch.añadir
para
boot/config.txtluego corrersudo raspistill -o cam.jpgPor 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-datapara otorgar a Apache los permisos necesarios.fuente