|
|
Wiki > Main > DellDJPort (compare)
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Difference: DellDJPort (r20 vs. r19)Rockbox port to the Dell Digital Jukebox (Dell DJ) SeriesAbout the Dell Digital JukeboxThe Dell Digital Jukebox (Dell DJ) is a DAP released by Dell Computer, using technology OEMed from Creative Labs. The internals are mostly taken from Creative's NOMAD/ZEN line of DAPs, which minor internal changes and features such as FM radio removed. The Dell DJ uses the MTP protocol for communicating with a PC. Linux users may have to download libmtp in order to access the device. Gnomad (http://www.gnomad2.sourceforge.net) supports the Dell DJ. Current StatusNo work has been done yet on this port, as it is currently in a state of research. I am looking for information about the hardware used inside the system, and work is being done to see how the firmware is structured and stored on this device. I only own a Generation 1 Dell DJ. If anyone has information regarding the Pocket DJ or Generation 2 (or any yummy tidbits of information!), feel free to contact me (RobertMenes), or add it to this wiki page. Please note that the DJ Ditty may not be a feasible port, and I am not considering it at this time. There's a forum topic thread here: http://forums.rockbox.org/index.php?topic=11368.0 Hardware SummaryThis list is still incomplete at this moment. More info will be added as I find it. The main components are as follows:
The Dell DJ uses 1.8" Hitachi TravelStar hard drives for storage. The Generation 1 models used both 15GB and 20GB drives.
Firmware UpdatesDell offers firmware updates for the DJ on their site. We need to examine how the firmware upgrade process is performed. The updates are only for Windows 2000/XP. Firmware Reversing The term firmware is often used to refer to the entire package of software and data, which is collectively stored in a single file (nk.bin or rk.bin) contained in the firmware updater application. However, to avoid confusion I suggest using firmware when talking about the software only and firmware archive when talking about the entire collection. Extracting the Firmware Archive from the UpdaterAs mentioned, the firmware archive is stored within the firmware updater application and extracted during updating. The firmware archive is compressed using zlib and xored with a permuted ascii key. The chunk of data is prefixed with a 32-bit word, which holds the length of the chunk. To extract the archive manually, you first need to obtain the ascii key, then permute it as follows:
for (int i = 0; i < strlen(key); i++)
key[i] = (key[i] - 1) | 0x80;
then you need to xor the chunk with the permuted key and finally inflate it using zlib. The attached zenfirm.rar is a utility for extracting the firmware archive automatically. It comes pre-compiled, with the source code included. Firmware Archive StructureThe archive is split into entries consisting of a 32-bit word name and 32-bit word size, followed by the entry data:
struct FW_ENTRY {
DWORD Name;
DWORD Length;
BYTE Data[Length];
};
The first FW_ENTRY in the archive is the root entry, called CIFF, which embodies all other entries. The first child node of CIFF is CINF which contains a unicode model name string. FRESCUE StructureThe FRESCUE file starts off with a header consisting of two 32-bits words, a tag and a size, followed by the data:
struct R_HEADER {
DWORD Tag;
DWORD Length;
BYTE Data[Length];
};
The Tag is always CODE. The Data starts off with one 32-bit word whose purpose is unknown at this point. Following is an array of section objects, which specifies where in memory to read the contained section data:
struct R_SECTION {
DWORD Address;
DWORD Length;
DWORD Unknown;
BYTE Data[Length];
};
The Address specifies the physical address which the data will be written to. This array continues till the end of the file.
struct TMS320C55x_ISR {
BYTE Flags;
DWORD ISR : 24;
BYTE Filler[4];
};
The Flags controls the operating behaviour when performing an interrupt. The ISR is a 24-bit address of the ISR handler. Rescue ModeI came across this when I first got my Dell DJ. If the hard drive has failed or is not connected, the DJ will enter "Rescue Mode", where you can attempt to either format the drive, or perform a firmware update. This Rescue Mode was carried across almost all of the Creative devices, most of which have a similar mode on the devices. Images(Scans of the PCB and components to come.) ArchOpenArchOpen (http://www.archopen.org) has code running on the TMS320 family of CPUs, and may prove useful in research. LinksFootnotes(1) I'd like to get a voltage readout so we can have a precise number of the mAh measurement.
r22 - 14 Oct 2008 - 19:23:00 - RobertMenes
Revision r20 - 15 Jan 2008 - 02:44 - RobertMenesRevision r19 - 16 Nov 2007 - 19:29 - RobertMenes Copyright © by the contributing authors.
|