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