Küsimus:
Arduino programm töötab ainult siis, kui seda käivitatakse juurkasutusena
feverDream
2014-03-14 21:47:38 UTC
view on stackexchange narkive permalink

Lihtsate visandite üleslaadimine näib töötavat, kui käivitan Arduino programmi juurena ( sudo ). Tahaksin seda käivitada tavakasutajana. Kas keegi on sama probleemiga varem kokku puutunud ja selle lahendanud?

Siin on see, mille ma sain saidilt lsusb:

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

Ja Arduino programm tuvastab selle kui / dev / ttyACM0 . Siin on selle õigused:

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

Siin on väljund rühmadest id

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

Kui laadin üles näidete visand, tavakasutajana näen seda viga:

  avrdude: stk500_recv (): programmeerija ei vasta  

Kõik ettepanekud on teretulnud.

Vaadake, kas [see] (http://playground.arduino.cc/Linux/All#.UyM2QpX7Zwc) aitab, jaotis "LUBA MÄÄRAMINE"
Ja +1 selle eest, et te ei leppinud olukorraga, kus IDE käivitatakse juurkasutajana, vaid prooviti välja selgitada, kuidas probleemi korralikult lahendada.
Mis on täpne viga, kui proovite IDE-d käivitada privilegeeritud kasutaja all? Võib-olla peate menüüs `Eelistused` lubama üksikasjaliku väljundi.
Veenduge, et loote ühenduse õige seadmega. Eemaldage vooluvõrgust, oodake mõni sekund, seejärel ühendage uuesti ja kontrollige registreeritud seadmefaili `dmesg` väljundit.
Kontrollitud, et seade leiti õigesti kui "/ dev / ttyACM0: USB ACM-seade". Niisiis, see ei tundu minu jaoks probleem. Teiselt poolt näivad kompileerimise ja üleslaadimise logid (pidid need eelistustes lubama) paljulubavad. Ma lihtsalt ei suuda neid arduino programmist kopeerida :(. (Võib-olla kirjutavad nad kuskile faili?)
Mis juhtub, kui te `avrdude -p atmega328 -carduino -P / dev / ttyACM0 -b 57600 -D -Uflash: r: /tmp/project.hex: i`? Kontrollige veel kord seadet ja baudikiirust.
Ma saan aru, mida sa mõtled, pidin käsklust veidi muutma. See näeb välja selline: / 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` Ja see töötab, kui käitan seda tavakasutajana :). Pole kindel, miks see arduino tööriistaga igavleb.
Bodrate on veider, ma eeldaksin, et 57600, vähemalt seda ma kasutan Arduinoga ühenduse loomiseks. Kas leidsite selle baudikiiruse Arduino logimisest? Ma kasutan siiski teist tahvlit, see võib selgitada erinevust.
Kolm vastused:
#1
+13
jippie
2014-03-14 22:48:44 UTC
view on stackexchange narkive permalink

Lihtsaim lahendus on lisada ennast gruppi dialout .

Kõigepealt märkige väljund välja id -st. Salvestage see faili (mitte kataloogi / tmp , kuna see taaskäivitamisel puhastatakse). Kui vaatate väljundit, märkate, et teie kasutaja on registreerunud mitmesse rühma ja need rühmad esindavad süsteemis täiendavaid õigusi. Vaikimisi määratakse teie Arduino rühma dialout , kuna see registreeritakse jadaliidesena ja vanasti kasutati neid sageli modemi abil ... väljahelistamiseks.

Enda gruppi dialout lisamiseks väljastage järgmine käsk:

  sudo usermod -a -G dialout $ USER  

Ärge unustage lippu -a (pigem rühmade lisamiseks kui asendamiseks), vastasel juhul on teil täiesti erinevad probleemid. See on põhjus, miks id väljundist faili koopia tehakse, nii et kui te segi ajate, teate vähemalt, kuidas teie kasutaja oli varem konfigureeritud.

Siis logige välja ja logige sisse ning see peaks sellest hetkest alates töötama.

Soovi korral võite ka väljundi id väljundi üle kontrollida enne salvestatud väljundit.

tänab @jippie, läbimõeldud vastuse eest. Olen ennast lisanud `dialout`i gruppi, kuid probleem näib endiselt püsivat. Olen muutnud oma küsimust käsu `id` väljundiga.
Minu mulje teie värskendusest on see, et probleemi täpne põhjus on üle viidud järgmisele väljaandele. Olete selle lahendamiseks teel. Mis juhtub, kui sa `kass / dev / ttyACM0` Kas see viskab vea?
Ei, seadmefail näib tühjenevat, kui ma seda "kassin".
Tühi on korras, kui te ei saa veateadet.
#2
+9
hoosierEE
2014-04-01 06:22:06 UTC
view on stackexchange narkive permalink

Sageli korratud nõuanne "lihtsalt teha sudo usermod -aG dialout <username> ei töötanud minu jaoks kunagi ja sain lõpuks aru, miks. Minu masinas / dev / ttyUSB0 kuulub rühma serial ja mitte dialout , seega ei teinud minu kasutajanime lisamine dialout midagi.

  # ls -l # crw-rw ---- 1 juurjada 188, 0 märts 31 20:52 / dev / ttyUSB0 ^^^^^^ (grupi nimi)  

Lõpuks: sudo usermod -aG <group-name> <username> parandas selle minu jaoks.

Piinlikult mainitakse seda ka selgesõnaliselt siin jaotises "MÄÄRA LUBA" . Ohka.

Jah, tasub kontrollida tegelikku omandigruppi. Samuti võib seadmefail olla kas ttyUSB # või ttyACM # (või teoreetiliselt ükskõik milline), sõltuvalt tahvli tüübist, kerneli draiverist ja lõpuks udevi konfiguratsioonist või mis iganes sõlmedest loob.
Seda mainitakse ka aadressil https://www.arduino.cc/en/Guide/Linux#toc6
#3
  0
soynerdito
2014-11-03 04:18:42 UTC
view on stackexchange narkive permalink

See juhtub minuga. Minu puhul olin täiendanud arduino versiooni ja tundub, et probleemi põhjustas eelistuste fail. Kustutage lihtsalt fail ~ / .arduino / preferences.txt (kui Arduino IDE on suletud).

Sammud:

  1. Sulgege Arduino IDE
  2. käivitage see:

    rm ~ / .arduino / preferences.txt

  3. Käivitage Arduino IDE

See töötas minu jaoks, loodan, et see töötab ka kellegi teise jaoks. Ma kasutan Linux Mint 17 ja ma täiendatud Arduino 1.05-lt Arduino 1.06-le, eraldades Arduino IDE, ei kasuta ma repos olevat. (Muidugi, pärast kasutaja lisamist vastavasse rühma, nagu teised mainisid, kuid kui see ei aita teil seda proovida) / p>

Võimalik, et sellega on tööriistade juurvarana käitamise üks kõrvalmõju see, et võite lõpuks jätta ajutised, konfiguratsiooni- või projektifailid, mida teie ordinay konto ei saa muuta ega puhastada.


See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...