- 1 Project Summary
- 2 Project Goals
- 3 Project Status and Issues
- 4 Tutorials/How To's
- 5 Source Code
- 6 Development Scripts and Programs
- 7 Technical Information
- 8 Discussion
- 9 Graphics Hardware
- 10 Chip List
- 11 USB
- 12 Batteries and Recharger Station
- 13 UART Adapter Info
- 14 Cartridges
- 15 SSP / SPI Controller
- 16 File System Info
The Didj was a toy produced by Leapfrog marketed for educational games for children aged 5-10.
Didj was end-of-lifed by Leapfrog in mid-2010. It has been replaced by the Leapster Explorer.
Although Didj has a proprietary graphical front end, it runs a generic Linux distribution on an Arm based processor. Soon after the Didj's release, it was discovered that the cartridge port contained pins that allowed for serial console access with root privileges. After this discovery, work began to modify the Didj into an accessible emulation device.
Since development began, much has been accomplished, including:
- Discovered that the Arm chip is the same as on the GP2X Wiz, only at a lower clock speed.
- Created cartridges that support SD cards
- Accessed the UART features in the cartridge slot
Here is a place to list all the the goals or wants that we have for this project.
- GP2x / GP2X_Wiz
- Port Libraries
- Flash Player
- Emulation (Wiz Emulators)
- Gameboy BW/Color/Advanced
- Atari 2600
- Custom or Modified
- Customizable Themes
- Custom or Modified
- Homebrew Games
- Overclock Processor
Project Status and Issues
Booting From External Sources
- Boot Didj from UART Connection - Linux
- Boot Didj from UART Connection - Windows
- Booting an image over JTAG - Linux
- Creating a Kernel Build Scratchbox
- Setting up a Cross Compiler Build Environment and Basic Usage
- An alternate cross compiler, built with crosstool-NG
Flashing the Didj
- Updating Bootloader/Firmware over USB
- U-Boot NAND Utilities and Bootloader Update
- U-Boot Nand Utilities and Kernel/File System Update
- Full Recovery Steps Using U-Boot
Hardware Adding, Hacking
Mounting Didj USB Drive
- Networking HOWTO - Enabling Networking, telnetd, and Dropbear (via the USB Gadget Ethernet Driver)
- Route your Didj: Connecting your Didj to the wider Internet through routing
- Bridge your Didj: Connecting your Didj to the wider Internet using bridging
- Playing MP3 network streams and files
- Common Commands Reference
- Didj Stop Start Up Junk How to Remove All the Kid's Game Files
- Replacing the default App Menu from the default App Menu How to disable the default AppManager from a Brio app.
- Corbin's OpenDidj Linux Kernel Tree
- Claude's OpenDidj Linux Kernel Tree (LF 2008 Source)
Development Scripts and Programs
- LF1000 UART Bootstrap Utility written in Python
- LF1000 UART Bootstrap Utilities based on the OMAP boot utilities from TI
- File:OpenDidjConnect v1.2.zip lock, unlock, eject Didj USB drive from Windows Command Line.
- File:OpenDidjConnect v1.0.tgz lock, unlock, eject Didj USB drive from Linux Command Line.
- Didj Project Forum
- #Didj on Freenode IRC
- Cozybit boasts of their involvment in integrating Linux with the Didj
- Hacking around with the Leapfrog Didj
- Didj Homebrew Forum (Empty?)
- Hackaday Posts
- Resolution: 320x240
- Display Modes: RGBA 565
- MLC: Multi-layer controller provides HW compositing for up to three graphics layers
- One 24-bit 2D layers (no HW accel)
- One 16-bit 3D layer
- One YUV video layer (no HW accel)
- Graphics API OpenGL ES 1.1: A reduced instruction set version of OpenGL for embedded systems. OpenGL is a 3D graphics programming interface. Proprietary interface to Multi- Layer Display controller for 2D RGB and YUV video buffer support. FreeType Font renderer. Theora video codec plays OGG-Theora files.
- OEM branded version of the MagicEyes Pollux VF3520F Datasheet
- Appears to be the 393MHz version of the same processor in the GP2x Wiz
- Marked with:
- "LF-1000" - LF-1000 Specifications
- 1 QImonda HYB25DC25616OCE-5 - 32megabyte sdram Datasheet
- 1 Nanya NT5DS16M16CS-5T - 32megabyte sdram (Datasheet)
- 1 Micron MT29F2G08AAC - 256megabyte nand flash 8-bit Datasheet
- 1 7s08f -2 input or gate connected to WP on flash
- 1 Cirrus Logic CS43L22 - audio codec Datasheet
- 1 Giantplus GPM758A0 - 320x240 TFT Pinouts and Specifications
- 1 Intersil ISL7665SACBAZ - Programmable Over/Under Voltage Detector Datasheet
- 3 TI TPS62050 - Adjustable Step-Down Converter Datasheet
- 12MHz Crystal
- For usb
- 27MHz Crystal
- For the Processor*
- Barrel Crystal
- For the RTC 32.768KHz*
- 12MHz Crystal
- JTAG on pads
- TP8 - VREF
- TP9 - nTRST
- TP10 - TDI
- TP11 - TMS
- TP12 - TCK
- TP13 - TDO
- TP14 - GND
For details on mapping these pins to a standard 20-pin ARM JTAG adapter, see http://www.jtagtest.com/pinouts/arm20.
There is info of a CS9800 Ethernet controller used on the development board
* See the processor datasheet page 20.
USB 2.0 Device Interface
- Pins USB_DP and USB_DM on the Processor
- The Usb 2.0 Device port is what is used on the Didj to connect to the PC.
USB 1.1 HOST Interface
- Pins UP and UM on the Processor
- The USB1.1 Host pins must be pulled down through 15Kohm resistor whether it is used or not.
- There is no traces to the USB Host pins thus we can not use USB Host
Batteries and Recharger Station
The Didj has two identical battery compartments, the combined collection of batteries are wired in series. Each battery compartment has four terminals:
- Term 1 - Battery +
- Term 2 - Temp Sensor + Wired to Pollux pins K20 / GPIOA 28 and K21 / GPIOA 29
- Term 3 - Temp Sensor -
- Term 4 - Battery -
In addition to the terminals facing the Didj's contacts, there are another set of contacts facing away from the Didj. These contacts are duplicates used by the charging station. The batteries themselves are NIMH cells, producing around 2.5v per pack when fully charged.
The recharger station contains a battery charge circuit with temperature monitoring. The station also has a pair of contacts that duplicate the 9V dc barrel jack.
UART Adapter Info
A direct serial-line connection won't work with the Didj because the RS-232 spec uses 12v, while the Didj prefers about 3-5v. So you'll need an adapter to communicate to the UART on the Didj.
Manufactured by Sandisk
DJHI stand for "Did Ja Hack It?" Right now you can only buy them fully assembled and tested from JerTechOnline.com
Home Etched Didj Breakout Board
- Easy to make at home (can be made with a radioshack kit and a dremel)
- The board layout was designed in eagle.
- This cartridge locks in just like the real thing.
- It is easy to do just superglue a small piece of FR4 in the corner and dremel a notch out. (see dimensions below)
- You will also need a spacer on the top and bottom and those dimensions are also included.
Hack an Original Cart
- Modify an original cart to have a uart output
- Jumpers (For custom bootloader)
- SD Card (Enabled through the custom bootloader)
- USB through a FTDI chip
- Optional NAND
- Claudes Website
- Claudes Schematic
- Claudes Gerber Files
SD and USB Serial Cart
- Fits (mostly) within the Didj
- Includes an FTDI FT232RL USB-Serial adaptor for Bootloader and Serial Console
- Includes SD card slot
- Includes solder jumpers for custom bootloader
- Open Eagle source files (CC Attribution, Non-Commercial, Share Alike)
- Front and Back PDF
- Eagle files
- BatchPCB public design
- Comments welcome!
- Gerbers haven't been made yet. Please post comments here, or as a message to me.
- I think the design is correct based on Claude's schematic and Awesomenesser's diagrams, but I can't be sure.
- Later, I'll have this produced by BatchPCB, I'll post a link to the public design on that site, if others want boards made.
SSP / SPI Controller
File System Info
- rootfs / rootfs rw
- /dev/root / jffs2 ro
- none /proc proc rw
- sysfs /sys sysfs rw
- /dev/ram0 /tmp tmpfs rw
- /dev/mtdblock1 /flags jffs2 rw,sync,noatime
- /dev/mtdblock2 /mfgdata jffs2 ro,sync,noatime
- /dev/mtdblock10 /Didj vfat rw,noatime,fmask=0022,dmask=0022,codepage=cp437,iocha rset=iso8859-1
- /dev/mtdblock11 /Cart vfat ro,noatime,fmask=0022,dmask=0022,codepage=cp437,iocha rset=iso8859-1
Filesystem Size Mounted on
/dev/mtdblock6 14.0M /
/dev/mtdblock1 896.0k /flags
/dev/mtdblock2 1.0M /mfgdata
/dev/mtdblock9 215.8M /Didj
if at boot you see:
you are using mtd4: 00e00000 00020000 "Linux_RFS0"
you are using mtd6: 00e00000 00020000 "Linux_RFS1"