Show HN: DonglePi, a USB Stick Giving You the Raspberry Pi IOs on a PC
github.com
github.com
"DonglePi is released under a dual license. It is GPL for educational and personal use.
It is under a commercial license if you want to produce it and sell it."
Hm.
Am I right in thinking that it doesn't work like this? You can dual license, but you can't say "only some people using it certain (educational, noncommercial) ways may choose the GPL version".
I'm also not sure how good a fit the GPL is for hardware designs. Seems like it might be better to GPL the software, then CC-noncommercial the hardware side, with an option to pay for a commercial license.
(but of course IANAL)
Anyway, this is such a good idea and such an obvious candidate for Kickstarter that I'm surprised to see it on Github first.
[EDIT] grammar
It's unfortunate because there are tons of commercial products that use the GPL (including my own product), and this perpetuates the old tired trope that libre licenses don't work on products you pay for. But my suspicion is that it's just sloppy wording rather than attempting to add an invalid clause to the GPL.
Honestly, the goal here is more about investing in the next design like a low latency USB3 version if somebody decides to produce this one.
As for github vs kickstarter first: I would love to bring more expertise on the project as I am more a software guy than an hardware guy.
So if anybody is interested in improving the HW design and make a kickstarter out of it, feel free to contact me !
The issue is that if you say "it's GPL so long as you don't use it commercially", that's not actually the GPL (which never mentions the commercial/non-commercial distinction), and users/developers can't combine your work with GPLed work.
I would suggest to the author to just license it under the GPL if they want it restrictive - and offer a commercial license for people who don't want to give up custom code.
I don't think a lot of people realize that a condition of the GPL is that if you distribute it in compiled form you must make available the source (exception would be server type applications like wordpress which Affero GPL was supposed to close that "loophole"). You may sell GPL software, but once someone buys it they may give it away for free[1].
[1] - http://www.gnu.org/licenses/gpl-faq.html#DoesTheGPLRequireAv...
https://en.wikipedia.org/wiki/GNU_General_Public_License#Der...
However you could make a derivative, but it's of little value.
I could not find if GPL and GNU is trademarked, as that would serve a similar purpose.
Yeah, it doesn't work that way, though IIRC MySQL AB originally, and for quite a while, did the same thing.
On another note, I'm pretty sure your particular dual-licensing scheme is invalid; the GPL does allow commercial use of a thing licensed under it, so people hoping to "produce it and sell it" would be legally able to do so (though perhaps with a bit of indirection, like forking it under the GPL's terms as a "personal" project, leaving out the commercial restrictions (since enforcing them would be a GPL violation), then letting someone else thus use it for commercial purposes without restriction (other than the GPL's copyleft requirements).
Unless by "produce and sell it" you mean "produce and sell it under non-GPL terms or without schematics", in which case that is acceptable and useful. In any case, clarification would be wise.
Only thing I don't like is that when something goes really wrong with my circuit, I could probably harm my PC. Normally I just risk destroying RPi.
[1] http://uk.farnell.com/olimex/usb-iso/usb-isolator-1000vdc-fo...
It plugged into 120 vac on one side, and usb to computer on the other side. He didn't end up doing enough to isolate the 120 vac side from the usb side and fried his computer. It was pretty impressive damage as it managed to fry the motherboard, CPU and memory.
It's easy to use one to switch a transistor[1], for instance, and there is a Python library to control the port[2]. An optoisolator is a good idea since computers are expensive and isolation is cheap.
The DonglePi looks nice since it will exposes I2C, SPI, and PWM. I could see it being handy to test out I2C and SPI parts before integrating them into custom boards.
On one side, it's a pretty dumb interface: You put a bit in a memory address and the output changes state. No fancy logic, everything done in software. On the other hand, it's very tightly integrated on the CPU, so you have a very fast path to toggling them.
If you really need this tight integration because you want to trigger interrupts from an external source, or want to bit-bang a non-standard serial protocol, you'll have little luck: The USB latency will make it orders of magnitude slower than "native GPIO." and the better solution will be to directly hard-code parts of the logic into the external microprocessor, and speak to this special purpose hardware.
If you are only interested in turning on- or off a few lights, one of the popular GPIO expanders via i2c will be cheaper and probably just as slow :-).
But: A huge strength of this project would be if the i2c-over-usb and spi-over-usb ports get decent native support in-kernel-support in Linux, because that's where you can get pretty decent performance with the well-defined protocols. That's something that would fill a huge gap in available products, both for the PC and the 'pi.
{I've tried to get something running on a special-purpose CH340(?) uart/i2c/spi-to-USB bridge, but unfortunately the two latter modes are severly underdocumented...}
I prefer to use USB peripherals for my Pi. Peripherals that are recognized as a USB-to-serial adapter can talk to the Pi, or to any desktop PC. This lets me move my peripherals and code (mostly Python) back and forth between platforms, and do the lion's share of debugging on my PC if I want to.
My peripherals are homemade, since I also enjoy playing with microcontrollers, but something like this is nice because you can get it working and start using it without needing a bunch of esoteric development tools. Likewise with that port expander chip from Microchip.
It can be a conceptual hurdle for a beginner to master a bunch of disparate concepts, such as basic wiring, microcontroller programming, and the Raspberry Pi, just to reach "hello world" stage. Starting with a few of those things already done can be a comfort.
I think the appeal here is to add GPIO directly to a PC simply because having one computer is simpler than having two, and there are a lot of cases where you'd like to just toggle a pin here and there without having a middleman machine.