扫描仅在“ sudo”下起作用(Ubuntu)


16

当我尝试使用简单扫描进行扫描时,UI会显示Failed to scan -- Unable to connect to scanner。当我从命令行运行它时,我得到:

joel@home:/usr/bin$ simple-scan -d
** (simple-scan:6554): DEBUG: Starting Simple Scan 2.32.0.1, PID=6554
** (simple-scan:6554): DEBUG: Restoring window to 600x400 pixels
** (simple-scan:6554): DEBUG: sane_init () -> SANE_STATUS_GOOD
** (simple-scan:6554): DEBUG: SANE version 1.0.22
** (simple-scan:6554): DEBUG: Requesting redetection of scan devices
** (simple-scan:6554): DEBUG: Processing request
** (simple-scan:6554): DEBUG: Requesting scan at 300 dpi from device '(null)'
** (simple-scan:6554): DEBUG: scanner_scan ("(null)", 300, SCAN_SINGLE)
** (simple-scan:6554): DEBUG: sane_get_devices () -> SANE_STATUS_GOOD
** (simple-scan:6554): DEBUG: Device: name="brother2:bus4;dev1" vendor="Brother" model="MFC-210C" type="USB scanner"
** (simple-scan:6554): DEBUG: Processing request
** (simple-scan:6554): DEBUG: sane_open ("brother2:bus4;dev1") -> SANE_STATUS_IO_ERROR

** (simple-scan:6554): WARNING **: Unable to get open device: Error during device I/O

仅供参考,我已经做过:

joel@home:~$ sudo chmod a+rwx /dev/bus/usb
joel@home:~$ sudo chmod a+rwx /dev/bus/usb/*

如果我在以下条件下运行sudo

joel@home:~$ sudo simple-scan

有用。

如何在没有sudo的情况下使简单扫描工作?

Answers:


7

可能saned是不允许您连接到它。有关详细信息,请参见Ubuntu扫描方法的权限问题部分。


2
似乎未将所有用户帐户都添加到扫描仪组。我曾经使用过sudo adduser username scanner,然后您需要注销然后重新登录,以使OS注意到组成员身份。
KayEss

没有为我工作。我似乎记得,唯一的方法是使用sudo和文本版本,而不是简单的扫描。将继续寻找
Dennis'3

KayEss的建议(“ sudo adduser用户名扫描程序”)适用于我的Raspbian安装。
smashuu

5

我遇到了类似的问题(Ubuntu 11.04-Natty Narwhal):以root身份扫描可以正常工作,以用户身份进行扫描–不能。scanimage -L并且sane-find-scanner即使以普通用户身份运行时也能正确找到并识别扫描仪。无论是root用户还是普通用户,“ simple-scan -d”在缺少组权限,文件或驱动程序方面均未显示任何有用的信息。

最终,这个链接对我有用

解决方案是编辑以下文件:

  • /lib/udev/rules.d/40-libsane.rules
  • /etc/udev/rules.d/55-libsane.rules

不确定是否都需要编辑,我按所述应用了所有更改。非常重要:编辑后重新启动。


2

我通过将以下行添加到/etc/rc.local(之前exit 0)来解决了这一问题:

chmod -R a+w /dev/bus/usb

并编辑/创建以下2个文件:

/etc/xinetd.d/saned

service saned 
{
socket_type = stream
server = /usr/sbin/saned
protocol = tcp
user = root
group = root
wait = no
disable = no
}

/etc/default/saned

# Defaults for the saned initscript, from sane-utils

# Set to yes to start saned
RUN=yes

# Set to the user saned should run as
RUN_AS_USER=root

然后重新启动。

它正在工作,但是我仍然希望有一种更安全的方法来解决此问题。


2

编辑以下内容:

/etc/default/saned

并更改:

RUN_AS_USER=saned

RUN_AS_USER=root

重新启动并再次测试-这应该可以正常工作。


2
从安全的角度来看,这告诉我这不是理想的解决方案。
卡扎尔克2014年

2

sudo adduser YOURNONROOTUSERNAME lp

确保扫描程序属于lp组:

须藤健全的扫描仪

在libusb上找到USB扫描仪(供应商= 0x04f9,产品= 0x02a5):001:002

ls -al / dev / bus / usb / 001/002

crw-rw-r-- 1 root lp 189,1 Nov 24 12:43 / dev / bus / usb / 001/002


0

我遇到了完全相同的问题,这项工作对我来说很简单。我实际上是从Brother网站复制来解决扫描仪问题的:

  1. 打开/lib/udev/rules.d/40-libsane.rules文件。

  2. 将以下两行添加到设备列表的末尾。(在行之前# The following rule will disable ...):

    # Brother scanners

    ATTRS{idVendor}=="04f9", ENV{libsane_matched}="yes"


0

您需要将用户名添加到lp组,然后重新启动(或sudo ldconfig)。一切都应该正常工作。

这对我有用,因为如果您lsusb尝试获取打印机/扫描仪的USB总线号(我的是005),然后ll /dev/bus/usb/005您将看到root是所有者,而lp是组,两者均具有读取和写入权限。


add your username to the lp group 怎么样

0

我的Epson EcoTank 2500也有同样的问题。我进入终端,找到带有的产品ID lsusb。对于EcoTank 2500,它是1105。

然后

Open /lib/udev/rules.d/40-libsane.rules file.

然后,我使用gedit搜索了该产品ID,但找不到。所以我添加到底部(留出一个空格并用CAPS编写,所以我知道是我自己改变了它!)

# MY EPSON ECOTANK ET-2500

ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="1105", ENV{libsane_matched}="yes"

然后,我在40-iscan.rules中进行了相同的操作(位于同一文件夹中),最后重新启动。嘿,presto ....啊!我在这里的工作已经完成。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.