Wiki > Main > UDMAonUSB (compare)
Difference: UDMAonUSB (r10 vs. r9)
This is a guide for those wishing to speed up transfers between a DAP with a UDMA hard drive / CF and a computer
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.
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:
This utility communicates directly over USB from the PC to the ISD-300.
win32 executable, requires libusb:
The source code is provided, and ports are welcome.
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.
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:
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:
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.
Please post your results.
r10 - 06 Mar 2009 - 11:24:34 - MatthiasLarischRevision r10 - 06 Mar 2009 - 11:24 - MatthiasLarisch
Revision r9 - 04 Mar 2009 - 20:43 - MatthiasLarisch
Copyright © by the contributing authors.