| Problemas con la impresora |
| [ Sistemas operativos / Linux ] |
| Como muchos de los lectores que asiduamente os siguen, y entre los que me incluyo, me decidí a probar un SO diferente de Windows, harto de estar esperando el tan temido error de registro, errores de pantallas azules y ventanas de "operaciones no válidas". De modo que me decidí a instalar GNU/Linux, con la distribución Esware 1.5. Después de instalar este estupendo SO, me dispongo a configurar todo hardware que no se había configurado en la instalación, y al llegar a la impresora no conseguí que imprimiera de ninguna de las maneras, ni siquiera con un simple ls -l > /dev/lp0. Me he leído los HOWTO referentes al sistema de spooling y filtros, pero aún sigo sin imprimir. En el Imprimir-COMO, hace referencia a que los puertos paralelos en GNU/Linux se corresponden con LPT1(378) = lp1, 278 = lp2 y 3bc = lp0, el problema que creo que tengo es que mi sistema se configuró como lp0, teniendo mi BIOS configurada como puerto I/O=378 IRQ = 7 para la impresora, usando ECP/EPP DMA = 3. He probado a cambiar en BIOS la configuración a 3bc y SPP, pero sigue igual. He probado con el mismo comando indicado arriba en lp1 y lp2, pero me muestra un mensaje de error diciendo algo parecido a que no están configurados. Otra pregunta ¿cómo puedo hacer que se quede activado el teclado numérico después de que haya terminado de arrancar GNU/Linux? |
| sergiogr@wanadoo.es |
| Tu problema con la impresora probablemente no vaya por donde indicas, sino que sea más sencillo. La asignación lp0, lp1 etc. la realiza el núcleo automáticamente y no hay que preocuparse de ella como ocurría con el núcleo 2.0. Este cambio, junto con el que varios dispositivos como una unidad ZIP y una impresora puedan compartir un puerto, son precisamente las dos principales novedades que supuso parport, el controlador del núcleo 2.2 para el puerto paralelo. En principio no deberías preocuparte de temas como el ioport, irq o canal DMA. El primero porque lo autodetecta, y el irq y DMA porque ni siquiera los usa mientras no se indique lo contrario. Probablemente todos tus problemas se limiten a que tu distribución no carga automáticamente el módulo necesario para usar la impresora, que es lp, que a su vez depende de los módulos "parport_pc" (en arquitecturas PC) y "parport". Este problema de hecho se da con las versiones de Red Hat anteriores a la 6.2 y Esware 1.5 está basada en una de ellas. La solución es simple, editar el fichero "/etc/modules.conf" (o "/etc/conf.modules", según el sistema) y añadir la siguiente línea: alias parport_lowlevel parport_pc Un par de comentarios al margen. El módulo no se carga hasta que realmente se vaya a enviar algo a la impresora, no cuando se arranca el dominio "lpd" y que se descarga tras estar un rato sin usar. Se hace por tanto un uso más eficiente de la memoria: sólo se carga el controlador mientras se necesita. El otro comentario es que si no añadimos la línea mencionada al fichero de configuración, no basta con cargar el módulo manualmente con "modprobe lp", porque sí se carga "parport" pero no "parport_pc". El motivo es que el fichero de dependencias no dice que "lp" dependa de "parport_pc", debido a que en realidad hay varios modelos de puerto paralelo, entre los que están el modelo para Pc y el de Sparc. También cabe comentar que parece que los núcleos más recientes son lo suficientemente inteligentes para saber si es "parport_pc" el módulo que tienen que cargar y no necesitan la configuración del fichero "modules.conf". Recomendamos la lectura del fichero "parport" en la documentación del núcleo. Habla, entre otras cosas, de cómo cuando se carga el módulo los puertos paralelos detectados aparecen colgando de /proc/ y se puede obtener información, por ejemplo si el modelo de la impresora soporta el estándar IEEE-1284. Respecto a tu pregunta sobre fijar el teclado numérico, la solución está en el comando setleds. Permite controlar las teclas de fijar mayúsculas, bloque numérico y bloque desplazamiento, individualmente para cada consola virtual. Una forma de lograr lo que quieres es incluir en /etc/rc.d/rc.sysinit las siguientes líneas: for consola in /dev/tty[1-6]; do setleds -D +num < $consola done. Como anécdota setleds también permite manejar los diodos del teclado (leds) con independencia de si la tecla está activa o no. Mediante este sistema podríamos hacer, por ejemplo, un programa que haga parpadear el piloto de teclado numérico al ritmo de los datos que va recibiendo el módem o de cualquier otro evento como la llegada de correo. Para utilizar esta posibilidad desde un programa en C se recurre a la llamada ioctl, que en general sirve para poder programar dispositivos y es dependiente del sistema operativo. Para ver los parámetros concretos a usar se puede consultar la página del manual ioctl_list o simplemente ejecutar setleds con strace para ver las llamadas que hace al sistema. |
| Anterior Siguiente |
© 2002 VNU Business Publications España. Queda terminantemente prohibida su reproducción total o parcial por cualquier medio sin el permiso explicito y por escrito del propietario del copyright. |