7d07a6cf50
Those files are actually common for dom0 and VM, but as we splitted the repos, move them accordingly.
41 lines
1.4 KiB
Bash
Executable File
41 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
##
|
|
## This script is invoked by udev rules whenever USB device appears or
|
|
## changes. This happens in usbvm domain (or dom0 if USB controller
|
|
## drivers are in dom0). The script records information about available
|
|
## USB devices into XS directory, making it available to qvm-usb tool
|
|
## running in dom0.
|
|
##
|
|
|
|
# FIXME: Ignore USB hubs and other wierd devices (see also in usb_remove).
|
|
[ "`echo $TYPE | cut -f1 -d/`" = "9" ] && exit 0
|
|
[ "$DEVTYPE" != "usb_device" ] && exit 0
|
|
|
|
# xenstore doesn't allow dot in key name
|
|
XSNAME=`basename ${DEVPATH} | tr . _`
|
|
|
|
# FIXME: For some devices (my Cherry keyboard) ID_SERIAL does not
|
|
# contain proper human-readable name, should find better method to
|
|
# build devide description.
|
|
#DESC=`python -c "dev='%d-%d' % (int('${BUSNUM}'.lstrip('0')), (int('${DEVNUM}'.lstrip('0'))-1)); from xen.util import vusb_util; print vusb_util.get_usbdevice_info(dev);"`
|
|
DESC="${ID_VENDOR_ID}:${ID_MODEL_ID} ${ID_SERIAL}"
|
|
|
|
VERSION=`cat /sys/$DEVPATH/version`
|
|
if [ "${VERSION}" = " 1.00" -o "${VERSION}" = " 1.10" ] ; then
|
|
VERSION=1
|
|
elif [ "${VERSION}" = " 2.00" ] ; then
|
|
VERSION=2
|
|
else
|
|
# FIXME: silently ignoring devices with unexpected USB version
|
|
exit 0
|
|
fi
|
|
|
|
XS_KEY="qubes-usb-devices/$XSNAME"
|
|
|
|
xenstore-write "$XS_KEY/desc" "$DESC"
|
|
xenstore-write "$XS_KEY/usb-ver" "$VERSION"
|
|
|
|
# Make sure PVUSB backend driver is loaded.
|
|
/sbin/modprobe xen-usbback 2> /dev/null || /sbin/modprobe usbbk
|