Difference between revisions of "ACDrive"
(3 intermediate revisions by the same user not shown) | |||
Line 81: | Line 81: | ||
=== Software === |
=== Software === |
||
− | Phatnoise Media Manager is the |
+ | Phatnoise Media Manager is the software provided by Kenwood to create mCD |
− | media. A free software alternative |
+ | media. A free software alternative has been developed and is available here: |
+ | http://phatdb.sourceforge.net |
||
− | here soon. |
||
=== Issues / Enhancements === |
=== Issues / Enhancements === |
||
Line 90: | Line 90: | ||
music navigations system: |
music navigations system: |
||
− | [http://forum.phathack.com/cgi-bin/yabb2/YaBB.pl?num=1147985035] |
+ | [http://forum.phathack.com/cgi-bin/yabb2/YaBB.pl?num=1147985035 http://forum.phathack.com/cgi-bin/yabb2/YaBB.pl?num=1147985035] |
Some of the criticisms include: |
Some of the criticisms include: |
||
1. If you're in album mode and hit next album it takes you to the next album alphabetically, instead of the next album by the artist you're on. |
1. If you're in album mode and hit next album it takes you to the next album alphabetically, instead of the next album by the artist you're on. |
||
+ | 2. Playlists are not alphabetically indexed making navigation difficult. |
||
− | With an understanding of the file format, the reason for |
+ | With an understanding of the file format, the reason for these becomes obvious. |
Albums are sorted alphabetically so that they can be searched using the letter |
Albums are sorted alphabetically so that they can be searched using the letter |
||
search function. The letter search works on an index into the album->track |
search function. The letter search works on an index into the album->track |
||
− | mapping. If |
+ | mapping. If the mapping was not ordered the index would be useless. |
There are two ways to fix this: |
There are two ways to fix this: |
||
− | 1. Sort the albums list by |
+ | 1. Sort the albums list by artist (ie. grouped by artist). This way you could |
letter search an artist, then switch to album mode and use up/down to navigate |
letter search an artist, then switch to album mode and use up/down to navigate |
||
between albums of that artist. This would break the letter search function |
between albums of that artist. This would break the letter search function |
||
− | completely but |
+ | completely but it might be acceptable to some users. |
− | 2. Another possibility is |
+ | 2. Another possibility is to duplicate the albums list completely (make it |
twice as long as the number of tracks). The first half of the list can be |
twice as long as the number of tracks). The first half of the list can be |
||
grouped by artist as in 1. The 'track_id' field of each track would point to |
grouped by artist as in 1. The 'track_id' field of each track would point to |
||
Line 114: | Line 115: | ||
alphabetically. The alpha index would then point into this second half of the |
alphabetically. The alpha index would then point into this second half of the |
||
list. This would allow searching just like 1. but maintain direct letter |
list. This would allow searching just like 1. but maintain direct letter |
||
− | search for album. This has not been tested yet, but I expect it would work |
+ | search for album. This has not been tested yet, but I expect it would work |
+ | since the file format allows the map size (albums_len) to be larger than |
||
+ | total number of tracks (n_tracks). |
||
Furthermore, if option 1. was chosen, the album alpha index would become |
Furthermore, if option 1. was chosen, the album alpha index would become |
||
unused. By swapping 'album' and 'playlist' sections in the mcd.db file, you |
unused. By swapping 'album' and 'playlist' sections in the mcd.db file, you |
||
− | could fix |
+ | could fix problem number 2 (playlists not indexed), by using it to |
index your playlist. The disadvantage is that the headunit display would |
index your playlist. The disadvantage is that the headunit display would |
||
− | + | show 'playlist' while in album mode and vice-versa, though this may be |
|
acceptable for some users. (The voice index file could be swapped so that the |
acceptable for some users. (The voice index file could be swapped so that the |
||
mode announcement is correct). |
mode announcement is correct). |
Latest revision as of 23:55, 11 March 2007
ACDrive
ACDrive (Advanced Codec Drive) is the name used by Kenwood to describe car stereo headunits which can playback enhanced media created by PhatNoise Media Manager with many of the same searching features as PhatBox units.
This wiki page describes the ACDrive system and its hacking potential
Introduction
Kenwood ACDrive headunits can playback media created using PhatNoise Media Manager (PMM). This is often called mCD media. mCD media can include CDROM's, DVD's (for DVD capable units) and USB mass-storage devices (for USB capable devices.
When playing back mCD media you can browse by artist, album, genre and playlist. You can search alphabetically by artist, album and genre (but not playlist). Voice-prompt navigation is also possible. (non-mCD media can only be browsed by folder)
ACDrive headunits can playback mp3, wma and aac files.
Read more about ACDrive/mCD from Kenwood here: [1]
Technical Info
To allow fast navigation, mCD media contains a metadata database in an mcd directory in the root of the device. This is much like the ipod's itunesdb, though considerably simpler.
The MCD media contains (at least) the following files:
/mcd/ /mcd/mcd.db /mcd/mcd.sig /mcd/pkeys2.e /mcd/pkeys2.sig
mcd.db
mcd.db is the song metadata database created by PMM. The structure has been reverse engineered, see mcd.db
pkeys2.e
This appears to be an array of RSA public keys used by the device (see below) for checking signatures of other files (such as mcd.db). pkeys2.e and pkeys2.sig are distributed with PhatNoise and never change. They can also be found on the sample cd distributed with ACDrive head units.
mcd.sig, pkeys2.sig
These are signature files for mcd.db and pkeys2.sig respectively, the signatures are generated in exactly the same way as PhatBox signatures as described in Signature except that the private signing keys are different.
The signing key for mcd.db has been extracted from PMM and can be found in mcdPrivateKey. This allows us to generate valid mcd.db/mcd.sig files for playback by the headunit!
The key used to sign pkeys2.e (and hence bless other signing keys) is not know. It is believed to be held by PhatNoise and not contained within the PMM software.
Other Files
mCD media also contains voice index files for voice navigation under the directories:
/mcd/tts/ /mcd/tts/an /mcd/tts/pr
The files found here are reported by file to be Microsoft ASF. It should be possible create these files with something like festival.
Software
Phatnoise Media Manager is the software provided by Kenwood to create mCD media. A free software alternative has been developed and is available here: http://phatdb.sourceforge.net
Issues / Enhancements
The following forum thread mentions some current shortcomings of the ACDrive music navigations system:
http://forum.phathack.com/cgi-bin/yabb2/YaBB.pl?num=1147985035
Some of the criticisms include:
1. If you're in album mode and hit next album it takes you to the next album alphabetically, instead of the next album by the artist you're on. 2. Playlists are not alphabetically indexed making navigation difficult.
With an understanding of the file format, the reason for these becomes obvious. Albums are sorted alphabetically so that they can be searched using the letter search function. The letter search works on an index into the album->track mapping. If the mapping was not ordered the index would be useless.
There are two ways to fix this:
1. Sort the albums list by artist (ie. grouped by artist). This way you could letter search an artist, then switch to album mode and use up/down to navigate between albums of that artist. This would break the letter search function completely but it might be acceptable to some users.
2. Another possibility is to duplicate the albums list completely (make it twice as long as the number of tracks). The first half of the list can be grouped by artist as in 1. The 'track_id' field of each track would point to this (first) album entry. The second half of the list would be sorted alphabetically. The alpha index would then point into this second half of the list. This would allow searching just like 1. but maintain direct letter search for album. This has not been tested yet, but I expect it would work since the file format allows the map size (albums_len) to be larger than total number of tracks (n_tracks).
Furthermore, if option 1. was chosen, the album alpha index would become unused. By swapping 'album' and 'playlist' sections in the mcd.db file, you could fix problem number 2 (playlists not indexed), by using it to index your playlist. The disadvantage is that the headunit display would show 'playlist' while in album mode and vice-versa, though this may be acceptable for some users. (The voice index file could be swapped so that the mode announcement is correct).