Hi all!
I'm working on a usb-storage driver for the MaxTech Moveman SSP100 mp3 
player, similar to the Lexar Jumpshot driver in that it uses an 
extremely simple read/write block interface to access the flash.

The firmware seems to be using some demo code from STMicroelectronics 
since the device identifies itself as:

   ...
   idVendor           0x0483 SGS Thomson Microelectronics
   idProduct          0x163d
   bcdDevice            1.00
   iManufacturer           4 STMicroelectronics
   iProduct               42 ST92163 MP3 USB Download Demo
   iSerial                88
   ...

It uses the (as I understand it) somewhat unusual configuration of 2 
read/write bulk endpoint pairs - one to send commands to the device and 
one for data transfers.

Basically, I have the driver up and running. Unfortunately, I'm a total 
newbie to usb hacking and there's a few problems/questions I have that I 
was hoping that someone on the list could help me sort out:


1) Lockups

About 4 out of 5 times when I connect the device, it "locks up". It 
seems like its USB engine is still running fine (it responds to standard 
control messages on EP 0), while the application firmware has gone into 
never-neverland - every attempt to send a command to it times out (NAK).

I get the exact same behaviour if I send it an invalid command, use the 
wrong transfer size, etc. Bottom line is that the firmware seems to be 
_extremely_ flaky.

Unfortunately, there's obviously no way out of this state (apart from 
disconnecting it and trying again) - I've tried to reset the ep, 
interface and device, but nothing helps. Also, the Windoze software 
shipped with the device doesn't seem to contain any recovery stuff at 
all, so that doesn't help me.

So, it seems like the best I can do is to _avoid_ this from happening in 
the first place.

What I think might be happening is that I try to talk to the device 
before it has finished its internal initialization. Again, there seems 
to be no way of probing the device to see if it's ready to accept 
commands or not. Is there any simple way I could enforce a delay after 
device registration? Any other insights? Perhaps even someone has access 
to the docs for the SGMicroelectronics demo firmware/driver?


2) Disconnect/reconnect

If I disconnect the device, the corresponding SCSI device disappears 
after a while. But when I reconnect it, it doesn't reappear. Why?
It seems to have something to do with usb-storage keeping track of 
devices that are reconnected?


3) Kernel panics

If I disconnect the device _before_ I try to unload the usb-storage 
module, it will fail to unload, and furthermore cause a kernel panic on 
reboot. If I leave it connected while unloading, everything is fine and 
dandy. Is this a known problem with usb-storage itself, or is it my 
driver doing something wrong?


Btw, I'm on 2.5.26.

Cheers,
--
Christer Palm



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to