I'm not a udev expert, but I'll give you some of my observations.
1) I believe programs run by udev run under the root user, so you shouldn't need to use the sudo command in your script.
2) Make sure your script is actually in proper script form. It should have an sh or bash shebang (#!) at the top, then each command on a separate line (not actually necessary, but better for readability). So it should look something like this:
Code:
#!/bin/bash
rmmod ehci-hcd
sleep 1s
modprobe ehci-hcd
And make sure the root user has execute permissions for it, of course.
3) In your udev rule, be sure to give it the full path to the script. And since the shebang in the script tells your system what shell to run it in, you shouldn't need to specify the shell in the run command itself. So your udev command should look something like this:
Code:
KERNEL=="sd?1", BUS=="scsi", SUBSYSTEMS=="usb", ATTRS{vendor}=="SanDisk*", ATTRS{model}=="Sansa*", RUN+="/path/to/sansascript.sh"
4) Finally, you might try placing a debugging line or two in the script so you can see if udev is actually running it. Adding a line such as "echo $(date) >> /path/to/sansa.logfile" somewhere in the script will send the current date and time to the specified file if the script is running properly.