Hacklet 79 – USB Projects

Universal Serial Bus was created to simplify interconnecting computers and peripherals. First released in 1996, hackers and makers were slow to accept this strange new protocol. Parallel and serial ports were simpler, worked great, and had decades of hacking with thousands of projects behind them. As the new standard caught on in the mainstream, RS-232 and parallel ports started disappearing. “Legacy free” PC’s became the norm. Hackers, Makers, and Engineers had no choice but to jump on the bandwagon, which they did with great gusto. Today everything has a USB port. From 8 bit microcontrollers to cell phones to children’s toys. This week’s Hacklet is about some of the best USB projects on Hackaday.io!

two partsWe start with [Michael Mogenson] and Two Component USB Temperature Data Logger, which may be the simplest USB device ever made. [Michael] isn’t kidding. This data logger consists of just a Microchip PIC16F1455 microcontroller and a USB connector. Microchip’s datasheet calls for a capacitor to smooth out power, but [Michael] made it work without the extra part. He used M-Stack by Signal 11 to implement the USB stack. Once connected to a PC, the PIC enumerates as a serial port device. It then sends its die temperature of the PIC once per second. It could do more, but that would probably require adding a few more components!

tester1Next up is [davedarko] with USB cable tester. Dave recently spent some time installing USB RFID readers. These devices were only a few meters away from the computer controlling them. Even so, the power and USB data cables had to run through pipes and in some cases under water. It wasn’t fun troubleshooting a device to find that it was a shorted USB cable causing the problem. [Dave’s] solution is a tiny coin cell powered board that tests each of the 4 wires in a standard USB 2.0 cable. The board runs on an ATtiny45 microcontroller. [Dave’s] current iteration has footprints for mini and micro USB connectors, along with the standard USB-A.


tester2[MobileWill] has a USB Tester of his own. This USB tester checks current consumption and rail voltage. It does this by connecting in-line with the device under test. It’s perfect for troubleshooting why your PC’s USB port goes into over-current protection every time you plug in your device. The tester is modular – you can use the base board with your own multimeter, or grab [Will’s] tester backpack and see the results right on the built-in OLED display. USB Tester is [Will’s] entry in the 2015 Hackaday Prize.


tbdFinally, we have [ajlitt] with Tiny Bit Dingus (TBD). TBD is a USB interface to 6 wires. Think of it as a tiny version of the bus pirate. This lilliputian board holds a Freescale KL27Z ARM processor, which has more than enough power to handle things like I2C, SPI, PWM, or just about any other way to send data or wiggle wires. [Ajlitt] started this project as an excuse to learn KiCAD and gain some experience with surface mount solder stencils. The result is an absolutely tiny board that is all but lost in a USB socket. Programming is handled with the mbed library, though you can always use Freescale’s native tools. Flashing code on the TBD is easy with kut, a chrome browser plugin.

If you want to see more USB projects, check out our new USB projects list. Did I miss your project? Don’t be shy, just drop me a message on Hackaday.io. That’s it for this week’s Hacklet, As always, see you next week. Same hack time, same hack channel, bringing you the best of Hackaday.io!

Reverse Engineering how a USB Switch Switches

[Daniel] found himself with a need to connect a single USB device to two Linux servers. After searching around, he managed to find an inexpensive USB switch designed to do just that. He noticed that the product description mentioned nothing about Linux support, but he figured it couldn’t be that hard to make it work.

[Daniel] started by plugging the device into a Windows PC for testing. Windows detected the device and installed an HID driver automatically.  The next step was to install the control software on the Windows system. This provided [Daniel] with a tray icon and a “switch” function. Clicking this button disconnected the HID device from the Windows PC and connected the actual USB device on the other side of the USB switch. The second computer would now have access to the HID device instead.

[Daniel] fired up a program called SnoopyPro. This software is used to inspect USB traffic. [Daniel] noticed that a single message repeated itself until he pressed the “switch” button. At that time, a final message was sent and the HID device disconnected.

Now it was time to get cracking on Linux. [Daniel] hooked up the switch to a Linux system and configured a udev rule to ensure that it always showed up as /dev/usbswitch. He then wrote a python script to write the captured data to the usbswitch device. It was that simple. The device switched over as expected. So much for having no Linux support!

Chameleon Emulates Contactless Smart Cards


Researchers at Ruhr University of Bochum in Germany have been busy working with RFID and related devices for quite some time now. They call the fruit of their labors Chameleon, a versatile Contactless Smart Card Emulator. Contactless Smart Cards are RFID style devices that also contain a smart card style memory. These cards are often used for payment, replacing mag strip style credit cards. Philips MIFARE Classic cards are a common example of contactless smart cards. The Chameleon is set up to emulate any number of cards using the common 13.56MHz frequency band. Adding a new card is as simple as loading up a new CODEC  and application to the firmware. Currently Chameleon can emulate MIFARE cards using the ISO14443A.

The Chameleon is completely open source, and can be built for around $25 USD. The heart of the system is an Atmel ATxmega192A3 microcontroller. The 192 is a great microcontroller for this task because it contains hardware accelerators for both DES and AES-128. An FTDI USB interface chip is used to provide an optional communication link between a host computer and the ATxmega. The link can be used for debugging, as well as manipulating data in real-time. A host PC is not necessary for use though – the Chameleon will operate just fine as a stand alone unit. We definitely like this project – though we’re going to be doubling down on the shielding in our RF blocking wallets.

Classic 80’s Stereo Receiver Enjoys a Second Life as RadioduinoWRT

radio2[Raffael] had an old Broken Yamaha natural sound receiver lying around. Rather than throw it out, he built himself a slick web radio. He calls it RadioduinoWRT. [Raffael] started by removing all the internals – though he kept the front panel controls.  He then added an Arduino Mega to handle the front panel controls, including a 16×2 character LCD module. The Arduino also takes commands via IR remote. An enc28j60 Ethernet module allows the Arduino to communicate with a the brains of the operation, a TL-WR703N mini router.

A micro USB hub expands the single USB port on the WR703, allowing both a USB sound card and a 4 gig USB stick to be mounted. We’d like to add that the TL-WR703 is a must in this application – the amazon link [Rafael] provides brings up the TL-WR702 as a top link. Only the TL-WR703 has a USB host connection.

The real magic is in [Raffael’s] software setup. The WR703 is running OpenWRT.  He added modules for the USB sound card, as well as expanding the file system onto the USB stick. Once that was complete [Raffael] added Music Player Daemon (MPD) and MPC, a console app to drive MPD. Lighttpd, a light web server provides an interface for the Arduino as well as a web front end to the entire radio.All this allows [Raffael] to control his radio in several ways. He can log in via any web browser on his network. He can use the front panel controls. He can use an IR remote. Since he is running MPD, any client (there are literally hundreds out there) will also drive the radio.

While a low-end USB sound card in a home stereo application does make our inner audiophile cringe a bit, the quality does seem to be pretty good. [Rafael’s] design would make it simple to swap out a higher quality USB sound card if the need arises.

Continue reading “Classic 80’s Stereo Receiver Enjoys a Second Life as RadioduinoWRT”