nozomi driver (was: Vodafone Mobile Connect HSDPA/UMTS/EDGE
datacard supported?)
Matthias Apitz
matthias.apitz at oclc.org
Mon May 5 06:36:53 UTC 2008
El día Sunday, May 04, 2008 a las 04:37:05PM +0200, Matthias Apitz escribió:
> On card insert it says:
>
> May 4 16:19:54 rebelion kernel: nozomi0: <Option N.V. GlobeTrotter 3G+> mem 0xc8309000-0xc83097ff irq 16 at device 0.0 on cardbus0
> May 4 16:19:54 rebelion kernel: nozomi0: [GIANT-LOCKED]
> May 4 16:19:54 rebelion kernel: nozomi0: [ITHREAD]
> May 4 16:19:55 rebelion kernel: nozomi0: ver. 3 with 2048 bytes of memory
> May 4 16:19:55 rebelion kernel: nozomi0: initialization complete
>
> As the next step I wanted to check with some serial line tool (kermit) how the
> card answers on AT commands, but I don't see any /dev file coming up in
> user space; am I missing something? what should be the name of the
> device in user space? Thanks in advance
I have digged into this and it turned out that ttycreate() is called with
incompatible (means: incompatible to FreeBSD 7.0-REL) arguments:
*** nozomi.c 2008-05-05 08:05:54.000000000 +0200
--- nozomi.c.orig 2007-04-18 00:47:50.000000000 +0200
***************
*** 1070,1078 ****
tmptty->t_modem = nzmodem;
tmptty->t_ioctl = nzioctl;
tmptty->t_sc = sc;
! // see /usr/src/sys/kern/tty.c:
! device_printf(sc->dev, "ttycreate for /dev/cuaN%d\n", i);
! ttycreate(tmptty, TS_CALLOUT, "N%r", i);
sc->port[i].tty_devunit = tmptty->t_devunit;
sc->port[i].tty_open_count = 0;
}
--- 1070,1076 ----
tmptty->t_modem = nzmodem;
tmptty->t_ioctl = nzioctl;
tmptty->t_sc = sc;
! ttycreate(tmptty, NULL, 0, 0, "N%r", i);
sc->port[i].tty_devunit = tmptty->t_devunit;
sc->port[i].tty_open_count = 0;
}
This and the missing argument for bus_setup_intr() let me think that the
driver was not ported to FreeBSD 7.0-REL (don't know if this interface
changed from 6.x to 7.0, will have a look into some older server when
I'm at work); anyway, with the above small change th devices /dev/cuaN0,
to /dev/cuaN4 get created and /dev/cuaN0 works fine with kermit and
responses on AT commands, like for example ATI2 to read the vendor
information;
I fired up as well PPPD the sign-in to the network works well with the
following chat script:
'' +++
'' AT
OK\r at_opsys=1,2
OK\r at+CGQREQ=?
OK\r at+cpin="xxxx"
O AT+CGDCONT=1,"IP","web.vodafone.de"
OK\r ATD*99***1#
CONNECT
the LCP layer worked as well, IP comes up, got an IP addr, routing came
up fine; the things went wrong when real TCP should be send encapsulated in
PPP frames, then even the LCP echo requests come out of sync:
May 4 17:50:12 rebelion pppd[3055]: sent [LCP EchoReq id=0x1 magic=0x725825f7]
May 4 17:50:12 rebelion pppd[3055]: rcvd [LCP EchoRep id=0x1 magic=0x4a0ab1cb 0a 0b 0c 0e]
May 4 17:50:42 rebelion pppd[3055]: sent [LCP EchoReq id=0x2 magic=0x725825f7]
May 4 17:50:46 rebelion pppd[3055]: rcvd [LCP EchoRep id=0x2 magic=0x4a0ab1cb 0a 0b 0c 0e]
May 4 17:51:12 rebelion pppd[3055]: sent [LCP EchoReq id=0x3 magic=0x725825f7]
May 4 17:51:42 rebelion pppd[3055]: sent [LCP EchoReq id=0x4 magic=0x725825f7]
May 4 17:51:42 rebelion pppd[3055]: rcvd [LCP EchoRep id=0x4 magic=0x4a0ab1cb 0a 0b 0c 0e]
which let me think that data sent by PPPD is not sent out properly to
the air (to UMTS); PPPD opens the device /dev/cuaN0 and sets 230400 baud
with CRTSCTS control;
will see what I can find out by enabling the debug printf()'s
thx for your comments, Volker, if you have any idea what's wrong;
matthias
More information about the freebsd-mobile
mailing list