This hack will allow user-written software to be run on a JuiceBox media player toy. It works by tricking the built-in picture viewer application to run code contained in a .JBP picture file that starts with a specific 8-byte sequence. Normal operation of the JuiceBox is not affected, other than the 1-out-of-18-quintillion chance of a real picture containing the trigger sequence.

You will need the following items and equipment:

  • A JuiceBox, either 2MB or 8MB. (To tell the difference: only 2MB units have a power-on LED, located above and to the right of the REWIND button.) Note that an 8MB unit does not necessarily allow larger programs to be run, the top 6MB normally just goes to waste.
  • A SD/MMC card adaptor for the JuiceBox, either the official one that came with the MP3 Starter Kit, or a homemade one as numerous people have built; a SD or MMC card of no more than 512MB capacity; and some way of copying files onto that card from a computer. Basically, you have to be able to use the built-in picture viewer application.
  • A soldering iron with a fine tip.
  • At least some knowledge of how to USE that soldering iron - I wouldn't recommend this as your first soldering project. You will need to be able to solder pins that are spaced 1/20" apart without bridging them.
  • Solder, preferrably of small diameter - I use 0.020" solder for fine work like this.
  • Tweezers and/or needle-nose pliers.
  • Wire cutters.
  • Small Phillips and flat-tip screwdrivers.
  • Electrical tape.
  • A magnifying glass would be very helpful.
  • Modding your JuiceBox to add a serial port is necessary for some Pixecutor programs (such as the one that gives you shell access), but there are still things you can do without a serial port.
  • A PIC microcontroller, specifically a PIC12F508-I/SN, programmed with the Pixecutor code found here: http://www.elinux.org/wiki/JuiceBoxPixecutor (try http://moin.elinux.org/wiki/JuiceBoxPixecutor if that site doesn't have the info). This is not something you're likely to be able to do yourself; even if you had a PIC programmer, you probably don't have the adapter needed to handle a SOIC-8 chip (and those aren't exactly cheap). I now sell programmed chips for those of you who aren't equipped to do it yourself. If anybody else out there wants to offer preprogrammed chips at a reasonable price, I'd be happy to link to you.

(So why didn't I use a DIP-8 chip that is compatible with readily-available PIC programmers? Two reasons: First, only a SOIC chip has the right pin spacing to sit directly on top of the pads it needs to connect to - a DIP chip would be a lot more work to install. Second, there simply isn't enough room available for a DIP - you'd have to cut a big hole into the battery compartment, forcing AC adaptor use only. If you weren't planning on ever using battery power anyway, and have a PIC programmer, feel free to use a DIP part (PIC12F508-I/P). The picture notes on step 2 should contain all the info you need for wiring it up.)

Step 1: Open case, remove foil

Start by removing the four screws in the corners of the back cover. You don't need to remove the screw that holds the battery cover in place.

Carefully separate the two halves of the case - keep in mind that they're still connected together by wires at the bottom edge. (You could disconnect these wires and entirely separate the halves, but that's probably not worth the extra effort.) Make sure you find the little piece of plastic that just flew across the room - it's needed to hold the flip-up screen cover in place.

Position the unit as shown - LCD screen face down, cartridge slot to the right. All subsequent steps will show the unit in this same orientation.

You need to peel away at least part of the shielding foil on the back of the circuit board, starting in the corner between the volume control and headphone jack. Make sure you get the underlying layer of clear plastic, too, not just the copper foil. Make sure there are no slivers of foil left behind that could short something out.
Would it be possible to do this with a Pixster?
As far as I know, there isn't any sort of accessory for the Pixter that lets it use external storage cards, which is a fundamental requirement for what Pixecutor does. The minimal amount of hardware that would let you run your own code on a Pixter would probably be an entire cartridge with ROM and a storage card interface, a much more complicated project than the Pixecutor.
can you run Mac OSX ????????
If you're asking if the ARM toolchain can be run under Mac OS X, the answer is yes - in fact, all of the demo programs I supplied were compiled on a Mac. If you're asking if Mac OS X could be run on the JuiceBox, well... the concept is good for a laugh, at least.
This is an excellent instructable. I vaguely followed the juicebox dev process on www.linux-hacker.net, and am very pleased to see this project and instructable in the light of day. Excellent work, especially in light on how much work it took to get to this point!
Went to your page JuiceBoxPixecutor but its blank, any probs with this ?
Looks like that wiki got restored from an old backup. Hopefully they'll be able to restore everything eventually, but at the moment the best I can suggest is that you do a Google search for {{{pixecutor site:elinux.org}}} and click the &quot;Cached&quot; links for each page.<br/>
Nice source code; well commented/etc. Sorta unusual for this sort of project. (Good Programmer!) I wonder if a lot more can be done with this sort of self-contained "jtag bug." Desperately in need of those demo programs, though. Should be compatible (except perhaps physically) with jtag debugging if you connect a spdt switch from the reset pin to GND/VCC. Connected to GND, the chip will stay reset, with all the pins tri-stated.
Sorry about the delay in getting the demo programs up - there was a random flakiness in some of them that I wanted to be absolutely sure was gone before making them public. Anyway, they're now available <a rel="nofollow" href="http://www.elinux.org/wiki/JuiceBoxPixecutor">here</a>.<br/><br/>Holding the PIC in reset would indeed allow it to stay out of the way of a JTAG debugger. However, there's no general way to get the JTAG debugger to tri-state <em>its</em> outputs, to get out of the PIC's way. You'd probably have to physically disconnect and reconnect the JTAG pod every time you ran the program.<br/>
Your pictures are good. Not enough of them though. It would be nice to see the product you're working with; Without having to google for it. I would say maybe 2% of us know what the product is at all... (I'm not one of them.) It would also be nice to see your finished project in operation. That would give us the idea that it actually worked.

About This Instructable




More by jasonharper:Pixecutor - run software on a Mattel JuiceBox 
Add instructable to: