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:
https://www.rockbox.org/realwiki/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 |
|
Copyright © by the contributing authors.