Re: attaching ugen(4) on multi interface USB devices

From: Niki Denev (nike_d_at_cytexbg.com)
Date: 10/07/04

  • Next message: Bernd Walter: "Re: attaching ugen(4) on multi interface USB devices"
    To: ticso@cicely.de
    Date: Thu, 07 Oct 2004 16:22:12 +0300
    
    
    

    Bernd Walter writes:

    > On Wed, Oct 06, 2004 at 03:30:05PM +0300, Niki Denev wrote:
    >>
    >> Hello everyone!,
    >>
    >> The last 1-2 days i've been trying to make some userspace OBEX utilities to
    >> work with a USB based Nokia GSM phone and doing this i discovered something
    >> that confuses me a little:
    >> The phone in question is Nokia 6230 and it has an USB interface.
    >> The phone has 11 interface descriptors,
    >> 2 of them are used for the Modem and CM over data.
    >> Judging from the windows drivers it seems that four of the other interfaces
    >> are OBEX compatible.
    >> But if i kldload umodem and plug the phone it detects only one ucom(4).
    >> and if i plug the phone without any u* modules loaded the kernel attaches
    >> ugen0 only.
    >> >From what i understand it attaches the ugen0 using the info in the first
    >> interface descriptor in the device.
    >> Wouldn't it be more usefull for the kernel to attach ugen for every unknown
    >> interface in a device.
    >> For example when attaching the phone with umodem loaded, i will get
    >> the ucom(4) device and the other unrecognised interfaces will show up as
    >> ugens ?
    >> What do you think about that?
    >
    > ugen attaches to the whole device and supporting all interfaces in one
    > driver instance.

    thanks, i saw this in the ugen(4) manpage. it seems that i haven't noticed
    it before :(

    > If you already an interface driver atatched then ugen fails to attach
    > the whole device.

    well, i think that this can be a problem sometimes.
    actually i don't need kernel driver for obex devices, because everyting can
    and will be probably better done in the userland via ugen.
    but this means that the phone modem and obex interfaces can't be used
    together.
    why not having a ugen(4) for every USB device? even it is supported?
    it probably won't harm anyone, but will make possible accessing parts of
    the device that are otherwise hidden.

    > 11 interface descriptors sounds unlikely to be correct - it's more
    > likely that some of them are alternative configurations and a device
    > or interface can only be in a single configuration at a given time.
    > You can switch between alternative configurations via ugen.
    >

    It seems that this is the way that the CDC WMC (wireless mobile
    communication) devices are made.
    At least that is what i understand when reading some of the specifications
    published at usb.org

    > I don't know about OBEX, but why don't you just create an interface
    > class driver that attaches to OBEX interfaces - writing USB drivers is
    > not very difficult if you know USB and a few kernel basics.
    >

    I've done some testing in this area and i've made a driver based on
    ucom/umodem that attaches to OBEX devices. (only attaches at the moment).
    And here i discovered that usbdevs can't show more than 4 interfaces on USB
    device. I tracked down this to USB_MAX_DEVNAMES=4.
    Is there a reason for this to be set this low?

    >> P.S.: anyone know some good way to list the attached usb devices beyond
    >> usbdevs?
    >> It seems that the information that can be gathered from usbdevs is very
    >> limited. For example 'lsusb' in linux can show much more info. What do you
    >> think about that too?
    >
    > I like usbctl from NetBSDs usbutils.
    > An older port draft is available under:
    > http://www.cosmo-project.de/~bernd/usbutil.tgz
    > It will also show you the interface configurations with all
    > alternatives.

    usbctl and friends are nice! :)
    i would love to see them in freebsd by default :)

    P.S.:yesterday i have managed to panic my 6.0-current kernel
    with usbctl, but i'm not sure if this is related to changes that i have
    done.
    i will cvsup to clean any problems in my source/rebuild and then report if
    there are problems.

    >
    > --
    > B.Walter BWCT http://www.bwct.de
    > bernd@bwct.de info@bwct.de
    >

    thanks!

    --niki

    
    



  • Next message: Bernd Walter: "Re: attaching ugen(4) on multi interface USB devices"

    Relevant Pages

    • RE: USB Specific SetupDiEnumDeviceInterfaces ERROR_NO_MORE_ITEMS error
      ... Subject: USB Specific SetupDiEnumDeviceInterfaces ERROR_NO_MORE_ITEMS ... The driver is installed fine. ... I can get the interface handle with the GUID that my device has. ...
      (microsoft.public.development.device.drivers)
    • Re: USB Host Driver
      ... and be sure that a custom interface can be justified. ... Windows 2k/XP/2k3 Filesystem and Driver Consulting ... > We are currently developing a specialized USB host controller mini-port> driver that is not UHCI, OHCI, or EHCI compliant for Windows 2K, 2003 server,> and Windows XP. ...
      (microsoft.public.development.device.drivers)
    • Re: Windows 7 USB Audio I/O Mystery
      ... they'd fill in the gap left by interface and microphone manufactuers. ... Samson USB mic here that's pre-Win7. ... driver needed" info is not valid with Win7. ... device in all of the audio programs that I have here. ...
      (rec.audio.pro)
    • Re: usb device with multiple interfaces
      ... devices that store only a simple bootloader in flash and rely on USB to ... regular driver). ... functionality as interface0. ... struct _URB_HEADER UrbHeader; ...
      (microsoft.public.development.device.drivers)
    • Re: USB Printer Driver
      ... I have to develop a driver for a USB Printer....which interface I ... If you need graphics support and your printer does not support HP/PCL ...
      (microsoft.public.windowsce.platbuilder)