Estou trabalhando para escrever um aplicativo gráfico que usa a GPU do Pi e constantemente recebo * failed to open vchiq instance
erros ao executar meus programas. Isso geralmente é corrigido por um sudo chmod 777 /dev/vchiq
, mas (1) é uma correção muito insegura que definitivamente não é adequada para implantação em dispositivos de propriedade do usuário e (2) é redefinida após cada reinicialização.
Como posso resolver meus /dev/vchiq
problemas "do jeito certo", persistentemente, sem introduzir problemas de segurança?
permissions
fouric
fonte
fonte
sudo usermod -a -G video $(whoami)
), eu também recomendaria (por questões de segurança) adicionar um usuário dedicado para qualquer processo que necessite de acesso à câmera e adicionar apenas esse usuário aovideo
grupo.Você pode criar uma regra do udev para definir permissões específicas no dispositivo. Como root, você pode:
fonte
/lib/udev/rules.d/91-permissions.rules
que eu tentaria escrever para um ainda mais alto (e talvez inclua local no nome para identificá-lo como uma modificação local), ou seja:echo `SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"\' > /etc/udev/rules.d/92-local-vchiq-permissions.rules
Você pode definir
SUID
permissãofonte
setuid
atributo, os usuários normais do sistema que têm permissão para executá-lo obtêm os privilégios do usuário que possui o arquivo (geralmente raiz). Você pode definir isso em seu programa (assumindo que ele seja de propriedade do root). Como/dev/vchiq
pertence ao grupo,video
outra opção é definirsetgid
e o grupo no seu programa paravideo
.www-data
esteja emvideo
grupo, mas consegui com ochmod a+rw /dev/vchiq
Raspbian Stretch.adicionar
para
boot/config.txt
então corrersudo raspistill -o cam.jpg
É claro que adicionei o caminho para o raspistill. Funcionou para mim no Ubuntu.
fonte
Se você estiver executando o raspistill a partir de um script php acessado por um navegador, precisará digitar:
sudo usermod -a -G video www-data
para dar ao Apache as permissões necessárias.fonte