From 370a2f399eb56bcfd62bf1a9fcdb9cc9f35e0f87 Mon Sep 17 00:00:00 2001 From: Finn Date: Thu, 23 Apr 2015 13:12:39 -0700 Subject: [PATCH] Removed absurd requirement that the script be run as root Included udev rule file and install instructions --- 54-missilelauncher.rules | 1 + README.md | 9 +++++---- stormLauncher.py | 4 +--- 3 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 54-missilelauncher.rules mode change 100644 => 100755 stormLauncher.py diff --git a/54-missilelauncher.rules b/54-missilelauncher.rules new file mode 100644 index 0000000..677cc6d --- /dev/null +++ b/54-missilelauncher.rules @@ -0,0 +1 @@ +SUBSYSTEM=="usb", ATTR{idVendor}=="2123", MODE="0664", GROUP="plugdev" diff --git a/README.md b/README.md index b3cbf65..ddfff2d 100644 --- a/README.md +++ b/README.md @@ -9,15 +9,16 @@ There are a few projects for using older launchers in Linux, but I couldn't find This script requires PyUSB 1.0+, apt in Debian/Ubuntu installs 0.4. Also, on Debian\Ubuntu systems you need the __python-imaging-tk__ - -It also requires that you run it as root unless you want to spend an afternoon playing with udev rules :/ + + ## Getting Started: git clone git@github.com:nmilford/stormLauncher.git cd stormLauncher - chmod +x stormLauncher.py - sudo ./stormLauncher.py + sudo cp 54-missilelauncher.rules /etc/udev/rules.d + sudo service udev restart + ./stormLauncher.py ## Usage: diff --git a/stormLauncher.py b/stormLauncher.py old mode 100644 new mode 100755 index 6d36e1c..646aba9 --- a/stormLauncher.py +++ b/stormLauncher.py @@ -90,7 +90,7 @@ def __init__(self): def turretUp(self, event): self.message1.set("Turret Up.") - self.dev.ctrl_transfer(0x21,0x09,0,0,[0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00]) + self.dev.ctrl_transfer(0x21,0x09,0,0,[0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00]) def turretDown(self, event): self.message1.set("Turret Down.") @@ -121,6 +121,4 @@ def turretFire(self, event): if __name__ == '__main__': - if not os.geteuid() == 0: - sys.exit("Script must be run as root.") launchControl().mainloop()