public usb.core.Device getDevice (String portId)
	throws IOException
	{
	    // hack to work with hotplugging and $DEVICE
	    // /proc/bus/usb/BBB/DDD names are unstable, evil !!
	    if (portId.startsWith (devfsPath)) {
		String	temp;
		int	busNum, devAddr;

	    	temp = portId.substring (devfsPath.length () + 1);
		busNum = Integer.parseInt (temp.substring (0, 3), 10);
		devAddr = Integer.parseInt (temp.substring (4, 7), 10);

		synchronized (busses) {
		    Enumeration e = busses.keys ();

		    while (e.hasMoreElements ()) {
			USB bus = (USB) busses.get (e.nextElement ());
			if (bus.getBusNum () != busNum)
			    continue;
			return bus.getDevice (devAddr);
		    }
		    return null;
		}
	    }
	    return new PortIdentifier (portId).getDevice (this);
	}