| 
| Translate 
 
   
 
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
IBU 
Consol
 |  | Review of MP3 (& WAV) player, USB Vendor 0x066f,
    Product 0x80000x066f = SigmatelIndex
      
        Index In Page 
        
      
        Index Of Other Pages 
        
       
 
      
        Manufacturer unknown, but China. 
        
          (The ones I reviewed were promotional items
          badged by pharmaceutical company MSD also labelled with their
          service Univadis); -
          Names not relevant to this analysis, but explains old
          name this page moved from).
        
        Features 
        
      
        Capacity nominally 512M on sticky label. Actually a
        bit less: (Not a lot by modern standards, For Comparison,
        at 2009.10.21, another similar size player (in food
        supermarket Tengelmann), was about 24 Euro). 
        
Block size 2K (unusual, normally
        sticks are 512 bytes). Unit I tested was. 242304 x 2K = 496238592 bytes,
fdisk da0
cylinders=118 heads=64 sectors/track=32 (2048 blks/cyl)
Media sector size is 2048
Warning: BIOS sector numbering starts with sector 1
The data for partition 1 is:
sysid 6 (0x06),(Primary 'big' DOS (>= 32MB))
    start 48, size 242256 (473 Meg), flag 80 (active)
        beg: cyl 0/ head 1/ sector 1;
        end: cyl 630/ head 7/ sector 48
The data for partition 2 is: <UNUSED>
The data for partition 3 is: <UNUSED>
The data for partition 4 is: <UNUSED>
        File system from factory: 
        
   1825 May 22  2007 ./HERO.lrc
4167053 May 22  2007 ./HERO.mp3
   1744 May 22  2007 ./PrettyBoy.lrc
6692864 May 22  2007 ./PrettyBoy.mp3
    471 Dec 27  2002 ./SETTINGS.DAT
   7770 Dec 27  2002 ./VOICE/V001.WAV
HERO.lrc:       ISO-8859 English text, with CRLF line terminators
HERO.mp3:       MPEG ADTS, layer III, v1, 128 kBits, 44.1 kHz, JntStereo
PrettyBoy.lrc:  ASCII English text, with CRLF line terminators
PrettyBoy.mp3:  Audio file with ID3 version 23.0 tag, MP3 encoding
SETTINGS.DAT:   data
VOICE/V001.WAV: RIFF (little-endian) data, WAVE audio, IMA ADPCM, mono 8000 Hz
SETTINGS.DAT    A binary file. Safe to delete as proven by me:
        { Deleting, Un-mounting, Power On, Settings, Power
        off, Mounting, Observe A new settings file (different,
        probably on a different song number).
    ( Intriguingly both new & old have date of Dec 27  2002 ).
*.lrc       Lyrics in Ascii, to some standardised format.
VOICE/V001.WAV  Sample noise, tapping.
        USB Connectivity to PC: A lot more stable than Clipman, Connection doesn't seem to
        keep coming & going (like Clipman, which could crash OS,Speed: 1,812,634 bytes/sec via a Belkin USB-2 Cardbus
        adapter (might have been a raw read ?).
 Speed. Via a Belkin USB-2 Cardbus
        adapter, to a single large file on the file system: date ;
        testblock -v
        -n dummy ; date Will write then read. Block size 61440
        (0xf000). 9 mins 28 sec = 348 sec, for 483,901,440 bytes =
        1,390,521.4 bytes / sec = 11,124,171 bits/sec. That's 3
        times faster than ClipmanSoftware Looks like a USB stick (except block
      size) so no special software needed. Runs fine with FreeBSD-7.2 Which
      is Free Software
        Manual is not consistent with player. 
        
          Manual says its shows software version number, But it
          does not, instead it shows space used & remaining.
          Even if you remove SETTINGS.DAT & reboot, it still
          wont show revision number (which might have been nice, to
          get a clue what formats are supported, per Wikipedia
          article).Manual says it lists Chinese as a language, as well
          as English & Spanish But player has no Chinese, but
          does also have German & French etcManual lists lots of frequencies to record at, But
          player only allows 8 KHz
        Top Of Page 
      Below is a copy of postings 1st March 2013 to FreeBSD  then copied to NetBSD , 
       click on either to read any follow up. 
       Source code src/sbin/fsck_msdos/boot.c 
        
          
            | 
To: hackers@@@freebsd.org
cc: gdt@@@NetBSD, paulp@@@uts.amdahl.com, rnordier@@@FreeBSD.org,
    Tom Rhodes <trhodes@@@FreeBSD.org>
Subject: sbin/fsck_msdosfs does not handle media with 2K blocks
From: "Julian H. Stacey" <jhs@@@berklix.com>
Date: Fri, 01 Mar 2013 01:45:03 +0100
Hi hackers@@@freebsd.org
cc: gdt@@@NetBSD, paulp@@@uts.amdahl.com    (< grep @ src/sbin/fsck_msdosfs/*.c)
cc: rnordier@@@FreeBSD.org          (< man newfs_msdos)
cc: Tom Rhodes <trhodes@@@FreeBSD.org>    (< man 5 msdosfs>
sbin/fsck_msdosfs (FreeBSD 9.1-RELEASE) fails on 2K block media,
media in this case, an mp3 player:  http://www.berklix.com/~jhs/txt/sigmatel/
sysctl kern.geom.debugflags=16
        kern.geom.debugflags: 16 -> 16
/sbin/fsck_msdosfs /dev/da0s1
            ** /dev/da0s1
    could not read boot block (Invalid argument)
devd.conf:
    "vendor" "0x066f"; "product" "0x8000"; "devclass" "0x00";
    "devsubclass" "0x00"; "intclass" "0x08"; "intsubclass"
    "0x06"; "intprotocol" "0x50" ; "release" "0x1001";
/sys/dev/usb/usbdevs: vendor SIGMATEL         0x066f  Sigmatel
dd if=/dev/da0   bs=2k of=da0   # 242304+0 records  496238592 bytes
dd if=/dev/da0s1 bs=2k of=da0s1 # 242256+0 records  496140288 bytes
echo "2048 242304 * p" | dc #           496238592
echo "2048 242256 * p" | dc #           496140288
fdisk /dev/da0
        cylinders=118 heads=64 sectors/track=32 (2048 blks/cyl)
        Media sector size is 2048
        Warning: BIOS sector numbering starts with sector 1
        Information from DOS bootblock is:
        The data for partition 1 is:
        sysid 6 (0x06),(Primary DOS, 16 bit FAT (>= 32MB))
            start 48, size 242256 (473 Meg), flag 80 (active)
                beg: cyl 0/ head 1/ sector 1;
                end: cyl 630/ head 7/ sector 48
( I think this unit's FS got corrupted. Possibly as part of media error ?
  This unit (when not USB connected, but powered on battery as a
  player, flashed its LCD display on & off, (same warning as to also
  indicate a low battery) whereas other units of same type with
  same battery powered up OK, & battery is OK, so player is probably
  also seeing a bad FS. )
I tried this:
    sysctl kern.geom.debugflags=16
    dd if=/dev/da0s1 bs=2k of=image
    mdconfig -a -t vnode -f image
    /sbin/fsck_msdosfs -y /dev/md2
        ** /dev/md2
        ** Phase 1 - Read and Compare FATs
        ** Phase 2 - Check Cluster Chains
        ** Phase 3 - Checking Directories
        /audio has entries after end of directory
        Extend? yes
        /audio has entries after end of directory
        Extend? yes
        long filename record cluster start != 0
        Invalid long filename entry for volume label
        Remove? yes
        ** Phase 4 - Checking for Lost Files
        139 files, 60280 free (7535 clusters)
        ***** FILE SYSTEM WAS MODIFIED *****
    ... Repeating fsck above, shows the same errors above ...
    newfs_msdos -F 16 -S 2048 /dev/md2
        newfs_msdos: Cannot get number of sectors per track,
            Operation not supported
        newfs_msdos: Cannot get number of heads,
            Operation not supported
        newfs_msdos: trim 21 sectors to adjust to a multiple of 63
        /dev/md2: 242192 sectors in 15137 FAT16 clusters
             (32768 bytes/cluster)
        BytesPerSec=2048 SecPerClust=16 ResSectors=1 FATs=2
            RootDirEnts=512 Media=0xf0 FATsecs=15 SecPerTrack=63
            Heads=16 HiddenSecs=0 HugeSectors=242235
    /sbin/fsck_msdosfs -y /dev/md2
        ** /dev/md2
        ** Phase 1 - Read and Compare FATs
        ** Phase 2 - Check Cluster Chains
        ** Phase 3 - Checking Directories
        ** Phase 4 - Checking for Lost Files
        1 files, 484384 free (15137 clusters)
    mount -t msdosfs /dev/md2 /mnt
    cp SETTINGS.DAT /mnt
    umount /mnt
    mdconfig -d -u 2
    dd if=image bs=2k of=/dev/da0s1
        dd: /dev/da0s1: Input/output error
        80+0 records in 79+0 records out
        161792 bytes transferred in 32.715037 secs (4945 bytes/sec)
    ... Remove & Reinsert & waited for devd & unmounted after auto-mount...
    Repeated dd & same error.
    ... Remove & Reinsert & wait for devd automount
    ls /usb/sigmatel    ... it has the new empty FS with SETTINGS.DAT
    ... but still the LCD flashes
    fdisk -B /dev/da0
        fdisk: /boot/mbr: length must be a multiple of sector size
    cat /boot/mbr /boot/mbr /boot/mbr /boot/mbr > /boot/mbr2k
    fdisk -B -b /boot/mbr2k /dev/da0
        Should we write new partition table? [n] y
    ... still the LCD flashes
    fdisk -i /dev/da0
    fdisk -u /dev/da0
    ( Not Tried: newfs_msdos with -s 512 to see if the Sigmatel chipset
        will play it, but not much point as fdisk says 2K ... )
So it seems this particular unit has a problem (that other units
of same manufacture here do not have). I can't think what else to try ?
It seems I discovered a limitation in FreeBSD (while doing the above):
    We should hack various sources to [also?] allow R/W of 2K
    media blocks , eg inc. here:
    /usr/src/sbin/fsck_msdosfs/
    dosfs.h:
        #define DOSBOOTBLOCKSIZE 512
    boot.c:
        readboot(int dosfs, struct bootblock *boot)
        {
        u_char block[DOSBOOTBLOCKSIZE];
        if (read(dosfs, block, sizeof block) != sizeof block) {
            perror("could not read boot block");
    Who might best hack those sources ?
    Maybe someone since 1997 Wolfgang Solfrank & 1995 Martin Husemann
    be interested?
 |  Note another Odys player MP X30 V Multimedia
      Player, (vendor=0x10d6, product=0x1101 in devd.conf
      ) does not use 2048 but 512, (so not all
      mp3 players use 2048 (as someone speculated they might),
      (though Cdroms & DVDs use 2048 though)). Top Of Page |  |