मैं स्थायी रूप से / dev / vchiq अनुमति त्रुटियों को कैसे ठीक कर सकता हूं?


21

मैं एक आलेखीय अनुप्रयोग लिखने पर काम कर रहा हूं जो Pi के GPU का उपयोग करता है, और मुझे * failed to open vchiq instanceअपने प्रोग्राम चलाते समय लगातार त्रुटियाँ मिलती हैं। यह आमतौर पर एक द्वारा तय किया जाता है sudo chmod 777 /dev/vchiq, लेकिन (1) यह एक बहुत ही असुरक्षित फिक्स है जो निश्चित रूप से उपयोगकर्ता के स्वामित्व वाले उपकरणों की तैनाती के लिए अनुकूल नहीं है, और (2) यह प्रत्येक रिबूट के बाद रीसेट हो जाता है।

मैं अपनी /dev/vchiqसमस्याओं को "सही तरीके से" कैसे ठीक कर सकता हूं , लगातार, बिना सुरक्षा मुद्दों को पेश किए?

जवाबों:


28

मैं खुद को videoसमूह में जोड़कर एक समान समस्या को हल करने में सक्षम था (मैं डिफ़ॉल्ट उपयोगकर्ता का उपयोग नहीं कर रहा था)। शायद यह मदद कर सकता है।

आदेश है:

sudo usermod -a -G video $(whoami)

परिवर्तन प्रभावी होने के लिए आपको फिर से लॉग आउट करना होगा।


2
इसने मेरे लिए काम किया ( sudo usermod -a -G video $(whoami)), मैं यह भी सलाह दूंगा (सुरक्षा उद्देश्यों के लिए) जो भी प्रक्रिया के लिए एक समर्पित उपयोगकर्ता को जोड़ेगा, उसे कैमरे तक पहुंच की आवश्यकता होगी और केवल उस उपयोगकर्ता को videoसमूह में जोड़ देगा ।
n8henrie

3
रिबूट करने के बाद, यह स्थायी समाधान ठीक काम करता है और अपेक्षाकृत सुरक्षित है।
सर्ज स्ट्रोबंड

रिबूट की आवश्यकता ....
मोसा बलूच

2
यह मेरे लिए भी काम किया! धन्यवाद। रिबूट आवश्यक नहीं है, लॉग आउट करना और फिर से लॉगिंग करना पर्याप्त है।
तुवॉकी

1
यह इसे करने का उचित, सुरक्षित तरीका है। यदि आपके पास इस फ़ंक्शन के लिए एक समर्पित उपयोगकर्ता है, तो आप उस उपयोगकर्ता नाम के साथ $ (whoami) को बदलकर उन्हें जोड़ सकते हैं।
15

8

आप डिवाइस पर विशिष्ट अनुमतियाँ सेट करने के लिए एक udv नियम बना सकते हैं। जड़ के रूप में, आप कर सकते हैं:

इको 'SUBSYSTEM == "vchiq", GROUP = "वीडियो", MODE = "0660">> /etc/udev/rules.d/10-vchiq-permissions.rules
usermod -a -G वीडियो YourUnprivilegedUser

इससे समस्या ठीक नहीं होती। उसे चलाने के बाद, मुझे अभी भी त्रुटि मिलती है।
सेरिन

मुझे संदेह है कि अनुमतियाँ एक उच्चतर (इस प्रकार बाद में चल रहे क्रम में) udev नियम से की जाती हैं जो इस परिवर्तन को पूर्ववत करता है। मेरे (डेबियन) पीसी पर सिस्टम की आपूर्ति की गई फ़ाइल है /lib/udev/rules.d/91-permissions.rulesइसलिए मैं इसे और भी अधिक लिखने की कोशिश करूँगा (और शायद स्थानीय संशोधन के रूप में इसे पहचानने के लिए नाम में स्थानीय भी शामिल हो), अर्थात्:echo `SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"\' > /etc/udev/rules.d/92-local-vchiq-permissions.rules
SlySven

मुझे अनुमति से वंचित रखा गया, क्या गलत हो सकता है?
18

मेरे लिए पूरी तरह से काम करता है। सुरुचिपूर्ण समाधान यदि usermod पर्याप्त नहीं है
Axel Advento

5

आप SUIDअनुमति सेट कर सकते हैं

sudo chmod u+s /dev/vchiq

यह क्या करता है?
चार

1
जब एक निष्पादन योग्य फ़ाइल को setuidविशेषता दी गई है, तो सिस्टम पर सामान्य उपयोगकर्ता जिनके पास इस फ़ाइल को निष्पादित करने की अनुमति है, वे उस उपयोगकर्ता के विशेषाधिकारों को प्राप्त करते हैं जो फ़ाइल (आमतौर पर रूट) के मालिक हैं। आप इसे अपने प्रोग्राम पर सेट कर सकते हैं (यह मानते हुए कि यह रूट के स्वामित्व में है)। जैसा कि /dev/vchiqसमूह का videoएक अन्य विकल्प है सेट करना है setgidऔर आपके प्रोग्राम के समूह को video
मिलिविज

1
यही कारण है, नहीं मदद किया था यद्यपि उपयोगकर्ता www-dataमें है videoसमूह है, लेकिन मैं के साथ सफल रहा chmod a+rw /dev/vchiqRaspbian खिंचाव पर।
Jan Turo Jan

0

जोड़ना

start_x=1 
gpu_mem=256

करने के लिए boot/config.txtतो रनsudo raspistill -o cam.jpg

बेशक मैंने रास्पिस्टिल के लिए रास्ता जोड़ा। इसने मेरे लिए उबंटू में काम किया।


मैं यह नहीं देखता कि यह ओपी के सवाल का जवाब कैसे देता है - क्या आप यह बताने के लिए अपने जवाब का विस्तार कर सकते हैं कि यह रास्पबेरी पाई पर कैसे काम करता है?
स्लीवेनवेन

0

यदि आप ब्राउज़र के माध्यम से एक्सेस की गई php स्क्रिप्ट से raspistill चला रहे हैं, तो आपको sudo usermod -a -G video www-data Apache आवश्यक अनुमति देने के लिए प्रवेश करना होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.