เทอร์มินัลพอร์ตอนุกรม> ไม่สามารถเปิด / dev / ttyS0: ปฏิเสธการอนุญาต


19

ฉันมี Windows XP ในกล่องนี้และมันล้มเหลว การคิดว่าระบบปฏิบัติการเสียหายฉันพยายามติดตั้งใหม่และล้มเหลว แต่ฉันพยายามติดตั้ง Ubuntu และฉันไม่สามารถเรียกใช้จาก USB หรือจาก HD

ได้ทดสอบความจำและพบหนึ่ง 512MB แท่งของฉัน (มี 2) ล้มเหลว ฉันลบอันที่ไม่ดีออกไปและสามารถติดตั้ง Ubuntu ได้ แต่มันก็เชื่องช้า

ฉันพยายามติดตั้งวิทยุแพ็คเก็ตของฉันสำหรับ Hurricane Sandy อย่างรวดเร็ว ดาวน์โหลด Serial Port Terminal และสามารถใช้งานได้บางส่วน แต่ระบบยังคงล็อคอยู่ ติดตั้ง Xubuntu ถัดจากนั้นวางแผนที่จะหมดในวันถัดไปเพื่อรับ RAM สำหรับกล่อง ใส่ Xubuntu ไว้และตอนนี้ฉันได้รับข้อผิดพลาดดังต่อไปนี้พร้อมเทอร์มินัลพอร์ตอนุกรม:

Cannot open /dev/ttyS0: Permission denied

ฉันต้องการที่จะใช้พอร์ตอนุกรมของพอร์ตหรือเทียบเท่ากับ Xubuntu ดังนั้นฉันจึงสามารถใช้ kpc3 แพ็คเก็ตขั้วของฉันเชื่อมต่อกับพอร์ต com ที่ด้านหลังของคอมพิวเตอร์ของฉัน

ความคิดใด ๆ

คำตอบ:


39

อุปกรณ์ tty อยู่ในกลุ่ม "การโทรออก" ฉันสงสัยว่าคุณไม่ใช่สมาชิกของกลุ่มนี้และด้วยเหตุนี้จึงถูกปฏิเสธการเข้าถึง / dev / ttyS0 ดังนั้นคุณต้องเพิ่มตัวเองในกลุ่มนั้น

ตรวจสอบก่อนว่าคุณเป็นสมาชิกของกลุ่มนั้นหรือไม่:

groups ${USER}

.. รายการนี้จะแสดงรายการกลุ่มทั้งหมดที่คุณอยู่ หากคุณไม่ได้อยู่ในกลุ่มการโทรออกให้เพิ่มตัวเองลงไปในตัวอย่าง:

sudo gpasswd --add ${USER} dialout

จากนั้นคุณต้องออกจากระบบและลงชื่อเข้าใช้อีกครั้งเพื่อให้มีประสิทธิภาพ จากนั้นดูว่าจะแก้ไขปัญหาของคุณหรือไม่


แม้จะอยู่ในกลุ่มผู้ใช้ dialout ที่มี id 1000 ไม่สามารถเปิดพอร์ตอนุกรมเพื่ออ่าน หลังจากรีบูท แต่เมื่อฉันใช้ sudo สำหรับปฏิบัติการเดียวกันมันก็สามารถเปิด/dev/ttyS0ได้ อะไรคือเหตุผลที่เป็นไปได้?
Tomilov Anatoliy

2
@Orient ฉันมีปัญหาเดียวกันและเป็นเพราะกลุ่มdialoutไม่ได้กำหนดไว้ การทำงานnewgrp dialoutแก้ไขปัญหาได้
TheGr8_Nik

@ TheGr8_Nik ขอบคุณ โซลูชันของคุณทำงานกับ Ubuntu 16.04 ไม่มีการรีบูต โดยค่าเริ่มต้นระบบนี้ไม่ได้มีชื่อกลุ่มdialout; ตรวจสอบผ่านgroupsคำสั่ง แม้หลังจากที่ต่อท้ายชื่อผู้ใช้ไปยังกลุ่มผ่านทางคำสั่งdialout sudo usermod -a username -G dialoutหลังจากใช้newgrp dialoutแล้วคำสั่งนี้ใช้esptool.py -p /dev/ttyUSB0 flash_idงานได้
Sun Bear

11

ทางออกเดียวที่เหมาะกับฉันคือ: (ทุกครั้งที่ฉันบูตเครื่อง)

sudo chmod 666 /dev/ttys0

จำเป็นต้องได้รับการแก้ไขเมื่อทำการติดตั้ง ฉันใช้ 15.10 และได้ลอง 16.04 LTS ยังคงเหมือนเดิม ดูเหมือนว่าเช่นการแก้ไขที่ง่าย

รุ่นเก่า 10.04LTS ไม่มีปัญหานี้


2
งานนี้กับราสเบอร์รี่ pi 3 แต่เมื่อฉันรีบูตสิทธิ์ที่หายไป
J261

1
การเพิ่มสิทธิ์ให้กับชื่อผู้ใช้ของฉันสำหรับการโทรออกทำงานได้ดีและแก้ไขได้ง่าย
DRJ101

6

คุณสามารถใช้คำสั่งนี้:

sudo adduser $USER dialout

สิ่งนี้จะเพิ่มผู้ใช้ปัจจุบันไปยังกลุ่มการโทรออก เข้าสู่ระบบและออกมันจะมีผล


4

ใน Ubuntu 18.04 ฉันแก้ไขปัญหานี้ด้วยคำสั่งต่อไปนี้:

sudo usermod -a -G tty $USER
sudo usermod -a -G dialout $USER

และหลังจากนี้ให้รีบูท

หากคุณยังคงมีปัญหาลองแก้ปัญหาด้วย:

strace -ff <COMMAND> > strace.txt 2>&1

และมองหา "ปฏิเสธ" ใน strace


3

ลองดูที่ฟอรัมต่าง ๆ และดูเหมือนว่าจะเป็นบั๊กที่เกี่ยวข้องกับการอนุญาต นี่คือวิธีที่ฉันได้รับปัญหา (รุ่นยาว) คุณจะต้องมีทั้งแพ็คเกจcuและsetserialติดตั้ง

ในแท็บเทอร์มินัลสามแท็บตรวจสอบผลลัพธ์จาก# tail -f /var/log/messages นั่นคือวิธีที่เรารู้ว่าเรามี/dev/ttyUSB0หรือไม่

ในแท็บที่สองเพียงแค่วนซ้ำไปยัง ls -lอุปกรณ์นี้เพื่อดูว่าเป็นสิทธิ์และ ID กลุ่มคือ 'การโทรออก' นี่เป็นบิตที่สำคัญ ด้วยเหตุผลบางอย่างผู้ใช้ของคุณต้องใช้ GID นี้เพื่อทำเช่นcuนั้น ...

ในแท็บที่สามในฐานะรูทได้ทำ# newgrp dialout(เพื่อให้สอดคล้องกับ GID ของการโทรออก) ผ่านการทดสอบด้วย # touch /tmp/anything... การทำls -lไฟล์นี้แสดงว่ามันถูกสร้างขึ้นโดย root ด้วยกลุ่มการโทรออกดังนั้นเราจึงพร้อมที่จะ ... # cu -l /dev/ttyUSB0 ในกรณีของฉันฉันต้องกดปุ่มย้อนกลับอีกครั้งเพื่อดูพรอมต์ที่คาดไว้ในกรณีอื่น ๆ อาจต้องใช้ความเร็ว ที่จะระบุ


นี่เป็นชิ้นส่วนที่เกิดขึ้นจริงที่ช่วยให้ฉัน: ด้วยเหตุผลบางอย่างผู้ใช้ของคุณต้องใช้ GID นี้จะทำลูกบาศ์กเพื่อ ... ขอบคุณหนึ่งล้าน
ΤΖΩΤΖΙΟΥ

1

นี่คือทางออก:

ฉันเพิ่งอัปเดตระบบปฏิบัติการของฉันเป็น Ubuntu 18. โดยปกติฉันจะติดตั้ง arduino IDE ผ่านทางเว็บ Arduino เนื่องจากเครื่องที่ให้ผ่านทางพอร์ทัลซอฟต์แวร์ Ubuntu นั้นเป็นรุ่นเก่ากว่าเสมอและฉันต้องการคุณสมบัติใหม่ล่าสุดและการสนับสนุนบอร์ด อย่างไรก็ตามเนื่องจากฉันเพิ่งติดตั้งระบบปฏิบัติการใหม่ล่าสุดฉันคิดว่าศูนย์ซอฟต์แวร์อย่างเป็นทางการจาก Ubuntu จะมี IDE รุ่นล่าสุดแสดงอยู่และมันก็ทำเช่นนั้น

ตอนนี้ถึงส่วนที่ฉ่ำ! ทั้งแล็ปท็อปและเดสก์ท็อปของฉันมีปัญหาเดียวกันในการเข้าถึงพอร์ตอนุกรม ฉันได้ทำส่วนผู้ใช้ของกลุ่ม dial-up และกำหนดสิทธิ์สำหรับพอร์ตอนุกรม แต่มักจะต้องออกจากระบบแล้วกลับเข้ามาทำมันอีกครั้งทุกครั้งที่ฉันรีบูต! ไม่สนุก!.

คราวนี้มันไม่ทำงาน แม้ในศูนย์ซอฟต์แวร์ตัวเลือกการอนุญาตสำหรับซอฟต์แวร์จะแสดงพอร์ตอนุกรม "ตัดการเชื่อมต่อ" ไม่มีตัวเลือกให้อนุญาตการใช้งานพอร์ตแม้จะอนุญาตทั้งหมดด้วยตนเองผ่านหน้าต่างเทอร์มินัลโดยใช้ sudo

ฉันตัดสินใจถอนการติดตั้ง Arduino IDE จากศูนย์ซอฟต์แวร์และติดตั้งจากเว็บไซท์ดังนั้นฉันก็ทำได้ ครั้งนี้ฉันอ่านไฟล์ติดตั้งเพียงเพื่อดูว่ามันระบุถึงการอนุญาตสำหรับพอร์ตอนุกรมหรือไม่แน่นอนว่ามันทำได้ *****! ****** พอร์ตทั้งหมดถูกตั้งค่าด้วยสิทธิ์การเข้าถึงแบบเต็มการเข้าถึงของผู้ใช้ทั่วกระดาน ปรากฎว่านี่เป็นคำตอบ หลังจากรันไฟล์ arduino-linux-setup.sh ที่จัดทำโดย arduino ปัญหาพอร์ตอนุกรมทั้งหมดได้รับการแก้ไข ต่อไปนี้เป็นข้อความที่ตัดตอนมาจากarduino-linux-setup.shไฟล์;

echo ""
echo "******* Add User to dialout,tty, uucp, plugdev groups *******"
echo ""

sudo usermod -a -G tty $1
sudo usermod -a -G dialout $1
sudo usermod -a -G uucp $1
sudo groupadd plugdev
sudo usermod -a -G plugdev $1


acmrules () {

    echo ""
    echo "# Setting serial port rules"
    echo ""

    cat <<EOF
    "KERNEL="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="$1"
   "KERNEL="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="$1"
   EOF

}

ดังนั้นคุณจะเห็นว่า KERNEL นั้นได้รับผลกระทบ คำแนะนำของฉัน:

ติดตั้งจากเว็บไซต์ arduino ide ไม่ต้องสนใจศูนย์ซอฟต์แวร์ในขณะนี้จนกว่าจะมีการซ่อมแซม ใช่ SOFTWARE CENTER ไม่อนุญาตให้มีการเชื่อมต่อกับพอร์ตอนุกรมระหว่างการติดตั้งและหลังจากนั้นตลอดไป

แก้ไขปัญหา!


0

ในกรณีของฉันยังคงมีปัญหาอยู่แม้ว่าฉันจะเพิ่มผู้ใช้ของฉันในกลุ่มโดยใช้:

ดังนั้นเมื่อฉันใช้:

sudo gpasswd --add ${USER} dialout

และเมื่อฉันพิมพ์: groupsฉันได้รับผลลัพธ์นี้:

ilyahoo adm cdrom sudo dip plugdev lpadmin sambashare

แต่เมื่อฉันพิมพ์id -Gn ilyahooputput คือ:

ilyahoo adm tty dialout cdrom sudo dip plugdev lpadmin sambashare 

ฉันรู้ว่ามีปัญหาที่ฉันไม่รู้ว่ามันคืออะไรอย่างสุจริต

เพื่อให้ได้ทางออกฉันเพิ่งพิมพ์

newgrp ilyahoo

และปัญหาได้รับการแก้ไข


ยินดีต้อนรับ ilyahoo เพื่อ Askubuntu! โปรดลองจัดรูปแบบโพสต์ตามบรรทัดคำแนะนำของเรา ลองจัดรูปแบบผลลัพธ์ในลักษณะที่อ่านได้มากขึ้น ขอบคุณ
abu_bua

1
@abu_bua โปรดใช้การจัดรูปแบบรหัสสำหรับเอาท์พุทคำสั่งไม่อ้างการจัดรูปแบบ
muru

0

คำตอบนั้นง่าย คุณต้องเพิ่มผู้ใช้ของคุณในสองกลุ่มเพื่อให้สามารถเข้าถึงพอร์ต usb กลุ่มเหล่านี้dialoutและtty:

sudo usermod -a -G dialout <user>
sudo usermod -a -G tty <user>

แทนที่<user>ด้วยชื่อผู้ใช้จริงในคำสั่งเหล่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.