[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