[pvrusb2] Permission denied writing to cur_val
Mike Isely
isely at isely.net
Tue Oct 21 14:53:11 CDT 2008
On Tue, 21 Oct 2008, Larry on the Dell wrote:
>
> My happauge PVR-USB2 wants to default to television input rather than my
> preferred s-video. So I read cur_val could be written to control this.
> So working my in
>
> lj at mythtv:/sys/class/pvrusb2/sn-8504958/ctl_input$ cd
> /sys/class/pvrusb2/sn-8504958/ctl_input
> lj at mythtv:/sys/class/pvrusb2/sn-8504958/ctl_input$ ls -al
> total 0
> drwxr-xr-x 2 root root 0 2008-10-21 12:35 .
> drwxr-xr-x 56 root root 0 2008-10-21 12:33 ..
> -rw-rw-r-- 1 root root 4096 2008-10-21 12:35 cur_val
> -r--r--r-- 1 root root 4096 2008-10-21 12:35 enum_val
> -r--r--r-- 1 root root 4096 2008-10-21 12:35 name
> -r--r--r-- 1 root root 4096 2008-10-21 12:35 type
>
> lj at mythtv:/sys/class/pvrusb2/sn-8504958/ctl_input$ cat cur_val
> television
>
> so I don't want the television input, I want the s-video input. So
> attempt to write that
>
> lj at mythtv:/sys/class/pvrusb2/sn-8504958/ctl_input$ echo s-video > cur_val
>
> which results in
>
> -bash: cur_val: Permission denied
>
> so I tried
>
> lj at mythtv:/sys/class/pvrusb2/sn-8504958/ctl_input$ sudo echo s-video >
> cur_val
>
> with the same result.
>
> -bash: cur_val: Permission denied
>
> This is with mythbuntu and
> MythTV Version : 18207
> MythTV Branch : branches/release-0-21-fixes
> Library API : 0.21.20080304-1
>
>
> From the command line, how do I set ctl_imput to s-video?
>
You have to be root in order to do that. The sudo trick should have
worked, but maybe your distro is doing something strange with sudo?
Try using "sudo -s" to get a root shell. Then you can at least verify
that you really are root. (And also once you're in the shell you can
try to directly modify those sysfs nodes.)
As for why you need to be root, there isn't much the driver can do about
that. From the viewpoint of inside the kernel there really isn't a way
to change the owner of those sysfs files. The permissions can be
adjusted, but it's unwise for those fields to be world-writeable - since
then anything can take over control of the device. With device control,
usually one changes the gid of the files to match a specific group (e.g.
"video") and then users with permission to operate the device need only
be associated with that group. But even there the driver can't do
anything even if it wanted to, since the actual integer gid value for,
say, "video" is distro-specific. One clean, theoretical, way to fix
this is for there to be a udev rule that executes a chgrp on all of
/sys/class/pvrusb2/sn-xxxxxx at the point when the device appears.
That has the additional advantage that udev can know the correct
distro-specific gid value to use. But I haven't implemented this (this
is a task really outside of the driver). But it would be a useful
exercrise for someone else to set up.
-Mike
--
Mike Isely
isely @ pobox (dot) com
PGP: 03 54 43 4D 75 E5 CC 92 71 16 01 E2 B5 F5 C1 E8
More information about the pvrusb2
mailing list