avrdude -p m328p -c arduino -b 19200 -P /dev/ttyUSB0 -t

perchè non greppi l'output del comando lsusb (su linux) in cerca dei vid e pid della scheda?
così vedi la scheda collegata ed il suo nome così come la vede il S.o.

Si questa è una strada che richiede come dipendenze lsusb, ci sono alternative a questa?

Una è :

ls -l /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A600etZm-if00-port0

Che mostra:

lrwxrwxrwx 1 root root 13 11 mag 08:06 /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A600etZm-if00-port0 -> ../../ttyUSB3

Allora ricavo a cosa punta il link e poi interrogo il bootloader su tutte le porte con FTDI presenti nel sistema, quella che risponde correttamente è la scheda Arduino.

Per ricavare la signature scritta nel bootloader faccio così:

print "Clear DTR and RTS to unload the RESET capacitor"  
ser.setRTS(False)
ser.setDTR(False)
print "attende x tempo"
time.sleep(1)
print "Set DTR and RTS back to high"
ser.setRTS(True)
ser.setDTR(True)
print "attende x tempo"
time.sleep(0.5)
print "scrive 0x75, 0x20"
ser.write(chr(0x75))
ser.write(chr(0x20))
print ord(ser.read())	# 0x14
print ord(ser.read())	# 0x1E
print ord(ser.read())	# 0x95
print ord(ser.read())   # 0xF
print ord(ser.read())	# 0x10

La signature per la 2009 è appunto 0x1E950F, per la Mega 1280 0x1E97
03.
Per le altre che usano il chip 8u2 non so se il codice python di cui sopra è ancora valido.

Poi tutto questo lo devo fare in javascript.

Ciao.