Arduino programı sadece root olarak çalıştırıldığında çalışır


19

Basit skeçler yüklemek Arduino programını root ( sudo) olarak çalıştırdığımda işe yarıyor gibi görünüyor . Normal bir kullanıcı olarak çalıştırmak istiyorum. Daha önce aynı sorunla karşılaşan ve gideren var mı?

İşte elde ettiğim şey lsusb:

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

Ve Arduino programı onu olarak tanımlar /dev/ttyACM0. İşte izinleri:

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

İşte çıktı id

groups=1000(abhiram),20(dialout),24(cdrom),25(floppy),29(audio),
30(dip),44(video),46(plugdev),105(scanner),110(bluetooth),112(netdev)

Örneklerden bir çizim yüklediğimde, normal bir kullanıcı olarak şu hatayla karşılaşıyorum:

avrdude:stk500_recv(): programmer not responding

Herhangi bir öneri bekliyoruz.


Bak bakalım bu bolum "SET PERMISSION" olur
alexan_e

4
Ve +1, IDE'yi kök olarak çalıştırmak için durumu kabul etmediği için, ancak sorunun nasıl düzgün bir şekilde çözüleceğini anlamaya çalıştığı için.
jippie

IDE'yi ayrıcalıklı olmayan bir kullanıcı altında çalıştırmaya çalıştığınızda aldığınız tam hata nedir? PreferencesMenüde ayrıntılı çıktıyı etkinleştirmeniz gerekebilir .
Mart'ta jippie

Fişi çıkararak doğru cihaza bağlandığınızdan emin olun, ardından birkaç saniye bekleyin, ardından tekrar takın, ardından dmesgkayıtlı cihaz dosyasının çıkışını kontrol edin .
Mart'ta jippie

Kontrol edildiğinde, cihaz düzgün bir şekilde keşfedildi /dev/ttyACM0: USB ACM device. Yani, benim için sorun gibi görünmüyor. Öte yandan, derleme ve yükleme günlükleri (Tercihler'de etkinleştirmek zorundaydı), umut verici görünüyor. Bunları arduino programından kopyalayamıyorum :(. (Bir yerde bir dosyaya yazıyor olabilirler mi?)
feverDream

Yanıtlar:


13

En kolay çözüm kendinizi dialoutgruba eklemektir .

İlk önce 'den çıktıyı not edin id. Dosyaya kaydedin ( /tmpyeniden başlatma sırasında temizlenmez). Çıktıya bakarsanız, kullanıcının birkaç gruba kaydolduğunu ve bu grupların sistemde ekstra ayrıcalıkları temsil ettiğini fark edeceksiniz. Varsayılan olarak Arduino'nuz dialoutseri bir arabirim olarak kaydedildiği için gruba atanır ve eski günlerde bunlar genellikle modem kullanarak çevirmek için kullanılır.

Kendinizi dialoutgruba eklemek için aşağıdaki komutu verin:

sudo usermod -a -G dialout $USER

-aBayrağı unutmayın (yerine grup eklemek için) ya da tamamen farklı problemleriniz olacaktır. idÇıktının bir dosyaya kopyalanmasının nedeni budur, bu nedenle en azından karışıklık durumunda, kullanıcının daha önce nasıl yapılandırıldığını bilirsiniz.

Sonra oturumu kapatın ve oturum açın, o noktadan itibaren çalışmalıdır.

İsteğe bağlı olarak id, çıktıyı daha önce kaydettiğiniz çıktıya göre iki kez kontrol edebilirsiniz .


düşünceli cevap için teşekkürler @jippie. Kendimi dialoutgruba ekledim , ancak sorun hala devam ediyor gibi görünüyor. Sorumu idkomuttan çıktı ile değiştirdim .
feverDream

Güncellemenizden aldığım izlenim, sorunun tam nedeninin bir sonraki konuya kaymış olduğudur. Bunu çözmek için yola çıktınız. Ne zaman olur cat /dev/ttyACM0? Bir hata veriyor mu?
Mart'ta jippie

Hayır, cihaz dosyası boş görünüyor cat.
feverDream

Hata mesajı almadığınız sürece boştur.
Mart'ta jippie

9

Sık sık tekrarlanan tavsiye "sadece sudo usermod -aG dialout <username>benim için hiç işe yaramadı ve nihayet neden olduğunu anladım. Makinemde /dev/ttyUSB0, grup serialdeğil dialout, bu yüzden dialout, hiçbir şey yapmak için kullanıcı adımı eklemek .

# ls -l
# crw-rw---- 1 root serial 188, 0 Mar 31 20:52 /dev/ttyUSB0
                    ^^^^^^ (group-name)

Sonunda: sudo usermod -aG <group-name> <username>benim için düzeltti.

Utanç verici bir şekilde, bu da burada açıkça "İZİNİ BELİRLE" altında belirtilmektedir . İç çekmek.


Evet, gerçek sahibi olan grubu kontrol etmeye değer. Ayrıca aygıt dosyası, kart türüne, çekirdek sürücüsüne ve nihayetinde udev'in veya nodu oluşturan her şeye bağlı olarak bir ttyUSB # veya bir ttyACM # (veya teorik olarak herhangi bir şey) olabilir.
Chris Stratton


0

Bu benim başıma geliyor. Benim durumumda, arduino sürümünü yükseltmiştim ve tercihler dosyası soruna neden olmuş gibi görünüyor. Sadece ~ / .arduino / preferences.txt dosyasını silin (Arduino IDE kapalıyken).

Adımlar:

  1. Arduino IDE'yi kapatın
  2. bunu yürütün:

    rm ~ / .arduino / preferences.txt

  3. Arduino IDE'yi başlat

Bu benim için çalıştı, umarım başka biri için işe yarar. Linux Mint 17 kullanıyorum ve Arduino IDE'yi çıkararak Arduino 1.05'ten Arduino 1.06'ya yükseltme yaptım, repodaki olanı kullanmıyorum. (Elbette, kullanıcılarınızı başkaları tarafından belirtildiği gibi ilgili gruba ekledikten sonra, ancak bu yardımcı olmazsa bunu deneyin)


Muhtemelen bununla ilgili olarak, çalışan araçların kök olarak bir yan etkisi, normal hesabınızın değiştiremediği veya temizleyemediği geçici, yapılandırma veya proje dosyalarını geride bırakabilmenizdir.
Chris Stratton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.