martes, 27 de febrero de 2007

Samsung SCX-4200 en Ubuntu 6.10

Hola!

Fue un laargo tiempo sin postear, entre vacaciones, laburo y asuntos personales, el blogueo quedó a un lado. Ahora ya casi que "volví" y espero seguir escribiendo...

En esta oportunidad les comento que compré una Impresora Multifunción Samsung SCX-4200, dado que tiene un costo relativamente bajo, soporta Linux (al menos x86 y x86-64, y tiene el pingüinito en la caja!), y además de imprimir con calidad láser, también fotocopia y escanea. Las reviews que encontré en mi opinión eran bastante alentadoras (digamos que sus "desventajas" para mí no eran problema), así que la traje a mi casa.

Como siempre hago antes de comprar algo, leí si alguien había tenido dificultades al instalarla en Linux, Debian y/o Ubuntu específicamente. Encontré varios links, muchos que se apuntaban entre , y linuxprinting.org me daba "perfectly" como calificación de su funcionamiento sobre Linux...

En resumen, después de leer todos esos links, esperaba encontrar:

  • Los drivers del CD son "viejos". Bajar de la página de Samsung la última versión.
  • En Ubuntu, como el shell por defecto es Dash ("/bin/sh" apunta a "/bin/dash"), había que cambiar la primera línea del script de instalación de drivers de "/bin/sh" a "/bin/bash"; el script contenía una instrucción ("source" creo), que no funciona bien en Dash y sí en Bash.
  • La impresión iba a funcionar sin problemas. Era preferible usar el dispositivo file:/dev/lp0 en vez de file:/dev/mfp4.
  • Samsung instala un módulo propietario de kernel, llamado MFP (MultiFunction Port), para poder conectar varios "dispositivos" a un port, pero era preferible evitar usarlo porque era innecesario (ver los links; igualmente era sólo cambiar el puerto en la configuración de CUPS).
  • El XSane (programa de escaneo), sólo iba a permitir escanear como usuario root. El problema estaba en que este módulo MFP ejecutaba una instrucción de "detección" de dispositivos sobre el puerto paralelo que requería permisos de root; es por eso que el instalador seteaba a XSane como setuid. Como no necesito nada en el puerto paralelo (es todo USB), instalé ésta versión de las librerías modificadas para "saltearse" la parte de detección de los puertos paralelos y escanear como usuario no-root.
Acá hay una captura de la utilidad de administración de impresora, escáner y puertos de Samsung para Linux (basada en QT):



En definitiva, si bien había que laburar algo... me parecía que la intención de Samsung era buena (aunque no liberara los drivers), y revisando un poco me entero que HP no colabora en nada ("And if you work for Konica Minolta or HP, you should be embarrased for your company. Neither company has ever offered any kind of support for this driver.") con la creación de los drivers para sus impresoras más "baratas".

Una HP "barata" (una 1018 o una 1020, bastante mejor) era la otra opción al momento de buscar impresora láser para comprar, pero ni siquiera eran multifunción... como me parecía piola tener una fotocopiadora + escáner por la misma plata que la 1020 por ejemplo, compré una Samsung.

Todo funcionó (casi) como esperaba. Cambié el shell del script y el instalador anduvo y la impresión funcionó de una. Seguí las instrucciones de los posts/sitios que había encontrado, pero al momento de escanear con el XSane... obtenía un error fatal: "I/O Error". Y se detenía el escaneo.

Eso no estaba en ningún lado. Busqué, probé, hice mil cosas, pensando que era algún paso que no había seguido... hasta que me puse a mirar el syslog. Encontré esto:

rmmod: ERROR: Module mfpportprobe does not exist in /proc/modules
rmmod: ERROR: Module mfpport does not exist in /proc/modules
rmmod: ERROR: Module ppdev does not exist in /proc/modules
kernel: [ 226.781867] parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRIST
ATE,COMPAT,ECP,DMA]
kernel: [ 226.849499] lp0: using parport0 (interrupt-driven).
rmmod: ERROR: Module ppdev does not exist in /proc/modules
kernel: [ 226.930894] parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRIST
ATE,COMPAT,ECP,DMA]
kernel: [ 227.019155] lp0: using parport0 (interrupt-driven).
kernel: [ 234.294029] drivers/usb/class/usblp.c: usblp0: nonzero read/write bulk status received: -71
kernel: [ 234.325509] drivers/usb/class/usblp.c: usblp0: error -71 reading from printer
kernel: [ 234.325796] drivers/usb/class/usblp.c: usblp0: nonzero read/write bulk status received: -71
kernel: [ 234.385447] drivers/usb/class/usblp.c: usblp0: error -71 reading from printer
kernel: [ 234.385518] drivers/usb/class/usblp.c: usblp0: nonzero read/write bulk status received: -71
kernel: [ 234.443150] drivers/usb/class/usblp.c: usblp0: error -71 reading from printer

Busqué por errores parecidos... y en este post encontré una sugerencia acerca de "desactivar" USB 2.0, descargando el módulo ehci_hcd, para que las transferencias se hagan sobre USB 1.1....

Y Funcionó! :-D

Conclusiones:
  1. Parece que por algún motivo el kernel de Ubuntu Edgy 6.10 para AMD64 (2.6.17.x) en mi mother (NForce 4 Ultra), tiene problemas con USB 2.0 al escanear con una Samsung SCX-4200.
  2. Siempre miren los logs!
  3. Los drivers costaron instalarlos un poco, pero el aparato funciona de maravillas, lo recomiendo; en mi opinión es un buen balance entre funcionalidades y costo (me salió un poco menos de $550 - pesos argentos, claro).
  4. Recomiendo esta impresora! (ya lo dije, no?) :-P
Saludos!
Marcelo

7 comentarios:

Unknown dijo...

Muchas Gracias, Funcionó con un par de clicks, todo era cuestion de cambiar el sh por el bash :D,
Gracias

Francisco Perea

PD: super-económica y bien guerrera!!

Gustavo, la rana dijo...

Yo la tengo desde hace un tiempo, y en general sin problemas en linux(ubuntu). Ahora la utilizo en ubuntu 7.10 y a la primera. Lo único que hay que hacer es cambiar lo del bash y en la ruta de la impresora poner: usb://Samsung/SCX-4200%20Series (desde congiguracion de impresora de sistema, por ejemplo). Escaner e impresora sin problemas. http://croarycroar.blogspot.com

Julio dijo...

con sane-find-scanner me reconoce el dispositivo.

found USB scanner (vendor=0x04e8, product=0x341b) at libusb:005:003
found USB scanner (vendor=0x0c45, product=0x602e) at libusb:001:004

pero con scanimage -L aparece

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).

sera que entra en conflicto con una web cam genius.

podria ayudarme con este problema

Gracias

Julio dijo...

Con Fedora Core Linux la instalación se da solo colocando el CD.

En la página de Samsung hay esta nota con la cual logre instalar la impresora:

[Ubuntu OS Installation]
1. Download and extract the driver
2. Open ''Root Terminal''
3. Execute installation program.
$ sudo cdroot/autorun
4. After intall, PPD path is set again.
$ sudo ln -s /usr/share/cups/model/samsung /usr/share/ppd/custom/samsung
5. Execute Configurator, and Add your printer model name by Add Printer

Anónimo dijo...

tengo una impresora scx 4200 pero me muestra el siguiente error lcu quiero saber que es eso.

Anónimo dijo...

¿Y que sucede cuando quieres compartir la impresora con Samba? Yo lo he hecho por activa y por pasiva pero siempre encuentro el mismo error en /var/log/samba/log.jedi (jedi es mi equipo)

[2008/07/10 14:47:42, 1] rpc_client/cli_pipe.c:cli_rpc_pipe_open(2222)
cli_rpc_pipe_open: cli_nt_create failed on pipe \spoolss to machine Jedi. Error was NT_STATUS_ACCESS_DENIED
slpr.bin: cannot connect to X server

Marcelo Fernández dijo...

Anónimo: Parece un tema de permisos de Samba, te diría que averigues por ese lado.

Julio Oña: Para verlo más en profundidad, te sugeriría (a vos y a todos los interesados en Linux) que se sumen a una lista de correo de usuarios Linux. Yo estoy en Ubuntu-Ar (Ubuntu Argentina):

Sitio:
http://ubuntu-ar.org/

Para suscribirse a la lista de correo:
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ar

Saludos!
Marcelo