"Después del juego es antes del juego"
Sepp Herberger

Mostrando entradas con la etiqueta cups. Mostrar todas las entradas
Mostrando entradas con la etiqueta cups. Mostrar todas las entradas

sábado, 13 de mayo de 2017

Compartir impresora de Linux a Linux

Normalmente las impresoras compartidas de nuestra red traen su tarjeta ethernet, con lo cual accedemos directamente a ellas desde CUPS con la URI socket://172.XX.YY.ZZ o similar. Pero a veces tenemos una impresora USB conectada a un PC con Linux y queremos compartirla hacia otros PC de la red.

La primera tentación es añadir/modificar la impresora en CUPS (http://localhost:631) y darle a la opción "Compartir impresora".


Esto es rápido y sucio: la impresora se anunciará en la red de forma promiscua, los otros CUPS que tengan habilitado el escaneo de red (opcion "Browsing On" en sus /etc/cups/cupsd.conf) la verán y la añadirán a su lista de impresoras, los usuarios también la verán en cualquier búsqueda y al final todo el mundo podrá imprimir por ella. Saldrán continuamente hojas que nadie sabe quién ha mandado.

La segunda opción es hacerla compartida de forma discreta. Para ello la impresora no será configurada como compartida en CUPS desde el entorno gráfico. En cambio, la pondremos como compartida en /etc/cups/printers.conf. Para ello pararemos CUPS con
# /etc/init.d/cups stop
Editaremos nuestra impresora en /etc/cups/printers.conf modificando Accepting y Shared para ponerlos a "Yes":
# Printer configuration file for CUPS v1.7.5
# Written by cupsd
# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING

UUID urn:uuid:b4f30c34-4298-33a9-6266-b98a3ec00ebd
Info BN_SALA_PROFESORES
Location Sala Profesores
DeviceURI usb://Lexmark%20/X1100%20Series
State Idle
StateTime 1494510320
Reason opc-life-over-warning
Type 8392780
Accepting Yes
Shared Yes
....
Y reiniciamos de nuevo CUPS:
# /etc/init.d/cups start
No basta con esto, debemos además configurar en el interfaz web (http://localhost:631) las opciones "Allow remote administration" y "Allow users cancel any job", para que la impresora compartida pueda ser accedida y controlada desde los PC clientes:



Si vamos ahora a ver la configuración de la impresora:


Vemos que aparece como "No compartida". Que no cunda el pánico: si está compartida, pero no lo está vociferando por la red.

Bueno, con esto tenemos configurado el ordenador servidor al que está conectada la impresora por USB. Vamos a configurar los clientes la impresora con la URI:
http://mipc:631/printers/BN_SALA_PROFESORES
En el CUPS del PC cliente vamos a su interfaz web en http://localhost:631 y le damos a "Añadir impresora" eligiendo http o https:


y por último la añadimos poniendo la URI correspondiente que enlaza con el CUPS de la impresora remota (http://mipc:631/printers/BN_SALA_PROFESORES):


Solo falta terminar eligiendo el driver y finalizando la configuración.

Bueno, pues nada, la próxima semana nos espera un tiempo duro de parcheo de Windows para este virus de los amigos de la NSA, ya que I don't wanna cry.

miércoles, 5 de abril de 2017

HP Deskjet 710C en Windows 8 sin driver gracias a Linux.

Tenemos una impresora HP Desjket 710C que lleva 15 años funcionando estupendamente: los cartuchos son baratos, los inyectores van bien, nunca se atasca y los rodillos cogen el papel con soltura. Hemos retirado otras impresoras posteriores pero la 710C sigue funcionando aunque es algo lenta imprimiendo, pero no es grave porque tampoco tiene un uso intensivo. Sin duda, el departamento de obsolescencia programada de HP estaba de vacaciones cuando sacaron esa impresora. A fin de cuentas va a resultar que a veces el Mal se toma un descanso.

Hasta ahora ha estado funcionando con Linux y con Windows XP sin mayor problema. Al cambiar a Ubuntu 14.04 ha seguido funcionando con el driver "HP DeskJet 710C Foomatic/pnm2ppa (recommended)", pero al actualizar a Windows 8 ha aparecido un problema: el driver oficial que pone Windows falla al imprimir y mata el spooler de impresión. Es un problema documentado en Internet y que no tiene solución para Windows 8 y 10. Para Windows 7 tiene una solución un poco chapucera.

No es la primera vez que pasa esto de que no haya drivers para Windows. Es un tema olvidado para los Redmond Lovers (;-)) que optan por comprar otra impresora si la antigua ya no tiene drivers para Windows, pero si que recuerdan hasta el lecho de muerte cualquier problema de drivers con Linux. En fin, ¿hay solución o debemos retirar una impresora totalmente funcional?.

La impresora está en una estancia donde hay un PC con Linux y otro con arranque dual Linux/Windows 8. Hasta ahora estaba conectada al equipo Windows solamente. ¿Podría conectarla al equipo que tiene solo Linux y compartirla por CUPS desde allí hacía el otro PC?. Vamos allá:

  • Como hemos visto, la conectamos al puerto paralelo (no tiene USB) del equipo Linux y la damos de alta con el nombre HP_DESKJET_COLOR usando el driver "HP DeskJet 710C Foomatic/pnm2ppa", marcando la opción "Compartida".
  • En el segundo equipo, arrancamos en Linux y la damos de alta como impresora remota con URI http://ip-primer-equipo:631/printers/HP_DESKJET_COLOR y el mismo driver que antes. Probamos a imprimir vemos que funciona. Hasta aquí todo va bien.
  • Arrancamos Windows 8 en el segundo equipo y añadimos la impresora indicando que es de red con la ruta http://ip-primer-equipo:631/printers/HP_DESKJET_COLOR. Ponemos el driver normal de la 710C a ver si asi no falla..... ¡Meeeeec, error!, al dar a imprimir el proceso Spooler muere y queda inutilizada.
  • La borramos y la damos de nuevo de alta elegiendo el driver Generic/TextOnly. Se supone que ese es el driver RAW oficial de Windows, que manda los trabajos de impresión en bruto sin procesar al destino y por tanto no usa el driver que falla. Debería ser equivalente al "Local Raw Printer" de CUPS que conté aquí con una Epson. Hablo en condicional porque tampoco funciona, da otro error que viene a decir que el trabajo ha quedado paralizado y hay que reiniciar impresora y ambos PC para que funcione.
  • Nuevo intento, ahora con los drivers CUPS x64 para Windows. Nunca he tenido muy claro para que valen, pero es buen momento para probar. Es un camino corto: dan un error durante la instalación y no permiten continuar.
  • A punto de tirar la toalla, decido probar con un driver PostScript Universal. Me suena haber leído que si mandas un documento .ps en bruto a CUPS, este lo procesa con el driver correspondiente y lo imprime. Como no puedo encontrar los drivers universales PostScript de Adobe (que son la referencia en estos casos) para Windows 8, descargo estos de Xerox según cuentan aquí.
  • Ejecuto UNIV_5.520.6.0_PS_x64.exe descargado en el anterior paso, se descomprime en C:\Xerox\UNIV_5.520.6.0_PS_x64_Driver.inf\* y doy de nuevo de alta la impresora. Al elegir driver elijo Utilizar Disco y me voy al directorio anterior, seleccionando el driver “Xerox Global Print Driver PS” de la lista de drivers.



  • Mando a imprimir un documento desde el Windows por la impresora HP con el driver Xerox PS, lo convierte en un documento PostScript que se envía a http://ip-primer-equipo:631/printers/HP_DESKJET_COLOR, cuyo CUPS lo recoge y.... carajo, se imprime. Esto funciona.

Bueno, pues ya tenemos impresora por otra temporadita, gracias a Linux y a la facilidad de CUPS para aceptar cualquier documento que le llegue en formato PostScript y procesarlo con el driver adecuado. Con este truco podremos seguir usando en nuestras redes cualquier impresora antigua que funcione en Linux pero ya no esté soportada por Windows.

A ver si nos aguanta la impresora hasta que llegué el AVE a nuestra patria chica, que lo han retrasado hoy hasta 2025. Es muy fácil saber donde está Extremadura: en el hueco.



Es curioso que en una zona donde no quieren poner ningún tren eléctrico si quisieron ponernos 4 reactores nucleares que al final quedaron en 2, y esperemos que pronto en 0 si los hermanos portugueses aprietan lo suficiente.

Mi apuesta personal es que Elon Musk pondrá un hombre en Marte antes de que llegue el AVE a Badajoz.