diff options
author | Jonathan Bauer | 2018-04-13 18:13:25 +0200 |
---|---|---|
committer | Jonathan Bauer | 2018-04-13 18:13:25 +0200 |
commit | 0ed5e3423df24d5edac94288538033b7763f6dbc (patch) | |
tree | 6c2830b01ebccfb9ab1309881732c08a9f8de514 /core/modules/vbox-src/data/opt/openslx/bin/attach-usb-to-vbox | |
parent | [run-virt] error msg for missing plugin dir (diff) | |
download | mltk-0ed5e3423df24d5edac94288538033b7763f6dbc.tar.gz mltk-0ed5e3423df24d5edac94288538033b7763f6dbc.tar.xz mltk-0ed5e3423df24d5edac94288538033b7763f6dbc.zip |
[vbox-src] more vbox plugin fixes
* use HW_CORES from /run/hwinfo
* add usb attach script [WIP]
* udev rule to trigger attach script when usb is connected
* edit_attr -> set_attr now always creating missing nodes/attributes
...and prolly more I cant think of now ...
Diffstat (limited to 'core/modules/vbox-src/data/opt/openslx/bin/attach-usb-to-vbox')
-rwxr-xr-x | core/modules/vbox-src/data/opt/openslx/bin/attach-usb-to-vbox | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/core/modules/vbox-src/data/opt/openslx/bin/attach-usb-to-vbox b/core/modules/vbox-src/data/opt/openslx/bin/attach-usb-to-vbox new file mode 100755 index 00000000..46452f91 --- /dev/null +++ b/core/modules/vbox-src/data/opt/openslx/bin/attach-usb-to-vbox @@ -0,0 +1,63 @@ +#!/bin/bash + +# OBJECTIVES +# udev rules to detect usb type etc. +# figuring out the bus thing. + +# check that udev gave us a serial number to work with +udev_serial="$1" +if [ -z "$udev_serial" ]; then + logger "$0: Did not receive serial from udev" + exit 1 +fi +logger "udev_serial: $udev_serial" + +udev_vendorid="$2" +if [ -z "$udev_vendorid" ]; then + logger "$0: Did not receive vendorid from udev" + exit 1 +fi +logger "udev_vendorid: $udev_vendorid" + +user=$(ps auxf | grep /usr/lib/virtualbox/VirtualBox | grep -v grep | awk '{print $1}') +if [ -z "$user" ]; then + logger "$0: could not determine user" + exit 1 +fi + +# find UUID of running VM +vmuuid=$(su -c "/usr/lib/virtualbox/VBoxManage list runningvms | sed -r 's,^\"[^\{]+\{([a-z0-9\-]+)\}$,\1,g'" "$user") +if [ -z "$vmuuid" ]; then + logger "Failed to find running VirtualBox VM" + exit 1 +fi +logger "vmuuid: $vmuuid" + +devname="/dev/vboxusb/$BUSNUM/$DEVNUM" +for tts in 1 1 2 3 5 5 STOP; do + if [ "x$tts" = "xSTOP" ]; then + logger "$0: Could not find '$devname' as expected..." + exit 1 + fi + [ -e "$devname" ] && break + echo "waiting for $devname..." + sleep $tts +done + +usblistgrep=$(su -c "/usr/lib/virtualbox/VBoxManage list usbhost" "$user") +logger "USB list: $usblistgrep" + +usbaddress=$(su -c "/usr/lib/virtualbox/VBoxManage list usbhost | grep -A1 -E 'SerialNumber:\s*'"$1" | awk '/Address:/ {print \$2}'" "$user") +logger "USB address: $usbaddress" + +logger "Trying to attach...." +for tries in 1 2 3 4 5 6 7 8 9 10 STOP; do + if [ "$tries" = "STOP" ]; then + logger "$0: Failed to attach usb after 5 tries" + exit + fi + if su -c '/usr/lib/virtualbox/VBoxManage controlvm '"$vmuuid"' usbattach '"$usbaddress"'' "$user"; then + exit 0 + fi + sleep 1 +done |