Bagaimana saya bisa memperbaiki kesalahan izin / dev / vchiq secara permanen?

21

Saya sedang mengerjakan penulisan aplikasi grafis yang menggunakan GPU Pi, dan saya terus-menerus mendapatkan * failed to open vchiq instancekesalahan saat menjalankan program saya. Ini biasanya diperbaiki oleh a sudo chmod 777 /dev/vchiq, tetapi (1) ini adalah perbaikan yang sangat tidak aman yang pasti tidak cocok untuk penyebaran ke perangkat yang dimiliki pengguna, dan (2) itu akan direset setelah setiap reboot.

Bagaimana saya bisa memperbaiki /dev/vchiqmasalah saya "dengan cara yang benar", terus-menerus, tanpa memperkenalkan masalah keamanan?

empatik
sumber

Jawaban:

28

Saya dapat memecahkan masalah yang sama dengan menambahkan diri saya ke videogrup (saya tidak menggunakan pengguna default). Mungkin ini bisa membantu.

Perintahnya adalah:

sudo usermod -a -G video $(whoami)

Anda harus keluar dan masuk lagi agar perubahan diterapkan.

Mickaël
sumber
2
Ini bekerja untuk saya ( sudo usermod -a -G video $(whoami)), saya juga akan merekomendasikan (untuk tujuan keamanan) menambahkan pengguna khusus untuk proses apa pun yang akan memerlukan akses ke kamera dan menambahkan hanya pengguna itu ke videogrup.
n8henrie
3
Setelah reboot, solusi permanen ini berfungsi dengan baik dan relatif aman.
Serge Stroobandt
Diperlukan boot ulang ....
Moosa Baloch
2
Ini juga bekerja untuk saya! Terima kasih. Reboot tidak diperlukan, keluar dan masuk lagi sudah cukup.
tuvokki
1
Ini adalah cara yang tepat dan aman untuk melakukannya. Jika Anda memiliki pengguna khusus untuk fungsi ini, Anda dapat menambahkannya dengan mengganti $ (whoami) dengan nama pengguna itu.
IceMage
8

Anda dapat membuat aturan udev untuk mengatur izin khusus pada perangkat. Sebagai root, Anda dapat:

echo 'SUBSYSTEM == "vchiq", GROUP = "video", MODE = "0660"'> /etc/udev/rules.d/10-vchiq-permissions.rules
usermod -a -G video YourUnprivilegedUser
Nicolas Dufresne
sumber
Ini tidak memperbaiki masalah. Setelah menjalankan itu, saya masih mendapatkan kesalahan.
Cerin
Saya menduga izin dilakukan dalam aturan udev yang lebih tinggi (dengan demikian nanti dalam menjalankannya) yang membatalkan perubahan ini. Pada PC saya (Debian) sistem file yang disediakan /lib/udev/rules.d/91-permissions.rulesjadi saya akan mencoba menulis ini ke yang lebih tinggi (dan mungkin memasukkan nama lokal untuk mengidentifikasinya sebagai modifikasi lokal), yaitu:echo `SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"\' > /etc/udev/rules.d/92-local-vchiq-permissions.rules
SlySven
Saya mendapat izin ditolak, apa yang mungkin salah?
dmigo
Berfungsi sempurna untuk saya. Solusi elegan jika usermod tidak cukup
Axel Advento
5

Anda dapat mengatur SUIDizin

sudo chmod u+s /dev/vchiq
Milliways
sumber
Apa fungsinya?
Fouric
1
Ketika file yang dapat dieksekusi telah diberikan setuidatribut, pengguna normal pada sistem yang memiliki izin untuk mengeksekusi file ini mendapatkan hak istimewa dari pengguna yang memiliki file (umumnya root). Anda dapat mengatur ini di program Anda (dengan asumsi itu dimiliki oleh root). Sebagai /dev/vchiqmilik grup, videopilihan lain adalah mengatur setgiddan grup di program Anda video.
Milliways
1
Itu tidak membantu, meskipun pengguna www-datadalam videogrup, tetapi saya berhasil dengan chmod a+rw /dev/vchiqdi Raspbian Stretch.
Jan Turo
0

menambahkan

start_x=1 
gpu_mem=256

untuk boot/config.txtkemudian larisudo raspistill -o cam.jpg

Tentu saja saya menambahkan jalur untuk raspistill. Ini bekerja untuk saya di Ubuntu.

pengguna40120
sumber
Saya tidak melihat bagaimana ini menjawab pertanyaan OP - dapatkah Anda memperluas jawaban Anda untuk menjelaskan cara kerjanya pada Raspberry Pi?
SlySven
0

Jika Anda menjalankan raspistill dari skrip php yang diakses melalui browser, maka Anda harus memasukkan: sudo usermod -a -G video www-data untuk memberi izin yang diperlukan kepada Apache.

C Wheatley
sumber