Kysymys:
Arduino-ohjelma toimii vain, kun se suoritetaan pääkäyttäjänä
feverDream
2014-03-14 21:47:38 UTC
view on stackexchange narkive permalink

Yksinkertaisten luonnosten lataaminen näyttää toimivan, kun suoritan Arduino-ohjelman pääkäyttäjänä ( sudo ). Haluaisin käyttää sitä tavallisena käyttäjänä. Onko kukaan kohdannut samaa ongelmaa aiemmin ja korjannut sen?

Tässä on mitä sain lsusb:

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

Ja Arduino-ohjelma tunnistaa sen nimellä / dev / ttyACM0 . Tässä ovat sen oikeudet:

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

Tässä on lähtö id

  -ryhmistä = 1000 (abhiram), 20 (dialout), 24 (cdrom), 25 (levyke) , 29 (ääni), 30 (dip), 44 (video), 46 (plugdev), 105 (skanneri), 110 (bluetooth), 112 (netdev)  

Kun lähetän luonnos esimerkkeistä, tavallisena käyttäjänä kohtaan tämän virheen:

  avrdude: stk500_recv (): ohjelmoija ei vastaa  

Kaikki ehdotukset ovat tervetulleita.

Katso, auttaako [tämä] (http://playground.arduino.cc/Linux/All#.UyM2QpX7Zwc) apua, osio "MÄÄRITÄ LUPA"
Ja +1 siitä, että et hyväksynyt tilannetta IDE: n suorittamiseksi pääkäyttäjänä, mutta yritit selvittää, miten ongelma voidaan ratkaista oikein.
Mikä on tarkka virhe, kun yrität suorittaa IDE: tä etuoikeutetulla käyttäjällä? Saatat joutua ottamaan käyttöön tarkan lähdön Asetukset-valikossa.
Varmista, että muodostat yhteyden oikeaan laitteeseen irrottamalla virtajohdon, odottamalla sitten muutama sekunti, kytke se uudelleen ja tarkista sitten rekisteröidyn laitetiedoston `dmesg`-lähtö.
Tarkistettu, että laite havaitaan oikein nimellä "/ dev / ttyACM0: USB ACM device". Joten se ei vaikuta minulle ongelmalta, ja toisaalta lokit kokoamisesta ja lataamisesta (niiden oli sallittava Asetuksissa) näyttävät lupaavilta. En vain näytä kopioivan niitä arduino-ohjelmasta :(. (Ehkä he kirjoittavat tiedostoon jonnekin?)
Mitä tapahtuu, kun `avrdude -p atmega328 -carduino -P / dev / ttyACM0 -b 57600 -D -Uflash: r: /tmp/project.hex: i`? Tarkista laite ja baudinopeus uudelleen.
Ymmärrän mitä tarkoitat, minun piti muuttaa komentoa vähän. Täältä näyttää miltä se näyttää: / 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 se toimii, kun suoritan sitä tavallisena käyttäjänä :). Etkö ole varma, miksi se kyllästyy arduino-työkalulla.
Baudinopeus on outo, odotan 57600, ainakin sitä käytän yhteyden muodostamiseen Arduinoon. Löysitkö tiedonsiirtonopeuden Arduinon lokitiedoista? Käytän kuitenkin toista levyä, se voi selittää eron.
Kolme vastused:
#1
+13
jippie
2014-03-14 22:48:44 UTC
view on stackexchange narkive permalink

Helpoin ratkaisu on lisätä itsesi ryhmään dialout .

Tee ensin muistiinpano id -lähteestä. Tallenna se tiedostoon (ei kohtaan / tmp , koska se puhdistetaan uudelleenkäynnistyksen yhteydessä). Jos tarkastelet lähtöä, huomaat, että käyttäjäsi on kirjautunut useisiin ryhmiin ja nämä ryhmät edustavat ylimääräisiä oikeuksia järjestelmässä. Arduinosi on oletusarvoisesti määritetty ryhmään dialout , koska se rekisteröidään sarjaliitäntänä ja vanhoina aikoina niitä käytettiin usein ... soittamiseen modeemin avulla.

Lisää itsesi dialout -ryhmään antamalla seuraava komento:

  sudo usermod -a -G dialout $ USER  

Älä unohda -a -lippua (ryhmien liittämiseen pikemminkin kuin korvaamiseen), tai sinulla on täysin erilaisia ​​ongelmia. Tämä on syy, miksi id -lähdöstä tehdään kopio tiedostoon, joten jos sekoitat ainakin tiedät, millainen käyttäjäsi oli aiemmin määritetty.

Sitten kirjaudu ulos ja kirjaudu sisään, ja sen pitäisi toimia siitä hetkestä lähtien.

Voit halutessasi myös tarkistaa id -lähdön aiemmin tallentamaasi lähtöön nähden.

kiitos @jippie, harkitusta vastauksesta. Olen lisännyt itseni `` dialout '' -ryhmään, mutta ongelma näyttää edelleen jatkuvan. Olen muokannut kysymystäni `id` -komennon lähdöllä.
Katson päivityksestäsi, että ongelman tarkka syy on siirtynyt seuraavaan numeroon. Olet matkalla ratkaisemaan sen. Mitä tapahtuu, kun `` cat / dev / ttyACM0 ''? Heittääkö se virheen?
Ei, laitetiedosto näyttää tyhjentyvän, kun `` kissoin '' sitä.
Tyhjä on OK, kunhan et saa virheilmoitusta.
#2
+9
hoosierEE
2014-04-01 06:22:06 UTC
view on stackexchange narkive permalink

Usein toistettu ohje "vain tehdä sudo usermod -aG -valintaikkuna <username> ei koskaan toiminut minulle, ja tajusin lopulta miksi. Koneellani / dev / ttyUSB0 kuuluu ryhmään serial eikä dialout , joten käyttäjänimeni lisääminen dialout -ohjelmaan ei tehnyt mitään.

  # ls -l # crw-rw ---- 1 juurisarja 188, 0 maaliskuuta 31 20:52 / dev / ttyUSB0 ^^^^^^ (ryhmän nimi)  

Lopuksi: sudo usermod -aG <group-name> <username> korjasi sen minulle.

Hämmentävää, että tämä mainitaan myös nimenomaisesti täällä kohdassa "MÄÄRÄ LUPA" . Huoka.

Kyllä, kannattaa tarkistaa varsinainen omistava ryhmä. Myös laitetiedosto voi olla joko ttyUSB # tai ttyACM # (tai teoriassa mikä tahansa) riippuen levytyypistä, ytimen ohjaimesta ja lopulta udevin kokoonpanosta tai mistä tahansa solmujen luomisesta.
Se mainitaan myös osoitteessa https://www.arduino.cc/en/Guide/Linux#toc6
#3
  0
soynerdito
2014-11-03 04:18:42 UTC
view on stackexchange narkive permalink

Näin tapahtuu minulle. Minun tapauksessani olin päivittänyt arduino-version ja näyttää siltä, ​​että asetustiedosto aiheutti ongelman. Poista ~ / .arduino / preferences.txt-tiedosto (kun Arduino IDE on suljettu).

Vaiheet:

  1. Sulje Arduino IDE
  2. suorita tämä:

    rm ~ / .arduino / preferences.txt

  3. Käynnistä Arduino IDE

Tämä toimi minulle, toivottavasti se toimii jollekin muulle. Käytän Linux Mint 17: tä ja minä päivitetty Arduino 1.05: stä Arduino 1.06: ksi purkamalla Arduino IDE, en käytä repossa olevaa. (Tietenkin, kun olet lisännyt käyttäjän vastaavaan ryhmään, kuten muut ovat maininneet, mutta jos se ei auta sinua kokeilemaan tätä)

Mahdollisesti tähän liittyy, että työkalujen juurtumisen juurina on yksi sivuvaikutus, että voit jättää jälkeesi väliaikaiset, määritys- tai projektitiedostot, joita ordinay-tilisi ei voi muokata tai puhdistaa.


Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...