Bueno, una vez ya tenemos el soporte de IRDA compilado en el núcleo, los pasos a seguir tienen cierta similitud a los de Palm. Aunque hay ciertos matices a tener en cuenta con el pppd.
La pruebas se realizaron con una Compaq Ipaq 3660 con WindowsCE (PocketPC2000) vía IRDA.
El soporte de la interconexión vía USB, para aquellos que se lo estén preguntando todavía, no lo he conseguido hacer ir con la ipaq. El USB en Linux está fresquito aún.
Otra aclaración, si en vez de WindowsCE estamos utilizando algún tipo de Linux en la ipaq, la conexion IRDA es como si fuera entre PC's. Dicho esto, vamos allá.
En la secuencia de reconocimiento encontramos...
07:55:51.439835 xid:cmd ffffffff < 00000a33 S=6 s=* Pocket_PC hint=8204 [ PDA/Palmtop IrCOMM ] (26) ff3f01330a0000ffffffff01ff00820400506f636b65745f5043 . ? . 3 . . . . . . . . . . . . . P o c k e t _ P C
El Windows CE no es como la Palm, que marcando el 0 como número de teléfono actua en plan modo red. Lo que necesitamos con la Ipaq es emular todo lo que se pueda la conexión como si se tratara de un módem. Esto incluye pues, toda la secuencia de comandos AT. Interesantísimos aquí los RFCs que aparecen en la parte final del man pppd.
A la Ipaq pues, le vamos a dar un tlf que no exista, da igual la cantidad de cifras, yo por costumbre con la Palm uso también el cero, y le vamos a desmarcar la opción de esperar tono en la llamada. Lógicamente podemos emular muchas cosas, pero el tono de llamada, pues como que no.
Me voy a centrar a partir de aquí en un caso concreto. Se trata de la Ipaq 3660 con WindowsCE 3.0. Para el resto es tan sencillo como espiar la conexión e ir mirando los comandos que va mandando. Como ejemplo ahi va el caso este concreto, lógicamente me como del registro lo que no interese....
Alla vá, la primero el churro que envía el pppd:
07:55:54.946139 i:cmd > ca=de pf=1 nr=4 ns=6 LM slsap=2f dlsap=01 TTP credits=0 (52) df9c012f00007eff7d23c0217d217d257d207d347d227d267d207d207d207d20 . . . / . . ~ . } # . ! } ! } % } } 4 } " } & } } } } Ahora el WinCE quiere reinicializar "nuestro" modem: 07:55:59.387185 i:rsp < ca=de pf=1 nr=0 ns=5 LM slsap=01 dlsap=2f TTP credits=0 (13) de1a2f01000041545a0d2b2b2b . . / . . . A T Z . + + +
Mirando en la documentación tecnica, deberíamos mandar un OK. Lo apuntamos. Configuramos el pppd para que envíe el OK (luego digo cómo) y empezamos la secuencia otra vez. Pasamos por el ATZ, mandamos el OK y ahora nos encontramos con:
09:00:09.016508 i:rsp < ca=de pf=1 nr=7 ns=3 LM slsap=02 dlsap=48 (19) def6480200004154453056312643312644320d . . H . . . A T E 0 V 1 & C 1 & D 2 .
ATE0V1 y parámetros.... bien...miramos la documentación de turno y vemos que va otro OK. Volvemos a apuntar y a empezar secuencia. Mandamos este OK y ahora el bichito nos envía:
09:00:09.095605 i:rsp < ca=de pf=1 nr=2 ns=5 LM slsap=02 dlsap=48 (14) de5a48020000415453373d33300d . Z H . . . A T S 7 = 3 0 .
ATS7.... y otro OK de turno. Seguimos y ahora nos envía:
09:00:09.225783 i:rsp < ca=de pf=1 nr=5 ns=7 LM slsap=02 dlsap=48 (11) debe48020000415458330d . . H . . . A T X 3 .
ATX3... pos ala, otro OK y continuamos....
09:00:09.306238 i:rsp < ca=de pf=1 nr=0 ns=0 LM slsap=02 dlsap=48 (18) de104802000041544454392c30302c30300d . . H . . . A T D T 9 , 0 0 , 0 0 .
yeyeyeyeyeyeye.... esto es el famoso ATDT, aquí está marcando.... para dar la conformidad de marcado, aquí va un CONNECT. Y a partir de este momento empieza ya toda la negociación ppp.
¿Cómo enviamos pues toda la secuencia?. Sencillo:
Vamos al directorio /etc/ppp/peers.
Allí creamos el fichero "ipaq" y en su interior metemos (para este caso
concreto):
/dev/ircomm0 115200 crtscts
connect '/usr/sbin/chat -v ATZ OK AT OK ATE0V1 OK ATS7 OK ATX3 OK ATDT CONNECT'
noauth
local
passive
debug
ms-dns 192.168.0.122 #ip de las dns
:192.168.0.148 #ip a asignar
Los comandos están en el man del pppd. Una vez tenemos el fichero creado, los pasos a seguir son sencillos.
pppd call ipaq
y en la ipaq le damos a conectar, a partir de ahí... ya estamos.
Recordaros meterle el MASQ al ipchains-iptables y el "1" al ip_forward para enmascararos la salida.
Bueno, y ahora, a por la telefonía.