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



Search | Go
Wiki > Main > DocsIndex > UDMAonUSB

This is a guide for those wishing to speed up transfers between a DAP with a UDMA hard drive / CF and a computer


Introduction

When a player is attached via USB as a mass storage device, the USB to ATA / ATAPI drive interface may be handled by a bridge chip in the DAP. This chip is responsible for the drive initialisation, and the stock parameters do not necessarily provide the best performance.


ISD-300

Several of the Rockbox compatible DAPs use either an ISD-300A or ISD-300LP USB-ATA bridge device. In some cases, the stock configuration limits the fastest transfer mode to PIO mode 4 (max 16MB/s). The ISD-300 devices are capable of UDMA mode 4 (max 66MB/s). This guide shows how to update the ISD-300 configuration to enable UDMA mode 4.

The datasheet implies that, with the updated configuration, if the ATA device is not UDMA mode 4 capable then the fastest mode that the drive supports will be used.

DAPs known to have an ISD-300:

ISD-300A Archos Rec. V1 (USB2.0)
Archos Rec. V2
Archos Rec. FM
ISD-300LP iAudio X5
iAudio M5
iAudio M3
Iriver H1x0 series
Iriver H3x0 series


ISD-300 UDMA USB Utility

This utility communicates directly over USB from the PC to the ISD-300.

It can:
  • determine the current UDMA settings
  • write UDMA enable to RAM for testing or temporary changes.
  • attempt to write to the EEPROM to make UDMA permanently enabled when used as a mass storage device.

Download

win32 executable, requires libusb:

http://www.rockbox.org/wiki/pub/Main/UDMAonUSB/isd300_udma_v0_9_2.zip

The source code is provided, and ports are welcome.

Requirements for win32 executable:

  • Windows version compatible with libusb 0.1.12.1.
  • libusb-win32-filter-bin-0.1.12.1.exe is installed. For Vista it is necessary to right click and select “Run this program in compatibility mode for” using XP, before installation.

After installing libusb-win32-filter-bin-0.1.12.1.exe, run the libusb test program to ensure that the library can see the DAP.

Prerequisites for speed gain

  • your DAP has an ISD-300
  • the drive (CF or hard disc) is UDMA capable
  • The ISD-300 default maximum is currently < UDMA mode 4

Find the UDMA settings

1) Connect the DAP to the computer via USB.

2) Run isd300_udma.exe

3) If a compatible DAP is found (USB ID listed in isd300_udma_id.h), select 'Config bytes'. The current UDMA configuration will be displayed. You can then proceed to:

Test the modified settings

UDMA enable settings can be tested temporarily if 'Config bytes' was selected in step 3). The original settings will be restored after powering off, or reconnecting a USB cable depending upon the DAP. After following steps 1) to 3) above, if the maximum settings are not in use, you will have the option to write the faster settings to the config RAM. Press 'y' if you wish to do this. If the write is successful, the DAP will be reset to activate the settings.

If you find that the modified settings produce a performance gain, you may wish to make them permanent by:

Writing to EEPROM

The EEPROM is where the ISD-300 loads its configuration from. The modified settings may be written here so that they are loaded every time. On some DAPs the EEPROM may be written to by default, on others the EEPROM has a write protect pin enabled which prevents writes. The program will inform you whether the write was successful.

To attempt to write to the EEPROM, follow steps 1) and 2) above, then select 'EEPROM' as the target, then 'y' to try to write.

If protected, then the EEPROM may be temporarily write enabled by changing the state of the pin. This must be undertaken with great caution, especially with regard to ensuring that VCC is not shorted to ground. Alternatively, if you just wish to use the UDMA settings whenever a large transfer to or from a PC is required, or cannot write to the EEPROM, then modify the config RAM before starting a transfer.

On IRiver H300 series you can do this safe and easy: under the Harddrive (back of PCB) there is a debug header top/left of the main CPU. There are many test points, one of them is called WP. This is the point directly under the text. Connect this to ground (i clamped a wire between the usb plug and header) to write the EEPROM.


UDMA configuration for various DAPs

Please post your results.
User Name DAP Drive UDMA enabled on bridge by default R/W stock (MB/s) R/W modified (MB/s) EEPROM writable Notes
JohnDobbler iriver H120 SMI CF 32GB No 11 / 5.5 27 / 12 No Managed to write to EEPROM by grounding WP pin
JohnDobbler iriver H120 MK2004GAL No 12 / 13 18 / 18 No Stock hard drive
MatthiasLarisch iriver H320 Kingston Elite Pro CF 32 GB No 11 / ? 25 / 12 No write EEPROM by grounding WP pin
JensArnold iriver H340 MK4004GAH No 11 / 7 17 / 8 No Stock hard drive
JensArnold iAudio X5 MK2006GAL Yes 18 / 11 same Yes Stock hard drive
JensArnold iAudio M5L MK2006GAL Yes 18 / 11 same Yes Stock hard drive
JensArnold iAudio M3 MK4004GAH Yes 18 / 8 same Yes Stock hard drive
JensArnold Archos Rec. V1 IC25N080ATMR04 No 12 / 12 breaks ? No drive access when UDMA is enabled
  Archos Rec. V2 ? No 14 / ? 25 / ? Yes  


I Attachment Action Size Date Who Comment
isd300-linux-0.9.2.diffdiff isd300-linux-0.9.2.diff manage 1.9 K 25 Feb 2009 - 23:34 DominikRiebeling Diff to make isd300 0.9.2 compile on linux and add a trivial Makefile
isd300_udma_v0_9_2.zipzip isd300_udma_v0_9_2.zip manage 11.2 K 24 Feb 2009 - 19:04 JohnDobbler Source and win32 executable to enable UDMA on ISD-300
r10 - 06 Mar 2009 - 11:24:34 - MatthiasLarisch

Parents: DocsIndex
Copyright by the contributing authors.