From: John Joyce Date: 2007-12-03T04:35:31+09:00 Subject: Re: Identifying a volume as being an iPod On Dec 2, 2007, at 7:40 AM, MonkeeSage wrote: > On Dec 1, 5:31 pm, John Joyce > wrote: >> On Dec 1, 2007, at 4:25 PM, MonkeeSage wrote: >> >> >> >>> On Dec 1, 3:40 pm, John Joyce >>> wrote: >>>> On Dec 1, 2007, at 12:10 PM, Tiago Macedo wrote: >> >>>>> An iPod (at least when formatted in FAT32 will contain an >>>>> "iPod_Control" folder on the root. >> >>>>> You can also check the USB device ids: >>>>> Bus 005 Device 003: ID 05ac:1261 Apple Computer, Inc. >>>>> (this is an 80GB Classic Silver) >> >>>>> or just build a wrapper for libgpod (I don't it supports drm'ed >>>>> tracks though) >> >>>>> Tiago Macedo >> >>>> The device ID info is in the right vein for what I'm thinking of. >>>> I know about the "iPod_Control" folder. >>>> It's on every iPod, inside it is the Music folder and that contains >>>> the directories that actually hold the audio files. >>>> I'm just curious, but I'll look into the way the system recognizes >>>> the iPod... there must be some simple trick to go, ok this is an >>>> iPod >>>> and not some other device. >> >>> On my system (linux, 2.6.22 kernel), this turns up some interesting >>> results... >> >>> $ sudo grep -R -i ipod /usr/src/linux/* >> >>> ...particularly, the following files look like they have some stuff >>> for identifying ipod devices... >> >>> /usr/src/linux/drivers/ieee1394/sbp2.c >>> /usr/src/linux/drivers/usb/storage/unusual_devs.h >> >>> Regards, >>> Jordan >> >> Interesting, ieee1394 is FireWire, but iPods haven't shipped with >> that in quite some time. >> none the less, if you look in there and happen to see anything >> interesting, let me know please! >> I don't currently have a Linux system running, even it requires >> better hardware than my current crop of old hardware... > > Interesting bits... > > ==snip== > > /* iPod 4th generation */ { > .firmware_revision = 0x0a2700, > .model_id = 0x000021, > .workarounds = SBP2_WORKAROUND_FIX_CAPACITY, > }, > /* iPod mini */ { > .firmware_revision = 0x0a2700, > .model_id = 0x000023, > .workarounds = SBP2_WORKAROUND_FIX_CAPACITY, > }, > /* iPod Photo */ { > .firmware_revision = 0x0a2700, > .model_id = 0x00007e, > .workarounds = SBP2_WORKAROUND_FIX_CAPACITY, > } > > ======== > > ==snip== > > /* Submitted by Sven Anderson > * There are at least four ProductIDs used for iPods, so I added > 0x1202 and > * 0x1204. They just need the US_FL_FIX_CAPACITY. As the bcdDevice > appears > * to change with firmware updates, I changed the range to maximum for > all > * iPod entries. > */ > UNUSUAL_DEV( 0x05ac, 0x1202, 0x0000, 0x9999, > "Apple", > "iPod", > US_SC_DEVICE, US_PR_DEVICE, NULL, > US_FL_FIX_CAPACITY ), > > /* Reported by Avi Kivity */ > UNUSUAL_DEV( 0x05ac, 0x1203, 0x0000, 0x9999, > "Apple", > "iPod", > US_SC_DEVICE, US_PR_DEVICE, NULL, > US_FL_FIX_CAPACITY ), > > UNUSUAL_DEV( 0x05ac, 0x1204, 0x0000, 0x9999, > "Apple", > "iPod", > US_SC_DEVICE, US_PR_DEVICE, NULL, > US_FL_FIX_CAPACITY | US_FL_NOT_LOCKABLE ), > > UNUSUAL_DEV( 0x05ac, 0x1205, 0x0000, 0x9999, > "Apple", > "iPod", > US_SC_DEVICE, US_PR_DEVICE, NULL, > US_FL_FIX_CAPACITY ), > > /* > * Reported by Tyson Vinson > * This particular productId is the iPod Nano > */ > UNUSUAL_DEV( 0x05ac, 0x120a, 0x0000, 0x9999, > "Apple", > "iPod", > US_SC_DEVICE, US_PR_DEVICE, NULL, > US_FL_FIX_CAPACITY ), > > ======== > > Don't ask me about what exactly all the code means, I just thought it > looked promising. Ps. You can browse and search the kernel source > online: http://lxr.linux.no/linux > > Regards, > Jordan > Thanks! I know, it's intentionally cryptic.