The MP3car.com Store The MP3car.com Store    

Sponsored links

Go Back   MP3Car.com > Mp3Car Technical > Linux

Reply
 
LinkBack Thread Tools Display Modes
Old 07-08-2005, 01:16 PM   #1
pkg
Low Bitrate
 
pkg's Avatar
 
Join Date: Apr 2005
Location: Arizona
Posts: 96
USB devices that power off in Linux

Now that I have my touchscreen working I am seeing the next piece of the puzzle.

When my LCD (and touchscreen controller) power off and my computer is still running, the touchscreen controller does not come back to the system when I power the lcd back on.

This seems to be seen with other devices like USB printers in Linux. Does any of you know how to keep this from happening? I am running Debian Sarge, 2.6.8 kernel, hotplug.

Thanks,
Paul
__________________
-pkg

Check out my tC: http://publicjestering.com/tc
Check out my site: http://publicjestering.com
pkg is offline   Reply With Quote
Advertisement
 
Advertisement
Sponsored links

Old 07-08-2005, 05:39 PM   #2
Newbie
 
Join Date: Dec 2004
Posts: 48
might have to make a script for hotplug to autodetect usb plug/unplug I had to do this in gentoo with a usb thumbdrive
DigitalExpl0it is offline   Reply With Quote
Old 07-08-2005, 07:14 PM   #3
pkg
Low Bitrate
 
pkg's Avatar
 
Join Date: Apr 2005
Location: Arizona
Posts: 96
Quote: Originally Posted by DigitalExpl0it
might have to make a script for hotplug to autodetect usb plug/unplug I had to do this in gentoo with a usb thumbdrive


Do you have a copy that you can post here? Also, do you have to run it manually each time?

Thanks,
__________________
-pkg

Check out my tC: http://publicjestering.com/tc
Check out my site: http://publicjestering.com
pkg is offline   Reply With Quote
Old 07-11-2005, 10:54 AM   #4
Newbie
 
Join Date: Dec 2004
Posts: 48
ill see if I cant get it and no its all auto
DigitalExpl0it is offline   Reply With Quote
Old 07-11-2005, 10:57 AM   #5
Newbie
 
Join Date: Dec 2004
Posts: 48
it uses the automount hotplug so here is the script may need tweaking

Quote:
#!/bin/sh
#
# Automount hotplugged block devices, by Wout Mertens (wmertens@gentoo.org)
#
# Linux v2.6 version
# This script is released under version 2 of the GPL.

# To install this, either make it /sbin/hotplug, or, if you have
# linux-hotplug installed, make it /etc/hotplug.d/block/automount.hotplug .
# It needs to be executable. I tested it with busybox's ash.
#
# The devices will be mounted for the console user if applicable.
#
# To work, this needs:
# - v2.6 kernel support:
# - hotplugging, /proc mounted, /sys mounted
# - filesystems that will be mounted, like vfat
# - sh, echo, sed, stat or ls, getent or grep passwd,
# mount, umount, mkdir, rmdir. logger is used if there.
#
# Possible improvements:
# - Call a notifier script when mounting/unmounting. This could create the
# desktop entry by itself.
# - Edit fstab instead, and give the "user" option. This depends more on
# the user/desktop knowing what he/it is doing.

# Changelog:
#
# - 2005-03-26 Mark Burazin (mark@burazin.net)
# - Multiple partitions are now correctly created as separate icons
#
# - 2005-03-20 Mark Burazin (mark@burazin.net)
# - Creation of desktop entry under /home/(current user)/Desktop
# - use supermount and subfs successfuly.
# - Solve bug where sometimes the icons were not deleted (problem was in spaces
# which were in some names eg. "JUMPDRIVE " -> "JUMPDRIVE")
# - Another issue of the delete bug is when the usb is quicker and we don't
# know the device name. There is a solution, but You must uncomment the "usbbug" line
# - allow a definition for using diffrent icons for diffrent drives check the
# PRODUCTS_* variables.

# Debugging
# set -xv
# exec > /tmp/hotplug.$$ 2>&1

# Configuration
ICON_PATH=/usr/kde/3.3/share/icons/default.kde/scalable/devices
PATH="/bin:/sbin:/usr/bin:/usr/sbin"
export PATH

# We only handle block device messages
[ "$1" != "block" ] && exit 0

# Proclaim stuff to the world
mesg () {
logger -t $0 "$*"
}

# Is path already mounted?
is_path_mounted () {
while read dev path rest
do
if [ "$path" = "$1" ]
then
return 0
fi
done < /proc/self/mounts
return 1
}

# Get mounted path for a device
get_mounted_path () {
while read dev path rest
do
if [ "$dev" = "$1" ]
then
echo "$path"
return 0
fi
done < /proc/self/mounts
return 1
}
get_product_info () {
# Here You can setup which are the default
# icons
ICON_HDD=hdd_mount.svgz
ICON_USBPENDRIVE=usbpendrive_mount.svgz
ICON_DEFAULT=$ICON_USBPENDRIVE
# And which icons to assign to which product id's, joust remove
# spaces from the name eg. "SOME USB DRIVE" -> "SOMEUSBDRIVE"
# and leave it surrounded by ":"
PRODUCTS_USBPENDRIVE=":JUMPDRIVE:"
PRODUCTS_HDD=":B200P0:24320:USBMSReader:USBCFReade r:"
# Find the name
PRODUCT=`cat /sys/$1/$2/device/model`
if [ -z "$PRODUCT" ]
then
PRODUCT=generic
else
PRODUCT=`echo $PRODUCT | sed 's/ //g'`
fi
# Find the vendor
VENDOR=`cat /sys/$1/$2/device/vendor`
if [ -z "$VENDOR" ]
then
VENDOR=vendor
else
VENDOR=`echo $VENDOR | sed 's/ //g'`
VENDOR=`echo $VENDOR | sed 's/-//g'`
fi

# Find out who we are going to mount it as
CONSOLEUSER=`stat -c%U /dev/console 2>/dev/null`
if [ -z "$CONSOLEUSER" ]
then
set `ls -l /dev/console`
CONSOLEUSER=$3
fi
[ -n "$CONSOLEUSER" ] || CONSOLEUSER=root
PASSWD=`getent passwd $CONSOLEUSER 2>/dev/null`
if [ -z "$PASSWD" ]
then
PASSWD=`grep "$CONSOLEUSER" /etc/passwd||grep root /etc/passwd`
fi
if [ -z "$PASSWD" ]
then
mesg "Could not get password entry for $CONSOLEUSER"
exit 1
fi
set `echo $PASSWD | sed 's/:/ /g'`
if [ $# -lt 4 ]
then
mesg "Bad password entry for $CONSOLEUSER"
exit 1
fi
USERID=$3
USERGID=$4


# if we have a quick usb unplug (can't determine product)
# then we need to find the icons by device and delete them.
if [ "$ACTION" = "remove" && $PRODUCT = "generic" ]
then
set `grep -l -e"$DEVICE" /home/$CONSOLEUSER/Desktop/*.desktop`
if [ $# -lt 1 ]
then
# this solves the usbbug, uncomment to allow this feature, but be careful
mesg "Deleting stale icon...$#"
rm /home/$CONSOLEUSER/Desktop/$#.desktop
fi
fi

#uncomment this so You can see the name for PRODUCTS_* variables
#mesg "Searching for product: ->$PRODUCT<-"

# Find the icon type
if [ ! -z `echo $PRODUCTS_USBPENDRIVE | grep -e:$PRODUCT:` ]
then
ICON_USE=$ICON_USBPENDRIVE
elif [ ! -z `echo $PRODUCTS_HDD | grep -e:$PRODUCT:` ]
then
ICON_USE=$ICON_HDD
else
ICON_USE=$ICON_DEFAULT
fi


}

# Wait for a file to appear
wait_for () {
local count=0
while [ $count -lt 10 ] && [ ! -e "$1" ]
do
sleep 1
done
[ $count -eq 10 ] && return 1
return 0
}

# Remove strange characters from a filename
clean_filename () {
# Note the lack of quotes around $1, this strips off spaces.
echo $1 | sed 's/[ /?*\"<>]/_/g'
}

# Figure out the device to mount
set `echo $DEVPATH | sed 's/\// /g'`
[ $# -ne 3 ] && exit 0
DEVICE=/dev/$3

if [ "$ACTION" = "remove" ]
then
# Is it ours?
dir=`get_mounted_path $DEVICE`
echo "$dir" | grep -q ^/mnt/usb || exit 0

get_product_info $1 $2 $ACTION $DEVICE

# Unmount it
[ -d "$dir" ] || exit 1
umount -lf "$dir"
rmdir "$dir"
# remove the desktop icon
mesg Unmounting $DEVICE, $dir $PRODUCT for user $CONSOLEUSER
SDEV=`echo $DEVICE | sed 's/\///g'`
rm "/home/$CONSOLEUSER/Desktop/$SDEV.desktop"
exit 1
fi

if [ "$ACTION" = "add" ]
then
# Is it a usb device? Exit if not.
ls -l /sys/$1/$2/device | sed 's/^.* -> //g' | grep -q usb || exit 0

# Mount it

# Make sure we have support for vfat
modprobe -q vfat

wait_for /sys/$1/$2/device/vendor || exit 1


get_product_info $1 $2 $ACTION

# Find out where we mount it
MOUNTPATH=/mnt/usb/`clean_filename "$PRODUCT"`
if is_path_mounted "$MOUNTPATH"
then
count=1
while is_path_mounted "${MOUNTPATH}_${count}"
do
count=$(( $count + 1 ))
done
MOUNTPATH="${MOUNTPATH}_${count}"
PRODUCT="${PRODUCT}_${count}"
fi
# Make sure it's a directory
if [ -e "$MOUNTPATH" ]
then
if [ ! -d "$MOUNTPATH" ]
then
mesg "$MOUNTPATH exists but is not a directory"
exit 1
fi
else
mkdir -p "$MOUNTPATH"
if [ $? -ne 0 ]
then
mesg "Could not create mountpoint $MOUNTPATH"
exit 1
fi
fi

# These options should prevent abuse and make it writeable for the
# console user.
if grep -q subfs /proc/filesystems
then
MOUNTOPTS="-s -t subfs -o fs=vfat:ext3:ext2:reiserfs,noatime,nosuid,umask=07 7,uid=$USERID,gid=$USERGID"
elif grep -q supermount /proc/filesystems
then
MOUNTOPTS="-s -t supermount -onoatime,nosuid,umask=077,uid=$USERID,gid=$USERGID "
else
#MOUNTOPTS="-s -onoatime,sync,dirsync,nosuid,umask=077,uid=$3,gid= $4"
MOUNTOPTS="-s -onoatime,sync,user,exec,umask=0000"
fi
mesg Mounting $DEVICE on $MOUNTPATH, options $MOUNTOPTS $ICON_USE

mount $MOUNTOPTS $DEVICE $MOUNTPATH

# Everything was mounted fine, create a Desktop icon
SDEV=`echo $DEVICE | sed 's/\///g'`
OUTPUTFILE="/home/$CONSOLEUSER/Desktop/$SDEV.desktop"
echo "[Desktop Entry]" > $OUTPUTFILE
echo "Version=1.0" >> $OUTPUTFILE
echo "Name=$VENDOR $PRODUCT" >> $OUTPUTFILE
echo "Encoding=UTF-8" >> $OUTPUTFILE
echo "Type=Link" >> $OUTPUTFILE
echo "URL=$MOUNTPATH" >> $OUTPUTFILE
echo "Dev=$DEVICE" >> $OUTPUTFILE
echo "Icon=$ICON_PATH/$ICON_USE" >> $OUTPUTFILE

chmod 777 $OUTPUTFILE
chown $CONSOLEUSER $OUTPUTFILE
chgrp users $OUTPUTFILE
fi
exit

thread here
http://forums.gentoo.org/viewtopic-t...-start-50.html

its for usb thumb drives but should work for any usb devices
this script has been modded by alot of people.

also you need udev support in the kernel for this

Last edited by DigitalExpl0it; 07-11-2005 at 10:59 AM.
DigitalExpl0it is offline   Reply With Quote
Old 07-11-2005, 03:56 PM   #6
pkg
Low Bitrate
 
pkg's Avatar
 
Join Date: Apr 2005
Location: Arizona
Posts: 96
Thanks for posting the script.

I will need to modify the script for the touchscreen but the script will probably be simplified since it is a non-storage device. I will post the modified script here when i get it done.

Thanks again,
__________________
-pkg

Check out my tC: http://publicjestering.com/tc
Check out my site: http://publicjestering.com
pkg is offline   Reply With Quote
Old 07-11-2005, 05:07 PM   #7
Newbie
 
Join Date: Dec 2004
Posts: 48
ya theres alot of code that can be ripped out. Might re-write the script but grab some of the code from this script
DigitalExpl0it is offline   Reply With Quote
Sponsored links
Advertisement
 
Advertisement
Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are Off
Refbacks are Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
Cutting power to USB after computer has shutdown lookinco Power Supplies 61 05-17-2006 01:05 PM
How to cut usb power when in standby Goddy General Hardware Discussion 2 03-14-2005 02:28 PM
Opus 90W w/ hardwired USB devices beckkl Power Supplies 0 10-13-2004 05:20 PM
usb power problem: solved! susman General Hardware Discussion 16 08-31-2004 01:50 AM
are usb 2.0 devices able to work with usb 1.1 hubs? chris in nh General Hardware Discussion 9 06-28-2004 07:27 PM


All times are GMT -5. The time now is 05:51 PM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0
Copyright © 1999 - 2008 Mp3Car.com Inc.Ad Management by RedTyger
Message Board Statistics