diff -Nurp digitemp-3.5.0/Makefile digitemp-3.5.0-straitm/Makefile
--- digitemp-3.5.0/Makefile	2007-01-01 12:47:02.000000000 -0600
+++ digitemp-3.5.0-straitm/Makefile	2007-06-28 13:13:44.043671000 -0500
@@ -124,7 +124,7 @@ ds9097u:	$(OBJS) $(HDRS) $(ONEWIREOBJS) 
 		$(CC) $(OBJS) $(ONEWIREOBJS) $(DS9097UOBJS) -o digitemp_DS9097U $(LIBS)
 
 ds2490:		$(OBJS) $(HDRS) $(ONEWIREOBJS) $(ONEWIREHDRS) $(DS2490OBJS)
-		$(CC) $(OBJS) $(ONEWIREOBJS) $(DS2490OBJS) -o digitemp_DS2490 $(LIBS)
+		$(CC) $(OBJS) $(ONEWIREOBJS) $(DS2490OBJS) -o digitemp_DS2490-hacked $(LIBS)
 
 
 # Clean up the object files and the sub-directory for distributions
diff -Nurp digitemp-3.5.0/README_straitm digitemp-3.5.0-straitm/README_straitm
--- digitemp-3.5.0/README_straitm	1969-12-31 18:00:00.000000000 -0600
+++ digitemp-3.5.0-straitm/README_straitm	2007-06-28 13:01:19.250548000 -0500
@@ -0,0 +1,16 @@
+I hacked this to be able to read from a particular USB device given by
+proc directory and file on the command line.  This was necessary because
+otherwise it searches the whole bus and only uses the last device
+plugged in.
+
+Usage: Suppose that the device in question appears as
+/proc/bus/usb/001/021.  First, to get it set up, do:
+
+./digitemp_DS2490-hacked -sUSB -i -D 001 -F 021
+
+Then to read the temperature, do:
+
+./digitemp_DS2490-hacked -sUSB -a -D 001 -F 021
+
+If you unplug the device and plug it back in, the device number will
+change.
diff -Nurp digitemp-3.5.0/src/digitemp.c digitemp-3.5.0-straitm/src/digitemp.c
--- digitemp-3.5.0/src/digitemp.c	2006-12-30 09:12:25.000000000 -0600
+++ digitemp-3.5.0-straitm/src/digitemp.c	2007-06-28 12:52:20.843604000 -0500
@@ -2339,7 +2339,7 @@ int main( int argc, char *argv[] )
   strcpy( counter_format, "%b %d %H:%M:%S Sensor %s #%n %C" );
   strcpy( humidity_format, "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%" );
   strcpy( conf_file, ".digitemprc" );
-  strcpy( option_list, "?hqiaAvwr:f:s:l:t:d:n:o:c:O:H:" );
+  strcpy( option_list, "?hqiaAvwr:f:s:l:t:d:n:o:c:O:H:D:F:" );
 
 
   /* Command line options override any .digitemprc options temporarily	*/
@@ -2349,11 +2349,17 @@ int main( int argc, char *argv[] )
   optind = OPTINDSTART;
   opterr = 1;
 
+  char * thedir = NULL, * thefile = NULL;
+
   while( (c = getopt(argc, argv, option_list)) != GETOPTEOF )
   {
     /* Process the command line arguments */
     switch( c )
     {
+      case 'D': thedir = optarg;
+                break;
+      case 'F': thefile= optarg;
+                break;
       case 'c': if( optarg )			/* Configuration file	*/
 		{
 		  strncpy( conf_file, optarg, sizeof( conf_file ) - 1 );
@@ -2578,7 +2584,7 @@ int main( int argc, char *argv[] )
   if( !owAcquire( 0, serial_port) )
   {
 #else
-  if( !owAcquire( 0, serial_port, temp ) )
+  if( !owAcquire( 0, serial_port, temp, thedir, thefile ) )
   {
     fprintf( stderr, "USB ERROR: %s\n", temp );
 #endif
diff -Nurp digitemp-3.5.0/userial/ds2490/usbses.c digitemp-3.5.0-straitm/userial/ds2490/usbses.c
--- digitemp-3.5.0/userial/ds2490/usbses.c	2006-12-24 12:02:21.000000000 -0600
+++ digitemp-3.5.0-straitm/userial/ds2490/usbses.c	2007-06-28 13:11:19.349821000 -0500
@@ -33,9 +33,9 @@
 #include <string.h>
 
 
-SMALLINT owAcquire(int,char *, char *);
+SMALLINT owAcquire(int,char *, char *, char *, char *);
 void owRelease(int,char *);
-static void usb_ds2490_init(void);
+static void usb_ds2490_init(char *, char *);
 
 struct usb_dev_handle *usb_dev_handle_list[MAX_PORTNUM];
 struct usb_device *usb_dev_list[MAX_PORTNUM];
@@ -45,7 +45,7 @@ int initted_flag = 0;
 //---------------------------------------------------------------------------
 // Initialize the DS2490
 //
-void usb_ds2490_init(void)
+void usb_ds2490_init(char * thedir, char * thefile)
 {
 	struct usb_bus *bus;
 	struct usb_device *dev;
@@ -56,22 +56,21 @@ void usb_ds2490_init(void)
 	usb_find_busses();
 	usb_find_devices();
 
-      	//printf("bus/device  idVendor/idProduct\n");
+	//printf("bus/device  idVendor/idProduct\n");
 	for (bus = usb_busses; bus; bus = bus->next) {
 		for (dev = bus->devices; dev; dev = dev->next) {
-			//printf("%s/%s     %04X/%04X\n", bus->dirname, dev->filename,
-			//		dev->descriptor.idVendor, dev->descriptor.idProduct);
-			if (dev->descriptor.idVendor == 0x04FA &&
-					dev->descriptor.idProduct == 0x2490) {
-				printf("Found DS2490 device #%d at %s/%s\n", ++usb_num_devices + 1,
-						bus->dirname, dev->filename);
-				usb_dev_list[usb_num_devices] = dev;
+			//printf("%s/%s     %04X/%04X\n", bus->dirname, dev->filename, dev->descriptor.idVendor, dev->descriptor.idProduct);
+			if (dev->descriptor.idVendor == 0x04FA && dev->descriptor.idProduct == 0x2490) {
+				if(!strcmp(bus->dirname, thedir) && !strcmp(dev->filename, thefile)){
+					usb_num_devices++;
+					//printf("Found DS2490 device #%d at %s/%s\n", usb_num_devices + 1, bus->dirname, dev->filename);
+					usb_dev_list[usb_num_devices] = dev;
+				}
 			}
 		}
 	}
 
 	initted_flag = 1;
-
 }
 
 //---------------------------------------------------------------------------
@@ -82,12 +81,14 @@ void usb_ds2490_init(void)
 // 'port_zstr'  - zero terminated port name.  
 // 'return_msg' - zero terminated return message. 
 //
+// By straitm: only look at the USB directory thedir and file thefile
+// 
 // Returns: TRUE - success, port opened
 //
-SMALLINT owAcquire(int portnum, char *port_zstr, char *return_msg)
+SMALLINT owAcquire(int portnum, char *port_zstr, char *return_msg, char * thedir, char * thefile)
 {
 	if (!initted_flag)
-		usb_ds2490_init();
+		usb_ds2490_init(thedir, thefile);
 	
 	/* check the port string */
 	if (strcmp (port_zstr, "USB")) {
diff -Nurp digitemp-3.5.0/userial/owproto.h digitemp-3.5.0-straitm/userial/owproto.h
--- digitemp-3.5.0/userial/owproto.h	2006-12-30 09:12:25.000000000 -0600
+++ digitemp-3.5.0-straitm/userial/owproto.h	2007-06-28 12:52:37.080635000 -0500
@@ -6,7 +6,7 @@ SMALLINT owAccess(int);
 #ifndef OWUSB
 SMALLINT owAcquire(int,char *);
 #else
-SMALLINT owAcquire(int,char *, char *);
+SMALLINT owAcquire(int,char *, char *, char *, char *);
 #endif /* OWUSB */
 
 void     owSerialNum(int,uchar *,SMALLINT);
