Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Apr 2009 14:44:31 +0200
From:      Hans Petter Selasky <hselasky@c2i.net>
To:        Milan Obuch <freebsd-usb@dino.sk>
Cc:        freebsd-usb@freebsd.org
Subject:   Re: u3g serial device name query
Message-ID:  <200904301444.32024.hselasky@c2i.net>
In-Reply-To: <200904301412.38313.freebsd-usb@dino.sk>
References:  <200904301221.44674.freebsd-usb@dino.sk> <200904301258.37784.hselasky@c2i.net> <200904301412.38313.freebsd-usb@dino.sk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 30 April 2009, Milan Obuch wrote:
> On Thursday 30 April 2009 12:58:36 Hans Petter Selasky wrote:
> > On Thursday 30 April 2009, Milan Obuch wrote:
> > > Hi,
> > >
> > > I have HUAWEI 3g usb modem. It works with u3g from current. There is
> > > however one thing I did not get working yet.
> > >
> > > When device attaches, it is added into tree as u3gN, devd event is
> > > sent. It is easily matched with 'device-name "u3g[0-9]"' clause in
> > > devd.conf. I can start ppp automatically and it works well, given no
> > > other USB serial device is present.
> > >
> > > If another USB serial device such as uplcom is present, u3g serial
> > > ports does not have the same name. I found no way to relate serial
> > > device name to this event and looking in source I see no place where it
> > > is created. I would like to put a devctl notify call there. This way I
> > > could start ppp with correct device name even if there is some other
> > > USB serial device.
> > >
> > > Could someone point me in the right direction?
> >
> > USB serial devices have their own unit management. There is however a way
> > to override the unit number through the "usb2_com_tty_name" callback,
> > which requires some code changes to the u3g driver.
> >
> > All USB modems and serial adapters end up with the same naming
> > prefix: /dev/cuaU%d.%d, so the assigned numbers must be serialised.
> >
> > What we could do is to have a separate naming prefix for 3G modems, and
> > use the device_get_unit() for unit number.
> >
> > See: src/sys/dev/usb/serial and usb_serial.c
>
> I looked over usb2_com_attach_tty function in usb_serial.c, and somewhere
> after call to tty_makedev (where a DPRINT is too) I could put a devctl
> call.
>
> All I need for it would be device name. In /var/log/message file I see a
> line telling 'u3g0 : Found 2 ports' just after usb2_com_attach_tty function
> is called. If you could tell me how I can get 'u3g0' name via sc argument
> in usb2_com_attach_tty function, I can solve this with no other change.
>

You have to cast the parent softc pointer back into "struct u3g_softc", which 
is stored in the ucom softc. In the u3g_softc you should find sc_dev, which 
you can use "device_get_nameunit()" on. You can do this in 
the "usb2_com_tty_name" callback function.

--HPS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200904301444.32024.hselasky>