Rockbox.org home
releases
current build
extras
themes FAQ
manual
wiki
docs index mailing lists
IRC
forums bugs
patches



Search | Go
Wiki > Main > SanDisk > SansaConnect

SanDisk Sansa Connect

History/Background

The Sansa Connect is designed by Zing System Inc. (part of Dell), who showed off a WIFI device for listening to streaming radio stations, without any onboard storage. A prototype device was announced, but never put into production. Screenshots of the time show a similar UI design to the current Sansa Connect.

The Sansa Connect has 4Gb of onboard flash storage, as well as a Micro-SD slot, capable of using SDHC cards in the newer firmware versions.

Hardware

AnythingButiPod performed a basic disassembly.

Further to this: the EMI shield is a frame and clip-on top shield - only the frame is soldered to the main PCB. The frame visually obscures some of the chips.

  • DSP/CPU: TexasInstrumentsTMS320. This is a multicore device consisting of a ARM926EJ?-S CPU core and TMS320vc5409 DSP.
  • Secondary CPU: ATMEL MEGA165PV. The Atmel AVR line has great support of open source developement tools (GCC et all). It's referred internally as "HID", and it's used as an interface to external devices - handles display sleep & wakeup, for example. Interfaced via SPI.
  • Power Management: TI TPS 65021. Interfaced via I2C?.
  • LCD: 2.2 inch - CT022TND4 V.6 M1-B
  • SDRAM: Samsung K4M51323LC-DN75
  • USB 2.0: TNETV105. Not to be confused with TI's TNETV105 (DSP/CPU bundle), this handles USB for the device. The TMS320 has an internal USB controller but it is disabled on boot. Interfaced via VLYNQ.
  • Codec: Ti AC3106I. DAC and stereo power amplifier, with programmable filters. Most likely interfaced via I2C?.
  • EEPROM: Atmel AT88SC? - 64kbit fused, cryptographically secure. Holds individual device information such as USB deviceid, MAC address and device certificate. Interfaced via I2C?.
  • Flash: Sandisk SDINB1-4096. 4GB iNAND flash module. Holds bootloader, linux kernel, persistent variables, platform and filesystem.
Visually obscured chips:

  • WIFI: Murata (chip has the MAC address engraved on it - vendor digits are 00:13:E0) - possible model numbers start KK6T6?... or LBWA-.... Interfaced via SPI.

Clock speeds

These are obtained from the initialization code on the linux kernel patch for the Connect:

  • TMS320 ARM core: 120 MHz
  • SDRAM: 72 MHz
  • TMS320 DSP core: 72 MHz
  • DMA coprocessor: 144 MHz

TMS320 general purpose I/O pins mapping

This is the detail for the known GPIO pins in the Connect:

Pin Device Name Comments Direction
GIO0 TMS320 STANDBY Wake up from standby IRQ In
GIO3 Keypad POWER_DET Power key signal In
GIO3 USB USB_ATTACH_IRQ USB irq line In
GIO7 TNETV105 TNETV_RESET Reset line Out
GIO8 SD Card CARDDETECT Card inserted signal In
GIO9 TNETV105 DOCK Dock IRQ (???) ???
GIO12 HDD Led DM320_HDD_LED Referenced in several scripts.
Seems to be the power button LED
Out
GIO14 SPI SPI_SS SPI slave select Out
GIO19 SD Card MMCSD_POWER Powers MMC/SD slot when low Out
GIO27 SPI DM320_RXD1_GIO SPI TX Out
GIO28 SPI DM320_TXD1_GIO SPI RX In
GIO29 SPI SPI_nSS SPI slave transmit enable Out
GIO30 I2C? I2C?_CLOCK I2C? clock In/Out
GIO31 I2C? I2C?_DATA I2C? data line In/Out

TMS320 memory maps

Physical memory:

Region name Description Start End Size Comments
DM320_RESET_VECTOR_PADDR CPU reset vector 0x00000000 0x00000003 4 bytes Should point to bootloader
DM320_IRAM_PADDR CPU internal RAM 0x00000004 0x00003FFF Approx. 16Kb  
DM320_PERIPHERALS_PADDR ARM peripherials registers 0x00030000 0x0003FFFF 4Kb  
DM320_DSP_ONCHIP_RAM_PADDR DSP internal RAM 0x00040000 0x0005FFFF 128Kb  
DM320_AHB_PADDR TMS320 internal AHB bus 0x00060000 0x00063FFF 4Kb  
DM320_COPRO_SUB_PADDR DMA coprocessor interface 0x00080000 0x0009FFFF 128Kb  
DM320_EXT_MEM_PADDR External memory 0x00100000 0x010FFFFF 16Mb Maps to Flash exclusively (cached)
Bootloader and kernel are stored here
DM320_CFI_PADDR CFI Flash interface 0x40000000 0x40FFFFFF 16Mb  
DM320_SSFDC_PADDR SmartMedia? interface 0x48000000 0x48FFFFFF 16Mb  
DM320_CE1_PADDR Control enable 1 (???) 0x50000000 0x50FFFFFF 16Mb Related to Comm. port 1 (external interface)
DM320_CE2_PADDR Control enable 1 (???) 0x60000000 0x60FFFFFF 16Mb Related to Comm. port 2 (external interface)
DM320_VLYNQ_PADDR VLYNQ interface 0x70000000 0x73FFFFFF 64MB More details in http://en.wikipedia.org/wiki/VLYNQ
DM320_USBOTG_PADDR USB On-The-Go inteface 0x80000000 0x800003FF 1Kb More details in http://en.wikipedia.org/wiki/USB_On-The-Go

Virtual memory:

(..more to come..)

Flash:

This memory map is UNCONFIRMED - use at your own risk!

Region name Description Start End Size Comments
BOOT rrload bootloader 0x00000000 ??? ??? At least 52 Kb big
ENVIRO Persistent variables 0x01000000 0x01007FFF 32 Kb Most likely ubication for variables
KERNEL vmlinux kernel image 0x01008000 0X011FFFFF Approx. 2 Mb Stock kernel image is about 1,6 Mb big
INITRD initrd compressed ROM image 0x04400020 ??? ??? At least 1,6 Mb big

(..more to come..)

Power managment

After loading the Linux kernel, the TPS 65021 is programmed via I2C? (/usr/share/lua/5.1/pwrfix.lua) - devices' I2C? address is 0x48.

  • Device is set to PWM mode (register 0x04 = 10110010b).
  • Core voltage set to 1.5V (register 0x06 = 00011100b).
  • Codec and USB power line (LD02) to 1.8V, LCD display module (LD01) to 2.85V (register 0x08 = 00110110b).

HID (ATMEL MEGA165PV? microcontroller)

The HID handles external devices - it is interfaced to the CPU via its built SPI interfase, clocked at 200 KHz.

This device is initialized on boot - the firmware loaded on it is located on /lib/clicky165.bin. The Fuse high byte register is set to 0xd1 (OCD and JTAG enabled, watchdog always on, uses reset vector), while the fuse low byte is set to 0xC2 (divide clock by 8, enable clock output, use clock source 1).

Once programmed, it accepts commands (via SPI) which are defined in /usr/include/hidif.lu. These are used to control & query external devices:

Name Command Description
CMD_SYNC 0xAA Sync with device to send/receive
Marks the beginning of a command
CMD_CLOSE 0xCC Close sync
Marks the end of a command
CMD_VER 0xBC  
CMD_FILL 0xFF Filler - seems to be used to signal HID that it can send data back
CMD_CODEC_RESET 0xD7 Reset codec
CMD_ADC_START 0xD8 Initalize ADC
CMD_ADC_RESULT 0xD9, 0xFFFF  
CMD_SYS_CTRL 0xDA Sends command SYS_CTRL_xxx
SYS_CTRL_POWEROFF 0x00 Powers off the Connect
SYS_CTRL_RESET 0x01 Reset the Connect
SYS_CTRL_SLEEP 0x02 Sleeps the Connect
SYS_CTRL_DIS_WD 0x03  
SYS_CTRL_KICK_WD 0x4  
SYS_CTRL_EN_HDQ_THERM 0x5  
SYS_CTRL_EN_TS_THERM 0x6  
SYS_CTRL_FRESET 0x80  
CMD_SET_INTCHRG 0xD1  
CMD_GET_INTCHRG 0xD2, 0xFF  
CMD_SET_EXTCHRG 0xC6  
CMD_GET_EXTCHRG 0xC7, 0xFF  
CMD_GPIOD_SET_BANK 0xDB  
CMD_GPIOD_SET_PORT 0xDC  
CMD_GPIOD_GET_PIN 0xDF, 0xFF  
CMD_GPIOD_SET_DDR 0xE0  
CMD_HDQ_READ 0xC0 Read HDQ (battery) data
CMD_HDQ_WRITE 0xC1 Write HDQ (battery) data
CMD_HDQ_STATUS 0xC2, 0xFFFF OK = 0, not ready = 1, timeout = 2
CMD_STATE 0xBB, 0xFFFFFFFFFFFFFFFF  
CMD_PGMWAKE 0xBF  
CMD_LCM_POWER 0xC9 Sends command LCM_xxx to LCD driver
LCM_POWER_OFF 0x00 LCD power off
LCM_POWER_ON 0x01 LCD power on
LCM_POWER_SLEEP 0x02 LCD sleep
LCM_POWER_WAKE 0x03 LCD wakeup
LCM_REPOWER_ON 0x04  
CMD_WHEEL_EN 0xD0  
CMD_MONOTIME 0xBD, 0xFFFFFFFF  
CMD_MONORSTCNT 0xE4, 0xFFFF  
CMD_SET_USBCHRG 0xE2  
CMD_GET_USBCHRG 0xE3, 0xFF  
CMD_GET_DOCK_STATE 0xE5, 0xFF  
CMD_READ_DOCK_STATE 0xE6  

Sync sequence is CMD_SYNC -> CMD_VER -> CMD_FILL -> CMD_CLOSE, while command sequence is CMD_SYNC -> command -> CMD_CLOSE -> CMD_FILL Communication to this device is handled by /usr/bin/hidtool, which is a binary file.

Device also seems to work as a watchdog.

Atmel AT88SC? EEPROM and USB.

This device is read by the /bin/setupenv script - it retrieves both deviceid and MAC address and loads them into the $deviceid and $mac environment variables, respectively. Other environment variables (/etc/setupenv) are:

  • Manufacturer:"SanDisk"
  • Product name: "Sansa Connect"
  • Vendor ID: 0x0781
  • Product ID: 0x7480 (MTP more), 0x0F02 (Ethernet-over-USB mode), or 0x7482 (recovery mode)
  • Product revision: 0x0101

Recovery Mode

Recovery Mode can be reached by completely powering down the device (by holding off for 10 seconds). Holding the volume-up and right keys while powering the device back on switch it to recovery mode. In recovery mode the device uses different USB IDs (0781:7481 and 0781:7482, vs 0781:7480 in normal operation) - if installed under Windows the Sansa Connect Device Recovery software will automatically launch when a Connect in recovery mode is connected.

USB ID 0781:7481 is used for writing .SRR files to Flash, while 0781:7482 acceses the "Zaprecover" service (complete with a kernel module!!!), which handles dumping files to the filesystem.

Once linux is loaded, recovery mode is signaled by a persistent variable ("recoverzap") stored in flash. This flag is only removed after a sucessful recovery operation, so there's no way to exit recovery mode once entered without running the recovery operation (and therefore wiping the unit) with the stock initrd file.

Recovery sequence

  • Turn off the device completely (hold power key for 10 seconds)
  • Turn the device on while holding volume-up and the right button (above the wheel)
  • The device will boot showing a "recovery needed" indicator. On this mode the device exposes the USB ID 0781:7481, which zsi_fw.exe communicates to. This is NOT handled by linux - so it's either the linux bootloader or maybe even a previous instance of software. This mode is persistent after reboot.
  • Once the USB cable is connected the indicator is changed to "recovery in progress".
  • After a suceessful firmware load with zsi_fw.exe, the device will attempt to boot the vmlinux image (after a small delay). If the device reboots to recovery mode something went wrong with the firmware load. otherwise Linux will boot correctly and go to recovery mode, exposing the USB ID 0781:748 (Zaprecover service) and displaying a "starting recovery" message (with a yellow clock on top). How the device determines it has to go into recovery mode after boot is unclear - most likely it's because the flash filesystem is wiped after a firwmare write.
  • Once a platform load is started with zaprecover.exe the message changes to_"receiving software"_.
  • Once finished, the message now changes to "verifying software" (signature check), then "installing software" (a message reading _"can't find image_" might flash briefly). The device proceeds now to extract the platform into the filesystem.
  • After a small delay, if everything went ok the device should now reboot to the familiar Sansa loading screen (with the five color balls).

ZAP recovery service

Once linux is loaded, on recovery mode the device loads a kernel module called "zaprecover" (/bin/usb_switch_zaprecover), listening on 0781:7482. The driver is interfaced with /usr/bin/zsi_zap, which tells the module how many files to expect and where to store them. On recovery mode, it waits for both the platform file and signature to be sent, in that order (/etc/rc.recover):

/usr/bin/zsi_zap -f /disk/zap/ZAP.tar.gz -f /disk/zap/ZAP.tar.gz.sig

The device won't leave recovery mode unless both files are downloaded correctly and the signature is checked. The data protocol used by the zaprecover service is still uknown, but the source for it is freely readable on the kernel patch.

Software

OS

Zing are using an OS and bootloader from Cadenux "Embedded Linux Solutions". The Sansa Connect runs a modified 2.6.4 kernel (although Nmap reports "Linux 2.4.20 - 2.4.32, Linux-based embedded device"), compiled with GCC v3.4.5. On top of this it uses Busybox and uClibc.

Bootloader

The bootloader is named rrload, which is apparently rrload, again from Cadenux. Strings in the bootloader, and application code, talk of a devkey, which may enable a serial console, rshell etc.

Comparing the actual rrload sourcecode to the binary file available in /bin/removeme/rrload.chopped shows that either the bootloader was either heavily modified or is completely new code. The Connect bootloader accepts only a new image format (srr) instead of the ones supported by rrload (rrbin and Motorolas' srec). It also validates GPG signatures on the firmware files, and has hardware-specific code for HID and power management initialization.

User Interface

The UI is written in .NET, running on Mono, along with various shell and LUA scripts. I would speculate this part was written inhouse by Zing. The filesystem integrity (at least partially) is verified by GPG.

WIFI update - it will automatically perform an over the air upgrade using it's WIFI connection. It periodically opens an SSL connection to zing.net, presumably to check for newer versions.

Application update - the windows only "Sansa Connect Device Recovery". This downloads several files from zing.net over SSL, and saves them locally to a hidden folder "RecoveryImages". The files it downloads are:

Filename Size (bytes) Function
everest_initrd_ext_prod_1.1.1.50239.srr.e 1783824 filesystem
everest_vmlinux_ext_prod_1.1.1.50239.srr.e 1754960 firmware
yeverest_zap_ota_rel_ext_prod_1.1.1.50371.sig 280 platform signature
yeverest_zap_ota_rel_ext_prod_1.1.1.50371.tar.gz.e 17248792 platform

The function names come from the update log. The .srr extension is listed in the rrload documentation as "A RidgeRun inspired format, rrbin is a tagged image binary format used for downloading either executable files or data files such as file systems. This format is very efficient..."

Although the .e files are encrypted, during the recovery process they are transmitted over USB to the Connect in the clear - using USBSnoop I was able to capture logs of the update process, and using grep, sed and perl I was able to convert these into binary files.

The two everest files (filesystem and firmware) were sent first as a single transfer to the Connect (USB ID was 0781:7481) using zsi_fw.exe (which is in cmdline directory of sansa connect recovery tool) - the start of this transfer was a vmlinuz image, followed by a Compressed ROMFS image (look for the "45 3d cd 28" magic string). The ROMFS contains the root filesystem - Busybox, uClibc, init scripts (some in LUA), public GPG keys for verification.

In the /bin/removeme folder we found what seems to be a bootloader flash image, complete with a loading script. The flash image is named rrload.srr.chopped, which is (presumably) the rrload image without the .srr header, as it's dumped directly to flash (cat ./rrload.srr.chopped > /dev/mtd0)

The platform file is then sent (USB ID of 0781:7482) - this is a 17Mb .tar.gz containing LOTS of png images, .NET dlls for the UI, more LUA scripts, XML config files and other binaries (freetype, libcurl, libglib, libjpeg, libssl and Mono). Filemon sugests that platform file is sent using zaprecover.exe (which is in cmdline directory of sansa connect recovery tool), it keeps reading platform file by 497-byte blocks.

Actual recovery can be done from commandline (assuming you've run the "normal" recovery atleast once to download recovery images, and you've put those in cmdline directory, and you're issuing those commands being chdired there):

zsi_fw.exe -w everest_vmlinux_ext_prod_1.1.1.50239.srr.e everest_initrd_ext_prod_1.1.1.50239.srr.e
zaprecover.exe -t 600000 -f yeverest_zap_ota_rel_ext_prod_1.1.1.50371.tar.gz.e yeverest_zap_ota_rel_ext_prod_1.1.1.50371.sig

Encrypted files

.e files are encrypted with Blowfish (a patent-free symmetric block cipher, details), using a 192-bit key. Both the key and initialization vector for the cipher are obtained from a SHA-256 hash (details) generated from info on the file:

  • 4-bytes containing the last subversion number from the file, expressed in base-13 (big-endian). For example, given the file everest_initrd_ext_prod_1.1.1.50239.srr.e, the last subver number is 50239, which is 143191 (0x00022F57) in base-13. If this value isn't present it is set to 0x6E0ACCCB (1846201547).
  • 4-bytes containing file size (big-endian). In our example, filesize is 1783824 (0x001B3810).
  • The complete filename of the encrypted file. In our example, "everest_initrd_ext_prod_1.1.1.50239.srr.e".
These are fed in order to the SHA-256 hash function. The first 8 bytes of the resulting hash are the initialization vector for the Blowfish cipher while the last 24 bytes are the key - the file can then be decrypted using the cipher in 64-bit feedback mode. For example, the file everest_initrd_ext_prod_1.1.1.50239.srr.e (1783824 bytes) results in:

  • Key = 0x5928DB44795A317AA37ECE1FAE8EC269FC787E26FFB179ED
  • IV = 0x3DCD5A05A346AC40.

SRR file format

SRR files are straight binary files with an attached 16-bytes header detailing loading information, and a 2048-byte footer containing a GPG signature. Most likely, SRR stands for "Signed RRbin"; it includes the same data RRbin does, plus the GPG signature footer. Otherwise, the format is completely different.

SRR file format
Bytes Name Description
00 - 03 Magic number ID for SRR files - should be 0xAABBFFEE for a valid file
04 - 07 Load address Load address in memory (little endian)
08 - 11 Entry point Indicates the execution starting address (little endian) -
most of the time (linux kernel, f.ex.) this will match the load address.
For non-executable binaries equals 0xFFFFFFFF
12 - 15 Number of bytes Number of bytes to be sent _(little endian)_
This should be filesize + 2048 bytes for the signature
16 - ... Data

Binary data to load into device
Last 2048 Signature GPG binary signature,
zero-padded

Signatures

All the files transferred to the Connect must be signed. Signatures used on all recovery files are 280 bytes long, with the GPG key ID 0xD9F1EC060FA0EFA9 (listed as ""). This is a SHA-1 hash encrypted with RSA using a 2048-bit key. The public key is available on the unencrypted initrd images; currently the private key is unknown. Both the bootoloader and initrd scripts will accept files signed with "" or "ZSIDevKey".

Files transfered via zsi_fw.exe include signatures as a part of the uploaded .SRR file. Platform files need the signature to be sent separately.

Signing keys
Name Public key Private key Comments
 <ZSIProdKey> 
Available on /root/.gnupg Unknown All official recovery files are signed with this key
 ZSIDevKey 
Available on /root/.gnupg Unknown Apparently used to sign developement files
 EverestEnsky <EverestEnsky@ensky.com> 
Available on /root/.gnupg Unknown Use unknown
 <key.FF.manufacturing> 
Available on /root/.gnupg Unknown Use unknown
 <key.FF.transfer> 
Available on /root/.gnupg Available on /root/.gnupg Use unknown

zsi_fw.exe - Uploading firmware to device

zsi_fw.exe -w everest_vmlinux_ext_prod_1.1.1.50239.srr everest_initrd_ext_prod_1.1.1.50239.srr
ZSI FW load starting.
Found unencrypted file: everest_vmlinux_ext_prod_1.1.1.50239.srr
Found unencrypted file: everest_initrd_ext_prod_1.1.1.50239.srr
Open USB Device start
found a device!
Attempting to open \\?\usb#vid_0781&pid_7481#5&1b0f9047&0&2#{184954e0-9128-11db-b606-0800200c9a66}
opened device!
completeDeviceName = (\\?\usb#vid_0781&pid_7481#5&1b0f9047&0&2#{184954e0-9128-11db-b606-0800200c9a66})
Opened successfully.
data completeDeviceName = (\\?\usb#vid_0781&pid_7481#5&1b0f9047&0&2#{184954e0-9128-11db-b606-0800200c9a66}\PIPE00)
Opened successfully.
Loading: 1008000 16809984 1754944
Done!
Loading: 4400020 4294967295 1783808
Done!

The upload process simply transfers the given .srr file through USB (ID 0781:7481) - if it's encrypted, it's decrypted on the fly. The program first transfers the 16-bytes header and then the rest of the file in 64-bytes blocks.

zsi_fw.exe - Reading from device

zsi_fw.exe allows reading data from the device - it's invoked in this mode during the recovery process to retreive a device ID. The only parameter that matters is the "-r" switch - the rest is ignored.

c:\Archivos de programa\SanDisk\Sansa Connect Device Recovery\cmdline>zsi_fw.exe -r 4000000 kk
ZSI FW load starting.
Open USB Device start
found a device!
Attempting to open \\?\usb#vid_0781&pid_7481#5&29b63fa7&0&2#{184954e0-9128-11db-b606-0800200c9a66}
opened device!
completeDeviceName = (\\?\usb#vid_0781&pid_7481#5&29b63fa7&0&2#{184954e0-9128-11db-b606-0800200c9a66})
Opened successfully.
data completeDeviceName = (\\?\usb#vid_0781&pid_7481#5&29b63fa7&0&2#{184954e0-9128-11db-b606-0800200c9a66}\PIPE01)
Opened successfully.
ID: 00350cde0cddccfbeb92ec830300348c

In this mode the process reads 32 bytes from the device which are dumped as a string. Transfer type is USB control transfer (request type = 0x00000000, value = 0x0000AAAA, index = 0x0000AAAA)

zaprecover.exe - Writing platform to device

zaprecover.exe writes files to the devices' filesystem.

c:\downloads\Sandisk_Sansa_Connect\test>zaprecover.exe -t 600000 -f yeverest_zap_ota_rel_ext_prod_1.1.1.50371.tar.gz.e yeverest_zap_ota_rel_ext_prod_1.1.1.50371.sig
ZSI FW load starting.
Found encrypted file: yeverest_zap_ota_rel_ext_prod_1.1.1.50371.tar.gz.e
Found unencrypted file: yeverest_zap_ota_rel_ext_prod_1.1.1.50371.sig
found a device!
Attempting to open \\?\usb#vid_0781&pid_7482#5&29b63fa7&0&2#{088db354-111f-11db-9804-b622a1ef5492}
opened device!
completeDeviceName = (\\?\usb#vid_0781&pid_7482#5&29b63fa7&0&2#{088db354-111f-11db-9804-b622a1ef5492}\PIPE01)
found a device!
Attempting to open \\?\usb#vid_0781&pid_7482#5&29b63fa7&0&2#{088db354-111f-11db-9804-b622a1ef5492}
opened device!
completeDeviceName = (\\?\usb#vid_0781&pid_7482#5&29b63fa7&0&2#{088db354-111f-11db-9804-b622a1ef5492}\PIPE00)
...................................................................................................Done!
.Done!

Open ports

When connected via WIFI, the device has TCP port 8088 open, which appears to be a web server. The headers returned are:

Connection: close
Server: ZING-0035/1.1.1.50239 (xxxx; en-us) ZAP/1.1.1.50371 BOOT/24655 libcurl/7.16.0 OpenSSL/0.9.8a

404 Not Found

where xxxx is the 32 character long hex unique Device ID (visible in the Connect firmware under Settings -> Info -> Software Versions).

There don't appear to be any open UDP ports.

The device can be crashed by sending a lot of random data to the open port 8088. Under Linux (substitute 192.168.1.128 for your device's IP address):

dd if=/dev/urandom bs=1 count=100000 | nc 192.168.1.128 8088

Free Software

The PDF that ships on the Sansa Connect CD includes a section called "Open Source Licences" and includes:

busybox
curl
Ezxml
Freetype
GPG
Linux
mDNSresponder
Mono
libpng
openssl
SSLeay
resample
Uclibc
wpa_supplicant
zlib

There are broken links in the PDF to the Sansa site to download modified source versions of the GPL licensed software. Instead these downloads are available from the Zing site, substituting zing.net for sandisk.com in the links: busybox, GPG, Linux, Mono, resample and Uclibc. Also attached is a diff created against the vanilla 2.6.4 kernel release.

I Attachment Action Size Date Who Comment
pdfpdf 1082502_SANDISK_1512.pdf manage 463.8 K 2009-09-24 - 14:11 LisandroPin Sandisk iNAND flash datasheet
pdfpdf CT022TN04_V.1.pdf manage 142.6 K 2008-01-01 - 18:57 RobertKeevil  
pdfpdf TPS65021.pdf manage 3101.7 K 2008-01-01 - 18:58 RobertKeevil  
pdfpdf atmel_mega165.pdf manage 3088.8 K 2008-01-01 - 18:56 RobertKeevil  
jpgjpg connect-back.jpg manage 437.0 K 2008-01-15 - 22:06 RobertKeevil  
pdfpdf k4m51323lc.pdf manage 142.7 K 2008-01-01 - 18:59 RobertKeevil  
txttxt lsusb-normal.txt manage 2.6 K 2008-01-01 - 19:00 RobertKeevil  
txttxt lsusb-recovery.txt manage 2.2 K 2008-01-01 - 19:00 RobertKeevil  
elsebz2 sansaconnect-2.6.4.patch.bz2 manage 1636.9 K 2008-01-02 - 22:49 RobertKeevil  
pdfpdf tlv320aic3106.pdf manage 1602.7 K 2009-09-28 - 06:56 LisandroPin Ti AC3106I? Audio codec datasheet
r49 - 2010-05-07 - 17:00:14 - DanLenski

Parents: SanDisk

Copyright © by the contributing authors.