Wiki > Main > NJB3Firmware (compare)
Difference: NJB3Firmware (r3 vs. r2)
The majority of this information is from Linus Wallej's Introduction to libnjb hacking guide. Linus works on libMTP and libnjb.
It looks like everything on here is in UTF-16, so that explains the null bytes in between every other significant byte - Nomadness.net:Changing Zen Xtra Firmware Text
Additional info can be found on Nomadness.net:NJB3 File system
The internal format of the database(s) used to store tracks, files and playlists on the series 3 devices is actually known: when listing the files on the device, an odd file with a 16-byte serial number appears in the directory. This file actually contains the file database so it can be examined. (We don't know why it's there, perhaps for debugging?)
A typical beginning of the file will look like this:
We see that the database use a mixture of little- and big-endian values, whereas the bytes delivered over the USB bus are actually all big-endian. Thus we can conclude that the processor is little-endian and will use little-endian words internally for it's databases, whereas the outside communication is defined to be big-endian only. The metadata retrieved with the USB commands is very close to the internal database format, in fact the only real modification is that it corrects all the endianness-troubles.
The database is finally terminated with two consecutive 0x0000 0x0000 words. These are also returned when reading out the database.
Further, people who dumped out the harddisk of a Zen Xtra player see a file allocation table (in something called "minifs", a miniature file system) on the disk, containing these eight files (with some variations):
It's a rough guess that "attrs.db" contain the metadata for all tracks, "fhandle.db" contains the metadata for files, and "btree.db" contain the playlists. The following is a dump of the firmware index for a Zen Xtra (done using the fwupgrade program that comes with libnjb with no jukebox connected):
Firmware CIFF image, 001e5c0c bytes:
We can see that the jukebox2.jrs, unicjkl.nft and kanji.dct files are actually part of the firmware. The "H" prefixing them in the firmware most likely tell that this is a file that shall be stored in the file system, not programmed to the flash memory or stored in the program area of the hard disk.
The .nft files are probably fonts, the .dct files "dictionaries", given the obvious chinese terms "kanji" (writing system) and "cjk" (chinese glyphs).
A recent MTP firmware extracted from a Zen Touch FW 2.10.05 have these files:
It seems the operating system has been quite rewritten and the database split (normalized?) in the recent MTP firmwares.
.jbm is a proprietary bitmap format used by at least the Zen Xtra and Touch, if not all Creative players. A valid BMP header will start at the 2nd byte.
r3 - 02 Jan 2008 - 11:35:29 - MaurusCuelenaereRevision r3 - 02 Jan 2008 - 11:35 - MaurusCuelenaere
Revision r2 - 24 Jun 2007 - 11:37 - WessamBaghdadi
Copyright © by the contributing authors.