Don’t Just Go Sticking That Anywhere: Protect the Precious With a USB Wrapper

Oooh, look, a public charging station. Should you trust it? You might get juice jacked. Oh wait, you’ve got a USB Wrapper designed by [Scasagrande] to deny access to your datas.

This project was inspired by the USB Condom, but the problem with those is that they completely cut out the data lines and limit the charge rate to USB 2.0 (500mA). The data lines are used to communicate information about the charger’s power sourcing capabilities to the device. Many manufacturers short D+ and D- together, but Apple applies specific voltages to those lines.

[Scasagrande]‘s USB Wrapper gives you options. You can set it to Dedicated Charging Port, Sony, Open Circuit, or Apple. The super-cool part of this hack is for you Apple fanboys. The bottom slider lets you emulate any Apple charger and use any USB cube (including one you may have made) as long as you have that funny cable in your messenger bag.  The hardware is open source and available at [Scasagrande]‘s repo.

Make the jump to see [Scasagrande]‘s nicely detailed video about the project.

[Read more...]

USB On The ATtiny10

tiny10

Atmel’s ATtiny10 is their smallest microcontroller in terms of physical size – it’s an SOT-23-6 package, or about the same size as surface mount transistors. The hardware inside this extremely bare-bones; three I/O lines, 1kB of Flash, 32 bytes of RAM, and a reduced AVR core with 16 registers instead of 32. With such a minimal feature set, you would think the only thing this micro would be good for is blinking a LED. You’d be right, but [cpldcpu] can blink a LED with the ‘tiny10 over USB.

The V-USB interface usually requires about 1.5kB of Flash in its most minimal implementation, and uses 50 bytes of RAM. This just wouldn’t do for the ‘tiny10, and although [cpldcpu] is working on a smaller, interrupt-free V-USB, there were still some hurdles to overcome.

The biggest issue with putting code on the ‘tiny10 is its reduced AVR core – on the ‘big’ 32-register core, direct memory access is two words. On the ’10, it’s only one word. AVR-GCC doesn’t know this, and no one at Atmel seems to care. [cpldcpu] worked around this problem using defines, and further reduced the code size by completely gutting V-USB and putting it in the main loop.

It’s not much, but now [cpldcpu] can blink an LED with a ‘tiny10 over USB. If you’re wondering, 96.4% of the Flash and 93.8% of the SRAM was used for this project.

USB-ify your Old Cell Phone Chargers

phoneChargerUSBd

If you’re like us, you probably have a box (or more) of wall warts lurking in a closet or on a shelf somewhere. Depending on how long you’ve been collecting cell phones, that box is likely overflowing with 5V chargers: all with different connectors. Bring them back to life by doing what [Martin Melchior] did: chop off the ends and solder on a bunch of USB jacks.

You’ll want to use chargers rated for at least 500mA (if not 1A) for this project, or you may be wasting your time considering how much current devices pull these days. Get your polarity right, solder on a USB jack, and you’re finished. Sure, it’s a no-brainer kind of project, but it can clean out some of your closet and give you a charging station for every room of your home and the office. [Martin] glued the USB jack directly onto the adapters, so there are no tangled cords to worry about. iPhone users will need to do the usual kungfu if you want your Apple device to charge.

Interrupt Free V-USB

resync

[Tim's] new version of Micronucleus, Micronucleus 2.0, improves upon V-USB by removing the need for interrupts. The original Micronucleus was a very small implementation of V-USB that took up only 2KB. Removing the need for interrupts is a big leap forward for V-USB.

For those of you that do not know, “V-USB is a software-only implementation of a low-speed USB device for Atmel’s AVR® microcontrollers, making it possible to build USB hardware with almost any AVR® microcontroller, not requiring any additional chip.” One tricky aspect of using V-USB is that the bootloader requires interrupts, which can lead to messy problems within the user program. By removing the need for interrupts, Micronucleus 2.0 reduces the complexity of the bootloader by removing the need to patch the interrupt vector for the user program.

With the added benefit of  speeding up the V-USB data transmission, Micronucleus 2.0 is very exciting for those minimal embedded platforms based on V-USB. Go ahead and try out Micronucleus 2.0! Leave a comment and let us know what you think.

USB Keyboard And Mouse For The PS4

pcb

If you’d like to play BattleCallSpaceMarine on the Playstation 4 with a keyboard and mouse – and have an unfair advantage over everyone else playing on a console – you’d normally be out of luck. Sony implemented a fair bit of software to make sure only officially licensed controllers are able to talk to the console. It took a while, but [Frank Zhao] has figured out why keyboard and mouse doesn’t work on PS4, and created a device to enable these superior input devices.

Sony engineers decided – or were told – that the PS4 shouldn’t be able to connect to any old USB device. To that end, they made the console issue challenges to a DualShock controller to make sure the official controller is always connected over Bluetooth.

[Frank]‘s device solves this problem by taking the USB output from a keyboard and mouse, doing the CRC calculations, and sending them out over Bluetooth. Because the PS4 constantly issues challenges and responses of the authentication procedure, a real DualShock controller needs to be connected to the device at all times. Still, if you want a keyboard and mouse on the PS4, this is the way to do it.

All the sources and layouts are up on [Frank]‘s github where you’re free to create your own. This isn’t a finished product quite yet; [Frank] still needs to do a redesign of the circuit. Judging from the response of his earlier attempt at keyboards and mice on the PS4, though, this may be a successful product in the works.

Software USB On The STM8

STM8

Thanks to V-USB, software-based USB is all the rage now, with a lot of uses for very small and low power microcontrollers.[ZiB] wondered if it would be possible to implement a USB controller on the STM8 microcontroller (Google translation) in software and succeeded.

The STM8 is a bit of a change from the usual 8-bit micros we see like AVRs and PICs. [ZiB] chose the STM8S103F3, although any chip in the STM8 family will work with this project when a 12MHz crystal is attached.

The build began by generating USB signals with the help of a whole lot of NOPs. This code doesn’t take up much space – only 300 bytes, and the receiving code (Google translation) is similarly sized.

The code isn’t quite there yet, but [ZiB] has proven a software-based USB implementation on the STM8 is possible. All the code is available for download (comments in Russian) and a video demoing the project available below. If anyone cares to translate this project to English, we’ll post a link to your work here.

[Read more...]

Final Key : A Mooltipass-like Device

Since the Hackaday community started working on our offline password keeper, Mooltipass, we’ve received several similar projects in our tips line. The Final Key may be the most professional looking one yet. Similarly to the Mooltipass, it is based on an Atmel ATMega32U4 but only includes one button and one LED, all enclosed in a 3D printed case.

The Final Key is connected to the host computer via USB and is enumerated as a composite Communication Device / HID Keyboard, requiring windows-based devices to install drivers. AES-256 encrypted passwords are stored on the device and can only be accessed once the button has been pressed and the correct 256 bit password has been presented through the command line interface. Credentials management and access is also done through the latter. Unfortunately, the Arduino source code can’t be found on [cyberstalker]‘s website, so if you see interesting features that you would like to be integrated in Mooltipass you may send us a message to our Google Group.

Follow

Get every new post delivered to your Inbox.

Join 96,407 other followers