Puerto Paralelo en virtualbox usando ubuntu 10.04 Lucid Lynx

+1
+1
-1

Hoy os explicaré como configurar e instalar una máquina virtual, con acceso al puerto paralelo.

Y vuestra pregunta será "pa que quiero yo instalar una puerto paralelo en una máquina virtual?"

Pues en mi caso tengo unas impresoras muy especiales, para etiquetas de plástico, que el software va con windows (como no). Y si enchufo el adaptador de usb a paralelo, me da que si ahora el LTP1 que si ahora el LTP2 que si ahora no quiero imprimir... que si lo enchufo con el usb, ahora te doy el COM2 ahora el COM19 etc. Total que me tiro más tiempo configurando la dichosa impresora que imprimiendo.
De manera que me pongo una máquina virtual en mi querido linux, uso el puerto paralelo que nunca cambia, comparto la impresora en red para todos los pcs y a correr.

Y dado que vendedor de la impresora THERMOMARK S1 y S1.1 (en este caso phoenix contact) no le apetece fabricar una impresora de 600 leuros, para etiquetas industriales como es debido. Con puerto usb (y no usb virtual), y unos drivers y un software para LINUX.

Pues por ello me toca hacer todo este circo. Así que empecemos.

Primero debemos diferenciar la versión libre "Virtualbox OSE" y la versión "Oracle VM Virtualbox".

Tiene dos diferencias fundamentales:
-La licencia de la Oracle VM es PUEL(VirtualBox Personal Use and Evaluation License ( Licencia de uso personal y de evaluación de virtualbox). Por lo que no se puede usar para uso empresarial.

-La versión Virtualbox OSE dicen no tiene soporte para usb. (las nuevas versiones no lo se)

Por ello yo me he decantado por la versión Oracle (que la comunidad me perdone por este pecado). Aunque la política de oracle no me gusta un pelo.

La versión libre no tiene el comando VboxManage modifyvm con la opción –lpt1 (por lo menos la versión 3.2 que es la que me instala a mi por defecto)

Para instalar la versión oracle debemos ir a la web

https://www.virtualbox.org/

A la sección de descargas.

Clicais en virtualbox for linux.

Nos aparece el paquete deb y las instrucciones.

Nosotros no instalaremos el deb. Instalaremos desde los repositorios, así si hay actualizaciones y dependencias, se instalarán de manera automática.

Miramos nuestra versión de ubuntu en Sistema /acerca de ubuntu

##
cat /etc/issue

## una más cutre
lsb_release -a

##

En función de la versión copiamos la linea de los repositorios (a partir de ahora repos)

deb http://download.virtualbox.org/virtualbox/debian lucid contrib non-free

en mi caso

Vamos a Sistema/administración/origenes de software

clicamos en la pestaña otro software

Añadir y la pegamos.

Ahora falta añadir la clave. Si no el ubuntu no puede verificar la autenticidad del repositorio y da error al descargar los paquetes.

Descargamos el fichero de la clave (guardar como oracle_vbox.asc)

http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc

Vamos a la pestaña autenticación, importar clave y escogemos el fichero.

Cerramos la venta y recargar para que actualice la caché de los paquetes disponibles.

##
## la manera cutre
## sudo nano /etc/apt/sources.list y escribir la ruta
#
# cuidado que este comando añade el repositorio todas las veces
# que se ejecuta (nota ejecutar 1 sola vez)

sudo add-apt-repository -y "deb http://download.virtualbox.org/virtualbox/debian lucid contrib non-free"

#agregamos la clave

wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
#actualizamos la cache de los respos
sudo apt-get update

Ahora instalamos la máquina virtual.

Sistema/Administración/gestor de paquetes sinaptic (en Aplicaciones/ centro de software de ubuntu no lo encuentro)

buscamos virtualbox, y seleccionamos la última versión en mi caso virtualbox-4.3 (sobretodo no confundir con virtualbox-ose) y la instalamos.

##
## Vemos las versiones que hay
sudo apt-cache search virtualbox
# escogemos una y la instalamos
sudo apt-get install virtualbox-4.3
#

Si todo ha ido bien en Accesorios/Herramientas del sistema/debería aparecer el icono Oracle VM Virtualbox.

Creamos una nueva máquina virtual. Yo os aconsejo que sea de dimensionamiento dinámico, así solo nos ocupará en disco el espacio que tengamos usado.

Por ejemplo si creamos una máquina con 40Gigabytes de disco duro y le instalamos un linux, tendremos unos 6 gigas reales, que nos ocupará en nuestro ordenador.

Ahora miramos la dirección del puerto paralelo y la interrupción (irq)

Abrimos un terminal en Aplicaciones/Accesorios/Terminal y copiamos lo siguiente
##
sudo dmesg | grep parport
##

Con esto vemos una salida como esta

[ 13.514824] parport_pc 00:06: reported by Plug and Play ACPI
[ 13.514933] parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRISTATE,COMPAT,ECP,DMA]
[ 13.689353] lp0: using parport0 (interrupt-driven).

Si tenéis más de un puerto aparecerán con diferentes números parport0, parport1

En mi caso 0x378 y irq7

Estos dispositivos son /dev/parport0 ..

si hacéis el siguiente comando, podéis ver los dispositivos físicos instalados
## Visualizamos los dispositivos disponibles
ls -la /dev/ | grep parport
##

Si reiniciamos se volverá a iniciar. Más adelante los desactivaremos definitivamente. De momento hasta que no funcione nada.

Añadimos el usuario a los grupos de trabajo vbox-users y lp

## Lo agregamos a vboxusers para poder usar los usbs
addgroup "nombre de usuario" vboxusers
## Lo añadimos a lp para poder usar el puerto paralelo

addgroup "nombre de usuario" vboxusers

Para que se haga efectivo el cambio debemos de reiniciar el usuario (Cerrar sesión). Si no os fiáis podéis reiniciar todo el pc estúpidamente como si fuese windows.

Ahora detenemos el módulo lp, que puede estará usando el dispositivo /dev/parport0

##
sudo rmmod lp
##

Volvemos a abrir el terminal y añadimos el puerto paralelo a la máquina virtual.

#
VBoxManage modifyvm "nombre de la máquina" --lptmode1 /dev/parport0
VBoxManage modifyvm "nombre de la máquina" --lpt1 0x378 7
#

Ahora ya podéis arrancar la máquina virtual a ver como ha ido la faena. Si falla abajo os explico unos truquillos.

Si ha funcionado procedemos a la desactivación del módulo lp para después del reinicio.

## editamos el fichero /etc/modules
sudo nano /etc/modules
## o sudo gedit /etc/modules

y le ponemos un # delante del módulo lp

Supongo que si no cargamos el módulo lp luego en el linux tendremos problemas para usar el paralelo. Si os pasa esto lo descomentais.

Editamos el fichero /etc/modprobe.d/blacklist.conf

##
sudo nano /etc/modprobe.d/blacklist.conf
##

y añadimos la linea

blacklist lp

Reiniciamos y listos
(esta vez sí que reiniciamos completo para asegurarnos que cuando apaguemos el pc vuelva a funcionar)

Espero que os haya ayudado.

Moraleja: Si tienes una impresora vieja con puerto paralelo TÍRALA.

EN CASO DE QUE FALLE

Si os sale un error feísmo que pone

Fallo al abrir una sesión para la máquina virtual maquinavirtual.
Parallel#0 could not open '/dev/parport0' (VERR_ACCESS_DENIED).
Parallel device 0 cannot attach to host driver (VERR_ACCESS_DENIED).

Por lo general en este caso está activo el servicio lp o algún otro servicio que lo gestione, o no estais en el grupo lp.

Para verificarlo
#
lsmod | grep lp
#

Si no hay manera, no hay manera y no hay manera, podéis desactivar el puerto paralelo con el comando

#
VBoxManage modifyvm "nombre de la máquina" --lpt1 off
#

y podeis arrancar la máquina pero sin puerto paralelo.

También podeis borrar todos los ficheros excepto el disco virtual (osease el fichero *.vdi). Suelen estar en /home/vuestro usuario/.VirtualBox/HardDisks o en /home/vuestro usuario/VirtualBox VMs.

Que es donde se guarda la configuración, como manera de reset. Volvéis a crear la máquina y cogéis el fichero existente.

Si queréis cambiar la máquina virtual de la virtualbox-ose a la oracle, no problem. Instaláis la máquina oracle con

#
sudo apt-get install virtualbox-4.3
#

y ella misma eliminará la ose por incompatibilidad de paquetes.

Al abrir la máquina veréis que se han guardado las máquinas virtuales que teníais.

El tutorial que yo seguí es
http://blog.my1matrix.org/2013/04/parallel-port-on-virtualbox.html

Detalla más opciones pero a mi particularmente no me han hecho falta.

Ojito con las opciones
Porque estas cuando las apliqué en una máquina virtual, luego no fui capaz de arrancarla y la tuve que borrar, disco duro incluido.

VBoxManage setextradata WinXP "VBoxInternal/Devices/parallel/0/LUN#0/Config/DevicePath" /dev/parport0
VBoxManage setextradata WinXP "VBoxInternal/Devices/parallel/0/LUN#0/Driver" HostParallel
VBoxManage setextradata WinXP "VBoxInternal/Devices/parallel/0/Config/IOBase" 0x378
VBoxManage setextradata WinXP "VBoxInternal/Devices/parallel/0/Config/IRQ" 7