Hi all,

attached is a patch against 2.4.25 for the Adaptec USB2Xchange USB 2.0 --> SCSI converter.

This does two things (two kernel config options):
1. Send Adaptec binary firmware (extracted from adpusbld.sys) to 0x03f3 / 0x2002
The protocol used for firmware upload is pretty much cypress EZ-USB, except the reset register is at 0xe600 (FX2 ???).
2. Unusual_devs entry for 0x03f3 / 0x2003.
This includes a short two-command reset sequence needed __after__ reenumeration.
Without this connected SCSI devices don't identify properly.

The first part could easily be done in userspace (fxload ?) but I need it as a kernel part for an embedded system.
The second reset sequence needs to be done from within the storage driver anyway.

After reenumerating, the devices looks like a well-behaved bulk-only usb-storage device.
I've only tested it with a SCSI-printer, and found out that some internal buffer ist smaller than 64K. Limiting all transfers to 32K works fine.
Thus I guess that when using this with a disk, a ".max_sectors = 64" setting is needed in the host template (or sysfs setting for 2.6 ?).

I assume there are copyright issues regarding the contained firmware stopping us from integrating this into the kernel.
The firmware is freely available at http://download.adaptec.com/usb/usb2xchg_win_drv_v200.exe File: Adpusbld.sys Offset: 0x2FE0 (589 records).

Anybody from Adaptec listening ?

Have fun,
- sda

Attachment: __usb2xchg.patch.gz
Description: Binary data



Reply via email to