From: Sarah M. <iku...@ya...> - 2007-04-25 16:08:01
|
Hello, I have a (working) USB interface to a Tektronix TDS-2014B oscilloscope based around pyusb. My issue is that it's only usable when I'm SuperUser. I'm doing support work for a company, and would rather not require several different people to log in as root in order to download data from the scopes. Here's what I've figured out so far: 1) The following python commands work the way one would expect if logged in as root: > import usb > barn=usb.busses() >barn[1].devices (<usb.Device object at 0x80ee5f8>,) 2) If I lack root access, the device list returns empty: () 3) I'm running SuSe 10.0 with python 2.4.1, pyusb 0.3.5, and libusb-0.1.12 (with a minimal custom patch, see my posting on the libusb group for details). If I understand things correctly, there are three different low-level daemons / drivers which might be involved in establishing permissions for the USB ports: HAL, udev, and hotplug. I seem to have bits of all three on the system, and I'm trying to figure out which one sets the permissions: Things I've tried: 1) editted fstab to put the "users,dev,exec" flags on the usbfs line (in addition to the "noauto" flag that was there already. The full listing is: usbfs /proc/bus/usb usbfs noauto,users,dev,exec 0 0 Despite this, rebooting mounts the usbfs with only the rw flag, not the users flag and so on. This makes me think that fstab doesn't actually control mounting of usbfs. 2) I tried editting the mount commands in /etc/hotplug/usb.rc, but again this has no effect. I made the first line of this file echo "Executing /etc/hotplug/usb.rc \a" but rebooting doesn't seem to produce either the bell or message. This makes me think Hotplug isn't handling the USB communication either. 3) lsmod and ps reveal the following potentially-relevant modules / processes: pci_hotplug, usblp, usbcore, ehci_hcd, uhci_hcd, hald, hald-addon-acpi, hald-addon-stor, and udevd. 4) If I run "chgrp users /dev/usbdev*" (as root), the affected devices become available to non-root users. However, if a device (or the PC) is power-cycled, it becomes root-only again. Any ideas on how to tell whether I need to learn HAL or UDev or something else? Any clues on how to let pyusb talk to the scopes for regular users? Thanks. -Sarah --------------------------------- Ahhh...imagining that irresistible "new car" smell? Check outnew cars at Yahoo! Autos. |
From: Andrew S. <str...@as...> - 2007-04-25 16:25:37
|
Sarah, I think the simplest way is to go through udev. 1) create a group named something like "tekscope" 2) Create a file in /etc/udev/rules.d (well, that's where it is on Ubuntu) something like: SUBSYSTEM=="usb_device", ACTION=="add", SYSFS{idVendor}=="1234", SYSFS{idProduct}=="5678", GROUP="tekscope", MODE="0660" 3) Restart udev to re-load the new rules, and voila, anyone in the tekscope group should be able to access the USB device created when the device is plugged in. Sarah Messer wrote: > Hello, > > I have a (working) USB interface to a Tektronix TDS-2014B oscilloscope > based around pyusb. My issue is that it's only usable when I'm > SuperUser. I'm doing support work for a company, and would rather not > require several different people to log in as root in order to > download data from the scopes. Here's what I've figured out so far: > > 1) The following python commands work the way one would expect if > logged in as root: > > import usb > > barn=usb.busses() > >barn[1].devices > (<usb.Device object at 0x80ee5f8>,) > > 2) If I lack root access, the device list returns empty: > () > > 3) I'm running SuSe 10.0 with python 2.4.1, pyusb 0.3.5, and > libusb-0.1.12 (with a minimal custom patch, see my posting on the > libusb group > <http://sourceforge.net/tracker/index.php?func=detail&aid=1633542&group_id=1674&atid=101674> > for details). > > If I understand things correctly, there are three different low-level > daemons / drivers which might be involved in establishing permissions > for the USB ports: HAL, udev, and hotplug. I seem to have bits of all > three on the system, and I'm trying to figure out which one sets the > permissions: > > Things I've tried: > 1) editted fstab to put the "users,dev,exec" flags on the usbfs line > (in addition to the "noauto" flag that was there already. The full > listing is: > usbfs /proc/bus/usb usbfs noauto,users,dev,exec 0 0 > Despite this, rebooting mounts the usbfs with only the rw flag, not > the users flag and so on. This makes me think that fstab doesn't > actually control mounting of usbfs. > 2) I tried editting the mount commands in /etc/hotplug/usb.rc, but > again this has no effect. I made the first line of this file > echo "Executing /etc/hotplug/usb.rc \a" > but rebooting doesn't seem to produce either the bell or message. > This makes me think Hotplug isn't handling the USB communication either. > 3) lsmod and ps reveal the following potentially-relevant modules / > processes: pci_hotplug, usblp, usbcore, ehci_hcd, uhci_hcd, hald, > hald-addon-acpi, hald-addon-stor, and udevd. > 4) If I run "chgrp users /dev/usbdev*" (as root), the affected > devices become available to non-root users. However, if a device (or > the PC) is power-cycled, it becomes root-only again. > > Any ideas on how to tell whether I need to learn HAL or UDev or > something else? Any clues on how to let pyusb talk to the scopes for > regular users? > > Thanks. > > > -Sarah > > ------------------------------------------------------------------------ > Ahhh...imagining that irresistible "new car" smell? > Check out new cars at Yahoo! Autos. > <http://us.rd.yahoo.com/evt=48245/*http://autos.yahoo.com/new_cars.html;_ylc=X3oDMTE1YW1jcXJ2BF9TAzk3MTA3MDc2BHNlYwNtYWlsdGFncwRzbGsDbmV3LWNhcnM-> > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > ------------------------------------------------------------------------ > > _______________________________________________ > Pyusb-users mailing list > Pyu...@li... > https://lists.sourceforge.net/lists/listinfo/pyusb-users > |