Avrdude errore run time

Buonasera sono su un pc win 10 con macchina virtuale su cui è installato UBUNTU. Se da UBUNTO utilizzo il comando PlatformIo Upload per scaricare il software sulla scheda Arduino uno, funziona correttamente . Se lo faccio con un programma scritto in python dove , con le opportune modifiche nei percorsi che emulano il comando platformIo upload, lo faccio girare su WIN 10 funziona ma su ubuntu mi restituisce il seguente errore:

System wide configuration file is "/usr/share/arduino/hardware/tools/avrdude.conf"
         User configuration file is "/home/sky70/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyS0
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00

il programma è il seguente

import time
import subprocess
import serial
import sys
import binascii 
import os
import tkinter as tk

window = tk.Tk()
window.geometry("600x200")
window.title("Robotic Arm")
window.resizable(False, False)
window.configure(background="yellow")
 
def str_arm():
    from subprocess import run
    
    run(["/usr/share/arduino/hardware/tools/avr/bin/avrdude", '-C/usr/share/arduino/hardware/tools/avrdude.conf', "-v", "-patmega328p", "-carduino", "ttyACM0", "-b115200", "-D", "-Uflash:w:/home/sky70/Documents/PlatformIO/Projects/MOV_ARM/.pio/build/uno/firmware.hex:i"])

first_button=tk.Button(text="Start Robotic Arm",  command=str_arm)
first_button.place(x=220, y=60)
second_button=tk.Button(text="End Robotic Arm" , command=fine_arm)
second_button.place(x=220, y=100)
if __name__== "__main__": 
   window.mainloop() 

Vorrei un aiuto a risolvere il problema . Ho provato anche a staccare e reinserire il cavo USB , resettare la scheda Arduino uno ma, non ho risolto. grazie mile

Il codice non c'entra nulla, non va bene lo script che stai usando sotto ubuntu dove, probabilmente, i percorsi sono diversi tanto è vero che di indica che NON riesce a trovare un file:

User configuration file does not exist or is not a regular file, skipping

... che, guarda caso, è proprio il file di configurazione di avrdude. Devi vedere sulla tua macchina ubuntu dove si trova il file di configurazione richiesto e correggere il percorso.

Guglielmo

Buonasera Sig. Guglielmo c'è una cosa che non mi è chiara e , premetto , non sono espertissimo pertanto, mi perdoni se commetto delle banalita'. Ho installato Arduino Ide sulla macchina virtuale e ho provato a trasferire uno sketch tra gli esempi . Le espongo il risultato:

System wide configuration file is "/usr/share/arduino/hardware/tools/avrdude.conf"
         User configuration file is "/home/sky70/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyS0
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
------------------------------------------------------------------------------

Processing uno (platform: atmelavr; board: uno; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
PLATFORM: Atmel AVR (3.4.0) > Arduino Uno
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
DEBUG: Current (avr-stub) On-board (avr-stub, simavr)
PACKAGES: 
 - framework-arduino-avr 5.1.0 
 - tool-avrdude 1.60300.200527 (6.3.0) 
 - toolchain-atmelavr 1.70300.191015 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 8 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <HCSR04> 1.1.0
|-- <LiquidCrystal_I2C>
|   |-- <Wire> 1.0
|-- <Octopus> 7.5.0
|   |-- <Wire> 1.0
|-- <Wire> 1.0
Building in release mode
Checking size .pio/build/uno/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=         ]  12.3% (used 252 bytes from 2048 bytes)
Flash: [==        ]  20.6% (used 6650 bytes from 32256 bytes)

Warning! Please install `99-platformio-udev.rules`. 
More details: https://docs.platformio.org/page/faq.html#platformio-udev-rules

Configuring upload protocol...
AVAILABLE: arduino
CURRENT: upload_protocol = arduino
Looking for upload port...
Auto-detected: /dev/ttyACM0
Uploading .pio/build/uno/firmware.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file ".pio/build/uno/firmware.hex"
avrdude: writing flash (6650 bytes):

Writing | ################################################## | 100% 1.28s

avrdude: 6650 bytes of flash written
avrdude: verifying flash memory against .pio/build/uno/firmware.hex:
avrdude: load data flash data from input file .pio/build/uno/firmware.hex:
avrdude: input file .pio/build/uno/firmware.hex contains 6650 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.04s

avrdude: verifying ...
avrdude: 6650 bytes of flash verified

avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.

====================================================== [SUCCESS] Took 6.15 seconds ======================================================

Terminale verrà riutilizzato dalle attività, premere un tasto qualsiasi per chiuderlo.

Come vede l'indicazione del file di configurazione lo da comunque solo che poi trasferisce correttamente lo sketch sulla scheda . Dalle opzioni di Arduino Ide ho attivato il dettaglio della sequenza e ho provato ad inserire, i percorsi indicati, nel programma ma l'errore è identico e non trasferisce nulla. Francamente non voglio arrendermi ma, ho esaurito i test da effettuare . Grazie mille in ogni caso.

Mmm ... mi sa che ti ci vuole qualcuno esperto di Linux ... io lavoro sotto macOS e NON ho mai visto che non trovi il file di configurazione di avrdude ... :roll_eyes:

Magari se @Maurotec passa da queste parti forse ti potrà aiutare ...

Guglielmo

Ricordavo di avere risposto, scusate.

"ttyACM0"

Non è un file device valido, mentre dovrebbe esserlo

"/dev/ttyACM0" 

e puoi verificarlo scrivendo nel terminale ls -l /dev/ttyACM0
Se il file esiste nel terminale ti compare qualcosa di simile a:

crw--w---- 1 root tty 4, 0 dic 29 00:19 /dev/ttyACM0

PS: anche gli altri percorsi dovresti verificarli dal terminale e da questo provare ad eseguire avrdude anche senza comandi.

Poi c'è questo warning che indica la mancanza di un file delle regole di udev tramite le quali si può o meno concedere l'accesso a file da parte del tuo utente. Cioè se il tuo utente non può accedere a /dev/ttyAMC0 il comando non andrà a buon fine.

Warning! Please install `99-platformio-udev.rules`. 
More details: https://docs.platformio.org/page/faq.html#platformio-udev-rules

Ciao.

Buonasera ho eseguito quanto indicato e ho anche reinstallato Arduino IDE . I percorsi sono , chiaramente cambiati ma, l'errore è lo stesso . Ho notato anche che nel codice io indico /dev/ttyACM0, ma quando parte il software , da VS CODE, utilizza la ttyS0. Non capisco anche perchè se lo trasferisco utilizzando Arduino IDE , la porta utilizzata è la ttyACM0. Puo' essere questa la causa?.. Grazie

Non so darti spiegazioni dettagliate circa VS CODE, poi vedo platformio, in sostanza c'è troppa carne a fuoco. Ora io posso immaginare che i vari tools usati da VS CODE come pure arduino IDE effettuano il parser del risultato dato in shell da avrdude e poi stampano un output formattato, quindi ci sta che indichino ttyACM0 al posto di /dev/ttyACM0. Se notte tempo mi hanno sovvertito linux non lo ma non credo, su linux e uinix tutto (ma proprio tutto) è fatto attraverso file, alcuni sono speciali come appunto i device file che si trovano tutti sotto /dev è sotto questa directory ci può scrivere solo l'utente che ha i permessi e normalmente da utente semplice non si può aprire alcun device file. Poi parliamo di virtualizzazione e io non ho mai virtualizzato e quindi non so. Quello che è certo che con python che con C++ ho avviato di tutto incluso avrdude senza questi problemi. Quindi ci sarà il motivo, non resta altro da fare che scoprirlo.

Hai provato dal terminale di comando ad avviare avrdude?

Ciao.

Buonasera chiedo un aiuto . Causa un errore commesso , ho dovuto disinstallare VM WARE ( Macchina virtuale ) e reinstallarla. Ho reinstallato ubuntu . Tutto bene . Installo Arduino IDE e come porte seriali non mi propone ttyACM0 ma solo la ttyS0 e S1. Se provo , da terminale, mi dice /dev/ttyACM0': File o directory non esistente
Cosa devo fare?..Grazie