การเปลี่ยนการอนุญาตบนพอร์ตอนุกรม


54

ฉันใช้ Arduino IDE ใน Ubuntu และฉันมีปัญหากับพอร์ตอนุกรม มันใช้งานได้ในอดีต แต่ด้วยเหตุผลที่อาจไม่จำเป็นฉันรู้สึกว่าจำเป็นต้องเปลี่ยนความเป็นเจ้าของไฟล์บางส่วนจากการเป็นเจ้าของรากให้เป็นเจ้าของผู้ใช้ของฉัน

นี่ทำให้ IDE ทำงานได้อย่างถูกต้อง แต่ฉันสูญเสียความสามารถในการใช้พอร์ตอนุกรมที่ถูกต้อง ในโฟลเดอร์ dev พอร์ตที่ฉันต้องการแสดงอยู่ในรายการอนุญาต 166 มีคน (ที่ไม่อยู่ในพื้นที่เพื่อช่วยเหลือฉัน) สลับสิทธิ์เป็น 666 ซึ่งทำให้การทำงานทั้งหมดรุ่งโรจน์

อย่างไรก็ตามมันจะย้อนกลับไปทันทีที่ฉันรีสตาร์ทคอมพิวเตอร์และถ้าฉันลองใช้คำสั่ง:

sudo chmod 666 ttyACM0

ไม่มีอะไรเกิดขึ้น. ไม่มีข้อความแสดงข้อผิดพลาด แต่ไม่มีการเปลี่ยนแปลงการอนุญาต

ฉันจะเปลี่ยนมันได้อย่างไรและฉันจะเปลี่ยนมันอย่างไรอย่างถาวร

ฉันขอโทษถ้าคำถามนี้ง่ายเกินไปหรือไม่ชัดเจนฉันเป็นอูบุนตู noob และฉันจะไม่บ่นแสดงความคิดเห็น!


1
sudo chmod 666 / dev / ttyACM0 นี่เป็นข้อเสนอแนะเดียวในหน้านี้ที่ทำงานบนสภาพแวดล้อม 14.04 beta2 live ของฉัน ขอบคุณ!

คำตอบ:


76

ปัญหาเกี่ยวกับการอนุญาตสำหรับ/dev/ttyACM0สามารถแก้ไขได้อย่างถาวรโดยการเพิ่มตัวเองในdialoutกลุ่ม คุณจะต้องออกจากระบบจากนั้นเข้าสู่ระบบก่อนที่การเปลี่ยนแปลงกลุ่มจะได้รับการยอมรับ

คุณสามารถทำได้ด้วย sudo usermod -a -G dialout $USER


ฉันได้เรียนรู้เกี่ยวกับเรื่องนี้เมื่อ Arduino IDE ขอให้ให้รากเพื่อเพิ่มตัวเองลงใน "กลุ่ม Dailout" ตอนนี้ฉันรู้แล้วว่ามันคืออะไร
Ufoguy

ฉันเพิ่งซื้อ Pulse-Eight USB - CEC Adapter สำหรับใช้กับทีวีใหม่ของฉันและพบว่ามันไม่ได้ทำงานร่วมกับ Kodi ใน Ubuntu ในตอนแรก หลังจากตรวจสอบล็อกข้อผิดพลาดและ googling ข้อความแสดงข้อผิดพลาด "ข้อผิดพลาด: CecLogMessage - ข้อผิดพลาดในการเปิดพอร์ตอนุกรม '/ dev / ttyACM0': การอนุญาตถูกปฏิเสธ" หน้านี้จึงเกิดขึ้น ขอบคุณคุณ (และดอนเคิร์กบี้ด้านล่าง - ใช้งานได้ดี) ฉันสามารถแก้ไขปัญหาได้ทันที
Rich.T.

นอกจากนี้คำตอบจาก "user247020" ยังให้วิธีการแก้ปัญหาอื่นให้ฉันเปิดเครื่องมือ GUI "ผู้ใช้และกลุ่ม" และทำให้คุณเป็น "ผู้ดูแลระบบ" สิ่งนี้จะเพิ่มคุณในกลุ่ม "การโทรออก" (เช่น "ใช้โมเด็ม") และอื่น ๆ
Rich.T.

usermod -a -G dialout pi ทำงานได้ดีหลังจาก sudo chgrp dialout / dev / ttyS0 และทำงานได้ดี แต่เมื่อฉันรีบูต config ทั้งหมดจะหายไป ฉันใช้ราสเบอร์รี่ pi 3
J261

เพิ่มคำสั่งใด ๆ ที่คุณต้องทำซ้ำไปที่สคริปต์เริ่มต้น ดังนั้นทุบตีหรือ / etc / profile หรือ init
Rinzwind

20

ฉันไม่สามารถรับคำแนะนำของ Rinzwindได้เพราะมันบ่นว่ามีบัญชีผู้ใช้อยู่แล้ว แต่ผมใช้คำสั่งนี้เพื่อเพิ่มผู้ใช้ที่มีอยู่ ( terrik) ในกลุ่มที่มีอยู่ ( dialout) ตามที่อธิบายไว้ในอูบุนตูช่วยเหลือวิกิพีเดีย

sudo adduser terrik dialout

คำสั่งนี้มีประโยชน์สำหรับการแสดงรายการกลุ่มปัจจุบันของคุณแม้ว่า Rinzwind จะพูดว่าคุณต้องออกจากระบบและลงชื่อเข้าใช้ก่อนที่พอร์ตอนุกรมจะเริ่มทำงานเพื่อแจ้งให้คุณทราบ

groups terrik

10

ฉันไม่สามารถทำให้คำตอบของ Terrikทำงานได้ แต่ถ้าทำได้ฉันก็ปรับไปตามเส้นทางttyACM0เล็กน้อย

sudo chmod 666 /dev/ttyACM0

จะโพสต์เป็นความคิดเห็น แต่ฉันยังไม่มีสิทธิ์พิเศษสำหรับสิ่งนั้น ...


1
สิทธิ์ดูเหมือนจะรีเซ็ตเมื่อถอดปลั๊กและแทนที่ Arduino กลับมา
user1063287

ไม่สำเร็จ. :(
Freddy

มันใช้งานได้ดีเช่นกัน แต่ต้องใช้กฎ udev เพื่ออนุญาตให้ใช้งานอีกครั้งในการ repplugging
pylover

ฉันลองsudo chmod 666 /dev/ttyACM0แล้วและมันไม่ทำงานเมื่อเริ่มต้นอีกครั้ง ไม่มีใครมีทางออกหรือไม่?
user1063287

อืม peepz สิ่งนี้ใช้ได้ .... เพิ่มคำสั่งลงในสคริปต์เริ่มต้น (/ dev ได้รับการสร้างขึ้นในการบูตดังนั้นคุณจำเป็นต้องทำซ้ำคำสั่งนี้ในแต่ละบูต)
Rinzwind

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


[Errno 13] Permission denied: '/dev/ttyACM0'. เช่นเดียวกับttyกลุ่มผู้ใช้ยังอยู่ในdialoutกลุ่ม Linux Mint 17.1
user1063287

1
@ user1063287 ลองsudo chmod a+rw /dev/ttyACM0
Vladimir S.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.