Si tienes un ordenador un poco antiguo con USB 1.1, quizás te interese una tarjeta de Conceptronic que está en el mercado: la Combo Card Firewire + USB 2.0. Esta tarjeta PCI te permite abrir tres nuevos puertos USB 2.0 en la trasera del ordenador, y un puerto adicional interno. También abre dos puertos Firewire en la trasera, y uno adicional interno. Sí, la tarjeta funciona correctamente en Linux, aunque es posible que tengas que compilar un kernel 2.6 con el soporte adecuado para ambas cosas (no lo creo, actualmente cualquier linux actualizado debería manejarla por defecto y sin problemas, pero en fin).
Para los puertos USB 2.0, entra en "Device Drivers", "USB Support" y ahí activa "EHCI HCD". Si lo activas como módulos asegúrate de que luego se carga el módulo ehci-hcd, además de uhci-hcd.
Para los puertos Firewire entra en "Device Drivers" y en "IEEE 1394 Support". Ahí te recomiendo que actives módulos como un loco. Luego, asegúrate de que se cargan al menos los módulos ieee1394, ohci1394, y quizás también raw1394. Además, puedes cargar también otros módulos interesantes, como el sbp2, que sirve para conectar discos duros externos Firewire.
Por cierto, me encanta Conceptronic. Hasta ahora, dispositivo Conceptronic que compro, dispositivo que funciona sin problemas con Linux. Y ya son varias cosas, desde tarjetas PCMCIA hasta dispositivos más exóticos como el Panel Multifunción. :-)
Conceptronic tiene un periférico que se llama "Multifunction internal frontpanel". Es, como su nombre indica, una especie de panel frontal que sirve para varias cosas: Para pasar la salida y entrada de audio desde la trasera hasta el frontal (en ordenadores que tienen todas las salidas por detrás, esto es muy útil). Para sacar dos puertos USB por el frontal del ordenador, sirviendo al mismo tiempo como MiniHUB (más útil todavía). Para sacar al frente dos puertos Firewire. Y por último como lector múltiple de tarjetas "6 en 1" integrado, que incluye CF/MD, MS/MSP, SM y SD/MMC.
Bien, compré este panel resignándome a que el lector de tarjetas no funcionara, porque lo que me interesaba era sobre todo la comodidad de tener los puertos USB y el audio por delante del ordenador (y no por detrás). Tenía buenas experiencias anteriores con Conceptronic, así que no lo dudé. Además, poco después aproveché para comprar la Combo Card de la que hablo en el apartado anterior, una combinación perfecta. :-)
La sorpresa es que funciona TODO en Linux, incluyendo el lector de tarjetas 6 en 1, aunque esto último solo será detectado por el kernel cuando tengas USB 2.0 (no funcionará si solo tienes USB 1.1). Eso sí, el lector de tarjetas funciona internamente como un SCSI de múltiples LUN, por lo que solo podrás acceder a la primera tarjeta del LUN (la CF/MD) hasta que compiles un kernel con la opción de múltiples LUN. Esto puedes hacerlo entrando en "Device Drivers", "SCSI device support" y activando "SCSI generic support" con "Probe all LUNs on each SCSI device". Además, puedes meter una opción de kernel en tu lilo que diga: "max_scsi_luns=4" o un número superior (aunque con 4 bastará).
La salida de mesg te mostrará que los lectores de tarjetas son detectados por el kernel de esta guisa:
usb-storage 1-3.4:1.0: usb_probe_interface usb-storage 1-3.4:1.0: usb_probe_interface - got id scsi4 : SCSI emulation for USB Mass Storage devices Vendor: SMSC Model: 223 U HS-CF Rev: 1.95 Type: Direct-Access ANSI SCSI revision: 02 Attached scsi removable disk sda at scsi4, channel 0, id 0, lun 0 Attached scsi generic sg1 at scsi4, channel 0, id 0, lun 0, type 0 Vendor: SMSC Model: 223 U HS-MS Rev: 1.95 Type: Direct-Access ANSI SCSI revision: 02 Attached scsi removable disk sdb at scsi4, channel 0, id 0, lun 1 Attached scsi generic sg2 at scsi4, channel 0, id 0, lun 1, type 0 Vendor: SMSC Model: 223 U HS-SM Rev: 1.95 Type: Direct-Access ANSI SCSI revision: 02 Attached scsi removable disk sdc at scsi4, channel 0, id 0, lun 2 Attached scsi generic sg3 at scsi4, channel 0, id 0, lun 2, type 0 Vendor: SMSC Model: 223 U HS-SD/MMC Rev: 1.95 Type: Direct-Access ANSI SCSI revision: 02 Attached scsi removable disk sdd at scsi4, channel 0, id 0, lun 3 Attached scsi generic sg4 at scsi4, channel 0, id 0, lun 3, type 0
Como puedes ver, el lector CF/MD es detectado como /dev/sda, el MS/MSF como /dev/sdb, el SM como /dev/sdc, y el más importante, el SD/MMC como /dev/sdd. Es posible que tus lápices USB se vean desplazados a /dev/sde a no ser que los tengas metidos con nombre propio en udev, así que tenlo en cuenta.
Recuerda también que a la hora de montar los dispositivos, deberá acceder a la primera (y única) partición, por lo que podrás montar tu tarjeta SD/MMC, muy usada en PDAs y otros dispositivos, con un comando así:
[20:42:31/0][root@claudia:~]# mount /dev/sdd1 /mnt/sd -t vfat -o rw
Naturalmente, el directorio /mnt/sd debe existir y estar vacío.
Si usas autofs, puedes introducir una entrada para todos tus lectores de tarjetas y dispositivos removibles tal que así:
dvd -fstype=iso9660,ro,sync,nodev,nosuid :/dev/hdc floppy -fstype=vfat,sync,nodev,nosuid,gid=users,umask=007 :/dev/fd0 zip -fstype=auto,sync,nodev,nosuid :/dev/hdb cf -fstype=vfat,sync,nodev,nosuid,gid=users,umask=007 :/dev/sda1 ms -fstype=vfat,sync,nodev,nosuid,gid=users,umask=007 :/dev/sdb1 sm -fstype=vfat,sync,nodev,nosuid,gid=users,umask=007 :/dev/sdc1 sd -fstype=vfat,sync,nodev,nosuid,gid=users,umask=007 :/dev/sdd1 usb -fstype=vfat,sync,nodev,nosuid,gid=users,umask=007 :/dev/sde1
Si no sabes lo que es autofs, no sabes lo que te estás perdiendo. Te lo cuento con más detalle en otra sección de la web.
Si tienes Firewire, la unidad conocida como "Hard Drive LaCie design by F. A. Porsche" funcionará perfectamente en tu Linux. :-)
La mayoría de las distribuciones modernas deberían reconocerlo automáticamente sin necesidad de hacer nada. Pero siempre hay excepciones, y puede que haya todavía alguna que necesite de algunos ajustes a mano.
Para ello solo tienes que enchufar el disco duro a tu puerto FireWire, enchufar a la red eléctrica, y cargar los módulos del kernel por orden:
[root@claudia:~]# modprobe ieee1394 [root@claudia:~]# modprobe raw1394 #esto es opcional [root@claudia:~]# modprobe ohci1394 [root@claudia:~]# modprobe sbp2
(Naturalmente, si no tienes estos módulos, tendrás que recompilar tu kernel para activar el soporte FireWire y sus módulos).
Si ahora haces un dmesg, el kernel debería mostrarte cómo reconoce la unidad, de esta guisa:
ieee1394: Initialized config rom entry `ip1394'
ieee1394: raw1394: /dev/raw1394 device initialized
ohci1394: $Rev: 1223 $ Ben Collins <bcollins@debian.org>
ACPI: PCI interrupt 0000:00:09.3[A] -> GSI 9 (level, low) -> IRQ 9
ohci1394: fw-host0: OHCI-1394 1.1 (PCI): IRQ=[9] Max Packet=[65536]
ieee1394: Node added: ID:BUS[0-00:1023] GUID[00d04b4a1105bfa7]
ieee1394: Host added: ID:BUS[0-01:1023] GUID[ffffffffffffffff]
eth1394: $Rev: 1224 $ Ben Collins <bcollins@debian.org>
eth1394: eth1: IEEE-1394 IPv4 over 1394 Ethernet (fw-host0)
eth1394: eth1: Could not allocate isochronous receive context for broadcast channel
sbp2: $Rev: 1219 $ Ben Collins <bcollins@debian.org>
scsi5 : SCSI emulation for IEEE-1394 SBP-2 Devices
ieee1394: sbp2: Logged into SBP-2 device
ieee1394: Node 0-00:1023: Max speed [S400] - Max payload [2048]
Vendor: WDC WD16 Model: 00BB-00GUA0 Rev: 08.0
Type: Direct-Access ANSI SCSI revision: 06
SCSI device sde: 312581808 512-byte hdwr sectors (160042 MB)
sde: asking for cache data failed
sde: assuming drive cache: write through
SCSI device sde: 312581808 512-byte hdwr sectors (160042 MB)
sde: asking for cache data failed
sde: assuming drive cache: write through
/dev/scsi/host5/bus0/target0/lun0: p1 p2 p3 p4 < p5 p6 >
Attached scsi disk sde at scsi5, channel 0, id 0, lun 0
Attached scsi generic sg4 at scsi5, channel 0, id 0, lun 0, type 0
Esto significa dos cosas: que la unidad será interpretada como un disco SCSI, y el dispositivo que le corresponde (en mi caso, /dev/sde). La unidad viene, de serie, en una única partición vfat (FAT32, si lo prefieres así). Podrías montarla con un comando del tipo "mount /dev/sde1 /mnt/pruebas -t vfat -o rw". Sin embargo, en todas partes te recomiendan que la reparticiones y formatees a tu gusto, a ser posible con un sistema de ficheros más decente que vfat. Yo hice un "fdisk /dev/hde" y la reparticioné en cinco unidades: para copias de seguridad, para basura, para sistemas virtuales de qemu, para cosas que bajo de internet, y para cosas que comparto con el mldonkey. Todas son unidades ext3, y estoy encantado.
El Firewire tiene un pequeño detalle que puede desconcertarte. Si reseteas el ordenador, es posible que la próxima vez no reconozca el disco externo, y se limite a notificarte la carga del último módulo con una única línea, pero sin especificar absolutamente nada que haga referencia a SCSI:
sbp2: $Rev: 1219 $ Ben Collins <bcollins@debian.org>
De hecho, si reseteas una y otra vez, es posible que la unidad sea reconocida a veces sí, y a veces no, de forma caótica. Eso sí, las veces que la reconoce, funciona perfectamente y sin problemas hasta que vuelves a resetear. ¿Qué esta pasando?. Bien, lo cierto es que es la segunda vez que me encuentro con algo parecido (la otra fue con un escaner SCSI Mustek). Parece ser que los sistemas SCSI a veces se "olvidan" de comprobar si el disco o lo que sea sigue ahí, así que asumen que sí o que no, según algún tipo de señal que manejan en el arranque. La solución es sencillísima: solo hay que enviarle al sistema SCSI un comando que le indique que lo vuelva a comprobar. Es comando es:
[15:07:52/0][root@claudia:~]# echo "scsi add-single-device 0 0 0 0" > /proc/scsi/scsi
Si comprobamos nuestro dmesg, veremos que ahora sí se detecta correctamente y que empieza a funcionar. Naturalmente, si queremos que el disco sea reconocido en el arranque, tendremos que meter estos comandos en los scripts de arranque. En el caso de Gentoo, tendrás que meter los módulos en el fichero /etc/modules.autoload.d/kernel-2.6 (solo los módulos, no el comando modprobe), y en cuanto al comando "echo", puedes ponerlo en /etc/conf.d/local.start, que para eso está.
Actualización: Hace ya mucho tiempo que vengo notando que mi Gentoo reconoce el disco FireWire en todos los arranques. Parece que alguna de las actualizaciones que hago automáticamente ha corregido ese problema y ahora va todo como la seda. Que lo sepas. Es de suponer que en las demás distribuciones habrá ocurrido otro tanto de lo mismo, porque seguramente ha sido algún cambio en el kernel.
Sí. Perfectamente. Solo necesitas instalar la última versión de los sane-backends. Con la 1.0.15 o superior será reconocido sin problemas, así que muy viejo tiene que ser tu sistema para no soportarlo. Eso sí, hay algunas cosas a tener en cuenta:
En el caso de Gentoo, tienes que hacer:
[root@claudia:~]# emerge sane-backends sane-frontends xsane [root@claudia:~]# emerge libusb hotplug
Sin embargo, debes añadir la opción "usb" a tu /etc/make.conf, en el apartado USE, o será incapaz de reconocerlo.
Y sea cual sea la distribución Linux que uses, también tendrás que tener soporte para USB, claro. No es imprescindible que tengas USB 2.0, pues funcionará incluso con USB 1.1, pero irá lentiiiiisimo. Te recomiendo encarecidamente USB 2.0. Y tendrás que cargar los módulos adecuados para activar el soporte, o recompilar tu kernel, si no los tienes. Estos módulos son usbcore, uhci-hcd (para 1.1) y ehci-hcd (para 2.0, pero necesita también el otro). Dmesg te dirá cómo reconoce al escaner:
hub 1-0:1.0: state 5 ports 4 chg fff0 evt 0002 ehci_hcd 0000:00:09.2: GetStatus port 1 status 001002 POWER sig=se0 CSC hub 1-0:1.0: port 1, status 0100, change 0001, 12 Mb/s hub 1-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x100 hub 3-0:1.0: state 5 ports 2 chg fffc evt 0002 uhci_hcd 0000:00:09.0: port 1 portsc 008a,00 hub 3-0:1.0: port 1, status 0100, change 0003, 12 Mb/s usb 3-1: USB disconnect, address 4 usb 3-1: usb_disable_device nuking all URBs usb 3-1: unregistering interface 3-1:1.0 usb 3-1:1.0: hotplug usb 3-1: unregistering device usb 3-1: hotplug hub 3-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x100 hub 1-0:1.0: state 5 ports 4 chg fff0 evt 0002 ehci_hcd 0000:00:09.2: GetStatus port 1 status 001803 POWER sig=j CSC CONNECT hub 1-0:1.0: port 1, status 0501, change 0001, 480 Mb/s hub 1-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x501 ehci_hcd 0000:00:09.2: port 1 full speed --> companion ehci_hcd 0000:00:09.2: GetStatus port 1 status 003801 POWER OWNER sig=j CONNECT hub 3-0:1.0: state 5 ports 2 chg fffc evt 0002 uhci_hcd 0000:00:09.0: port 1 portsc 0093,00 hub 3-0:1.0: port 1, status 0101, change 0001, 12 Mb/s hub 3-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x101 usb 3-1: new full speed USB device using uhci_hcd and address 6 usb 3-1: ep0 maxpacket = 8 usb 3-1: new device strings: Mfr=1, Product=2, SerialNumber=0 usb 3-1: default language 0x0409 usb 3-1: Product: CanoScan usb 3-1: Manufacturer: Canon usb 3-1: hotplug usb 3-1: adding 3-1:1.0 (config #1, interface 0) usb 3-1:1.0: hotplug hub 3-0:1.0: state 5 ports 2 chg fffc evt 0002
Ahora podemos usar dos comandos que nos mostrarán que SANE también detecta el escaner:
[15:12:01/0][root@claudia:~]# sane-find-scanner # No SCSI scanners found. If you expected something different, make sure that # you have loaded a SCSI driver for your SCSI adapter. found USB scanner (vendor=0x04a9 [Canon], product=0x220e [CanoScan], chip=LM9832/3) at libusb:003:006 found USB scanner (vendor=0x05e3, product=0x0502 [USB Host To Host Bridge]) at libusb:003:005 # 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. [15:12:01/0][root@claudia:~]# scanimage -L device `plustek:libusb:003:006' is a Canon N1240U/LiDE30 USB flatbed scanner
Si ahora ejecutamos "xsane plustek" deberíamos poder escanear sin más problemas. Al menos como root.
Pero no como usario normal. Habitualmente, al instalar los backends de SANE, Gentoo crea un grupo especial que se llama "scanner". Podemos añadir ese grupo a los usuarios que queramos conceder permiso para usar el scanner. Para ello solo teneis que editar el fichero /etc/group y donde pone:
scanner:!:501:
Debe poner:
scanner:!:501:lacofi,maria
Los nuevos grupos y permisos de acceso solo estarán disponibles la próxima vez que nos logemos. Y solo queda un detalle: hay que poner en marcha el servicio hotplug. En el caso de gentoo:
[root@claudia:~]# /etc/init.d/hotplug start [root@claudia:~]# rc-update add hotplug default * hotplug added to runlevel default * Caching service dependencies... * rc-update complete.
Desde el día 27/1/2004, la tarjeta Pinnacle PCTV de color rojo con el chip sintonizador MT2050, ya funciona bajo Linux en mi ordenador. Primero el camino largo (suponiendo que seas un insensato que todavía usa un kernel de la serie 2.4). Para ponerla en marcha con esa antigualla de kernel, yo necesité todo lo siguiente (te lo pongo detallado para que veas la tortura que pasamos los primeros en usarla):
I2C support --> I2C bit-banging interfaces I2C device interface I2C /proc inteface Multimedia devices --> Video For Linux V4L information in proc filesystem (esto dentro del kernel) BT848 Video For Linux Sound --> BT878 audio dma TV card (BT878) mixer support
[lacofi@claudia:~]$ su password [root@claudia:/home/lacofi]# cd /usr/src [root@claudia:/usr/src]# tar -xzvf ~/video4linux-20040126.tar.gz [root@claudia:/usr/src]# cd video4linux [root@claudia:/usr/src/video4linux]# make
[root@claudia:/usr/src/video4linux]# mods=/lib/modules/2.4.24-kaldef [root@claudia:/usr/src/video4linux]# video=/kernel/drivers/media/video [root@claudia:/usr/src/video4linux]# cp tuner.o $mods$video && \ > cp tda9887.o $mods$video && \ > cp tvaudio.o $mods$video [root@claudia:/usr/src/video4linux]# modprobe bttv ;; scantv
¿Eh?. ¿Qué me dices?. :-D
Pues si no dices nada, yo te voy a decir otra cosa. Falta el camino rápido: Anda, sé sensato y no te sigas esforzando con los kernel 2.4. La tarjeta pinnacle PCTV está correctamente soportada en cualquier kernel 2.6 medianamente moderno. Así que corre y actualízate al último kernel 2.6 que puedas y ya está. Compílalo activando Video4Linux y BT848, y eso es todo.
Sí, por supuesto. Supongo que no hay inconveniente tampoco para conectar a través de Movistar, pero en el momento de hacer esto, el móvil que usaba era Amena (cuando era todavía Amena). Luego me pasé a Vodafone, pero ese es otro tema y las configuraciones las tienes más abajo. :-)
En aquel momento, estaba conectando un ordenador portátil Highscreen a través de un teléfono móvil Amena GPRS Sony Ericsson T300 (un teléfono ya obsoleto, claro). El enlace entre ordenador y teléfono era, naturalmente, el puerto infrarrojos (nada de cables ni otras chorradas ;-). Te cuento cómo lo hice:
Naturalmente, lo primero es conseguir que Linux reconozca el puerto de infrarrojos del ordenador. Es fácil, sólo hay que recompilar el kernel, pero eso te lo cuento en otro sitio.
Teclea un "dmesg | grep tty" para localizar un puerto serie funcional y libre. Debería salirte una línea así:
ttyS1 at 0x02f8 (irq = 3) is a 16550A
Así que usaremos ttyS1 como puerto serie ¿de acuerdo?. Bien. Revisa tu fichero /etc/modules.conf. Debería estar correctamente configurado de antemano, pero por si acaso, échale un vistazo y asegúrate de que incluye al menos las siguientes líneas:
alias tty-ldisc-11 irtty alias char-major-161 ircomm-tty options ppp_async flag_time=0
Vale. Ahora vuelvete root y crea un fichero /etc/wvdial.conf que contenga esto:
[Dialer Amena] Username = CLIENTE Password = AMENA Phone = *99# Stupid Mode = 1 Modem = /dev/ircomm0 Baud = 115200 Dial Command = ATDT Init1 = ATZ +cgdcont=1,"IP","internet" FlowControl = NOFLOW Auto DNS = 1
Ahora crea un fichero /etc/sysconfig/networking/profiles/default/resolv.conf que contenga esto (o cualquier servidor de nombres que quieras):
nameserver 213.143.33.8 nameserver 213.143.32.20
Ahora crea un script, por ejemplo /usr/local/bin/amenagprs (con permisos de lectura y ejecución para root) que contenga esto:
#!/bin/bash /sbin/modprobe -a irda /sbin/modprobe -a irtty /sbin/modprobe -a ircomm /sbin/modprobe -a ircomm-tty /usr/sbin/irattach /dev/ttyS1 -s echo 115200 > /proc/sys/net/irda/max_baud_rate echo 1000 > /proc/sys/net/irda/min_tx_turn_time echo 1 > /proc/sys/net/irda/max_tx_window echo "Borrando ruta eth0 por defecto..." /sbin/route del default eth0 echo "Marcando Amena GPRS..." wvdial Amena echo "Terminando..." echo "Añadiendo ruta eth0..." /sbin/route add default eth0
Bien, ahora coge el teléfono T300, vete a conexiones y activa el puerto de infrarrojos del teléfono. Pon el teléfono al lado del puerto infrarrojos del ordenador. Ahora ejecuta el script "amenagprs" que creaste antes (como root, tal y como está no vale como usuario). La respuesta debería parecerse a esta:
[root@lynette:~]# amenagprs
Borrando ruta eth0 por defecto...
Marcando Amena GPRS...
--> WvDial: Internet dialer version 1.53
--> Initializing modem.
--> Sending: ATZ +cgdcont=1,"IP","internet"
ATZ +cgdcont=1,"IP","internet"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT
--> Carrier detected. Starting PPP immediately.
--> Starting pppd at Wed Mar 3 02:09:23 2004
--> pid of pppd: 1935
Pues ya está. :-)
No cierres la ventana xterm. Abre otra y haz un ping a cualquier servidor. O haz un telnet a otra máquina. O abre el Firefox y entra en el google. Sí, estás en Internet... :-D
Si falla, asegúrate de que has compilado los módulos de kernel. Al menos irda, irtty, ircomm e ircomm-tty. Mal los vas a instalar con modprobe si no los has compilado, ¿verdad?. Para comprobar que funcionan los infrarrojos, ejecuta un comando "irdadump" en un xterm, si quieres. Al cabo de un par de segundos, deberías ver una salida tal que así:
02:52:16.937587 xid:cmd f8f293cb > ffffffff S=6 s=0 (14)
02:52:17.027582 xid:cmd f8f293cb > ffffffff S=6 s=1 (14)
02:52:17.107577 xid:rsp f8f293cb < 000055f2 S=6 s=1 T300 hint=9124...
02:52:17.117581 xid:cmd f8f293cb > ffffffff S=6 s=2 (14)
02:52:17.207585 xid:cmd f8f293cb > ffffffff S=6 s=3 (14)
02:52:17.297582 xid:cmd f8f293cb > ffffffff S=6 s=4 (14)
02:52:17.387582 xid:cmd f8f293cb > ffffffff S=6 s=5 (14)
02:52:17.477581 xid:cmd f8f293cb > ffffffff S=6 s=* lynette hint=0400...
02:52:19.937587 xid:cmd f8f293cb > ffffffff S=6 s=0 (14)
02:52:20.027581 xid:cmd f8f293cb > ffffffff S=6 s=1 (14)
Lo he puesto todo en plan macarronico, solo para que veas que funciona. Luego, si quieres, se podría adornar un poco usando algún script que permita el diálogo con el usuario en lugar de hacerlo todo de manera tan espartana. Si tienes en el ordenador instalados los programas zenity y gxmessage, por ejemplo, podrías hacer esto:
#!/bin/bash /sbin/modprobe irtty /sbin/modprobe ircomm /sbin/modprobe ircomm-tty /usr/sbin/irattach /dev/ttyS1 -s echo 115200 > /proc/sys/net/irda/max_baud_rate echo 1000 > /proc/sys/net/irda/min_tx_turn_time echo 1 > /proc/sys/net/irda/max_tx_window /sbin/route del default eth0 echo "Dialing Amena GPRS..." >> /var/log/wvdial.log zenity --question --text "Quieres conectar a Amena GPRS?" status=$? if [ "$status" = 0 ] ; then wvdial Amena & gxmessage -geometry 270x2 -iconic -buttons \ "Desconectar:1" "Amena en línea..." salida=$? if [ "$salida" = 1 ] ; then killall wvdial echo "Desconectado" >> /var/log/wvdial.log echo "Añadiendo ruta eth0..." /sbin/route add default eth0 fi fi
Esta otra versión del script sigue teniendo restricciones: solo podría ejecutarse como root, por ejemplo. Así que habría que darle permisos SUID o meterla en /etc/sudoers para que sudo pueda manejarla (yo prefiero esto último). Y después, podríamos crear un icono en el escritorio para "sudo /usr/local/bin/infrarrojos", por ejemplo, si es que llamamos al script "infrarrojos". Pero, con todo, es muchísimo más funcional. ;-)
Si pulsamos en el icono que activa este script, saldrá un cuadro de diálogo que nos pregunta si queremos conectarnos a Amena GPRS. Si pulsamos en el botón "Aceptar", nuestro Linux se conectará al GPRS del móvil Amena y aparecerá, en el panel, una ventana minimizada. Podemos navegar libremente, y cuando queramos colgar, solo tenemos que pulsar en la ventana minimizada. Aparecerá otro cuadro de diálogo que nos dice "Estás conectado a Amena...", con un botón que dice "Desconectar". Cuando lo pulsemos, el ordenador colgará la conexión con el GPRS. Muy útil y práctico :-).
Quisiera agradecer esta configuración al "HOWTO linux & Sony Ericsson T300 mobile phone", de Todor Tanevski. Él no usaba Amena, claro, sino Mobitel, una compañía que no existe en España. Pero sus instrucciones son un ejemplo de cómo deben ser: claras, sencillas y concisas. Puro A, B y C.
Pero esto, por sí solo, no sirve de nada. Quisiera darle las gracias también al magnífico servicio de atención al cliente de Amena, el famoso "470", y a su Grupo Técnico. No dan información sobre Linux, pero saben que existe y que es demasiado grande para darle soporte (Caramba, al fin y al cabo, son un servicio al cliente de telefonía móvil, no de informática). Pero sí me han dado abundante y precisa información sobre la configuración en Windows 2000. Y eso es lo que me ha permitido completar los agujeros de Todor Tanevski y levantar la red para el T300, usando Amena GPRS y los puertos infrarrojos.
Por cierto, si usas Windows 2000 es inútil que intentes usar el T300: aunque parezca que sí, Windows no reconocerá el teléfono como módem hasta que instales el Service Pack 2 o superior. También me lo dijeron ellos, sí. ;-)
Sí, por supuesto. :-)
En mi caso, he conectado a Internet el mismo ordenador Highscreen de antes a través de un teléfono móvil Sony Ericsson T300. El enlace entre ordenador y teléfono es, otra vez, el puerto infrarrojos. Te lo cuento enterito, por si no quieres tener que andar mirando las explicaciones para Amena. De nada.
Igual que antes, lo primero es conseguir que Linux reconozca el puerto de infrarrojos del ordenador. Es fácil, sólo hay que recompilar el kernel, pero eso te lo cuento en otro sitio.
Teclea un "dmesg | grep tty" para localizar un puerto serie funcional y libre. Debería salirte una línea así:
ttyS1 at 0x02f8 (irq = 3) is a 16550A
Así que usaremos ttyS1 como puerto serie ¿de acuerdo?. Bien. Revisa tu fichero /etc/modules.conf. Debería estar correctamente configurado de antemano, pero por si acaso, échale un vistazo y asegúrate de que incluye al menos las siguientes líneas:
alias tty-ldisc-11 irtty alias char-major-161 ircomm-tty options ppp_async flag_time=0
Vale. Ahora vuelvete root y vamos a modificar el fichero /etc/wvdial.conf que hemos creado para el Amena, de tal forma que contenga esto:
[Dialer Amena] Username = CLIENTE Password = AMENA Phone = *99# Stupid Mode = 1 Modem = /dev/ircomm0 Baud = 115200 Dial Command = ATDT Init1 = ATZ +cgdcont=1,"IP","internet" FlowControl = NOFLOW Auto DNS = 1 [Dialer Vodafone] Username = wap@wap Password = wap125 Phone = *99***1# Stupid Mode = 1 Modem = /dev/ircomm0 Baud = 115200 Dial Command = ATDT Init1 = ATZ +cgdcont=1,"IP","airtelnet.es" FlowControl = NOFLOW DNS = 212.73.32.3 DNS = 212.73.32.67
Ahora vamos a modificar el script que lo pone en marcha, de tal forma que podamos elegir con quien queremos conectar. Si tienes en el ordenador instalados los programas zenity y gxmessage, por ejemplo, podrías hacer esto:
#!/bin/bash /sbin/modprobe irtty /sbin/modprobe ircomm /sbin/modprobe ircomm-tty /usr/sbin/irattach /dev/ttyS1 -s echo 115200 > /proc/sys/net/irda/max_baud_rate echo 1000 > /proc/sys/net/irda/min_tx_turn_time echo 1 > /proc/sys/net/irda/max_tx_window /sbin/route del default eth0 echo "Marcando GPRS..." >> /var/log/wvdial.log #zenity --question --text "Quieres conectar a Amena GPRS?" gxmessage -buttons "Vodafone:2,Amena:1,Cancelar:0" "Selecciona la empresa" status=$? if [ "$status" = 2 ] ; then empresa="Vodafone" fi if [ "$status" = 1 ] ; then empresa ="Amena" fi if [ "$status" = 0 ] ; then exit fi wvdial $empresa & gxmessage -geometry 270x2 -iconic -buttons \ "Desconectar:1" "$empresa GPRS en línea..." salida=$? if [ "$salida" = 1 ] ; then killall wvdial echo "Desconectado" >> /var/log/wvdial.log echo "Añadiendo ruta eth0..." /sbin/route add default eth0 fi
Esta otra versión del script sigue teniendo restricciones: solo podría ejecutarse como root, por ejemplo. Así que habría que darle permisos SUID o meterla en /etc/sudoers para que sudo pueda manejarla (yo prefiero esto último). Y después, podríamos crear un icono en el escritorio para "sudo /usr/local/bin/infrarrojos", por ejemplo, si es que llamamos al script "infrarrojos". Pero, con todo, es muchísimo más funcional. De hecho, es lo que usaba yo antes de adquirir un Sharp GX20. ;-)
Si pulsamos en el icono que activa este script, saldrá un cuadro de diálogo que nos pregunta si queremos conectarnos a Vodafone, Amena, o cancelar. Si pulsamos "Vodafone" o "Amena", nuestro Linux se conectará al GPRS del móvil correspondiente, y en el panel, aparecerá una ventana minimizada. Podemos navegar libremente, y cuando queramos colgar, solo tenemos que pulsar en la ventana minimizada. Aparecerá otro cuadro de diálogo que nos dice "Vodafone GPRS en línea...", con un botón que dice "Desconectar". Cuando lo pulsemos, el ordenador colgará la conexión con el GPRS. :-).
Sí, pero no igual que el Sony Ericsson T300. Si usas el script anterior con un teléfono móvil Sharp GX20, comprobarás que se conecta, efectivamente, pero desconecta al cabo de pocos segundos. En consola verías la salida de wvdial diciendo:
--> Modem initialized. --> Sending: ATDT*99***1# --> Waiting for carrier. ATDT*99***1# CONNECT ~[7f]}#@!}!}%} }<}!}$}&@}#}$@#}%}&_8^G}"}&} } } } }'}"}(}"Tx~~~ --> Carrier detected. Starting PPP immediately. --> Starting pppd at Thu May 20 22:13:43 2004 --> pid of pppd: 18283 --> Disconnecting at Thu May 20 22:13:48 2004 --> The PPP daemon has died: PPP negotiation failed (exit code = 10) --> man pppd explains pppd error codes in more detail. --> I guess that's it for now, exiting --> The PPP daemon has died. (exit code = 10)
Vale, ¿qué ha pasado?. Pues que se ha conectado a Vodafone, efectivamente, pero al poco tiempo, Vodafone nos ha colgado con un lacónico "error 10", que viene a significar "fallo en la negociación del protocolo". Si leemos el log de /var/log/messages nos encontramos con esto:
May 20 18:14:25 lynette pppd[7096]: pppd 2.4.1 started by root, uid 0 May 20 18:14:25 lynette pppd[7096]: Using interface ppp0 May 20 18:14:25 lynette pppd[7096]: Connect: ppp0 <--> /dev/ircomm0 May 20 18:14:58 lynette pppd[7096]: IPCP: timeout sending Config-Requests May 20 18:14:58 lynette pppd[7096]: Connection terminated. May 20 18:14:58 lynette pppd[7096]: Exit.
o con esto:
May 20 20:32:36 lynette pppd[27484]: pppd 2.4.1 started by root, uid 0 May 20 20:32:36 lynette pppd[27484]: Using interface ppp0 May 20 20:32:37 lynette pppd[27484]: Connect: ppp0 <--> /dev/ircomm0 May 20 20:32:40 lynette pppd[27484]: Could not determine local IP address May 20 20:32:40 lynette pppd[27484]: Hangup (SIGHUP) May 20 20:32:40 lynette pppd[27484]: Modem hangup May 20 20:32:40 lynette pppd[27484]: Connection terminated. May 20 20:32:40 lynette pppd[27484]: Connect time 0.1 minutes. May 20 20:32:40 lynette pppd[27484]: Sent 113 bytes, received 64 bytes. May 20 20:32:40 lynette pppd[27484]: Exit.
Ambas cosas vienen a significar que el ordenador espera que el módem le de la IP local, pero pasa el tiempo límite y el módem (el Sharp GX20) aún no se lo ha dado, por lo que considera que la conexión ha sido terminada y cuelga.
Seguramente existe alguna manera de adaptar mi script para que funcione con el GX20, pero yo no lo he conseguido. :-(
En cambio, buscando una solución por Internet, me encontré con un programa que hace exactamente lo que necesito. Se llama "GPRS Easy Connect", y es, básicamente un dialer para linux que soporta multitud de móviles (entre ellos el Sharp GX20), multitud de compañías telefónicas (entre ellas Airtel Vodafone Spain), y multitud de conexiones (entre ellas el enlace de infrarrojos entre móvil y portátil). Por si fuera poco, está traducido al español. Puedes descargarlo en la Web de "GPRS Easy Connect" e instalarlo en tu ordenador. La versión 2.5.1 beta funcionaba perfectamente en mi máquina.
El proyecto GPRS Easy Connect está actualmene cerrado y ya no habrá nuevas versiones. Una pena, pero hicieron un gran trabajo y cumplieron con creces todas mis expectativas mientras estuvieron en activo. Un gran abrazo para ellos desde aquí. De todas formas, en su página web aún puedes bajarte la última versión que se publicó. Así que mientras no lo retiren, este truco aún sigue siendo factible.
Instalarlo es tan fácil como descomprimir el fichero tar.gz y luego ejecutar el script INSTALL, que comprobará en primer lugar si se cumplen las dependencias (especialmente perlTK). En mi extinto Fedora Core 1, por ejemplo, todas las dependencias se cumplieron a la primera y el programa arrancó y se configuró sin ninguna complicación, como la seda. Luego enganchó el GX20 y conectó con Vodafone también sin problemas. Sencillamente perfecto. :-)
Eso sí, puede que tengas que ejecutarlo como root. Yo he añadí una entrada en /etc/sudoers para ejecutar "sudo /usr/bin/gprsec" desde un icono en el escritorio. Me parecía una solución correcta.
Por cierto: en el móvil Sharp GX20 aparecen dos formas distintas de activar los infrarrojos. Una, en el menú "Ajustes". La otra, en el menú "Aplicaciones". Bien, pues la que está en "Aplicaciones" sirve para transferir ficheros entre el ordenador y el teléfono (con el correspondiente programa Windows, claro), pero NO para conectarse a Internet por GPRS. Para esto último debes activar el infrarrojo usando la opción que viene en "Ajustes".
Y si tienes un Sharp GX20, te felicito. Gran teléfono, ¿verdad?. En su momento era una verdadera joya. Hoy está tecnicamente superado, claro, pero sigue teniendo una estética magnífica. Apetece seguir usándolo, la verdad. :-)
Es decir, ¿puedo acceder a esas cosas a través del puerto infrarrojos, con mi portátil?.
La respuesta es sí, claro. Para ello lo único que necesitas es instalar las librerías GSMLIB. Si usas Debian, Fedora, o incluso Gentoo solo tienes que hacer un apt-get o un emerge de nada.
Una vez instalado el GSMLIB, te recomiendo que hagas un enlace blando tal que así (no es imprescindible, pero sí recomendable):
[lacofi@lynette:~]$ su password: [root@lynette:/home/lacofi]# cd /dev [root@lynette:/dev]# ln -s ircomm0 mobilephone
Ahora enciende los infrarrojos de tu móvil en modo módem (en el menú "ajustes", no en el de "aplicaciones"). Puedes hacer una copia de seguridad de la agenda de tu móvil con este comando (tarda un rato, casi un minuto, dependiendo de lo grande que sea tu agenda):
[lacofi@lynette:~]$ gsmpb -i -s /dev/mobilephone -d agenda.txt -p "SM"
Naturalmente, luego puedes usar este fichero para reconstruirla, si la borras accidentalmente, pero deberías consultar la ayuda con el comando "man gsmpb", que es muy detallado y viene con ejemplos.
Del mismo modo, puedes leer desde el ordenador todos los SMS que tengas almacenados en el móvil mediante este otro comando (que también tarda un poco):
[lacofi@lynette:~]$ gsmsmsstore -s /dev/mobilephone -t SM -l
O enviar un SMS a quien quieras mediante el comando:
[lacofi@lynette:~]$ gsmsendsms -d /dev/mobilephone 609555555 "Hola, mundo"
Y como siempre, te recomiendo encarecidamente que te leas los man de gsmsmsstore y gsmsendsms, así como gsmsmsd, un demonio que te permite manipular los SMS con la misma facilidad con que gestionas tus correos electrónicos.
Eso si, no tengo ni idea de cómo transferir melodías o fotos entre ambos dispositivos. Lo siento.