Benchmarking USB Transfer Speeds

boards

[Paul Stoffregen], creator of the Teensy series of microcontroller dev boards, noticed a lot of project driving huge LED arrays recently and decided to look into how fast microcontroller dev boards can receive data from a computer. More bits per second means more glowey LEDs, of course, so his benchmarking efforts are sure to be a hit with anyone planning some large-scale microcontroller projects.

The microcontrollers [Paul] tested included the Teensy 2.0, Teensy 3.0, the Leonardo and Due Arduinos, and the Fubarino Mini and Leaflabs Maple. These were tested in Linux ( Ubuntu 12.04 live CD ), OSX Lion, and Windows 7, all running on a 2012 MacBook Pro. When not considering the Teensy 2.0 and 3.0, the results of the tests were what you would expect: faster devices were able to receive more bytes per second.  When the Teensys were thrown into the mix, though, the results changed drastically. The Teensy 2.0, with the same microcontroller as the Arduino Leonardo, was able to outperform every board except for the Teensy 3.0.

[Paul] also took the effort to benchmark the different operating systems he used. Bottom line, if you’re transferring a lot of bytes at once, it really doesn’t matter which OS you’re using. For transferring small amounts of data, you may want to go with OS X. Windows is terrible for transferring single bytes; at one byte per transfer, Windows only manages 4kBps. With the same task, Linux and OS X manage about 53 and 860 (!) kBps, respectively.

So there you go. If you’re building a huge LED array, use a Teensy 3.0 with a MacBook. Of course [Paul] made all the code for his benchmarks open source, so feel free to replicate this experiment.

Add External Power To Any USB Hub

[Andrew] was getting some poor performance from a couple of USB devices he had connected through an unpowered hub. This is a problem because the hub prevents devices from negotiating with the host controller for more current. He fixed it by adding an external power supply to his USB hub.

In this case the PCB already had a footprint for a power connector. The manufacturer uses one board for several different models and just leaves the supply components unpopulated. [Andrew] managed to find a barrel jack in his parts bin that matched the footprint.

One important thing to do before hooking up the source is to disconnect the 5v wire from the incoming cable from the computer. The other tip we can give you is to use a good regulated 5v source to ensure you don’t damage the stuff you’re trying to power. That means avoiding deals that are too good to be true.

Microcontroller Enumerates As USB Printer — Can Be Programmed By Printing

avr-programming-by-printing

This is a fascinating concept. We’re not sure of its usefulness, but it definitely stands on its own just for the concept. [Dean Camera] just added a new HID class to the LUFA project that lets you flash AVR chips by printing to them. This means once you have a file like the one seen open in Notepad above, you can just click on File, then on Print, and the firmware will be uploaded to the chip.

[Dean] is the creator of the LUFA project and still likes to get his hands dirty hacking around with it. This idea came to him while he was exploring the concept of using the MIDI protocol to program a chip. That didn’t pan out because of the way Microsoft has handled MIDI in newer versions of Windows. But he did get the idea of making LUFA identify itself as a simple USB printer. He dug into the specification and figured out how to do that. Once Windows connects to the device it doesn’t really care what data gets sent to it. So [Dean] wrote a parser for the bootloader which could accept the incoming hex code and write it to the chip’s program memory.

Karma Controller Makes Reddit A Game

karma-controller-reddit

[Will] likes Reddit so much he built this dedicated controller that lets him play the social website like a video game.

He calls it he Karma Controller. In this case, ‘Karma’ refers to ability to accumulate a large number of net up-votes on a Reddit post. The device features seven buttons which are all it takes to up and down vote, navigate up and down on the Reddit listings, toggle images, as well as open and close new tabs for the comments section. We’re wondering if it allows you to follow a link to the post source too?

One of the reasons that we’re featuring this is that it’s only [Will’s] second electronics project. If you’re still reluctant to get your hands dirty we hope this acts as inspiration. He started by building the first version on a hunk of protoboard. The Digispark microcontroller seen at the top reads from his button network and communicates with the computer via USB. Once the design was proven he had some help etching this circuit board which is version 2. He shows it off in the clip after the jump.

If you just want some buttons for voting you should take a look at this project which includes a 3D printed enclosure and button covers.

Continue reading “Karma Controller Makes Reddit A Game”

Sega Controller Houses Auto-launch Emulator

[Joe’s] wife grew up playing Sega games and he wanted to help her unwind by reliving the experience. Since the work computer she uses when travelling isn’t a good place to install emulators he built this plug-and-play emulator inside of a Sega controller.

We’ve seen this type of thing a few times before (even with XBMC in a SNES controller) but there is one thing we hadn’t thought of lately. Newer versions of Windows have auto-launch disabled for USB drives. But [Joe] knew that there were still some USB sticks that manage to auto-launch anyway so he researched how those work. It turns out that they have two partitions, one is formatted as a CDFS which looks like a CD-ROM to Windows and allows auto-launch. He used this method of partitioning a USB stick, storing the ROMs on the mass storage partition and the emulator and the CDFS partition. To finish the hack he cracked open the controller and found room for a USB hub and the PCB from the thumb drive.

If you still have cartridges lying around you can pull the ROMs off of them over USB.

Hand Placing Flash Die To Make USB Drives

SONY DSC

It’s a stretch to call this one a hack, but USB thumb drives are around us constantly and we always assumed that the boards inside were machine populated (like with a pick and place machine). [Bunnie] tells us otherwise. He recently had the chance to tour a factory where USB flash drives are made.

The image above shows a worker populating a set of boards with the flash memory dies. The waffle-grid to the right holds the dies. Each is a tiny glint of a component. The worker is not in a clean room, and is using a bamboo tool to pick up the pieces. [Bunnie] explains that he’s seen the tools before but doesn’t fully comprehend how they work. He figures that the hand-cut manipulator has just the right amount of grab to pick up the die, but will also release it when it touches down on the dot of glue applied to the landing zone on the board.

If you’re into this sort of thing you should check out the PCB factory tour we saw a couple of years back. The article link is dead but the embedded tour video still works.

[Thanks pl]

OTM-02 Is A 3D Printed Wristwatch

3d-printed-wristwatch

We love looking at roll-your-own wristwatch projects. Getting a project small enough to carry around on your wrist is a real challenge. But we think the OTM-02 wristwatch really hit the form factor right on the mark.

OTM stands for Open source Time Machine. It’s the work of [Hairy Kiwi] and he managed to bring the guts of the watch in at a thickness between 6.5 and 7mm. That includes the LCD, PCB, piezo diaphragm, and the battery. The PCB itself is a four-layer board built on 1mm thick substrate. It’s running an EFM32 (ARM) microcontroller which comes with hardware USB support. The little door sitting open on the side of the 3D printed enclosure provides access to the micro USB connector which can be used to charge the 150 mAh battery inside. That may not sound like much juice, but if you set the display to show minutes only [Hairy] calculates a battery life approaching 175 days. If you just have to have the seconds displayed you can expect about two weeks between charges.

Like the name says, this project is Open Source.

[Thanks Liam]