automate echo command on usb event

Sebastian Spiess sebastian.spiess at gmail.com
Thu Feb 21 09:52:17 GMT 2008


Peter Schwenke wrote:
> Sebastian Spiess wrote:
>> hi all,
>>
>> I have a FreeAgendGo external 2.5" hdd. the hdd is running fine exept that before I can use it without problems I always 
>> have to do the following
>>
>> 	dmesg|tail
>>
>> which gives me something like
>>
>> [ 1280.152000] sdb: assuming drive cache: write through
>> [ 1280.152000]  sdb: sdb1 sdb2
>> [ 1280.172000] sd 2:0:0:0: Attached scsi disk sdb
>> [ 1280.172000] sd 2:0:0:0: Attached scsi generic sg2 type 0
>> [ 1280.556000] NTFS-fs warning (device sdb1): parse_options(): Option utf8 is no longer supported, using option nls=utf8. 
>> Please use option nls=utf8 in the future and make sure utf8 is compiled either as a module or into the kernel.
>>
>> then I can do a
>>
>> 	sudo echo 1 >/sys/class/scsi_disk/2\:0\:0\:0/allow_restart
>>
>>
>> and the drive works fine.
>> troube is sometimes it is not sdb or not scsi_disk/2\:0\:0\:0
>> how can I make the command that is will work everytime, or even better, automatically?
>>
> 
> 
> Setting up a udev rule would do it.  I've had a fiddle with an external
> drive here to work out the udev params
> 
> 1. With an editor create a file in /etc/udev/rules.d/ for the udev rule
>    Call it 85-ext_hd.rules
>    I picked 85 since I  see a 85-hdparm.rules there
> 
> 2. In the rule you'll need to match up the model and vendor.  You can
> get that using
>  udevinfo -a -p /sys/block/sdb
> 
> 
> 3. In 85-ext_hd.rules enter the line (all on the one line, thunderbird
> has broken this up)
> 
> SUBSYSTEMS=="scsi",DRIVERS=="sd",KERNEL=="[0-9]*",
> ATTRS{model}=="ST3320620A",ATTRS{vendor}=="Initio",RUN+="/usr/local/bin/fixFreeAgent.sh
> %k"
> 
> substitute the model and vendor for what you found in step 2
> 
> 4. With an editor create the file /usr/local/bin/fixFreeAgent.sh
> 
> with the contents
> 
> #!/bin/sh
> echo 1 > /sys/class/scsi_disk/$1/allow_restart
> 
> 
> I didn't actually run that line so check it carefully
> 
> 
> 5. sudo chmod +x /usr/local/bin/fixFreeAgent.sh
>    sudo chmod +x /etc/udev/rules.d/85-ext_hd.rules
> 
> Then give it a whirl.
> 
> 
> 
> 
> The only thing is that I couldn't get the udev rules to match exactly so
> that the script was only called once.  It will be called twice.
> I looked at using
> SUBSYSTEMS=="scsi",KERNEL=="sd[b-z]",RUN+="/usr/local/bin/fixFreeAgent.sh
> %k"
> and at the output of  udevinfo -a -p /sys/block/sdb
> to see if there was an attribute which contained the equivalent of
> "2\:0\:0\:0" but no luck.
> 

Peter,
I spend already quite a bit of time on the bug report page regarding about this issue (see 
https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/61235 ) but somehow I could not transfer the 
solutions/suggestions there into a working solution for me. :-/

Now I did as you suggested

SUBSYSTEMS==“scsi”,DRIVERS==“sd”,KERNEL==”[0-9]*”,ATTRS{model}==“FreeAgent Go ”,ATTRS{vendor}==“Seagate 
”,RUN+=”/usr/local/bin/fixFreeAgent.sh %k”
is the line for the rule, I left the spaces in the names...
Once everything was done I unplugged, plugged and checked with cat /sys/class/scsi_disk/3\:0\:0\:0/allow_restart
which gives me a _1_

seems to work, thx so much

seb



More information about the ubuntu-au mailing list