การตั้งค่าอนุญาตครั้งแรกถูกปฏิเสธไปยังพอร์ต usb- Ubuntu 14.04


18

ฉันเพิ่งเสียบ Arduino ของฉันและไฟติด แต่การทดสอบกะพริบไม่สามารถอัพโหลดได้ นี่คือข้อผิดพลาดของฉัน:

Arduino: 1.6.7 (Linux), บอร์ด: "Arduino / Genuino Uno"

Sketch ใช้พื้นที่เก็บข้อมูลโปรแกรม 1,030 ไบต์ (3%) สูงสุดคือ 32,256 ไบต์ ตัวแปรโกลบอลใช้หน่วยความจำแบบไดนามิก 9 ไบต์ (0%) โดยเหลือ 2,039 ไบต์สำหรับตัวแปรโลคัล สูงสุดคือ 2,048 ไบต์ avrdude: ser_open (): ไม่สามารถเปิดอุปกรณ์ "/ dev / ttyUSB0": การอนุญาตถูกปฏิเสธ ioctl ("TIOCMGET"): ioctl ที่ไม่เหมาะสมสำหรับอุปกรณ์ปัญหาการอัปโหลดไปยังคณะกรรมการ ดูhttp://www.arduino.cc/en/Guide/Troubleshooting#uploadสำหรับคำแนะนำ

รายงานนี้จะมีข้อมูลเพิ่มเติมด้วยการเปิดใช้งาน "แสดงผล verbose ในระหว่างการรวบรวม" ในไฟล์> การตั้งค่า

usb  ubuntu 


2
@ IgnacioVazquez-Abrams - คุณสามารถเปลี่ยนเป็นคำตอบได้ไหม? เรากำลังพยายามที่จะได้รับการตอบร้อยละของเรา :) อาจมีการคัดลอกและวางเล็กน้อยดังนั้นจึงไม่ใช่การเชื่อมโยงเท่านั้น
Nick Gammon

ฉันทำตามทุกขั้นตอนและทำงานเป็นครั้งแรก ตอนนี้ฉันพยายามอัปโหลดโปรแกรมที่สองและได้รับข้อความนี้ 'avrdude: ser_open (): ไม่สามารถเปิดอุปกรณ์ "/ dev / ttyUSB0": ปฏิเสธสิทธิ์ใช้งาน' ฉันทำสิ่งนี้: roquet @ roquet-HP-ENVY-x360-m6 -Convertible: ~ $ sudo adduser roquet dialout ผู้ใช้roquet' is already a member of dialout ' roquet @ roquet-HP-ENVY-x360-m6- แปลงได้: ~ $ sudo chmod a + rw / dev / ttyUSB0 roquet @ HP-ENVY-x360-m6- แปลงได้: ~ $ ls -l / dev / ttyUSB * crw -rw-rw- 1 รูทดีลเลขหมาย 188, 0 ม.ค. 20 13:12 / dev / ttyUSB0 roquet @ roquet-HP-ENVY-x360-m6-Convertible: ~ $ แต่ยังได้รับ 'การปฏิเสธสิทธิ์
Roque Zabalet

คำตอบ:


26

จากเอกสาร :

เปิด Terminal และประเภท:

ls -l /dev/ttyACM*

คุณจะได้รับสิ่งที่ชอบ:

crw-rw---- 1 root dialout 188, 0 5 apr 23.01 ttyACM0

"0" ที่ท้าย ACM อาจเป็นตัวเลขที่แตกต่างกันหรือหลายรายการอาจถูกส่งคืน ข้อมูลที่เราต้องการคือ "การหมุนหมายเลข" (เป็นเจ้าของกลุ่มของไฟล์)

ตอนนี้เราแค่ต้องเพิ่มผู้ใช้ของเราในกลุ่ม:

sudo usermod -a -G dialout $USER

แล้ว:

sudo chmod a+rw /dev/ttyACM0

คุณจะต้องออกจากระบบและลงชื่อเข้าใช้อีกครั้งเพื่อให้การเปลี่ยนแปลงนี้มีผล

โปรดทราบว่าก่อนหน้านี้เป็นคำแนะนำของ Ubuntu เก่า ใน distros ที่ทันสมัยที่ใช้ ConsoleKit สร้างไฟล์/etc/udev/rules.d/01-ttyusb.rulesที่มีสิ่งต่อไปนี้จากนั้นทำการโหลดกฎ udev และทำการแทนที่อุปกรณ์ Arduino:

SUBSYSTEMS=="usb-serial", TAG+="uaccess"

คำตอบที่ดี ในการติดตั้งใหม่คุณไม่จำเป็นต้องโหลดกฎ udev อีกครั้ง Udev จะเฝ้าดู /etc/udev/rules.d เพื่อดูการเปลี่ยนแปลง คุณต้องทำการจำลอง Arduino
ppareit

@ppareit สิ่งที่นับว่าเป็น "การติดตั้งใหม่" สิ่งนี้ไม่ได้ผลสำหรับฉันบน Ubuntu 16.04 ที่มีหรือไม่มีการโหลดกฎ (ผ่านsudo udevadm control --reload)
Desty

1
ฉันคิดว่ามันใช้งานไม่ได้เพราะบอร์ดระบุว่าเป็นของ "tty" มากกว่าระบบย่อย "usb-serial" อย่างไรก็ตามการสร้างกฎ udev ต่อไปนี้ทำงานให้ฉันแทน: SUBSYSTEM=="tty", ATTRS{idVendor}=="(vendor)", ATTRS{idProduct}=="(product)", ATTRS{serial}=="(serial)", SYMLINK+="ttyUSB.arduino", GROUP="adm"ที่ (ผู้ขาย) และ (ผลิตภัณฑ์) ที่นำมาจากlsusbและ (serial) udevadm info -a -n /dev/ttyACM0|grep '{serial}'|head -n1จะนำมาจากการส่งออกของ
Desty

อย่างน้อยกับ Ubuntu 16.04 ฉันไม่เห็นปัญหานี้ใน Mint 18.1 ดีใจที่ได้ยินว่าคุณพบทางออก!
ppareit

เล็บมัน !!!! upvoted ฉันมี distro 17.04 และวิธีที่ 1 ก็ไม่ขัดขืน!
tony gil

3

สิ่งที่คุณต้องทำคือเพิ่มตัวคุณเองลงในกลุ่มโทรออกตามที่อธิบายไว้ในคำตอบของ Ignacio Vazquez-Abrams สิ่งนี้ทำได้ในเทอร์มินัลโดยพิมพ์:

sudo usermod -a -G dialout $USER

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


1

บน Ubuntu 18.04 วิธีเดียวที่ฉันพบว่าการติดตั้ง Arduino IDE ทำงานได้ทันทีโดยใช้ขั้นตอนเอกสารอธิบายไว้ที่นี่:

https://www.arduino.cc/en/Guide/Linux/

ไม่มีการเปลี่ยนแปลงกลุ่มหรือสิทธิ์ที่จำเป็น


0

ไม่มีอะไรข้างต้นได้ช่วยฉัน เมื่อฉันติดตั้งจากไฟล์จากเว็บไซต์อย่างเป็นทางการมันไม่ได้เริ่มเลย จากนั้นฉันติดตั้ง Arduino IDE จาก "linux app store" และทำงานได้ แต่มีปัญหาเหมือนเพื่อนของเราจากด้านบน ดังนั้นฉันได้ถอนการติดตั้งและติดตั้งผ่านทางสถานี sudo apt install arduinoและตอนนี้มันทำงาน ไชโย


-1

หรือเพียงแค่ใช้คำสั่ง chown

sudo chown <username> /dev/ttyACM*

สิ่งนี้ใช้ได้สำหรับฉัน


1
คำถามนี้ถูกถามบ่อยครั้งในเว็บไซต์นี้และผู้ใช้รายอื่นได้รับคำตอบเดียวกัน ฉันจะกล่าวถึง Chris Stratton ในส่วนย่อยนี้: นี่เป็นความคิดที่ไม่ดีโดยเฉพาะอย่างยิ่งใน linux ที่กำหนดค่าแบบไดนามิกโดยทั่วไปด้วย udev หรือโหนดการจัดการ / dev ที่คล้ายกันคุณจะต้องทำทุกครั้งที่คุณเชื่อมต่ออุปกรณ์ เพิ่มผู้ใช้ของคุณในกลุ่มที่เหมาะสมแทนซึ่งเป็นการแก้ไขที่ยั่งยืน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.