Go Down

Topic: Your latest purchase (Read 121750 times) previous topic - next topic

GoForSmoke

You can always breadboard a Duino and use an FTDI cable or like to communicate with it.
I don't suppose that anyone has a serial cable that can do the job?

I have a Dontronics Little rAVR dev board for 90Sxxxx chips. It programmed through parallel.

Nick Gammon on multitasking Arduinos:
1) http://gammon.com.au/blink
2) http://gammon.com.au/serial
3) http://gammon.com.au/interrupts

SirNickity


I always got the impression the emulation of USB devices was a bit of an afterthought with the selection of the 8u2/16u2 chips, the prime driver of the change being manufacturing cost. But this business about the firmware in the chips not being legal to clone is also intriguing...


It was.  It's not "illegal" to clone the u2 firmware, but since it's not a dedicated USB-to-serial IC (it's just a micro with support for USB client mode), the developer is responsible for coming up with a valid USB vendor ID.  The USB Forum assigns these, so you can't just make it up, and it's against USB's terms and conditions to use another vendor's ID.  (This is how they ensure the device IDs are globally unique -- by assigning the vendor ID and delegating the responsibility for the device ID uniqueness to the vendor.  That breaks immediately if multiple vendors get to share vendor IDs.)

Vendors have to pay (I think it's $2000?) for a unique vendor ID, and it's not permitted to sub-let them.  So the clone manufacturer is obligated to buy a vendor ID of their own and program the ATmegaXXu2 with their own IDs.  Doing so makes the device unrecognizable to the official Arduino driver (since its keyed to the vendor + product ID pair by USB's design).  You could always hack the driver to include your own IDs and distribute that, but if you have no ethics, it's easier to just steal Arduino's valid IDs and hope for the best regarding potential ID collisions.

pico

#857
Mar 13, 2014, 08:58 am Last Edit: Mar 13, 2014, 09:00 am by pico Reason: 1


I always got the impression the emulation of USB devices was a bit of an afterthought with the selection of the 8u2/16u2 chips, the prime driver of the change being manufacturing cost. But this business about the firmware in the chips not being legal to clone is also intriguing...

You could always hack the driver to include your own IDs and distribute that, but if you have no ethics, it's easier to just steal Arduino's valid IDs and hope for the best regarding potential ID collisions.


Unless I misunderstand, if your device is a true clone, then there should be no *practical* issue using the Arduino vendor IDs (ethical issues are another matter, of course). There no chance of a "collision" of any kind occurring -- you *want* your unit to identify to the system as an Arduino device in order to use that driver. OTOH, if you had lifted the ID of another vendor for your *different* hardware, and required your hardware to use a *different* driver, then there is the prospect of a (driver) collison of some sort.

A bit like reusing MAC addresses (DEADBEEFFEED anyone ;-)

So really it just boils down to the "theft" of the IDs. Has Arduino ever complained or made their position public on this point? Does the vendor (Arduino) even have the option to allow "sharing" of the ID if they so wanted under the terms of their agreement with USB Forum (if that's the licensing body.)

Finally, suppose you've developed clone hardware and you *want* it to run using the device driver written by another manufacturer (e.g., Arduino) as described above. Is there a mechanism to do that, apart from spoofing the Vendor ID on your hardware?

Intriguing stuff, particularly int the context of open hardware designs.
WiFi shields/Yun too expensive? Embeddedcoolness.com is now selling the RFXduino nRF24L01+ <-> TCP/IP Linux gateway: Simpler, more affordable, and even more powerful wireless Internet connectivity for *all* your Arduino projects! (nRF24L01+ shield and dev board kits available too.)

Coding Badly

Finally, suppose you've developed clone hardware and you *want* it to run using the device driver written by another manufacturer (e.g., Arduino) as described above. Is there a mechanism to do that, apart from spoofing the Vendor ID on your hardware?


Under Windows, the "Arduino driver" is the standard Microsoft serial port driver.  The Arduino folks provide a text file that tells the operating system to bind their VID / PID to that kernel driver.  Just like countless other people have done with hardware that behaves like a USB serial port.

pico

#859
Mar 13, 2014, 09:21 am Last Edit: Mar 13, 2014, 09:23 am by pico Reason: 1

Finally, suppose you've developed clone hardware and you *want* it to run using the device driver written by another manufacturer (e.g., Arduino) as described above. Is there a mechanism to do that, apart from spoofing the Vendor ID on your hardware?


Under Windows, the "Arduino driver" is the standard Microsoft serial port driver.  The Arduino folks provide a text file that tells the operating system to bind their VID / PID to that kernel driver.  Just like countless other people have done with hardware that behaves like a USB serial port.



And if you are just using an existing driver as you describe, there is no issue of "signed" versus "unsigned" drivers then?
WiFi shields/Yun too expensive? Embeddedcoolness.com is now selling the RFXduino nRF24L01+ <-> TCP/IP Linux gateway: Simpler, more affordable, and even more powerful wireless Internet connectivity for *all* your Arduino projects! (nRF24L01+ shield and dev board kits available too.)

Coding Badly

And if you are just using an existing driver as you describe, there is no issue of "signed" versus "unsigned" drivers then?


Yes, there is.  You have to sign the text file (indirectly; the cat file is signed).

pico


And if you are just using an existing driver as you describe, there is no issue of "signed" versus "unsigned" drivers then?


Yes, there is.  You have to sign the text file (indirectly; the cat file is signed).



And does that signing require spending extra money a Microsoft? (Sorry for all the questions; learning something here.)
WiFi shields/Yun too expensive? Embeddedcoolness.com is now selling the RFXduino nRF24L01+ <-> TCP/IP Linux gateway: Simpler, more affordable, and even more powerful wireless Internet connectivity for *all* your Arduino projects! (nRF24L01+ shield and dev board kits available too.)

Coding Badly

And does that signing require spending extra money a Microsoft? (Sorry for all the questions; learning something here.)


As far as I know, no, it does not.  I believe you just need a "code signing certificate" # (or something very similar).  For broad distribution, you will have to purchase it from someone who can digitally sign your certificate with a "root level" certificate (the actually signing is done indirectly and automatically).  In the past we've gotten our certificates from Thawte (who was acquired by Veri$ign which broke my heart), Comodo (which caused problems because their root certificate was not generally distributed), and Go Daddy.  Arduino obtained their signed certificate from GlobalSign (in Windows go to Properties / Digital Signatures for the arduino.cat file).

If the distribution is "in house", you can generate and "self sign" a certificate.  You are responsible for protecting and distributing the root certificate.

In any case, Microsoft does a reasonable job of documenting the requirements and process on their website.  If you want more details I suggest spending some time with Google in case I'm leading you astray.




# Ah, yes, there it is...
• Ensures software came from software publisher
• Protects software from alteration after publication
Enhanced Key Usage = Code Signing (1.3.6.1.5.5.7.3.3)
...the hallmark of a "code signing certificate".

SirNickity

#863
Mar 13, 2014, 07:35 pm Last Edit: Mar 13, 2014, 07:41 pm by SirNickity Reason: 1
Unless I misunderstand, if your device is a true clone, then there should be no *practical* issue using the Arduino vendor IDs (ethical issues are another matter, of course). There no chance of a "collision" of any kind occurring -- you *want* your unit to identify to the system as an Arduino device in order to use that driver.


Yes, technically that would work.  However, it's a little like copying the key for a rental car, then helping yourself to the vehicle whenever it's on the lot.

So really it just boils down to the "theft" of the IDs. Has Arduino ever complained or made their position public on this point? Does the vendor (Arduino) even have the option to allow "sharing" of the ID if they so wanted under the terms of their agreement with USB Forum (if that's the licensing body.)


The way I understand it, no, they don't have this option.  The vendor ID is assigned to you as vendor, and TTBOMK it is not permitted to conspire to allow others to use your vendor ID, or to distribute product IDs to other entities.

Finally, suppose you've developed clone hardware and you *want* it to run using the device driver written by another manufacturer (e.g., Arduino) as described above. Is there a mechanism to do that, apart from spoofing the Vendor ID on your hardware?


No.  If you spoof the vendor + device ID of the original part (which, together, I call the product ID -- that may or may not be officially correct), you're basically stealing that from the licensed vendor.  No one's going to care if you do this on a DIY clone for your own use, but the minute you sell that product, it's likely you'll be reading a cease and desist letter soon.  The original author's driver will not acknowledge your compatible device with a different product ID, so you would have to provide your own driver.  That's not a big deal, but it does mean that it's not an exact clone anymore -- it's essentially a different device that performs the same function.  That's splitting hairs somewhat, but if your users have downloaded and installed the Arduino software, an actual Arduino just works.  Your "clone" would also require its own driver to be sourced from your website or included media (yeah right).

I got a little academic with all that talk about device ID collisions before.  The gist is, every vendor gets their own vendor ID and due to the threat of device ID collisions (and it being a breach of licensing terms), only the licensed vendor is allowed to use that vendor ID.  I should've worded the ending better, since using the same vendor and device ID wouldn't be a "collision" per se if it was meant to emulate the original device, but if a device manufacturer stole the vendor ID and made up device IDs from ones that weren't used by existing devices (for example, using the Uno device ID + 1 or whatever to identify "Brand X Uno Ultimate"...) then you run the risk of collisions.  Sorry for the confusion.

GoForSmoke

That must be why my Teensies need that extra software.
Nick Gammon on multitasking Arduinos:
1) http://gammon.com.au/blink
2) http://gammon.com.au/serial
3) http://gammon.com.au/interrupts

Graynomad

@draythomp

That looks like a nice arid area, just the way I like it.

______
Rob
Rob Gray aka the GRAYnomad www.robgray.com

retrolefty

How cute is this! How handy to quickly determine how much current a arduino USB powered board is drawing. I'll let you know how good it works after if arrives. Nice price also.

http://www.ebay.com/itm/390646012397?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649

Graynomad

Rob Gray aka the GRAYnomad www.robgray.com

Peter_I

A handful of Pro Minis.
They seem to be working perfectly.
(After a bit of trouble connecting them to the USB-adapter  :smiley-red: )

"Nothing is foolproof to a sufficiently talented fool"

robtillaart



- http://www.amazon.de/dp/0071771336 -
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Go Up