Samsung SCX-4200 с использованием открытых драйверов
В этой статье будет рассмотрено использование свободных драйверов и средств для полноценной работы с МФУ Samsung SCX-4200, без использования фирменных бинарных драйверов.
Все нижеописанное тестировалось на x86 и x86_64 системах.
Локальное использование
После подключения МФУ к компьютеру необходимо убедиться, что компьютер его видит:
Code: # lsusb | grep Samsung |
Bus 001 Device 007: ID 04e8:341b Samsung Electronics Co., Ltd SCX-4200 series |
Если же результат выполнения команды иной, то необходимо убедится в правильной конфигурации ядра. В случае отсутствия поддержки USB-принтеров в ядре, необходимо ее добавить и перекомпилировать ядро.
Linux Kernel Configuration: USB Printer Support |
Device Drivers ---> [*]USB Support ---> <M> USB Printer Support |
Установка SpliX и CUPS
Если CUPS уже установлен (например как зависимость KDE или GNOME), необходимо установить набор свободных драйверов для принтеров Samsung - SpliX. Если CUPS не установлен, то он будет установлен как зависимость SpliX. Необходимо убедиться в правильно включенных USE-флагах, по возможности надо включить поддержку всех графических форматов. Необходимая версия SpliX - 2.0.0 и выше, CUPS - 1.4 и выше, поэтому необходимо размаскировать данные пакеты, т.к. они помечены как нестабильные:
echo ">=net-print/splix-2.0.0" >> /etc/portage/package.keywords
echo ">=net-print/cups-1.4.2-r1" >> /etc/portage/package.keywords
emerge -av splix
Настройка печати
Открываем любимым редактором файл /etc/cups/cupsd.conf и убеждаемся в том, что доступ на веб-интерфейс разрешен только локальным пользователям:
Code: /etc/cups/cupsd.conf |
# Only listen for connections from the local machine. Listen localhost:631 |
Далее запускаем CUPS:
/etc/init.d/cupsd start
И убеждаемся, что он запустился без ошибок, дальше добавляем сервис в автозапуск:
rc-update add cupsd default
После этого любимым браузером открываем адрес http://localhost:631
На закладке "Администрирование" нажимаем кнопку "Добавить принтер", где Вас попросят ввести имя пользователя и пароль root.
Выбираем "Принтер SCSI" и в форму "Подключение:" вписываем:
parallel:/dev/usblp0
Если данное МФУ не единственное в системе (допустим имеется еще usb-принтер), то нумерация устройства может отличаться.
После продолжения нам необходимо дать принтеру название, в поле "Название:", например Samsung_SCX-4200, поля же "Описание:" и "Расположение:" можно не заполнять. Далее выбираем вендора (в нашем случае Samsung) выделяем Samsung SCX-4200, SpliX V.2.0.0 (en) и нажимаем кнопку "Добавить принтер".
В заключении будет предложено настроить основные параметры принтера, такие как разрешение, экономия тонера, тип и размер бумаги. Теперь необходимо перейти на закладку "Принтеры" и из выпадающего списка "Обслуживание" выбрать печать пробной страницы. Если страница распечаталась - считайте принтер настроен. Можно переходить к настройке сканера.
Настройка сканирования
В начале добавляем в файл /etc/make.conf строку:
Code: /etc/make.conf |
SANE_BACKENDS="xerox_mfp" |
Размаскируем пакет sane-backends до самой последней версии, как мы это делали для CUPS и SpliX. Далее проверяем включенный USE-флаг usb у sane-backends, а заодно и драйвер xerox_mfp, но сам пакет не собираем!
Дальше необходимо выбрать интерфейс для работы со сканером. Под библиотеку Gtk это может быть пакет media-gfx/xsane, в KDE4 это может быть kde-base/ksaneplugin, а сама работа со сканером может осуществляться из KolourPaint.
После выбора пакета под любимую библиотеку или DE осуществляем его установку, которая в зависимостях установит sane-backends.
Теперь необходимо прописать в файл /etc/sane.d/xerox_mfp.conf ID нашего устройства:
Code: /etc/sane.d/xerox_mfp.conf |
#Samsung SCX-4200 usb 0x04E8 0x341B |
А в файле /etc/sane.d/dll.conf должна быть раскомментированная строка:
Code: /etc/sane.d/dll.conf |
xerox_mfp |
Осталось проверить, определился ли наш сканер:
Code: # sane-find-scanner |
# sane-find-scanner will now attempt to detect your scanner. If the # result is different from what you expected, first make sure your # scanner is powered up and properly connected to your computer. # No SCSI scanners found. If you expected something different, make sure that # you have loaded a kernel SCSI driver for your SCSI adapter. found USB scanner (vendor=0x04e8 [Samsung], product=0x341b [SCX-4200 Series]) at libusb:001:007 <--- Вот он! # Your USB scanner was (probably) detected. It may or may not be supported by # SANE. Try scanimage -L and read the backend's manpage. # Not checking for parallel port scanners. # Most Scanners connected to the parallel port or other proprietary ports # can't be detected by this program. |
Code: # scanimage -L |
device `xerox_mfp:libusb:001:007' is a SAMSUNG ORION multi-function peripheral |
На этом настройка локального МФУ закончена. Работают все функции данного МФУ. Печать с настройкой качества, типом бумаги и количеством тонера. И сканирование.
Сетевое МФУ с клиентами под Linux и Windows
Очень удобное сетевое МФУ можно сделать на базе машины с Gentoo Linux (справедливо для любых разновидностей Linux). Например для малого офиса или квартиры, где уже имеется маршрутизатор или сервер локальной сети на базе Gentoo.
Для этого нам необходимо немного изменить настройки, которые мы производили для простого локального МФУ.
Сразу стоить заметить, компьютер на который будет устанавливаться МФУ имеет программную конфигурацию схожую с серверной и не имеет графической системы Х.
Настройка принтера со стороны сервера
Проверяем USE-флаги:
Code: # emerge -pv splix |
[ebuild N ] app-text/ghostscript-gpl-8.70-r1 USE="cups -X -bindist -cairo -djvu -gtk -jpeg2k" LINGUAS="-ja -ko -zh_CN -zh_TW" 0 kB [ebuild N ] net-print/cups-1.4.2-r1 USE="acl jpeg pam perl png python ssl tiff -X -dbus -debug -gnutls -java -kerberos -ldap -php -samba -slp -static -xinetd" LINGUAS="ru -da -de -es -eu -fi -fr -it -ja -ko -nl -no -pl -pt -pt_BR -sv -zh -zh_TW" 0 kB [ebuild N ] net-print/splix-2.0.0 USE="jbig" 0 kB |
Важными тут являются ssl и графические форматы, так же может потребоваться включение флага djvu. Так же необходимо произвести размаскировку до последних версий пакетов программ.
Собираем SpliX:
Далее необходимо отредактировать /etc/cups/cupsd.conf , для того чтобы CUPS не "светил" в Интернет, а только был доступен для локальной сети.
Code: /etc/cups/cupsd.conf |
# # "$Id: cupsd.conf.in 8805 2009-08-31 16:34:06Z mike $" # # Sample configuration file for the CUPS scheduler. See "man cupsd.conf" for a # complete description of this file. # # Log general information in error_log - change "warn" to "debug" # for troubleshooting... LogLevel warn # Administrator user group... SystemGroup lpadmin # Only listen for connections from the local machine. Listen 172.16.0.1:631 <--- Задаем адрес сетевого интерфейса который "смотрит" в локальную сеть. Listen /var/run/cups/cups.sock # Show shared printers on the local network. Browsing On BrowseOrder allow,deny BrowseAllow all BrowseLocalProtocols CUPS # Default authentication type, when authentication is required... DefaultAuthType Basic # Restrict access to the server... <Location /> Order allow,deny Allow 172.16.0.* <--- Разрешаем доступ всей сети или определенным машинам. </Location> # Restrict access to the admin pages... <Location /admin> Order allow,deny Allow 172.16.0.* <--- Разрешаем доступ к страницам администрирования для всей сети или конкретной машине. </Location> |
После этого запускаем сервис и добавляем его в автозапуск. Проверяем:
Code: # netstat -tunadp | grep cupsd |
tcp 0 0 172.16.0.1:631 0.0.0.0:* LISTEN 30123/cupsd udp 0 0 0.0.0.0:631 0.0.0.0:* 30123/cupsd |
CUPS слушает локальный сетевой интерфейс, в моем случае это 172.16.0.1
Далее, как описано выше добавляем принтер, при этом не забыв поставить галочку: Разрешить совместный доступ к этому принтеру. На этом этапе принтер можно считать настроенным.
Настройка сканера со стороны сервера
Настройка сканера и определение его в системе полностью аналогична вышеописанной за исключением некоторых моментов:
Редактируем /etc/sane.d/saned.conf
Code: /etc/sane.d/saned.conf |
# saned.conf # Configuration for the saned daemon ## Daemon options # Port range for the data connection. Choose a range inside [1024 - 65535]. # Avoid specifying too large a range, for performance reasons. # # ONLY use this if your saned server is sitting behind a firewall. If your # firewall is a Linux machine, we strongly recommend using the # Netfilter nf_conntrack_sane connection tracking module instead. # # data_portrange = 10000 - 10100 ## Access list # A list of host names, IP addresses or IP subnets (CIDR notation) that # are permitted to use local SANE devices. IPv6 addresses must be enclosed # in brackets, and should always be specified in their compressed form. # # The hostname matching is not case-sensitive. #scan-client.somedomain.firm 172.16.0.0/29 <--- вписываем сюда сеть, в которой будет доступен сканер. #192.168.0.1/29 #[2001:7a8:185e::42:12] #[2001:7a8:185e::42:12]/64 # NOTE: /etc/inetd.conf (or /etc/xinetd.conf) and # /etc/services must also be properly configured to start # the saned daemon as documented in saned(8), services(4) # and inetd.conf(4) (or xinetd.conf(5)). |
Создаем пользователя и добавляем его в группу scanner:
Т.к. демон saned не умеет работать самостоятельно - устанавливаем xinetd:
Убеждаемся, что в файле /etc/services есть упоминание о SANE:
Code: cat /etc/services | grep sane |
sane-port 6566/tcp # SANE Network Scanner Control Port sane-port 6566/udp |
Затем создаем файл /etc/xinetd.d/sane-port, который будет содержать следующее:
Code: /etc/xinetd.d/sane-port |
service sane-port { socket_type = stream server = /usr/sbin/saned protocol = tcp user = saned group = scanner wait = no disable = no } |
Редактируем /etc/xinetd.conf:
Code: /etc/xinetd.conf |
# # This is the master xinetd configuration file. Settings in the # default section will be inherited by all service configurations # unless explicitly overridden in the service configuration. See # xinetd.conf in the man pages for a more detailed explanation of # these attributes. defaults { # The next two items are intended to be a quick access place to # temporarily enable or disable services. # # enabled = # disabled = # Define general logging characteristics. log_type = SYSLOG daemon info log_on_failure = HOST log_on_success = PID HOST DURATION EXIT # Define access restriction defaults # # no_access = only_from = 172.16.0.0/29 <--- Здесь указываем сеть или хосты для которых будет доступен сканер. # max_load = 0 cps = 50 10 instances = 50 per_source = 10 # Address and networking defaults # # bind = # mdns = yes v6only = no # setup environmental attributes # # passenv = groups = yes umask = 002 # Generally, banners are not used. This sets up their global defaults # # banner = # banner_fail = # banner_success = } includedir /etc/xinetd.d |
И наконец запускаем сервис и прописываем его в автозапуск:
СЕРВЕРНАЯ ЧАСТЬ
Настройка Linux-клиента
Как обычно начинаем с принтера. Для этого все собираем как для первой части статьи (т.е. для локальной машины) и настраиваем CUPS на работу с принтером по протоколу HTTP! Т.е. вместо указания устройства принтера, необходимо указать адрес принтера на нашем сервере печати, а дальше все аналогично. Адрес можно получить зайдя на веб-интерфейс нашего сервера, где установлен CUPS. В моем случае этот адрес выглядит так: http://172.16.0.1:631 Теперь зайдя на закладку "Принтеры" наведите мышь на модель принтера и в браузере выберите "Копировать адрес ссылки" Это и будет ссылка на принтер. У меня она выглядит так: http://172.16.0.1:631/printers/Samsung_SCX-4200
Теперь сканер. Все делаем как в первом случае (выбирая нужный Вам frontend и собирая его, который в зависимостях установит sane-backends), за исключением:
Добавляем в файл /etc/make.conf следующее:
Code: /etc/make.conf |
SANE_BACKENDS="net" |
Выключаем USE-флаг usb:
Code: /etc/portage/package.use |
# echo "media-gfx/sane-backends -usb" >> /etc/portage/package.use |
В файле /etc/sane.d/dll.conf должна быть раскомментированная строка:
Code: /etc/sane.d/dll.conf |
net |
Далее создаем файл /etc/sane.d/net.conf, в нем указываем адрес нашего сервера, к которому подключен сканер.
Code: /etc/sane.d/net.conf |
172.16.0.1 |
Проверять сканер следует только утилитой scanimage
На этом настройку Linux-клиента можно считать законченной!
Настройка Windows-клиента
В данном примере речь пойдет об WindowsXp.
Принтер
Принтер устанавливается через "Панель управления", выбирается HTTP принтер и в качестве адреса принтера указывается тот, который мы рассмотрели для Linux-клиента, потом вставляется родной диск с драйверами принтера и установщик найдет необходимое (или выберите Samsung SCX-4200 Series) и автоматически установит. Не забудьте напечатать пробную страницу! Инсталлятор Самсунга запускать не надо.
Сканер
Для сканера используется программа SaneTwain Рекомендую скачать последнюю бета-версию. Архив с программой распаковывается например на диск C:\, далее файл SaneTwain.ds копируется в %WinDir%\twain_32. После запуска программы указывается только адрес сервера и можно пользоваться.
Удалось решить данную проблему:
Для этого необходимо отредактировать файл /etc/udev/rules.d/70-libsane.rules
Code: /etc/udev/rules.d/70-libsane.rules |
# For Linux >= 2.6.22 without CONFIG_USB_DEVICE_CLASS=y # If the following rule does not exist on your system yet, uncomment it ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", MODE="0664", OWNER="root", GROUP="root", RUN+="/lib/udev/my_scanner" |
То есть раскомментировать данную строчку правил и добавить к ней , RUN+="/lib/udev/my_scanner" Это ничего не поменяет при подключении МФУ к usb, за исключением того, что выполнит небольшой скрипт, который создаст удобочитаемый постоянный псевдоним для нашего устройства, сколько раз Вы бы не выключали сканер. Для этого создаем файл в /lib/udev/ с именем my_scanner, т.к. это имя у нас и прописано в правило UDEV. Имя может быть любым, но необходимо помнить, что в правилах UDEV должно быть таким же.
Выставляем права на исполнение:
chmod 755 /lib/udev/my_scanner
Сам скрипт содежит следующее: {{Code|/lib/udev/my_scanner|
#!/bin/bash
#Указываем наш backend
SANEBACKEND="xerox_mfp"
#Указываем ID нашего МФУ
SAMSUNG="04e8:341b"
#Необходим установленный пакет sys-apps/usbutils
#Определяем значение BUS, т.е. номер шины к которой подключено МФУ
BUS=`lsusb | grep ${SAMSUNG} | awk '{print $2}'`
#Определяем номер устройтва NUM
NUM=`lsusb | grep ${SAMSUNG} | awk '{print $4}' | sed s/://g`
#Определяем полное наименование устройства пригодное для SANE
DEVICE="${SANEBACKEND}:libusb:${BUS}:${NUM}"
#Файл в который будет записываться псевдоним
ALIASFILE="/etc/sane.d/dll.aliases"
#Запись в файл псевдонима в соответствии с нужными нам номерами шины и устройства.
echo "alias Samsung_SCX-4200 $DEVICE" > $ALIASFILE
Теперь все Windows-программы, работающие со сканером поведут себя корректно.
Другие программы для сканирования.