सीरियल पोर्ट पर अनुमति बदलना


54

मैं उबंटू में Arduino IDE का उपयोग कर रहा हूं, और सीरियल पोर्ट के साथ समस्या हो रही है। इसने अतीत में काम किया है, लेकिन उन कारणों के लिए जो अनावश्यक हो सकते हैं, मुझे कुछ फाइलों के स्वामित्व को रूट स्वामित्व से अपने उपयोगकर्ताओं के स्वामित्व में बदलने की आवश्यकता महसूस हुई।

इसने IDE को सही तरीके से काम किया, लेकिन मैंने सही सीरियल पोर्ट का उपयोग करने की क्षमता खो दी। देव फ़ोल्डर में, मुझे जिस पोर्ट की आवश्यकता है, उसे अनुमति 166 के रूप में सूचीबद्ध किया गया है। किसी ने (जो अब मेरी मदद करने के लिए क्षेत्र में नहीं है) ने 666 को अनुमतियों की अदला-बदली की, जिसने इसे शानदार ढंग से काम किया।

हालाँकि, जैसे ही मैंने अपना कंप्यूटर पुन: प्रारंभ किया, यह वापस लौट आया, और यदि मैं अब कमांड का उपयोग करने का प्रयास करता हूं:

sudo chmod 666 ttyACM0

कुछ नहीं हुआ। कोई त्रुटि संदेश नहीं, लेकिन कोई अनुमति भी नहीं बदलती।

मैं इसे कैसे बदल सकता हूं, और मैं इसे स्थायी रूप से कैसे बदल सकता हूं।

मैं माफी माँगता हूँ अगर यह सवाल अति सरलीकृत या अस्पष्ट है, तो मैं एक ubuntu noob हूँ, और मैं प्रतिक्रिया नहीं होगी!


1
sudo chmod 666 / dev / ttyACM0 इस पृष्ठ पर केवल यही एक सुझाव था जिसने मेरे 14.04 बीटा 2 परिवेश पर काम किया। धन्यवाद!

जवाबों:


76

समूह के /dev/ttyACM0लिए स्वयं को जोड़कर अनुमतियों के साथ समस्या को स्थायी रूप से हल किया जा सकता है dialout। समूह परिवर्तन पहचाने जाने से पहले आपको लॉगआउट करना होगा और फिर वापस लॉग इन करना होगा।

आप इसके साथ कर सकते हैं sudo usermod -a -G dialout $USER


मुझे इस बारे में तब पता चला जब Arduino IDE ने खुद को "Dailout group" में जोड़ने के लिए रूट देने को कहा। अब मुझे पता है कि यह क्या है।
उफोगुई

मैंने सिर्फ अपने नए टीवी के साथ उपयोग के लिए पल्स-आठ यूएसबी - सीईसी एडाप्टर खरीदा था और पाया कि यह शुरू में उबंटू में कोडी के साथ काम नहीं करता था। क्रैश-लॉग की जाँच करने के बाद और त्रुटि संदेश "ERROR: CecLogMessage - एरर ओपनिंग सीरियल पोर्ट '/ dev / ttyACM0': अनुमति अस्वीकृत", यह पृष्ठ परिणाम के रूप में आया। आपके लिए धन्यवाद (और डॉन किर्कबी, नीचे - वह काम भी करता है), मैं तुरंत समस्या को ठीक करने में सक्षम था।
रिच टी।

इसके अलावा, "user247020" के उत्तर ने मुझे एक और समाधान दिया: GUI उपकरण "उपयोगकर्ता और समूह" खोलें और अपने आप को "प्रशासक" बनाएं। यह आपको अन्य लोगों के साथ "डायलाउट" समूह (अर्थात "मोडेम का उपयोग करें") में जोड़ेगा।
रिच टी।

usermod -a -G dialout pi ठीक काम करता है, sudo chgrp dialout / dev / ttyS0 के बाद और अच्छी तरह से काम करता है, लेकिन जब मैं रिबूट करता हूं तो सभी कॉन्फ़िगरेशन खो जाता है। मैं रास्पबेरी पाई 3 पर हूं
J261

किसी भी कमांड को आपको स्टार्टअप स्क्रिप्ट में फिर से जोड़ने की आवश्यकता है। तो बैश या / आदि / प्रोफाइल या init।
रिनविविंड

20

मुझे काम करने के लिए रिनजविंड का सुझाव नहीं मिला , क्योंकि यह शिकायत थी कि उपयोगकर्ता खाता पहले से मौजूद है। इसके बजाय, मैंने इस कमांड का इस्तेमाल terrikमौजूदा समूह ( dialout) में मौजूदा उपयोगकर्ता ( ) को जोड़ने के लिए किया , जैसा कि उबंटू हेल्प विकी पर वर्णित है ।

sudo adduser terrik dialout

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

groups terrik

10

मुझे टेरिक का जवाब काम नहीं मिल रहा था, लेकिन अगर मैं इस मामूली समायोजन को पथ के लिए बनाताttyACM0

sudo chmod 666 /dev/ttyACM0

एक टिप्पणी के रूप में पोस्ट करेंगे, लेकिन मेरे पास इसके लिए विशेषाधिकार नहीं हैं ...


1
अनप्लग करने और Arduino को वापस
भेजने

काम नहीं करता। :(
फ्रेडी

यह काम करता है, साथ ही साथ। लेकिन repplugging पर फिर से अनुमति देने के लिए udev नियम की आवश्यकता है
plolover

मैंने कोशिश की sudo chmod 666 /dev/ttyACM0और फिर से शुरू करने पर यह काम नहीं करता है। क्या किसी के पास एक समाधान है?
user1063287

हम्म peepz यह काम करता है .... एक स्टार्टअप स्क्रिप्ट में कमांड जोड़ें। (/ देव बूट पर फिर से बन जाता है, इसलिए आपको प्रत्येक बूट पर इस कमांड को फिर से करने की आवश्यकता है)
रिनविंड

10

एक और संभावना है कि /etc/udev/rules.d/निर्देशिका में एक नियम फ़ाइल बनाई जाए । मुझे इसी तरह की समस्या थी और मैंने 50-myusb.rulesइस सामग्री के साथ उपरोक्त निर्देशिका में फ़ाइल बनाई है:

KERNEL=="ttyACM[0-9]*",MODE="0666"

ध्यान दें कि यह ttyACM सॉकेट से जुड़ी किसी भी डिवाइस को रीड / राइट परमिशन देगा। आप केवल विशिष्ट उपकरण की जरूरत है पढ़ने / लिखने की अनुमति प्राप्त करने के लिए आप भी जांच करना चाहिए idVendorऔर idProduct। आप lsusbदो बार कमांड चलाकर पा सकते हैं , एक बार अपने डिवाइस से जुड़े बिना और एक बार जब यह जुड़ा हुआ है, तो आउटपुट में अतिरिक्त लाइन का निरीक्षण करें। वहां आपको कुछ ऐसा दिखाई देगा Bus 003 Device 005: ID ffff:0005। इस मामले में idVendor = ffffऔर idProduct = 0005। तुम्हारा अलग होगा। आप नियमों की फाइल को संशोधित करें:

ACTION=="add", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0005", MODE="0666"

अब केवल इस डिवाइस को अनुमति मिलती है। Udev नियम लिखने के बारे में अधिक जानने के लिए इसे पढ़ें


2

सिस्टम / उपयोगकर्ता और समूह में जाने की कोशिश करें और TTY Group में अपने उपयोगकर्ता नाम पर बॉक्स को चेक करें।


[Errno 13] Permission denied: '/dev/ttyACM0'ttyसमूह के साथ-साथ उपयोगकर्ता भी dialoutसमूह में है। लिनक्स मिंट 17.1।
user1063287

1
@ user1063287 कोशिशsudo chmod a+rw /dev/ttyACM0
व्लादिमीर एस।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.