On Tue, 13 Apr 2010 01:24:16 +0200, Julian Wissmann wrote:
> Hi,
> I have FreeBSD 8-p2 with CUPS1.4.2 and HPLIP 3.9.8 running. My problem
> is that I can't get hplip running for normal users. It detects my
> printer (HP OJ-Pro 7480) when I run hp-check as root. But it won't work
> for my regular user account. I've read another thread about it on the
> list and tried what was supplied there but it doesn't work for me.
> Basically what happens is that the hp gui tool shows a configuration
> error and CUPS's hp-backend shows this:
> ➜ ~ /usr/local/libexec/cups/backend/hp direct hp "Unknown" "HP Printer
> (HPLIP)" While it probably should show:
> ➜ ~ sudo /usr/local/libexec/cups/backend/hp direct
> hp:/usb/Officejet_Pro_L7400?serial=MY82S1519Z "HP Officejet Pro L7400"
> "HP Officejet Pro L7400 USB MY82S1519Z HPLIP" "MFG:HP;MDL:Officejet Pro
> L7400;CLS:PRINTER;DES:Officejet Pro L7400;SN:MY82S1519Z;"
>
> This is from my devfs.rules:
> [system=10]
> add path 'usb*' mode 0660
^^^
This is your problem. You are denying access to /dev/usb directory for 'others',
as evidenced few paragraphs below where you can't ls /dev/usb. Default mode is
555.
Just remove this rule.
> add path 'usb/3.2*' mode 0660 group cups add path 'ugen3.2*' mode 0660 group
> cups
>
> This is from my rc.conf:
> cupsd_enable="YES"
> hpiod_enable="YES"
> hpssd_enable="YES"
>
There is no hpiod anymore. Also hpssd shouldn't have a start script as it is
not designed
to work as system daemon - you should see some warnings/errors that it cannot
start.
It is safe to remove both. Just cups_enable=yes is fine.
My complete working setup for Deskjet Ink Advantage K209a is below:
> rc.conf:
cups_enable="YES"
> /etc/devd/hplip.conf
# HP All-in-one device
attach 100 {
match "vendor" "0x03f0";
match "product" "0x..11";
action "chown cups:cups /dev/usb/`echo $device-name | tr -d ugen`.*; \
chmod 660 /dev/usb/`echo $device-name | tr -d ugen`.*";
End of example.
Where $device-name might have a value like "ugen3.2".
This is better approach than devfs.rules where you need to hardcode
device names that can easily change. Just adjust product id.
You can get them with `usbconfig -d ugen3.2 dump_device_desc | grep id`
Format of this file is documented in devd.conf(5).
In my case it results in this:
dr-xr-xr-x 2 root wheel 512 Apr 3 18:26:31 2010 /dev/usb
crw-r--r-- 1 root operator 0,61 Apr 3 18:26:24 2010 /dev/usbctl
crw-rw 1 cups cups 0,161 Apr 3 18:26:31 2010 /dev/usb/3.5.0
crw-rw 1 cups cups 0,163 Apr 3 18:26:31 2010 /dev/usb/3.5.1
crw-rw 1 cups cups 0,164 Apr 3 18:26:31 2010 /dev/usb/3.5.2
crw-rw 1 cups cups 0,165 Apr 3 18:26:31 2010 /dev/usb/3.5.6
crw-rw 1 cups cups 0,166 Apr 3 18:26:31 2010 /dev/usb/3.5.7
crw-rw 1 cups cups 0,167 Apr 3 18:26:31 2010 /dev/usb/3.5.8
crw-rw 1 cups cups 0,168 Apr 3 18:26:31 2010 /dev/usb/3.5.9
Only access to usb/3.5.* is needed.
BTW group does not matter to cupsd since it does not run with it's primary
group :(
Group access is handy if your device also has a scanner.
Then local scanning will be possible if your user can access devices,
by membership in this group.
I should probably create 'scanner' group and use group:scanner,
then add every user to scanner group instead of adding them to
cups to get scanner access.
Also for network scanning:
# cat /etc/inetd.conf | grep sane
# TODO use saned:scanner instead of cups:cups
sane-port stream tcp nowait cups:cups /usr/local/sbin/saned
saned
Then set authorization and/or authentication in /usr/local/etc/sane.d/saned.conf
> Relevant stuff from /dev:
> ➜ ~ ls -la /dev/ugen*
> lrw-rw-rw- 1 root operator 9 13 Apr 00:32 /dev/ugen3.1 -> usb/3.1.0
> lrw-rw-rw- 1 cups operator 9 13 Apr 00:32 /dev/ugen3.2 -> usb/3.2.0
>
> /dev/usb:
> ls: .: Permission denied
> ls: ..: Permission denied
> ls: 3.1.0: Permission denied
> ls: 3.1.1: Permission denied
> ls: 3.2.0: Permission denied
> ls: 3.2.1: Permission denied
> ls: 3.2.10: Permission denied
> ls: 3.2.11: Permission denied
> ...
>
> ➜ ~ sudo ls -la /dev/usb*
> Password:
> crw-rw-rw- 1 root operator 0, 73 13 Apr 00:32 /dev/usbctl
>
> /dev/usb:
> total 2
> drw-rw-rw- 2 root operator 512 13 Apr 00:32 .
> dr-xr-xr-x 7 root wheel 512 13 Apr 00:32 ..
> crw-rw-rw- 1 root operator 0, 82 13 Apr 00:32 3.1.0
> crw-rw-rw- 1 root operator 0, 95 13 Apr 00:32 3.1.1
> crw-rw-rw- 1 cups operator 0, 116 13 Apr 00:32 3.2.0
> crw-rw-rw- 1 cups operator 0, 121 13 Apr 00:32 3.2.1
> crw-rw-rw- 1 cups operator 0, 126 13 Apr 00:32 3.2.10
> crw-rw-rw- 1 cups operator 0, 127 13 Apr 00:32 3.2.11
> crw-rw-rw- 1 cups operator 0, 122 13 Apr 00:32 3.2.2
> crw-rw-rw- 1 cups operator 0, 123 13 Apr 00:32 3.2.3
> crw-rw-rw- 1 cups operator 0, 124 13 Apr 00:32 3.2.7
> crw-rw-rw- 1 cups operator 0, 125 13 Apr 00:32 3.2.8 ...
>
> ➜ ~ dmesg | grep ugen
> ugen0.1: at usbus0
> ugen1.1: at usbus1
> ugen2.1: at usbus2
> ugen3.1: at usbus3
> ugen4.1: at