שְׁאֵלָה:
תוכנית Arduino פועלת רק כאשר פועלת כשורש
feverDream
2014-03-14 21:47:38 UTC
view on stackexchange narkive permalink
נראה כי העלאת סקיצות פשוטות עובדת כשאני מריץ את תוכנית Arduino כשורש ( sudo ). ברצוני להפעיל אותו כמשתמש רגיל. האם מישהו התמודד עם אותה בעיה בעבר ותיקן אותה?

הנה מה שהשגתי מ lsusb:

  $ lsusbBus 002 Device 022: ID 2341: 0043 Arduino SA Uno R3 (CDC ACM)  

ותכנית Arduino מזהה אותו כ / dev / ttyACM0 . להלן ההרשאות שלה:

$ ls -l / dev / ttyACM0 crw-rw --- T 1 dialout dialout 166, 0 Mar 14 22:03 / dev / ttyACM0

הנה הפלט מ id

  קבוצות = 1000 (abhiram), 20 (dialout), 24 (cdrom), 25 (floppy) , 29 (שמע), 30 (dip), 44 (וידאו), 46 (plugdev), 105 (סורק), 110 (bluetooth), 112 (netdev)  

כשאני מעלה לשרטט מהדוגמאות, כמשתמש רגיל, אני נתקל בשגיאה זו:

  avrdude: stk500_recv (): מתכנת לא מגיב  

הצעות יתקבלו בברכה.

ראה אם ​​[זה] (http://playground.arduino.cc/Linux/All#.UyM2QpX7Zwc) עוזר, סעיף "הגדר את ההרשאה"
ו- +1 על אי קבלת המצב להפעלת ה- IDE כשורש, אלא ניסיון להבין כיצד לפתור את הבעיה כראוי.
מהי השגיאה המדויקת שאתה מקבל כשאתה מנסה להריץ את IDE תחת משתמש שאינו מורשה? יתכן שיהיה עליך להפעיל פלט רבתי בתפריט 'העדפות'.
ודא שאתה מתחבר למכשיר הנכון, על ידי ניתוק החשמל, ואז המתן כמה שניות, ואז חבר מחדש, ואז בדוק את הפלט של 'dmesg' עבור קובץ ההתקן הרשום.
נבדק כי ההתקן התגלה כ- 'dev / ttyACM0: USB ACM device'. לכן, זה לא נראה לי בעיה. מצד שני, יומני הידור וההעלאה (היו צריכים לאפשר אותם בהעדפות) נראים מבטיחים. אני פשוט לא מצליח להעתיק אותם מתוכנית הארדואינו :(. (יכול להיות שהם כותבים לקובץ איפשהו?)
מה קורה כאשר אתה `avrdude -p atmega328 -carduino -P / dev / ttyACM0 -b 57600 -D -Uflash: r: /tmp/project.hex: i`? בדוק פעמיים את המכשיר ובידרד.
אני מבין למה אתה מתכוון, הייתי צריך לשנות את הפקודה קצת. הנה איך זה נראה / usr / share / arduino / hardware / tools / avrdude -C / usr / share / arduino / hardware / tools / avrdude.conf -v -v -v -v -patmega328p -carduino -P / dev / ttyACM0 -b115200 -D -Uflash: w: /tmp/build6432672958845434451.tmp/Blink.cpp.hex: i` וזה עובד כשאני מריץ אותו כמשתמש רגיל :). לא בטוח למה זה נועז בכלי הארדואינו.
הקצב המוזר הוא מוזר, הייתי מצפה ל 57600, לפחות בזה אני משתמש כדי להתחבר לארדואינו. האם מצאת את שידת הקידום הזו בכריתת עץ של ארדואינו? אני משתמש בלוח אחר, אם כי זה עשוי להסביר את ההבדל.
שְׁלוֹשָׁה תשובות:
#1
+13
jippie
2014-03-14 22:48:44 UTC
view on stackexchange narkive permalink

הפיתרון הקל ביותר הוא להוסיף את עצמך לקבוצת חיוג .

ראשית רשום את הפלט מ- id . שמור אותו בקובץ (לא ב- / tmp כאשר זה מתנקה בעת אתחול מחדש). אם תסתכל על הפלט, תבחין כי המשתמש שלך נרשם למספר קבוצות וקבוצות אלה מייצגות הרשאות נוספות במערכת. כברירת מחדל, Arduino שלך מוקצה לקבוצת החיוג מכיוון שהוא נרשם כממשק סדרתי ובימים ההם אלה שימשו לעתים קרובות כדי ... לחייג, באמצעות מודם.

כדי להוסיף את עצמך לקבוצת חיוג , הוצא את הפקודה הבאה:

  sudo usermod -a -G dialout $ USER  

אל תשכח את הדגל -a (לצירוף קבוצות ולא להחלפה) או שיהיו לך בעיות אחרות לגמרי. זו הסיבה ליצירת עותק של פלט id לקובץ, כך שבמקרה שאתה מבולגן לפחות אתה יודע איך המשתמש שלך הוגדר קודם.

ואז התנתק והתחבר וזה אמור לעבוד מאותה נקודה.

לחלופין תוכל לבדוק פעמיים את הפונקציה id מול הפלט ששמרת לפני כן.

תודה @jippie, על התשובה המחושבת. הוספתי את עצמי לקבוצת 'החיוג', אך נראה שהבעיה עדיין נמשכת. שיניתי את שאלתי עם הפלט מהפקודה 'id'.
ההתרשמות שלי מהעדכון שלך היא שהגורם המדויק לבעיה עבר לגליון הבא. אתה בדרך לפתור את זה. מה קורה כאשר אתה / cat / dev / ttyACM0? האם זה זורק שגיאה?
לא, נראה שקובץ המכשיר מתרוקן כשאני 'חתול' אותו.
ריק זה בסדר, כל עוד לא מתקבלת הודעת שגיאה.
#2
+9
hoosierEE
2014-04-01 06:22:06 UTC
view on stackexchange narkive permalink

העצה החוזרת ונשנית "פשוט לעשות sudo usermod -aG dialout <username> מעולם לא עבדה בשבילי, ולבסוף הבנתי למה. במכונה שלי, / dev / ttyUSB0 קוד> הוא של הקבוצה סדרתי ולא חיוג , ולכן הוספת שם המשתמש שלי ל dialout לא עשתה דבר.

  # ls -l # crw-rw ---- 1 שורש סדרתי 188, 31 במרץ 20:52 / dev / ttyUSB0 ^^^^^^ (שם קבוצה)  

לסיום: sudo usermod -aG <group-name> <username> תיקן לי את זה.

מביך, זה גם מוזכר במפורש כאן תחת "הגדר את ההרשאה" אנחה.

כן, כדאי לבדוק את קבוצת הבעלות בפועל. כמו כן קובץ ההתקן יכול להיות ttyUSB # או ttyACM # (או תיאורטית כל דבר), תלוי בסוג הלוח, מנהל ההתקן של הליבה ובסופו של דבר בתצורה של udev או כל מה שיוצר את הצמתים.
זה מוזכר גם בכתובת https://www.arduino.cc/en/Guide/Linux#toc6
#3
  0
soynerdito
2014-11-03 04:18:42 UTC
view on stackexchange narkive permalink

זה קורה לי. במקרה שלי שדרגתי את הגרסה של arduino ונראה שקובץ ההעדפות גורם לבעיה. פשוט מחק את הקובץ ~ / .arduino / Preferences.txt (עם ארדואינו IDE סגור).

שלבים:

  1. סגור Arduino IDE
  2. בצע זאת:

    rm ~ / .arduino / Preferences.txt

  3. השקת Arduino IDE

זה עבד בשבילי, מקווה שזה עובד עבור מישהו אחר. אני משתמש ב- Linux Mint 17 ואני משודרג מ- Arduino 1.05 ל- Arduino 1.06 על ידי חילוץ ה- IDE של Arduino, אני לא משתמש בזה שב- repo. (כמובן, לאחר שהוספתי את המשתמש שלך לקבוצה המתאימה כפי שהוזכר על ידי אחרים, אבל אם זה לא יעזור לך לנסות זאת)

אולי קשור לכך, תופעת לוואי אחת של כלי הפעלה כשורש היא שבסופו של דבר אתה יכול להשאיר אחריך קבצי ארעי, תצורה או פרוייקט, אשר חשבון ordinay שלך אינו יכול לשנות או לנקות.


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...