रास्पबेरी पाई में देव / देवकी क्या है?


10

मैं रास्पबेरी पाई 3 और रास्पबियन जेसी का उपयोग कर रहा हूं और मैं / देव / वचीक को पेग-सीजी के साथ प्रोग्राम (ओमेक्सप्लेर) को कॉल करने की कोशिश कर रहा हूं, जो मेरी रिपी पर कुछ संगीत बजाएगा। और मैं इसे काम करने के लिए नहीं मिला।

जब मैंने इसे अपने ब्राउज़र (जैसे कि लोकलहोस्ट / मुज़िका / pusti.pl) [अपाचे 2] से खोला, तो उसने कहा " वचीअक उदाहरण खोलने में विफल "। इसलिए मैंने xx7 में / dev / vchiq फ़ाइल की अनुमतियाँ बदल दीं और यह तब तक काम किया जब तक मैंने अपनी RiPi को पुनः आरंभ नहीं किया। इसलिए यह पता लगाया और www-data (उपयोगकर्ता जो मेरे प्रोग्राम को निष्पादित कर रहा है कि मेरी pusti.pl स्क्रिप्ट कॉल करेगा) को वीडियो समूह में जोड़ा गया , क्योंकि / dev / vchiq वीडियो समूह का हिस्सा है। और यह काम किया!

अब, क्या नरक है / देव / vchiq xD और क्यों www-data को मेरे रास्पबेरी पाई पर ध्वनि चलाने के लिए कम से कम पढ़ने और लिखने की अनुमति चाहिए?

अग्रिम में धन्यवाद।

जवाबों:


12

मुझे आश्चर्य है कि सर्वशक्तिमान Google के पास इस सवाल का तैयार जवाब नहीं है कि "VCHIQ क्या है?" मैं लंबे समय से कर्नेल गीक हूं और ब्रॉडकॉम कर्मचारी नहीं हूं, और न ही मैं बीसीएम 283 * विशेषज्ञ हूं, लेकिन यहां मैंने (शायद) पद के लिए जो पाया है:

से रास्पबेरी Pi गिरी शाखा :

उत्पादों के BCM2708 परिवार के लिए वीडियोकोर संचार इंटरफ़ेस के लिए कर्नेल।

यहाँ ध्यान देने योग्य बात यह है कि VideoCore (आश्चर्य चकित करने वाला) SoC के लिए वीडियो कंट्रोलर है, जो Pi चलाता है, और यह प्रतीत होता है कि यह अधिक या कम प्रत्यक्ष IOCTL को विभिन्न उपतंत्रों में चलाने के लिए एक आसान तरीका है जो GPU में शामिल है। । इसमें यह भी शामिल है कि वीडियो कोई बड़ा आश्चर्य नहीं है, लेकिन मुझे लगता है कि यह समझ में आता है कि कैमरा इंटरफेस ने अपने सिलिकॉन को वीडियोकोर के भीतर दिया है जो सभी कोडेक सामान वीडियो को करने की आवश्यकता है।

तो ऑडियो कंट्रोल वीडियोकोर के माध्यम से क्यों चलाया जाता है (अन्यथा इसे नियंत्रित करने के लिए VCHIQ की आवश्यकता नहीं होगी)? मुझे संदेह है कि, इस तथ्य को देखते हुए कि वीसी को एच .264 और अन्य कोडेक्स के लिए हार्डवेयर समर्थन है (और क्योंकि आप एचडीएमआई के माध्यम से ऑडियो रूट कर सकते हैं), यह सिलिकॉन लगाने के लिए सबसे आसान जगह थी। खैर, वह और तथ्य यह है कि बीसीएम चिप में दो एमएमयू (वीसी + एआरएम के लिए एक, सामान्य ओएस उपयोग के लिए एक और है - पृष्ठ 5 पर आरेख देखें ), जो शून्य-कॉपी डीएमए को संभव बनाता है (चीजों को कॉपी करने की कोई आवश्यकता नहीं है) ऑडियो सिलिकॉन - बस यह बताएं कि स्मृति का एक हिस्सा इसके अंतर्गत आता है और सीपीयू नहीं। डननो अभी तक अगर वे वास्तव में कवर के तहत ऐसा करते हैं, लेकिन आप क्यों नहीं?)।

ध्यान दें कि VCHIQ पर IOCTL वास्तव में प्रति से अधिक डेटा स्थानांतरित नहीं करते हैं - वे मेमोरी चंक्स के बीच डीएमए और अन्य ऑपरेशन सेट करते हैं और विभिन्न बिट्स को कमांड भेजते हैं। यह सुपर खतरनाक हो सकता है, जैसा कि आप संभावित रूप से यूजरस्पेस से आंतरिक कर्नेल डेटा संरचनाओं के साथ पेंच कर सकते हैं, जीपीयू को क्रैश कर सकते हैं, भ्रष्ट डेटा के चारों ओर गोफन कर सकते हैं, इसलिए 777 मोड में / dev / vhciq सेट न करें !!!

किसी भी मामले में, "VCHIQ क्या है?" यह रहा:

VCHIQ वीडियोकॉन सिलिकॉन में चल रहे लिनक्स कर्नेल और बाह्य उपकरणों (अन्य चीजों के बीच) के बीच एक कमांड इंटरफ़ेस है। / dev / vhciq कैमरा और ऑडियो सबसिस्टम द्वारा (न्यूनतम) उपयोग करने के लिए उन कमांडों तक सामान्य उपयोगकर्ता पहुँच प्रदान करता है। यह यादृच्छिक कार्यक्रमों के लिए एक खतरनाक रूप से खतरनाक इंटरफ़ेस है, इसलिए डिफ़ॉल्ट रूप से कुछ प्रतिबंधात्मक अनुमतियाँ हैं।

ऐसे लोग हैं जो आरसीआई समुदाय में बीसीएम हार्डवेयर में अपनी नेत्रगोलक तक हैं; मैं उनमें से एक नहीं हूं (मैं कुछ घंटों के शोध के बाद शायद टखने-गहरे कर रहा हूं :-))। उस ने कहा, मुझे लगता है कि यह एक उच्च स्तरीय अवलोकन है और इसके अतिरिक्त सुधारों / सुधारों का स्वागत करेगा।

जहाँ तक www-data को अनुमति की आवश्यकता है, ऐसा इसलिए होगा क्योंकि आपका CGI प्रोग्राम उस उपयोगकर्ता के रूप में बाल प्रक्रियाओं को जन्म दे रहा है। मैं उस विशेष खिलाड़ी को अच्छी तरह से नहीं जानता, लेकिन बेहतर अभ्यास आमतौर पर उस प्रोग्राम को नियंत्रित करने के लिए कुछ विशेष डेमॉन चलाने के लिए होगा जो एक बच्चे को सीधे पैदा करने के बजाय UNIX सॉकेट या इसी तरह के इंटरफ़ेस का उपयोग करके CGI से ध्वनि को नियंत्रित करने और इसे नियंत्रित करने के लिए है।

दरअसल, एक सुरक्षा विक्रेता को अपने वेब सर्वर रूट को उनकी मशीन तक पहुंच की अनुमति देने के लिए कुछ समय पहले ही भंडाफोड़ हो गया था । उन्होंने शायद इस प्रकार की मध्य परत को लिखने के बजाय प्रक्रिया प्रबंधन को आसान बनाने के लिए ऐसा किया, लेकिन यह एक सुरक्षा संख्या है। एपीपी को मूल रूप से जीपीएमए डीएमए तक पहुंच देना एक समान रूप से बुरा विचार है (हालांकि मैं मानता हूं कि इसका फायदा उठाना बहुत कठिन है)।

उम्मीद है कि यह आपके प्रश्न का उत्तर देगा।


1
"तो ऑडियो नियंत्रण वीडियोकोर के माध्यम से क्यों चलाया जाता है (अन्यथा इसे नियंत्रित करने के लिए VCHIQ की आवश्यकता नहीं होगी)?" -> ध्यान दें कि आपको /dev/vhciqऑडियो चलाने के लिए आम तौर पर एक्सेस की आवश्यकता नहीं होनी चाहिए - इस मामले में ऐसा इसलिए है क्योंकि ओपी इसे करने के omxplayerलिए उपयोग कर रहा है, जो शायद आदर्श नहीं है।
गोल्डीलॉक्स

हम्म। मुझे उम्मीद है कि एक एएलएसए ड्राइवर है जो उपयुक्त उपयोगकर्ता भूमि इंटरफेस बनाता है। मुझे 5-सेकंड की Google खोज के अलावा omxplayer के बारे में कुछ भी नहीं पता है और आश्चर्य है कि क्या यह ऑडियो पर उस अतिरिक्त पहुंच (जैसे कि एक हार्डवेयर कोडेक का उपयोग करके) या मूर्खतापूर्ण तरीके से एक डिवाइस खोलने के साथ कुछ भी दिलचस्प नहीं है जिसकी उसे ज़रूरत नहीं है। आकर्षक, और मैं यह भी कल्पना करूँगा कि ALSA ड्राइवर कवर के तहत VHCIQ का उपयोग करता है (सीधे कर्नेलस्पेस, नेच के भीतर)। स्वच्छ सामान!
बीजे ब्लैक

1
मुझे नहीं पता कि क्या वास्तव में ऐसा होता है, लेकिन अटकलें ... GPU में हार्डवेयर एमपीईजी डिकोड है और इसमें एमपी 3 ऑडियो (किसी भी तरह से रेफरी नहीं मिल सकता है), और एक हार्डवेयर डिकोडर की संभावना थोड़ी कम खपत होगी सॉफ्टवेयर डिकोड से रस। पूरी तरह से सुरक्षा लागत के लिए इसके लायक नहीं है, लेकिन संभवतः दिलचस्प है।
बीजे ब्लैक

1
हुह। साफ। बस pqru.qr.ai के माध्यम से देख रहा है और ऐसा लगता है कि ALSA ड्राइवर वास्तव में कवर के तहत VHCIQ का उपयोग करता है (सीधे / dev / vhciq से बात करने की आवश्यकता नहीं है क्योंकि यह कर्नेल एपीआई को सीधे कॉल कर सकता है, लेकिन अभी भी ...)।
बीजे ब्लैक

2
ज़रूर। मूल रूप से यहां क्या हो रहा है कि ब्रॉडकॉम चिप को दो मुख्य भागों में काट दिया जाता है - सीपीयू (जो कि लिनक्स सामान्य प्रयोजन सॉफ्टवेयर से बात करता है और चलाता है) और जीपीयू (जो एक स्वतंत्र फर्मवेयर चलाता है और वीडियो, आदि को संभालता है)। VCHIQ वह इंटरफ़ेस है जिसका उपयोग CPU GPU से बात करने के लिए करता है। यह एक सरलीकरण है, लेकिन अभी के लिए काफी अच्छा है।
बीजे ब्लैक

0

मेरे मामले में मुझे एक ही समस्या थी जब मैंने डिफ़ॉल्ट उपयोगकर्ता के अलावा एक नया उपयोगकर्ता बनाया था, और मुझे न केवल ध्वनि के साथ, बल्कि वाईफाई के कॉन्फ़िगरेशन, सीरियल पोर्ट तक पहुंच आदि की भी समस्या थी ... फिर मैंने / आदि को खोला। / समूह फ़ाइल। और मैंने अपने उपयोगकर्ता को उन सभी समूहों में जोड़ा जहां उपयोगकर्ता 'पी' डाला गया था, और सब कुछ पूरी तरह से काम करता था। निम्नलिखित नुसार:

रूट: x: 0:
डेमॉन: x: 1:
बिन: x: 2:
sys: x: 3:
प्रवेश: ४: ४: पी, कार्लो 
ट्टी: एक्स: ५: पी, कार्लो
डिस्क: x: 6:
lp: x: 7:
मेल: x: 8:
समाचार: x: 9:
uucp: x: 10:
आदमी: x: 12:
छंद: x: १३:
किमीम: x: 15:
डायलआउट: x: 20: पी, कार्लो
फैक्स: x: 21:
आवाज: x: 22:
cdrom: x: 24: pi, carlos
फ्लॉपी: x: 25:
टेप: x: 26:
sudo: x: 27: pi, carlos 
ऑडियो: x: 29: pi, carlos , प्रेस
डुबकी: x: 30:
www-data: x: 33:
बैकअप: x: 34:
ऑपरेटर: x: 37:
सूची: x: 38:
irc: x: 39:
src: x: 40:
सूक्ति: x: 41:
छाया: x: 42:
utmp: x: 43:
वीडियो: x: 44: पी, कार्लो
sasl: x: 45:
प्लगदेव: x: 46: पी, कार्लो
स्टाफ: x: 50:
गेम्स: x: 60: pi, कार्लो 
यूजर्स: x: 100: pi, carlos
नोग्रुप: x: ६५५३४:
इनपुट: एक्स: १०१: पी, कार्लो
सिस्टमड-जर्नल: x: 102:
systemd-timesync: x: 103:
systemd-network: x: 104:
प्रणाली-संकल्प: x: 105:
सिस्टमड-बस-प्रॉक्सी: x: 106:
crontab: x: 107:
netdev: x: 108: pi, carlos
pi: x: 1000:
संदेश-पत्र: x: 109:
ssh: x: 110:
ब्लूटूथ: x: 111:
अवही: x: ११२:
spi: x: 999: pi, carlos 
i2c: x: 998: pi, carlos 
gpio: x: 997: pi, कार्लोस
lightdm: x: 113:
epmd: x: 114:
एसएसएल-सर्टिफिकेट: x: 115:
कार्लोस: x: 1001:
rtkit: x: 116:
प्रेस: ​​x: 117:
पल्स-एक्सेस: x: 118:
 

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