Puppy Linux Discussion Forum Forum Index Puppy Linux Discussion Forum
Puppy HOME page : puppylinux.com
"THE" alternative forum : puppylinux.info
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

The time now is Sun 20 Apr 2014, 23:16
All times are UTC - 4
 Forum index » House Training » Bugs ( Submit bugs )
212,213b USB flash names not retained in Pmount, Univ Inst
Moderators: Flash, Ian, JohnMurga
Post new topic   Reply to topic View previous topic :: View next topic
Page 4 of 10 [144 Posts]   Goto page: Previous 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Next
Author Message
pakt


Joined: 04 Jun 2005
Posts: 1089
Location: Sweden

PostPosted: Mon 01 Jan 2007, 06:34    Post subject:  

pakt wrote:
Ineresting to see what happens when using 'stock' 2.13b2 pmount with plinej's probedisk:

pmount reports correctly:
sda 'SanDisk' drive /dev/sda1
sdb 'USB 2.0' /dev/sdb1

Pulled 'SanDisk', now pmount doesn't report *any* USB drive.

Plugged 'SanDisk' back in, pmount reports both USB drives exactly as before.

Pulled 'USB 2.0', pmount correctly reports the SanDisk sda drive.

Seems like pmount stops looking for USB drives if it can't find sda.

Paul

Okay, I got another clue here. It's probepart that reports both USB drives gone when only sda is pulled out!

When I plug sda back in, probepart again reports both drives as present. Rolling Eyes

_________________
Testing Puppy since v0.9.2 - my desktop OS since v1.0.7
Running SlaxerPup-4.12 - Puppy with a Slackware 12.2 heart Cool
Back to top
View user's profile Send private message 
plinej

Joined: 13 Aug 2006
Posts: 1522

PostPosted: Mon 01 Jan 2007, 18:10    Post subject:  

I see the problem when there is no /dev/sda but there is a /dev/sdb (or c, d, e, whatever). That problem lies in probepart. If it doesn't see sda it won't look further. I'll compile that latest cvs of libhardware and see if it works any better, otherwise we'll have to work on more wrapper scripts or something.

--edit--

posted before I saw pakt's comment.
Back to top
View user's profile Send private message 
plinej

Joined: 13 Aug 2006
Posts: 1522

PostPosted: Mon 01 Jan 2007, 18:19    Post subject:  

Nope, the cvs version is corrupt too. Both probedisk and probepart have the same problems as the normal puppy version. I'll see if I can think up a wrapper script for probepart too.
Back to top
View user's profile Send private message 
plinej

Joined: 13 Aug 2006
Posts: 1522

PostPosted: Tue 02 Jan 2007, 01:46    Post subject:  

I figured out a better way to make a wrapper script for probedisk using cdrecord -scanbus. I did alot of messing with it and it appears to list the drives in order so getting the brand/model information seems more reliable that way and not to mention made my script much smaller. I also just finished up a wrapper script for probepart. I made a dotpup package with dougal and my updates to pmount and my probedisk/probepart modifications. The package contains the three mentioned files and also the original probedisk and probepart renamed to probedisk2 and probepart2. Give it a try and let me know if it works.

--edit--

had to add a cross reference with /var/log/messages to verify correct device found from cdrecord -scanbus since they don't always print in order.

--edit--

removed this version and posted another furthur down

Last edited by plinej on Tue 02 Jan 2007, 22:48; edited 6 times in total
Back to top
View user's profile Send private message 
plinej

Joined: 13 Aug 2006
Posts: 1522

PostPosted: Tue 02 Jan 2007, 01:49    Post subject:  

Here's my probedisk script:

Code:

#!/bin/sh

### wrapper script to fix probedisk issues with usb drives

if [ -d /tmp/probedisk ]; then
rm -r /tmp/probedisk
fi
if [ -f /tmp/probedisk ]; then
rm -f /tmp/probedisk
fi

if [ "`cat /proc/partitions | grep sd`" != "" ]; then
mkdir /tmp/probedisk
cat /proc/partitions | grep sd | sed -e 's/[0-9]//g' | sed -e 's/ //g' | sort -u > /tmp/probedisk/usbdevices  ### get current existing usb device names
cdrecord -scanbus 2>/dev/null | grep Disk > /tmp/probedisk/scanbus
START=1
cat /tmp/probedisk/usbdevices | while read DEV
do
BRAND=`cat /tmp/probedisk/scanbus | sed -n ""$START"p" | cut -f 2 -d "'" | tr -s ' '`
MODEL=`cat /tmp/probedisk/scanbus | sed -n ""$START"p" | cut -f 4 -d "'" | tr -s ' '`
if [ "`cat /var/log/messages | grep "$MODEL"`" != "" ]; then
NUMLINES="`cat /var/log/messages | grep "$MODEL" -A 2 | grep -v Direct-Access | grep -v "$MODEL" | wc -l | sed -e 's/ *//' | sed -e 's/ .*//g'`"
DEV2="`cat /var/log/messages | grep "$MODEL" -A 2 | grep -v Direct-Access | grep -v "$MODEL" | cut -f 4 -d ':' | sed -e 's/SCSI//g' | sed -e 's/device//g' | sed -e 's/ //g' | sed -n ""$NUMLINES"p" | grep sd`"
if [ "$DEV2" != "" ]; then
DEV="$DEV2"
fi
fi
echo \/dev\/"$DEV"\|Direct-Access\|"$BRAND""$MODEL" >> /tmp/probedisk/probedisk  ### reorganize to output how original probedisk outputs
START=`expr "$START" + 1`
done
cat /tmp/probedisk/probedisk | sort -u > /tmp/probedisk/probedisk
fi

probedisk2 2>/dev/null | grep -v '/dev/sd'
if [ -f /tmp/probedisk/probedisk ]; then
cat /tmp/probedisk/probedisk
fi

rm -r /tmp/probedisk


probepart:

Code:

#!/bin/sh

### wrapper script to fix probepart issues with usb drives

if [ "`cat /proc/partitions | grep sd`" != "" ]; then

if [ -d /tmp/probepart ]; then
rm -r /tmp/probepart
fi
if [ -f /tmp/probepart ]; then
rm -f /tmp/probepart
fi
mkdir /tmp/probepart
mkdir /tmp/probepart/mnt

cat /proc/partitions | grep sd | tr -s ' ' | sed -e 's/ /\|/g' | cut -f 5 -d '|' | grep [0-9] | sort -u > /tmp/probepart/usbdevices

cat /tmp/probepart/usbdevices | sed -e 's/[0-9]//g' | sort -u | while read DEV2
do
fdisk -l /dev/"$DEV2" > /tmp/probepart/probeparttemp
cat /tmp/probepart/probeparttemp | grep -v bytes | grep -v cylinders | grep -v Blocks | sed -e 's/\*//g' | sed -e 's/\+//g' | tr -s ' ' | sed '/^$/d' | sed -e 's/ /\|/g' >> /tmp/probepart/probepart2
done

cat /tmp/probepart/usbdevices | while read DEV
do
if [ "`cat /etc/mtab | grep /dev/"$DEV"`" = "" ]; then
mount /dev/"$DEV" /tmp/probepart/mnt >/dev/null
touch /tmp/probepart/tempmount
fi
SIZE=`cat /proc/partitions | grep "$DEV" | tr -s ' ' | sed -e 's/ /\|/g' | cut -f 4 -d '|'`
SIZE2=`echo "(( "$SIZE" * 2 ))" | bc -l`
if [ "$1" = -m ]; then
SIZE2=`echo "(( "$SIZE2" / 2048.12749 ))" | bc -l | cut -f 1 -d '.'`
fi
TYPE=`cat /etc/mtab | grep /dev/"$DEV" | cut -f 3 -d ' '`
if [ "$TYPE" = "" ]; then
TYPE=`cat /tmp/probepart/probepart2 | grep "$DEV" | cut -f 6 -d '|'`
fi
echo \/dev\/"$DEV"\|`echo "$TYPE"`\|`echo "$SIZE2"`\|`cat /tmp/probepart/probepart2 | grep "$DEV" | cut -f 6 -d '|'` >> /tmp/probepart/probepart
if [ -f /tmp/probepart/tempmount ]; then
umount /tmp/probepart/mnt >/dev/null
rm -f /tmp/probepart/tempmount
fi
done
fi

probepart2 2>/dev/null | grep -v '/dev/sd'
if [ -f /tmp/probepart/probepart ]; then
cat /tmp/probepart/probepart
fi
rm -r /tmp/probepart

Last edited by plinej on Tue 02 Jan 2007, 12:46; edited 1 time in total
Back to top
View user's profile Send private message 
plinej

Joined: 13 Aug 2006
Posts: 1522

PostPosted: Tue 02 Jan 2007, 11:45    Post subject:  

found a potential problem in the propepart script so I modified a line and re-uploaded the dotpup.
Back to top
View user's profile Send private message 
plinej

Joined: 13 Aug 2006
Posts: 1522

PostPosted: Tue 02 Jan 2007, 11:48    Post subject:  

nope, looks like cdrecord -scanbus isn't going to work. I'll have to do some more modifying.
Back to top
View user's profile Send private message 
plinej

Joined: 13 Aug 2006
Posts: 1522

PostPosted: Tue 02 Jan 2007, 12:49    Post subject:  

Okay, re-uploaded again. This time probedisk still uses cdrecord -scanbus to get the brand and model information but it cross references the device info with /var/log/messages if the model is found within in the log. I would just use /proc/scsi/scsi but I have a usb drive that shows up in there three times for some reason where cdrecord -scanbus shows it correctly.
Back to top
View user's profile Send private message 
PaulBx1

Joined: 16 Jun 2006
Posts: 2308
Location: Wyoming, USA

PostPosted: Tue 02 Jan 2007, 20:29    Post subject:  

Looks like I missed some fun.

One factor which MAY have some bearing on my case is that my PC is an old, slow laptop with a hub off a USB 1.1 bus. Maybe timing is an issue. However looks like this is a pretty general issue.

I too saw both flash "disappear" (according to pmount) when pulling sda...

Antonio got back to me; the email is on my laptop so I can't report exactly what he said, however IIRC he said (approximately) that he never intended probedisk/probepart to work with hot-pluggable devices, and also that he was not interested in fixing it to work with them. So I guess we're on our own...

gn2 mentioned udev on another thread, a standard way to deal with such devices, I wondered if that is somehow implemented in Puppy? I guess not, since we have to fiddle with using the logs to figure out what is what. Maybe udev is too big? On the other hand, my concern about the logs being non-deterministic may be exaggerated since it is a one-user system. Although it is not the cleanest implementation, maybe it's "good enough for government work". Laughing Anyway once this is cleaned up I think all those applications that use probedisk/probepart will be a lot more solid, a good thing.

Quote:
I would just use /proc/scsi/scsi but I have a usb drive that shows up in there three times for some reason


Use "uniq"? A bit strange that there is not a way in /proc/... to connect a device name like /dev/sda with a device description. Maybe that is what udev does?

I'm going to be on the road for a few days, will check back in as soon as I can.
Back to top
View user's profile Send private message 
plinej

Joined: 13 Aug 2006
Posts: 1522

PostPosted: Tue 02 Jan 2007, 20:50    Post subject:  

Yeah I thought of using uniq but the lines are a bit different even though it's the same device. It's just easier to use cdrecord -scanbus since it will report all devices it finds and will do so only once. The problem is that the only place that I can find in the system files that reports the brand/model & the actual device (sda) is /var/log/messages. /proc/scsi/scsi doesn't list the device and they aren't listed in order so it's impossible to just get the needed information from there. I think this bit of code I came up with should work pretty good. I have also seen MUT lose the Model information of a drive in all my testing over the last few days. My probepart wrapper script I believe should take care of the problem in regards to pulling sda and pmount doesn't see any of the other devices. In my testing I've done it seems to have fixed this problem and I think that code should be very good in finding all devices.
Back to top
View user's profile Send private message 
plinej

Joined: 13 Aug 2006
Posts: 1522

PostPosted: Tue 02 Jan 2007, 21:48    Post subject:  

I found a little cli utility called sg_map that could be just what we need to use as a wrapper to probedisk that should be more reliable than using my probedisk script. Here's what it outputs:

Code:

sh-3.00# sg_map -i
/dev/sg0  /dev/scd0  LITE-ON   DVDRW SHW-1635S   YS0N
/dev/sg1  /dev/sda  WD        1600JB External   0107
/dev/sg2  /dev/sdb  GENERIC   USB Storage-CFC   010D
/dev/sg3  /dev/sdc  GENERIC   USB Storage-MMC   010D
/dev/sg4  /dev/sdd  GENERIC   USB Storage-MSC   010D
/dev/sg5  /dev/sde  JetFlash  TS1GJF110         0.00


I'll work on making a script to utilize this tool but I would think this may be exactly what we need for a reliable way to get device and brand/model information.
Back to top
View user's profile Send private message 
plinej

Joined: 13 Aug 2006
Posts: 1522

PostPosted: Tue 02 Jan 2007, 22:03    Post subject:  

Here's a dotpup of the sg_map executable I just compiled. This Pmount_Probedisk_Probepart.pup is to be used with sg_map.
Pmount-Probedisk-Probepart.pup
Description 
pup

 Download 
Filename  Pmount-Probedisk-Probepart.pup 
Filesize  28.86 KB 
Downloaded  222 Time(s) 
SG-map-1.21.pup
Description 
pup

 Download 
Filename  SG-map-1.21.pup 
Filesize  49.74 KB 
Downloaded  195 Time(s) 

Last edited by plinej on Sun 07 Jan 2007, 22:33; edited 5 times in total
Back to top
View user's profile Send private message 
peppyy


Joined: 27 Jun 2005
Posts: 429
Location: VT USA

PostPosted: Tue 02 Jan 2007, 22:48    Post subject:  

I am not sure if this helps but here are some results from sg_map

Ran with no usb attached

Code:
sh-3.00# sg_map
Stopping because no sg devices found


with 2gb sandisk mini cruzer

Code:
Strange, could not find device /dev/sda mapped to sg device??


again with same

Code:
sh-3.00# sg_map
/dev/sg0  /dev/sda

unplugged
Code:

sh-3.00# sg_map
Stopping because no sg devices found


with 1gb pny attache and 2gb micro

Code:
sh-3.00# sg_map
Strange, could not find device /dev/sdb mapped to sg device??
/dev/sg0  /dev/sda
/dev/sg1  /dev/scd0

again with same
Code:

sh-3.00# sg_map
/dev/sg0  /dev/sda
/dev/sg1  /dev/scd0
/dev/sg2  /dev/sdb


with attache unpluged
Code:

sh-3.00# sg_map
/dev/sg2  /dev/sdb


This is on a thinkpad t22. with a single 1.1 port and usb hub.

I thoughtI was having problems with mut on some earlier machines but I now believe it is detection. that is a seperate problem though.

_________________
Questions? Search Puppy Linux Answers with Google
Back to top
View user's profile Send private message Visit poster's website AIM Address Yahoo Messenger MSN Messenger 
plinej

Joined: 13 Aug 2006
Posts: 1522

PostPosted: Tue 02 Jan 2007, 23:49    Post subject:  

hmm, that's weird. sg_map seems to be working okay for me so far. If you download the new Pmount-Probedisk-Probepart.pup as well as SG_map and install them both you should still get all devices listed in pmount/probedisk but you won't get the brand/model information if sg_map doesn't detect your drive. All the drives are found in /proc/partitions and then the brand/model information will be found from sg_map.

My new probedisk wrapper script:

Code:

#!/bin/sh

### wrapper script to fix probedisk issues with usb drives

if [ -d /tmp/probedisk ]; then
rm -r /tmp/probedisk
fi
if [ -f /tmp/probedisk ]; then
rm -f /tmp/probedisk
fi

if [ "`cat /proc/partitions | grep sd`" != "" ]; then
mkdir /tmp/probedisk
cat /proc/partitions | grep sd | sed -e 's/[0-9]//g' | sed -e 's/ //g' | sort -u > /tmp/probedisk/usbdevices  ### get current existing usb device names
sg_map -i | cut -b 11- | tr -s ' ' > /tmp/probedisk/scanbus
cat /tmp/probedisk/usbdevices | while read DEV
do
BRAND=`cat /tmp/probedisk/scanbus | grep /dev/$DEV | sed -e "s/\/dev\/$DEV //g" | sed -e 's/ /_/g'`
echo \/dev\/"$DEV"\|Direct-Access\|"$BRAND" >> /tmp/probedisk/probedisk  ### reorganize to output how original probedisk outputs
done
cat /tmp/probedisk/probedisk | sort -u > /tmp/probedisk/probedisk
fi

probedisk2 2>/dev/null | grep -v '/dev/sd'
if [ -f /tmp/probedisk/probedisk ]; then
cat /tmp/probedisk/probedisk
fi

rm -r /tmp/probedisk


Maybe I should add another cross reference search incase the brand/model info isn't found I could grep /var/log/messages or /proc/scsi (if only 1 usb drive is detected). I'll add that right now.
Back to top
View user's profile Send private message 
plinej

Joined: 13 Aug 2006
Posts: 1522

PostPosted: Wed 03 Jan 2007, 00:30    Post subject:  

Okay, download and install the 2 dotpups above (SG_map & Pmount_Probedisk_Probepart) and test pmount, probepart, and probedisk. My probedisk wrapper script is going to utilize sg_map to find the usb device names. If it fails and only one usb drive is found in /proc/partitions then the drive name will be found in /proc/scsi/scsi. If there are multiple usb drives and sg_map fails to get usb device names the script will grep through /var/log/messages. I would think this should work and the chance to fail should be minimal. With the probepart wrapper script in place you should be able to still see your device listed in pmount even if for some reason the drive information isn't found with the probedisk wrapper script.

newest probedisk wrapper script:

Code:

#!/bin/sh

### wrapper script to fix probedisk issues with usb drives

if [ -d /tmp/probedisk ]; then
rm -r /tmp/probedisk
fi
if [ -f /tmp/probedisk ]; then
rm -f /tmp/probedisk
fi

if [ "`cat /proc/partitions | grep sd`" != "" ]; then
mkdir /tmp/probedisk
cat /proc/partitions | grep sd | sed -e 's/[0-9]//g' | sed -e 's/ //g' | sort -u > /tmp/probedisk/usbdevices  ### get current existing usb device names
sg_map -i | cut -b 11- | tr -s ' ' > /tmp/probedisk/scanbus
cat /tmp/probedisk/usbdevices | while read DEV
do
BRAND=`cat /tmp/probedisk/scanbus | grep /dev/$DEV | sed -e "s/\/dev\/$DEV //g" | sed -e 's/ /_/g'`
if [ "$BRAND" = "" ]; then
if [ "`cat /tmp/probedisk/usbdevices | wc -l | sed -e 's/ *//' | sed -e 's/ .*//g'`" = 1 ]; then
BRAND1=`cat /proc/scsi/scsi | grep Direct-Access -B 1 | grep -v Direct-Access | sed -n 1p | cut -f 2 -d ':' | tr -s ' ' | sed -e 's/Model//g' | sed 's/^ //g'`
BRAND2=`cat /proc/scsi/scsi | grep Direct-Access -B 1 | grep -v Direct-Access | sed -n 1p | cut -f 3 -d ':' | tr -s ' ' | sed -e 's/Rev//g' | sed 's/^ //g'`
else
BRAND1=`cat /var/log/messages | grep "SCSI device $DEV:" -B 10 | tail | grep 'Vendor:' | cut -f 5 -d ':' | sed -e 's/Model//g' | tr -s ' ' | sed 's/^ //g'`
BRAND2=`cat /var/log/messages | grep "SCSI device $DEV:" -B 10 | tail | grep 'Vendor:' | cut -f 6 -d ':' | sed -e 's/Rev//g' | tr -s ' ' | sed 's/^ //g'`
fi
BRAND="$BRAND1""$BRAND2"
fi
echo \/dev\/"$DEV"\|Direct-Access\|"$BRAND" >> /tmp/probedisk/probedisk  ### reorganize to output how original probedisk outputs
done
cat /tmp/probedisk/probedisk | sort -u > /tmp/probedisk/probedisk
fi

probedisk2 2>/dev/null | grep -v '/dev/sd'
if [ -f /tmp/probedisk/probedisk ]; then
cat /tmp/probedisk/probedisk
fi

rm -r /tmp/probedisk
Back to top
View user's profile Send private message 
Display posts from previous:   Sort by:   
Page 4 of 10 [144 Posts]   Goto page: Previous 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Next
Post new topic   Reply to topic View previous topic :: View next topic
 Forum index » House Training » Bugs ( Submit bugs )
Jump to:  

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group
[ Time: 0.0996s ][ Queries: 12 (0.0062s) ][ GZIP on ]