release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Search | Go
Wiki > Main > SanDiskSansa > SansaExpress

Sansa Express



Port Info

See SansaExpressPort

Hardware

  • SoC: STMP 3630
  • LCD: bi-color OLED, the controller seems compatible with SSD1303
  • ESMT M12L1616A? SDRAM: 2MB (16,777,216 bits organized as 2 banks x 524,288 words by 16 bits)
  • Sandisk iNAND SDINB1-1024: SD compatible storage
  • Unknown FM Tuner

PCB Scans

  • Bottom of the PCB:
    PCB_Bottom.jpg

  • Top of the PCB:
    <PCB_Top.jpg

Firmware

The 1.01.05a firmware can be downloaded from here.

Recovery Mode

Press and hold the (-) volume button while plugging into USB. Windows will ask you to install the drivers. Point it to the folder containing the "StMp3Rec.sys" file from the firmware update. The firmware can now be updated.



Production Test Mode

If the (+) and UP buttons are held down during boot up, a production test mode activates. Finding this part of the code could be useful.



"Resetting" the USB on the device

Rather simple, needs to go in a USB 1.x port, get detected by OS, unplug, then plug in to USB 2.x port. I don't know how you would do this if you only have USB 2 ports. If this doesn't work, do the "hard reset", described below.



Hard-reset

If your player locks up for whatever reason you can perform a hard-reset by pressing and holding the (+) volume button and select at the same time, similar to holding power on the e200.



MSC/MTP Modes

USB modes are not controlled by a setting on the player itself, you have to configure your operating system to handle it the way you wish. In Windows, this can be done by updating the driver manually through the device manager.



fdisk -l Output

Disk /dev/sda: 1022 MB, 1022623744 bytes
24 heads, 23 sectors/track, 3618 cylinders
Units = cylinders of 552 * 512 = 282624 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sda1 * 1 3619 998532+ 6 FAT16

Conclusion: It looks like the partition that is visible to Linux is the boot partition and there is a 23M hidden partition. While connected in recovery mode fdisk -l shows nothing.


Mine's formatted a bit differently:

Disk /dev/sda: 1023 MB, 1023002624 bytes
4 heads, 7 sectors/track, 71359 cylinders
Units = cylinders of 28 * 512 = 14336 bytes
Disk identifier: 0x000b3697

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           9       71359      998902+   6  FAT16
-- SimonRaven - 22 Jan 2008



libMTP in Linux-based OS

Was trying out some of the mtp-* utilities just now and MTP in Linux for this device isn't all there yet. ho-hum
-- SimonRaven - 26 Sep 2008

Toolchain and kernels

As for toolchain and such, at the "STMP36xx Linux BSP" link below, there is a kernel, toolchain, and other stuff. I figure booting this in virtualbox or something we can use a) more recent kernels than what they have there (they have a kernel from 2006 there) b) toolchain too c) since they probably have the bits to support the CPU, device connectivity, etc., use that as a base to start the rockboxifying/porting.
-- SimonRaven - 26 Sep 2008



lsusb Output

lsusb -v output:

Bus 002 Device 022: ID 0781:7460 SanDisk Corp. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0781 SanDisk Corp.
  idProduct          0x7460 
  bcdDevice            0.01
  iManufacturer           1 Sandisk
  iProduct                2 Sansa Express
  iSerial                 5 XXXXXXXXXXXXXXXXXXXXXXXXX
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           39
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          3 USB/Sansa Express
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk (Zip)
      iInterface              4 USB/Sansa Express
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval              16
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0000
  (Bus Powered)

I have usbmount installed, and it sees /dev/sdb but cannot actually read from it to mount it. From what I've read on sandisk's forums, it seems that "drive" (partition) is an "OS/2 Hidden" partition, and that's where the firmware and bootloader are hosted, would be my guess.

usbmount[7657]: cannot read from /dev/sdb

While in recovery mode lsusb -v shows:

Bus 001 Device 004: ID 066f:3600 SigmaTel, Inc. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x066f SigmaTel, Inc.
  idProduct          0x3600 
  bcdDevice            0.01
  iManufacturer           1 Sigmatel, Inc.
  iProduct                2 STMP3600
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          3 USB Boot Class-c
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0 
      bInterfaceProtocol    255 
      iInterface              4 USB Boot Class-i
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
Device Status:     0x0000
  (Bus Powered)


Pins

Here is a list of all the pins used by the OF. Pins are of form BxPyy where x is the bank and yy the number within the bank. Direction only applies to GPIO.
Pin Dir Comment
B0P19 IN/!OUT tuner i2c sda
B0P25 ssp_det sd card detect
B0P26 ssp_cmd  
B0P27 ssp_sck  
B0P28 ssp_d0  
B0P29 ssp_d1  
B0P30 ssp_d2  
B0P31 ssp_d3  
B1P00 lcd_d0  
B1P01 lcd_d1  
B1P02 lcd_d2  
B1P03 lcd_d3  
B1P04 lcd_d4  
B1P05 lcd_d5  
B1P06 lcd_d6  
B1P07 lcd_d7  
B1P10 IN button (select, active low)
B1P11 IN button (hold, active high)
B1P13 IN unk
B1P14 IN button (volume +, active high)
B1P16 lcd_reset  
B1P17 lcd_cs  
B1P18 lcd_wr  
B1P19 lcd_rs  
B1P22 OUT ssp bus select
B1P23 OUT tuner reset ?
B1P24 OUT tuner unk
B3P10 pwm0 button light
B3P13 OUT backlight (can be driven as pwm ?)
B3P14 OUT tuner power ? ssp related ?
B3P16 OUT tuner i2c scl
PSWITCH IN button (1=power, 3=volume-)
LRADC2 IN buttons (direction keys)
LRADC5 OUT enable pulldown to power SD !!!

Links


r20 - 06 Dec 2013 - 22:57:12 - AmauryPouly


Parents: SanDiskSansa
Copyright by the contributing authors.