Hi,
I recently bought a Pontis SP600 MP3
player and was hoping that I could use
it with Linux for downloading MP3 files.
The MP3 player identifies itself as a
mass storage device via USB so with the
proper drivers installed I hoped that it
would work. Well it does work most of
the times but I have faced some problems
that I have been trying to debug for
quite some time but now I'm stucked.
First of all I had to add the following
section to the unusual_devs.h files in
the usb/storage directory:
UNUSUAL_DEV( 0x09bc, 0x0003, 0x0000,
0x9999,
"PONTIS",
"SP600",
US_SC_SCSI, US_PR_BULK,
NULL,
US_FL_START_STOP |
US_FL_FIX_INQUIRY | US_FL_MODE_XLATE),
The US_FL_FIX_INQUIRY & US_FL_MODE_XLATE
may actually not be needed but they
don't hurt (I think) so I was just
including them to be on the safe side.
That was the easy part :)
With the above section I was now able to
mount the /dev/sda1 device as a normal
vfat drive and I can read and write to
the drive. I now made a large file which
just contains the binary numbers from 0
to 63 repeated over and over again. I
made a script which copies the file to
the player, unmounts the drive remounts
it and reads the file back and does a
diff. This is then repeated over and
over. In approx. 8 of 10 times the files
are the same but some times they differ.
When I analyze the difference I can see
that the difference always occurs on a
64 byte boundary (USB package size?) and
what happens is that within a 64 byte
package data are shifted one byte. The
first byte is simply replaced by the hex
value 0x64 and the rest is shifted one
byte so the last byte has disappeared.
It is always the first byte in a 64 byte
package and it is always replaced by
0x64 (which don't even exists in the
file). That was my first problem...
I then thought that maybe I had a bad
compact flash module so I tried with a
different module and now something even
more weird happened. I formatted the
FLASH module on a windows machine and
then when I tried to mount the drive
under Linux the first 32 sectors was
gone!. So what Linux thought was the
first sector was really sector 32.
Analyzing the raw data on the disk
showed the everything after the 32
sectors was indeed OK but since Linux
skipped the first 32 sectors it couldn't
find the MBR and didn't see it as a
valid drive (FAT and root dir was also
misplaced of course). It was possible to
re-format the drive under Linux and then
access it beacuse Linux simply placed
the MBR at what it believes is the first
sector but then the MP3 player didn't
recognize the FAT because it was
expecting the MBR and the file system to
start at the real sector 0 - and Windows
couldn't recognize it either. So does
anyone has an idea what causes Linux to
skip the first 32 sectors? Windows can
see them and the MP3 player can see them
so I know they are there..
I'm running Redhat 7.1 with a kernel
2.2.13.
Of course this may all be caused by a
bug in the MP3 firmware but if anyone
has ideas that I can try with Linux then
please let me know.
Thanks
Flemming
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel