Depois de uma tentativa frustrada de utilizar um "espelho" infravermelho (culpa minha, diga-se de passagem), resolvi partir para o adaptador USB. Achei um a um preço interessante no MercadoLivre, da IRCON (
http://www.ircon.com.br), e que funcionava em Linux. Comprei o adaptador, o bichinho veio sem problemas. Logo que pluguei na USB, o lsusb do meu Linux (Fedora Core 2, kernel 2.6.6-1.435.2.3) avisou da existência:
Bus 001 Device 003: ID 0df7:0620 Mobile Action Technology, Inc. MA-620 USB Infrared Adapter
Esta MA-620 é um popular chip de interfaceamento USB-Serial, utilizado em diversos cabos de comunicação USB, como podemos ver no banco de dados mantido pelo projeto Linux-USB (
http://www.qbik.ch/usb/devices/search_res.php?pattern=pl2303). E sim, o nome do módulo carregado pelo hotplug é pl2303, por causa do chipset PL2303 da Prolific, utilizado em conjunto com a MA-620.
O problema é que o simples carregamento do módulo 'pl2303' não significava nada. Era necessário descobrir como carregar os módulos do infravermelho. Jean Tourrilhes, um dos papas do wireless no
Linux, comenta que os adaptadores USB-IrDA que utilizam a MA-620 seriam SIR, ou seja, aceitam velocidade até 115200. Como não estou usando EDGE, então está tudo OK mesmo :)
Procurando no Google, achei um email na
linux-usb-users que continha algo interessante:
Neste email, o autor acaba publicando dois scripts para levantar e derrubar o infravermelho:
levanta-dongle.sh:
#!/bin/sh
#
# Necessário para fazer o kernel reconhecer dongle USB-IrDA
# com chipset MA620 USB IRDA.
# Original em http://www.mail-archive.com/linux-usb-users@lists.sourceforge.net/msg10908.html
# As duas linhas abaixo somente devem ser descomentadas se você não tem o hotplug instalado
#/sbin/modprobe uhci_hcd # mude aqui caso seu host USB seja OHCI ou EHCI
#/sbin/modprobe pl2303
#
# Carregando a base do IrDA
/sbin/modprobe irda
#
# O kernel, por padrão, limita a velocidade dos adaptadores USB-serial MA-600 (do qual o MA-620
# é um derivado) a 9600bps.
# Modifique a linha 197 de linux/drivers/net/irda/ma600-sir.c de #1 para #0 e recompile o módulo
# para que o módulo ma600-sir aceite velocidades maiores
echo 9600 > /proc/sys/net/irda/max_baud_rate
#echo 57600 > /proc/sys/net/irda/max_baud_rate
#
# Carregando o módulo de suporte à SIR
/sbin/modprobe irtty-sir
# Carregando o suporte das MA-600/MA-620
/sbin/modprobe ma600-sir
# Carregando o suporte a IrCOMM
/sbin/modprobe ircomm-tty
#
# Caso sua distro não tenha um script SystemV, descomente a linha abaixo
#/usr/sbin/irattach /dev/usb/ttyUSB0 -d ma600 -s
/etc/init.d/irda start
derruba-dongle.sh:
#!/bin/sh
#
# Agora é para parar o dongle
# Original em http://www.mail-archive.com/linux-usb-users@lists.sourceforge.net/msg10908.html
#
# Caso sua distro não tenha um script SystemV, descomente a linha abaixo
#killall irattach
/etc/init.d/irda stop
/sbin/modprobe -r ircomm-tty
/sbin/modprobe -r ma600-sir
/sbin/modprobe -r irtty-sir
/sbin/modprobe -r pl2303
Copiei os scripts para /usr/local/sbin e, como o Fedora Core 2 já vem com hotplug instalado, bastou criar o script /etc/hotplug/usb/pl2303:
#!/bin/bash
cd /etc/hotplug
. /etc/sysconfig/network-scripts/network-functions
. ./hotplug.functions
case $ACTION in
add|register)
/usr/local/sbin/levanta-dongle.sh && exit 0 ;;
remove|unregister)
/usr/local/sbin/derruba-dongle.sh && exit 0 ;;
esac
Com os scripts, estava tudo OK. Pluguei o dongle... e... e...
$ /sbin/ifconfig
irda0 Encapsulamento do Link: IrLAP Endereço de HW 00:00:00:00
UP RUNNING NOARP MTU:2048 Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:1435 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:8
RX bytes:0 (0.0 b) TX bytes:22755 (22.2 Kb)