I have previously used the brother MFC-295CN to scan documents using Xsane and also successfully print documents when it is connected to the network via ethernet cable here, yes.
@panorain In tumbleweed for the life of me the brother rpm doesn’t really work this days for older model. You need to uninstall first the brother rpm before using the tool on my link down.
Why? not try this:
Utilities | Downloads | MFC-290C | United States | Brother
I will certainly give it a try. Can you give any more details on how to or which rpms in particular to uninstall before using that installer script?
I will try this also.
It does not seem to help? Should I restart any systemD services perhaps?
I will certainly give it a try. Can you give any more details on how to or which rpms in particular to uninstall before using that installer script?
Whether the RPMs are installed manually or via the installer script makes no difference IMO. The latter just helps automate the process ina simpler fashion. Try what @Sauerland has suggested.
I’m going to add this information of the installation of the rpm here:
rpm -ivh --force libnsl-stub1-2.999-7.1.x86_64.rpm
/brother-MFC-295CN> sudo rpm -ivh --force libnsl-stub1-2.999-7.1.x86_64.rpm
[sudo] password for root:
warning: libnsl-stub1-2.999-7.1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID a416781f: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:libnsl-stub1-2.999-7.1 ################################# [100%]
:~/Documents/Computer-Operating-Systems-Software /brother-MFC-295CN>
….and is the scanner now found?
Hi, the answer is no because,
# scanimage -L nothing produced:
:~ # scanimage -L
No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).
hightower-i5-6600k:~ #
Is there a way to look more deeply at the usb devices tree registering with the kernel?
Is there anything in the following directories that could be affecting the brother rpm’s?
Previously there was an brother MFC-J485DW which uses brscan4 software pack from brother installed on this machine (could remnants of this affect the MFC-295CN functions?
:/opt # ls -lah
total 0
dr-xr-xr-x. 1 root root 14 Jan 6 2024 .
drwxr-xr-x. 1 root root 170 Feb 7 12:27 ..
drwxr-xr-x. 1 root root 30 Jul 26 2021 brother
hightower-i5-6600k:/opt # cd brother
hightower-i5-6600k:/opt/brother # ls -lah
total 0
drwxr-xr-x. 1 root root 30 Jul 26 2021 .
dr-xr-xr-x. 1 root root 14 Jan 6 2024 ..
drwxr-xr-x. 1 root root 16 Feb 7 10:01 Printers
drwxr-xr-x. 1 root root 66 Feb 7 20:26 scanner
hightower-i5-6600k:/opt/brother #
The following directory shows anbrscan-skey-MFC-J485DW directory.
5-6600k:/opt/brother/scanner # ls -lah
total 0
drwxr-xr-x. 1 root root 66 Feb 7 20:26 .
drwxr-xr-x. 1 root root 30 Jul 26 2021 ..
drwxr-xr-x. 1 root root 462 Feb 7 20:26 brscan-skey
drwxr-xr-x. 1 root root 462 Feb 7 09:56 brscan-skey.MFC-J485DW
hightower-i5-6600k:/opt/brother/scanner #
Thanks
Is there a way to look more deeply at the usb devices tree registering with the kernel?
For USB connected scanners, you need to make sure that the user is a member of the ‘lp’ group. There should be a udev rule for the scanner that gets matched and assigns the group and sets a flag. Check for associated vendor rules in the /etc/udev/rules.d/ directory. For example, I have 55-brother-brscan4-libsane-type1.rules with
#
# udev rules
#
ACTION!="add", GOTO="brother_mfp_end"
SUBSYSTEM=="usb", GOTO="brother_mfp_udev_1"
SUBSYSTEM!="usb_device", GOTO="brother_mfp_end"
LABEL="brother_mfp_udev_1"
SYSFS{idVendor}=="04f9", GOTO="brother_mfp_udev_2"
ATTRS{idVendor}=="04f9", GOTO="brother_mfp_udev_2"
GOTO="brother_mfp_end"
LABEL="brother_mfp_udev_2"
ATTRS{bInterfaceClass}!="0ff", GOTO="brother_mfp_end"
ATTRS{bInterfaceSubClass}!="0ff", GOTO="brother_mfp_end"
ATTRS{bInterfaceProtocol}!="0ff", GOTO="brother_mfp_end"
#MODE="0666"
#GROUP="scanner"
ENV{libsane_matched}="yes"
#SYMLINK+="scanner-%k"
LABEL="brother_mfp_end"
If that checks out ok, move on to the below…
What is returned via
scanimage -d brother3 -L
/etc/udev/rules.d/
The file 55-brother-libsane-type1-inst.rules exists on machine here:
:/etc/udev/rules.d # cat 55-brother-libsane-type1-inst.rules
#
# udev rules sample for Brother MFP
# version 1.0.2-0
#
# Copyright (C) 2012-2017 Brother. Industries, Ltd.
#
# copy to /etc/udev/rules.d or /lib/udev/rules.d
#
ACTION!="add", GOTO="brother_mfp_end"
SUBSYSTEM=="usb", GOTO="brother_mfp_udev_1"
SUBSYSTEM!="usb_device", GOTO="brother_mfp_end"
LABEL="brother_mfp_udev_1"
SYSFS{idVendor}=="04f9", GOTO="brother_mfp_udev_2"
ATTRS{idVendor}=="04f9", GOTO="brother_mfp_udev_2"
GOTO="brother_mfp_end"
LABEL="brother_mfp_udev_2"
ATTRS{bInterfaceClass}!="0ff", GOTO="brother_mfp_end"
ATTRS{bInterfaceSubClass}!="0ff", GOTO="brother_mfp_end"
ATTRS{bInterfaceProtocol}!="0ff", GOTO="brother_mfp_end"
#MODE="0666"
#GROUP="scanner"
ENV{libsane_matched}="yes"
#SYMLINK+="scanner-%k"
LABEL="brother_mfp_end"
hightower-i5-6600k:/etc/udev/rules.d #
And the output of scanimage -d brother3 -L
:/etc/udev/rules.d # `scanimage -d brother3 -L`
No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).
hightower-i5-6600k:/etc/udev/rules.d #
Just noticed that the rule sets the scanner group. That group doesn’t exist by default for openSUSE. You could add it then add the user to the group, or just change it to lp group.
Oh thanks for this, I have added user paul to the lp group now:
:~ # groups paul
paul : paul audio cdrom lp render video systemd-journal
hightower-i5-6600k:~ #
Does this look correct?
Yes, but you need to edit the rule as well (although it could be written over by an update in the future). Because udev processes rules in lexical order, adding this as a late override rule is probably the best idea…so create…
sudo nano /etc/udev/rules.d/99-brother.rules
with
ATTR{idVendor}=="04f9", ENV{libsane_matched}="yes", MODE="0664", GROUP="lp"
then apply change
sudo udevadm control --reload-rules
sudo udevadm trigger
Unplug/replug the scanner then test again: scanimage -L
BTW, you can confirm USB device node ownership by examining
lsusb
Use the bus and device ID reported as per this example
ls -l /dev/bus/usb/002/004
That will show the owner and group ownership. The latter is what counts here.
Use the bus and device ID reported like this example
ls -l /dev/bus/usb/002/004
:~ # lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0461:4d42 Primax Electronics, Ltd Dynex 5-Button Wired Optical Mouse
Bus 001 Device 003: ID 0424:2514 Microchip Technology, Inc. (formerly SMSC) USB 2.0 Hub
Bus 001 Device 004: ID 1c4f:0002 SiGma Micro Keyboard TRACER Gamma Ivory
Bus 001 Device 006: ID 03f0:a707 HP, Inc HP Webcam HD-2200
Bus 001 Device 007: ID 046d:08ad Logitech, Inc. QuickCam Communicate STX
Bus 001 Device 008: ID 04f9:0229 Brother Industries, Ltd MFC-295CN
Bus 001 Device 009: ID 18a5:0302 Verbatim, Ltd Flash Drive
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
So the command should be the following and reports:
:~ # ls -l /dev/bus/usb/001/008
crw-rw-r--+ 1 root lp 189, 7 Feb 8 17:53 /dev/bus/usb/001/008
Not this command:
hightower-i5-6600k:~ # ls -l /dev/bus/usb/04f9:0229
hightower-i5-6600k:~ # groups paul
paul : paul audio cdrom lp render video systemd-journal
hightower-i5-6600k:~ # updatedb
:~ # cat /etc/udev/rules.d/99-brother.rules
ATTR{idVendor}=="04f9", ENV{libsane_matched}="yes", MODE="0664", GROUP="lp"
hightower-i5-6600k:~ # udevadm control --reload-rules
hightower-i5-6600k:~ # cat /etc/udev/rules.d/99-brother.rules
ATTR{idVendor}=="04f9", ENV{libsane_matched}="yes", MODE="0664", GROUP="lp"
hightower-i5-6600k:~ # udevadm trigger
Unplugged / Plugged in AC power to the brother MFC-295CN
Now for scanimage -L
scanimage -L
:~ # scanimage -L
No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).
hightower-i5-6600k:~ #
So the command should be the following and reports:
:~ # ls -l /dev/bus/usb/001/008 crw-rw-r--+ 1 root lp 189, 7 Feb 8 17:53 /dev/bus/usb/001/008hightower-i5-6600k:~ # groups paul paul : paul audio cdrom lp render video systemd-journal
Yes, that all looks good (no need to run updatedb, not relevant here).
The scanner should be found by the brother3 backend. Since it is not, it still has a problem.
Check for the presence of libsane-brother3.so*…
ls /usr/lib64/sane/ | grep brother
though I doubt it will be missing.
Check that all libraries resolved…
ldd /usr/lib64/sane/libsane-brother3.so*
Any ldd failures will result in backend failures.
Check for the presence of
libsane-brother3.so*…
ls /usr/lib64/sane/ | grep brother
:~ # ls /usr/lib64/sane/ | grep brother
libsane-brother3.so
libsane-brother3.so.1
libsane-brother3.so.1.0.7
Check that all libraries resolved…
ldd /usr/lib64/sane/libsane-brother3.so*
~ # ldd /usr/lib64/sane/libsane-brother3.so*
/usr/lib64/sane/libsane-brother3.so:
linux-vdso.so.1 (0x00007f4d78d3b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4d78d2e000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f4d78d29000)
libusb-0.1.so.4 => not found
libm.so.6 => /lib64/libm.so.6 (0x00007f4d78adf000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f4d78d22000)
libc.so.6 => /lib64/libc.so.6 (0x00007f4d78800000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4d78d3d000)
/usr/lib64/sane/libsane-brother3.so.1:
linux-vdso.so.1 (0x00007efe6664a000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007efe664fb000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007efe664f6000)
libusb-0.1.so.4 => not found
libm.so.6 => /lib64/libm.so.6 (0x00007efe663f9000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007efe663f4000)
libc.so.6 => /lib64/libc.so.6 (0x00007efe66000000)
/lib64/ld-linux-x86-64.so.2 (0x00007efe6664c000)
/usr/lib64/sane/libsane-brother3.so.1.0.7:
linux-vdso.so.1 (0x00007fef8af9c000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fef8af69000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fef8af64000)
libusb-0.1.so.4 => not found
libm.so.6 => /lib64/libm.so.6 (0x00007fef8ad05000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fef8af5d000)
libc.so.6 => /lib64/libc.so.6 (0x00007fef8aa00000)
/lib64/ld-linux-x86-64.so.2 (0x00007fef8af9e000)
hightower-i5-6600k:~ #
Very interesting, they appear to be resolved?
You have an unresolved issue:
libusb-0.1.so.4 => not found
Fix that with
sudo zypper install libusb-0_1-4
Yes, thank you for pointing that out. How can I start resolving the issue?
Edit I have resolved the issue now I think?
:~ # ldd /usr/lib64/sane/libsane-brother3.so*
/usr/lib64/sane/libsane-brother3.so:
linux-vdso.so.1 (0x00007fea8eb2e000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fea8eb21000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fea8eb1c000)
libusb-0.1.so.4 => /lib64/libusb-0.1.so.4 (0x00007fea8e9d2000)
libm.so.6 => /lib64/libm.so.6 (0x00007fea8e8d5000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fea8e8d0000)
libc.so.6 => /lib64/libc.so.6 (0x00007fea8e600000)
/lib64/ld-linux-x86-64.so.2 (0x00007fea8eb30000)
/usr/lib64/sane/libsane-brother3.so.1:
linux-vdso.so.1 (0x00007fa17250d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa1724da000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fa1724d5000)
libusb-0.1.so.4 => /lib64/libusb-0.1.so.4 (0x00007fa1724cd000)
libm.so.6 => /lib64/libm.so.6 (0x00007fa172205000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fa1724c6000)
libc.so.6 => /lib64/libc.so.6 (0x00007fa171e00000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa17250f000)
/usr/lib64/sane/libsane-brother3.so.1.0.7:
linux-vdso.so.1 (0x00007fb2a72fb000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb2a72c8000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fb2a72c3000)
libusb-0.1.so.4 => /lib64/libusb-0.1.so.4 (0x00007fb2a72bb000)
libm.so.6 => /lib64/libm.so.6 (0x00007fb2a7005000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fb2a72b4000)
libc.so.6 => /lib64/libc.so.6 (0x00007fb2a6c00000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb2a72fd000)
hightower-i5-6600k:~ #