Nano 5g support.

View: New views
6 Messages — Rating Filter:   Alert me  

Nano 5g support.

by Peter Serwylo :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

G'day guys,

I've just picked myself up a nice shiny new Nano 5g
( http://en.wikipedia.org/wiki/IPod_Nano#Fifth_generation ). I was very
disapointed to see that it appears Apple has changed the DB format.

When I connect to rhythmbox for example (which uses libgpod for iPod
syncing), it happily syncs my music to the iPod. This music can also be
read by other music players using libgpod, but the iPod itself fails to
notice them.

Has anyone else had any experience with these?

I had a peak around the contents once I synced from iTunes on a Windows
VM, and the news looks good. The data for playlists/artists/songs/etc is
stored in an sqlite3 database! What I would like to do is work on a
feature which will connect to the Sqlite DB instead of the crazy
itunesdb file if a newer iPod is specified, so that libgpod can access
the new Nano's.

Does this sound like something which could be done?
I reckon there will be much less reverse engineering required, because
it is quite easy to have a browse around the sqlite databases and see
what DDL they used to create the tables, and look at what type of values
are stored in them.

If anyone wants the database files, I'm happy to upload them somewhere.

Any thoughts?

cheers,
Pete.


------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
Gtkpod-devel mailing list
Gtkpod-devel@...
https://lists.sourceforge.net/lists/listinfo/gtkpod-devel

Re: Nano 5g support.

by Chris Frary :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I have the new Ipod 7g (160gb) and am getting the exact same results.  Everything happily syncs with libgpod but Ipod doesn't recognise that the Ipod has songs on it.  Hooking back into Itunes, it requires a restore?


Peter Serwylo wrote:
G'day guys,

I've just picked myself up a nice shiny new Nano 5g
( http://en.wikipedia.org/wiki/IPod_Nano#Fifth_generation ). I was very
disapointed to see that it appears Apple has changed the DB format.

When I connect to rhythmbox for example (which uses libgpod for iPod
syncing), it happily syncs my music to the iPod. This music can also be
read by other music players using libgpod, but the iPod itself fails to
notice them.

Has anyone else had any experience with these?

I had a peak around the contents once I synced from iTunes on a Windows
VM, and the news looks good. The data for playlists/artists/songs/etc is
stored in an sqlite3 database! What I would like to do is work on a
feature which will connect to the Sqlite DB instead of the crazy
itunesdb file if a newer iPod is specified, so that libgpod can access
the new Nano's.

Does this sound like something which could be done?
I reckon there will be much less reverse engineering required, because
it is quite easy to have a browse around the sqlite databases and see
what DDL they used to create the tables, and look at what type of values
are stored in them.

If anyone wants the database files, I'm happy to upload them somewhere.

Any thoughts?

cheers,
Pete.


------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
Gtkpod-devel mailing list
Gtkpod-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gtkpod-devel

Re: Nano 5g support.

by Peter Serwylo :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

G'day Christophe,

On Fri, 2009-09-25 at 18:50 +0200, Christophe Fergeau wrote:

> Hi Peter,
>
> 2009/9/25 Peter Serwylo <peter@...>:
> > Has anyone else had any experience with these?
> >
> > I had a peak around the contents once I synced from iTunes on a Windows
> > VM, and the news looks good. The data for playlists/artists/songs/etc is
> > stored in an sqlite3 database! What I would like to do is work on a
> > feature which will connect to the Sqlite DB instead of the crazy
> > itunesdb file if a newer iPod is specified, so that libgpod can access
> > the new Nano's.
> >
>
> I haven't investigated much yet, but I suspect the way the nano5g
> works is really similar to what is done on the iphone/itouch 3.x.

I imagine that would be the case :)

> The
> iPhone uses these sqlite files to get its data, but they need to be
> signed using the .cbk files, so they are not as easy to modify as it
> seems.

Ah ok, because I found this tweet which sounds very promising:

http://twitter.com/isrark/status/3164553506

If only we could get him to elaborate... A few of his followers have
asked, and there has not yet been a response. If it turns out that it
isn't possible to get more info on it, I'm quite happy to contribute in
any way possible to trying to figure out how to sign the database (I've
been looking for an open source project to sink my teeth into recently)

> I already tried to remove the sqlite files altogether and it
> seems the ipod needs them. Another good test would be to try to
> manually edit one of these sqllite databases (for example change a
> letter in an artist name).

I will definitely give that a crack tonight.

> On the iPhone, iTunes still writes iTunesCDB (compressed iTunesDB)
> files in addition to the sqlite files, and it uses these iTunesCDB
> files to know the iPod content. It's probably doing the same thing
> here.

Looks like it:

pete@satan:/media/IPOD$ find iPod_Control
iPod_Control
iPod_Control/iTunes
iPod_Control/iTunes/Play Counts
iPod_Control/iTunes/iTunes Library.itlp
iPod_Control/iTunes/iTunes Library.itlp/Genius.itdb
iPod_Control/iTunes/iTunes Library.itlp/Dynamic.itdb
iPod_Control/iTunes/iTunes Library.itlp/Extras.itdb
iPod_Control/iTunes/iTunes Library.itlp/Library.itdb
iPod_Control/iTunes/iTunes Library.itlp/Locations.itdb
iPod_Control/iTunes/iTunes Library.itlp/Locations.itdb.cbk
iPod_Control/iTunes/iTunesSD
iPod_Control/iTunes/iTunesPlaylists
iPod_Control/iTunes/ShowLicense
iPod_Control/iTunes/iTunesControl
iPod_Control/iTunes/ShowRegistration
iPod_Control/iTunes/iTunesDB
iPod_Control/iTunes/iTunesCDB
iPod_Control/iTunes/iTunesPrefs
iPod_Control/iTunes/iTunesPrefs.plist
iPod_Control/iTunes/Rentals.plist
...

All the .itdb files are sqlite files.

And here is the iTunes folder file sizes (note iTunesDB size is zero).
So is that iTunesCDB just all of the sqlite databases compressed this
time around then?

pete@satan:/media/IPOD$ ll iPod_Control/iTunes/
total 21M
drwx------  3 pete root  16K 2009-09-25 21:38 .
drwx------ 11 pete root  16K 2009-09-22 19:09 ..
-rwx------  1 pete root  28K 2009-09-23 22:47 iTunesCDB
-rwx------  1 pete root  20M 2009-09-22 21:35 iTunesControl
-rwx------  1 pete root    0 2009-09-23 22:47 iTunesDB
drwx------  2 pete root  16K 2009-09-25 22:20 iTunes Library.itlp
-rwx------  1 pete root    8 2009-09-22 19:13 iTunesPlaylists
-rwx------  1 pete root 1.3K 2009-09-23 22:47 iTunesPrefs
-rwx------  1 pete root 2.8K 2009-09-23 22:47 iTunesPrefs.plist
-rwx------  1 pete root  23K 2009-09-22 19:19 iTunesSD
-rwx------  1 pete root 3.4K 2009-09-25 21:36 Play Counts
-rwx------  1 pete root  245 2009-09-23 22:47 Rentals.plist
-rwx------  1 pete root    0 2009-09-22 21:35 ShowLicense
-rwx------  1 pete root    1 2009-09-23 22:37 ShowRegistration


> I was sent these patches for the iphone os 3.0
> http://cgit.freedesktop.org/~teuf/libgpod/log/?h=iphone30 which I suck
> at integrating in mainline :-/ I suspect most of the code can be
> reused for the nano5g.
>
> Hope that helps,
>
> Christophe

Cheers,
Pete


------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
Gtkpod-devel mailing list
Gtkpod-devel@...
https://lists.sourceforge.net/lists/listinfo/gtkpod-devel

Re: Nano 5g support.

by Peter Serwylo :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, 2009-09-25 at 18:50 +0200, Christophe Fergeau wrote:

> I was sent these patches for the iphone os 3.0
> http://cgit.freedesktop.org/~teuf/libgpod/log/?h=iphone30 which I suck
> at integrating in mainline :-/ I suspect most of the code can be
> reused for the nano5g.

I will definitely check this out (no pun intended). I've been looking
for an excuse to play around with git also, as a bzr user.
I'll grab that branch and have a read through the docs and code when I
get a chance and see if I can get it at least reading from my nano.

cheers,
Pete.


------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
Gtkpod-devel mailing list
Gtkpod-devel@...
https://lists.sourceforge.net/lists/listinfo/gtkpod-devel

Re: Nano 5g support.

by Peter Serwylo :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tue, 2009-09-29 at 11:48 +1000, Peter Serwylo wrote:

> On Fri, 2009-09-25 at 18:50 +0200, Christophe Fergeau wrote:
>
> > I was sent these patches for the iphone os 3.0
> > http://cgit.freedesktop.org/~teuf/libgpod/log/?h=iphone30 which I suck
> > at integrating in mainline :-/ I suspect most of the code can be
> > reused for the nano5g.
>
> I will definitely check this out (no pun intended). I've been looking
> for an excuse to play around with git also, as a bzr user.
> I'll grab that branch and have a read through the docs and code when I
> get a chance and see if I can get it at least reading from my nano.
>

Alrighty, so it works (almost) fine :)
The itunesCDB gets read successfully, gtkpod writes back to the sqlite
database successfully. I presume it also writes back to the iTunesCDB
correctly, but I'm unsure as to whether the iPod interface reads from
the sqlite databases or the itunesDB file...

Naturally, the only problem is the .cbk file. Using the ideas from this
mammoth thread:
http://www.hydrogenaudio.org/forums/index.php?showtopic=45160&st=2100&p=644564#entry644564 (gets interesting/relevant around page 85->90), where they open up their iPod in iTunes and then do something which will cause iTunes to modify any data on the device. This will recreate a new .cbk file based on the databases which are there.

So databases created successfully on linux, and then the .cbk file
created by iTunes. At least I think/hope that is what is happening, I
will try again tomorrow and check the timestamps of each file after
gtkpod and itunes interaction to see who is touching what.

Obviously this isn't a long term solution, but just wanted to let you
know that those patches you integrated for iphone 3.0 seem to be working
for the nano5g as suspected.

cheers,
Pete.


------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
Gtkpod-devel mailing list
Gtkpod-devel@...
https://lists.sourceforge.net/lists/listinfo/gtkpod-devel

Re: Nano 5g support.

by Peter Serwylo :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Mon, 2009-10-05 at 19:21 +0200, Christophe Fergeau wrote:

> 2009/10/2 Peter Serwylo <peter@...>:
>
> >
> > Alrighty, so it works (almost) fine :)
> > The itunesCDB gets read successfully, gtkpod writes back to the sqlite
> > database successfully. I presume it also writes back to the iTunesCDB
> > correctly, but I'm unsure as to whether the iPod interface reads from
> > the sqlite databases or the itunesDB file...
>
> Hmm, you did have to make some changes to get gtkpod to writes all of
> that, didn't you? Or did it do that out of the box? I'd say the ipod
> interface uses the sqlite files, but that's just a guess.
>

No changes to gtkpod, only compiling against your iphone3.0 git branch
for libgpod.

Anyway, in the cold light of day (when I'm actually a little bit awake),
I would like to withdraw half of my statements.

This is my interpretation of events:

gtkpod *reads* successfully (from the iTunesCDB file)
gtkpod *writes* successfully to the Library.itdb (and whatever other
databases are required):
 - if I run a select on the items table in the Library.itdb file, it
returns the correct list of songs.
gtkpod *doesn't* write successfully to the iTunesCDB file:
 - when I open gtkpod again, the songs I removed are still there
 - although the sqlite database is still correct.

If I open iTunes, it will rewrite out the sqlite databases, I imagine
based on the contents of the iTunesCDB file.

So yeah, not as I'd hoped.
I guess I'll be hanging around until the hashing scheme is discovered.

cheers,
Pete


------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Gtkpod-devel mailing list
Gtkpod-devel@...
https://lists.sourceforge.net/lists/listinfo/gtkpod-devel