Utilizzo di firmware Arduino per scopi commerciali

Buongiorno a tutti,

come da oggetto la mia domanda va un po' contro l'etica che c'è dietro Arduino.
Tuttavia sono molto interessato a sapere se ciò è possibile legalmente. Vado a formulare la domanda.

Mi chiedo: ma se scrivessi del firmware per mezzo del compilatore Arduino utilizzando alcune sue librerie Open e successivamente lo mettessi su un micro ATMega328P vergine (cioè senza bootloader e quindi acquistato proprio dalla Microchip), posso vendere poi il prodotto finale?

Sostanzialmente creerei un PCB con un ATMEGA328P vergine e successivamente andrei a programmarlo con il file HEX prodotto dal compilatore Arduino. Nell'ATMEGA328P non ci sarebbe quindi il bootloader, ma solo l'HEX.

Tutto ciò è possibile legalmente? Mi posso"approfittare" di una piattaforma gratuita per poi sfruttarla a fini commerciali?

Per essere chiari, in tutto questo non userei la board Arduino, ma solo il codice di arduino.

Grazie

Led_ON

Leggere le FAQ del sito no ? :smiling_imp:

La risposta la trovi in QUESTA FAQ :wink:

Ma leggi tutte quelle della sezione “Arduino Logo & Trademarks” … così vai sul sicuro.

Guglielmo

Grazie Guglielmo!

Ho letto tutto.
Ma questa: Using the Arduino core and libraries for the firmware of a commercial product does not require you to release the source code for the firmware. The LGPL does, however, require you to make available object files that allow for the relinking of the firmware against updated versions of the Arduino core and libraries. Any modifications to the core and libraries must be released under the LGPL.

Cioè significa che il codice sorgente lo posso non pubblicare ma i codici macchina si? Non mi torna questo passaggio...

Elia

Led_ON:
Cioè significa che il codice sorgente lo posso non pubblicare ma i codici macchina si? Non mi torna questo passaggio...

Si, i sorgenti sono i tuoi, ma dato che stai usando codice sotto LGPL, come chiaramente indicato nella FAQ, devi dare la possibilità di riottenere il prodotto in caso di aggiornamento del codice Arduino e quindi, per evitare di dover rilasciare i sorgenti, è specificato che devi rilasciare i moduli oggetto linkabili.

Guglielmo

Grazie.
Allora non avrebbe senso fare un prodotto commerciale su base arduino. Poiché chiunque potrebbe copiarlo...

Elia

Led_ON:
Allora non avrebbe senso fare un prodotto commerciale su base arduino. Poiché chiunque potrebbe copiarlo...

Beh ... sfruttare tutto il lavoro OpenSource fatto degli altri (... e magari anche il supporto gratuito del forum per risolvere eventuali problemi) per fare i propri interessi chiudendo il tutto ... non mi sembra molto corretto ... ::slight_smile:

Ci sono altri ambienti di sviluppo, sia gratuiti, sia a pagamento che puoi utilizzare per sviluppare il tuo prodotto commerciale senza dover rilasciare nulla e senza dover pagare royalties. :slight_smile:

Guglielmo

Led_ON:
Poiché chiunque potrebbe copiarlo...

Infatti è la base dell'Open source e Open Hardware. :slight_smile:

Avete ragione, infatti mi chiedevo proprio questo.
È un po' come andare all'Ikea, prendere 100 lapissini e poi venderli di un altro colore

Led_ON:
È un po' come andare all'Ikea, prendere 100 lapissini e poi venderli di un altro colore

:smiley: :smiley: :smiley: :smiley: :smiley:

Guglielmo

Domanda: ad esempio allora chi scriva uno sketch Arduino e lo inserisca all'interno di questo:

  https://it.rs-online.com/web/generalDisplay.html?intcmp=IT-WEB-_-HP-HB1-_-Jan-17-_-IOT2020&id=siemens-simatic-iot2020

é obbligato a pubblicare i codici oggetto?

... cosa NON ti è chiaro nella FAQ di cui abbiamo discusso ? :o

E' ovvio che se uno vuole realizzarci un prodotto commerciale che poi vende la risposta è SI !

Guglielmo

P.S.: Ti ho già detto che, per applicazioni commerciali chiuse di cui non vuoi distribuire nulla, devi cambiare ambiente di sviluppo. Ne esistono vari ... da Atmel Studio 7 (gratis) a CodeVisionAVR (a pagamento) passando per IAR (piuttosto costosetto).

Mah, veramente non è proprio così. Usare l'ambiente Arduino per produrre (= compilare) il codice binario non impone alcun obbligo.

Eventuali obblighi vengono imposti dal codice non scritto da te che va a finire (staticamente) nel binario (il famoso core ed eventuali librerie), in quanto ti viene fornito sotto una licenza che devi rispettare.

Se il core è rilasciato sotto LGPL come mi pare di capire dalle FAQ, e/o se usi librerie distribuite sotto tale licenza, hai sostanzialmente due obblighi verso coloro a cui fornisci (= vendi o regali) i binari:

  1. Fornire i sorgenti del core e delle eventuali librerie LGPL se te ne viene fatta richiesta (a dire il vero non mi è chiaro se sei obbligato a offrirli o se basta fornirli se ti vengono chiesti, ma vabbeh).
  2. Fornire il codice oggetto delle parti sviluppate da te, e non il sorgente.

Tutto questo è fatto nell'ottica che se uno vuole aggiornare o modificare la libreria, deve essere in grado di ricompilarla e rilinkare il tutto.

Se invece usi librerie o anche solo un piccolo pezzo di codice rilasciato sotto GPL (senza la prima L), sei obbligato a fornire anche tutti i tuoi sorgenti.

Questo almeno è quello che ho sempre capito io.

Molto interessante il SIEMENS SIMATIC IOT2020, non ho approfondito più di tanto, ma quel tanto che basta per dire che il costo è davvero conveniente, sempre che sia ciò che abbiamo di bisogno ed è evidente che @Led_ON non ha bene compreso il funzionamento del prodotto in questione.

Il gateway IOT2020 è compatibile con la maggior parte degli sketch Arduino che possono essere caricati direttamente dall’IDE Arduino. Molti altri programmi possono essere compilati e/o eseguiti sotto Yocto Linux grazie al controller X1000 SOC (X86).

E’ ovvio che se uno vuole realizzarci un prodotto commerciale che poi vende la risposta è SI !

Non solo, ma c’è anche da vedere la licenza di Yocto Linux e delle librerie di sistema.

Non capisco perché ci si ostina a volere chiudere ciò che è nato come aperto; forse per controbilanciare quelli che aprono ciò che è nato chiuso.

Grazie.
Allora non avrebbe senso fare un prodotto commerciale su base arduino. Poiché chiunque potrebbe copiarlo…

Anche arduino è stato scopiazzato è anche male, solo che ti accorgi che è una copia malfatta dopo averla pagata.
Eppure Arduino è ancora qui, vivo e vegeto nonostante sia open all.

Ciao.

SukkoPera:
Mah, veramente non è proprio così. Usare l'ambiente Arduino per produrre (= compilare) il codice binario non impone alcun obbligo.

:smiley: :smiley: :smiley: ... Sukko, questa te la potevi risparmiare :grin: :grin: :grin:

Mi sembra ovvio che se usi l'IDE per compilare tue routines indipendenti che NON usano nulla di Arduino ... non hai alcun obbligo (... ma allora usa gcc e fai prima), ma se solo scrivi setup() e loop() e quindi usi il "core" di Arduino o loro routines e librerie ... cadi sotto la loro licenza. :wink:

Guglielmo

Secondo me è meglio fare chiarezza, perché purtroppo "Arduino" indica un po' troppe cose, a cominciare dalle varie schede e dall'ambiente di sviluppo. Quest'ultimo però non è monolitico, ma composto perlomeno da IDE, compilatore e core/librerie.

Il senso del mio messaggio è che gli obblighi derivano dall'uso dell'ultimo componente e la licenza a cui bisogna prestare attenzione è la sua. Se compili codice 100% tuo col GCC incluso in Arduino e scritto con l'IDE non hai alcun obbligo in caso di vendita, sebbene la licenza di GCC sia GPL e non LGPL. Se ad esempio un indomani uscisse un core rilasciato sotto licenza BSD, si potrebbe tranquillamente vendere qualunque binario senza ridistribuire alcunché, pur rimanendo invariate le licenze di IDE e GCC.

Tutto questo è solo per rispondere per filo e per segno alla domanda originale, è ovvio poi che lo sviluppo e la diffusione del software libero sono da apprezzare e incentivare e che io ne sono un fervido sostenitore ;).

Domanda con secondo fine cattivo (non fraintendetemi): ma se usassi le librerie arduino (quindi il codice non è completamente fatto da me, ma in parte "ereditato"), chi se ne accorge?

Ripeto, non fraintendetemi

P.s: quindi se uso il compilatore arduino, ma creo codice completamente fatto da me, posso venderlo senza fornire niente giusto?

Grazie

Led_ON:
chi se ne accorge?

La tua coscienza.

Led_ON:
Domanda con secondo fine cattivo (non fraintendetemi): ma se usassi le librerie arduino (quindi il codice non è completamente fatto da me, ma in parte “ereditato”), chi se ne accorge?

Chiunque ha il sospetto e fa un po’ di “reverse engineering” … non ci vuole molto … :smiling_imp:

Led_ON:
P.s: quindi se uso il compilatore arduino, ma creo codice completamente fatto da me, posso venderlo senza fornire niente giusto?

NON esiste il “compilatoreArduino, il compilatore che l’IDE usa è gcc che è pubblico, open-source e non ti serve certo l’IDE per usarlo, anzi, onde evitare il rischio di portarti dietro cose che fanno parte del “core” Arduino senza saperlo, se devi compilare cose tue, creati un ambiente gcc indipendente e sei tranquillo.

Guglielmo

Chiunque ha il sospetto e fa un po' di "reverse engineering" ... non ci vuole molto ... :smiling_imp:

Mica tanto, anzi è proprio impossibile stabilire che ha usato il core di arduino o le avr-libc avendo il firmware già nella flash del 328. Dal firmware in formato intel hex forse è possibile ricavare qualche informazione, ma dubito ci sia scritto "compilato con AVR-GCC" ecc.

Comunque, il problema è che se qualcuno ha il sospetto e tramite "reverse engineering" riesce a ricavare informazioni tali che il sospetto si trasformi in qualcosa di simile alla certezza è possibile che la FSF ti faccia causa, come va a finire non lo so. Se si va in aula, forse ti chiederanno di dimostrare con quali strumenti hai sviluppato il progetto.

Supponiamo tu abbia sviluppato il software tramite IDE IAR di cui dimostri di avere la licenza di uso e mostri loro il progetto vinci di sicuro. Ma se si arriva al sequestro dei pc stabiliscono quali strumenti hai usato, allora sono crauti amari, magari alla fine sarai obbligato a pagare le spese processuali e a rilasciare il software come stabilito dalla licenza.

Inoltre nota che anche se usi le avr-libc c'è lo stesso problema che con arduino core e compagnia, tuttavia migrare da avr-libc ad altro come IAR è più facile rispetto alla migrazione da arduino style verso altro con licenza proprietaria.

Quindi puoi iniziare il progetto usando avr-gcc e la avr-libc, testare il progetto, quando sei pronto per la commercializzazione, acquisti ambiente di sviluppo proprietario, esegui la migrazione e sei apposto. Inoltre se non metterai più mano al codice l'ambiente proprietario non ti serve più e quindi non pagherai gli aggiornamenti. Allora potrai dedicarti alla promozione del prodotto (publicità) e commercializzazione.

Ricorda comunque che dovrai sempre sottoporre a certificazione il tuo prodotto, specie se è alimentato da corrente di rete serve la certificazione EMI, a meno che il tuo prodotto non venga venduto con alimentatore separato (già certificato).

Io credo che per vendere un prodotto che hai sviluppato dovrai almeno avere un Ingegnere assunto in azienda o avere affidato il compito di certificarlo ad un Ingegnere esterno.

Ciao.

No, la AVR libc dovrebbe essere utilizzabile anche in applicazioni proprietarie:

The contents of avr-libc are licensed with a Modified BSD License.

All of this is supposed to be Free Software, Open Source, DFSG-free,
GPL-compatible, and OK to use in both free and proprietary applications.