usb webcam with audio interfaces fails

2012-07-03
2014-04-22
  • Marshal.zxy
    Marshal.zxy
    2012-07-03

    Hi,
      I test several usb webcams under usbip windows client + usbip linux server.None of them can be initialized by windows usb drivers.
      My testing enviroment is:
      usbip linux module in 2.6.38.3
      usbip linux version is 0.1.8
      usbip windows client downloaded from svn with Revision 201.
      My Windows version is xp sp2.
      My linux is ubuntu 10.04 with kernel vesion 2.6.32-28

      My testing webcams are:
      Logitech C110
      Logitech C270
      HYUNDAI  HYC-W180
      Each of these webcams has internal microphone and contains usb audio interfaces in its descriptors.
     
      The phenomenon is:
      1. Usbip client can establish ip connect with usbip server, Windows reports new device found.Then Windows reports device initialization fails.  Usbip client reports no error during this process.
      2. By the help of DebugView and IRPTrace, I get following message from BusEnum.sys:
            Enter control
    BusEnum.SYS:
    get ports status called
    BusEnum.SYS:
    get ports status
    Enter control
    BusEnum.SYS:
    PlugIn called
    BusEnum.SYS:
    Exposing PDO
    ======addr:  1
    ======vendor:product: 046d:0829
    BusEnum.SYS:
    fdodata->NextLowerDriver = 0x869E0730
    Bus_PnP
    BusEnum.SYS:
    FDO IRP_MN_QUERY_DEVICE_RELATIONS IRP:0x8683DCD8
    QueryDeviceRelation Type: BusRelations
    #PDOS present = 1
    #PDOs reported = 1
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_QUERY_ID IRP: 0x8665E430
    QueryId Type: 0 BusQueryDeviceID
    dev id:USB\Vid_046d&Pid_0829
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_QUERY_CAPABILITIES IRP: 0x8665E430
    Bus_PnP
    BusEnum.SYS:
    FDO IRP_MN_QUERY_CAPABILITIES IRP:0x8683DCD8
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_QUERY_DEVICE_TEXT IRP: 0x8665E430
    DeviceTextDescription :USB Device Over IP
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_QUERY_DEVICE_TEXT IRP: 0x8665E430
    DeviceTextLocationInformation :on USB/IP Enumerator
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_QUERY_ID IRP: 0x8665E430
    QueryId Type: 3 BusQueryInstanceID
    InstanceID: 01
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_QUERY_ID IRP: 0x8665E430
    QueryId Type: 1 BusQueryHardwareIDs
    hid:USB\Vid_046d&Pid_0829&Rev_28a5
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_QUERY_ID IRP: 0x8665E430
    QueryId Type: 2 BusQueryCompatibleIDs
    cid:USB\Class_0e&SubClass_01&Prot_00
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_QUERY_RESOURCE_REQUIREMENTS IRP: 0x8665E430
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_QUERY_BUS_INFORMATION IRP: 0x8665E430
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_QUERY_RESOURCES IRP: 0x8665E430
    enter Read func
    Read return:0x00000103
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_QUERY_INTERFACE IRP: 0x865990A8
    Query GUID: 80826B49256FD011BEAF08002BE2092F
    Query unknown interface GUID:
    >> IRP_MJ_PNP Drv:usbvideo, Dev:#86836380, IRP:8683DCD8, Proc:System, Thr:2C
      * IRP_MN_QUERY_LEGACY_BUS_INFORMATION
    << IRP_MJ_PNP Drv:usbvideo, Dev:#86836380, IRP:8683DCD8- *Skipped* (Proc:System, Thr:2C)

    >> IRP_MJ_PNP Drv:USBIPEnum, Dev:00000055, IRP:8683DCD8, Proc:System, Thr:2C
      * IRP_MN_QUERY_LEGACY_BUS_INFORMATION
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_QUERY_LEGACY_BUS_INFORMATION IRP: 0x8683DCD8
    << IRP_MJ_PNP Drv:USBIPEnum, Dev:00000055, IRP:8683DCD8- Error: STATUS_NOT_SUPPORTED (Proc:System, Thr:2C)

    >> IRP_MJ_PNP Drv:usbvideo, Dev:#86836380, IRP:8683DCD8, Proc:System, Thr:2C
      * IRP_MN_QUERY_RESOURCE_REQUIREMENTS
    << IRP_MJ_PNP Drv:usbvideo, Dev:#86836380, IRP:8683DCD8- *Skipped* (Proc:System, Thr:2C)

    >> IRP_MJ_PNP Drv:USBIPEnum, Dev:00000055, IRP:8683DCD8, Proc:System, Thr:2C
      * IRP_MN_QUERY_RESOURCE_REQUIREMENTS
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_QUERY_RESOURCE_REQUIREMENTS IRP: 0x8683DCD8
    << IRP_MJ_PNP Drv:USBIPEnum, Dev:00000055, IRP:8683DCD8- STATUS_SUCCESS (Proc:System, Thr:2C)

    >> IRP_MJ_PNP Drv:usbvideo, Dev:#86836380, IRP:8683DCD8, Proc:System, Thr:2C
      * IRP_MN_FILTER_RESOURCE_REQUIREMENTS
    << IRP_MJ_PNP Drv:usbvideo, Dev:#86836380, IRP:8683DCD8- *Skipped* (Proc:System, Thr:2C)

    >> IRP_MJ_PNP Drv:USBIPEnum, Dev:00000055, IRP:8683DCD8, Proc:System, Thr:2C
      * IRP_MN_FILTER_RESOURCE_REQUIREMENTS
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP: 0x8683DCD8
    << IRP_MJ_PNP Drv:USBIPEnum, Dev:00000055, IRP:8683DCD8- Error: STATUS_NOT_SUPPORTED (Proc:System, Thr:2C)

    >> IRP_MJ_PNP Drv:usbvideo, Dev:#86836380, IRP:8683DCD8, Proc:System, Thr:2C
      * IRP_MN_START_DEVICE
          >> IRP_MJ_PNP Drv:USBIPEnum, Dev:00000055, IRP:8683DCD8, Proc:System, Thr:2C
                       Control: E0 (SL_INVOKE_ON_CANCEL | SL_INVOKE_ON_SUCCESS | SL_INVOKE_ON_ERROR)
             CompletionRoutine: BA48AD7A (ks.sys+D7Ah)
                       Context: BACF7A00
            * IRP_MN_START_DEVICE
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_START_DEVICE IRP: 0x8683DCD8
          << IRP_MJ_PNP Drv:USBIPEnum, Dev:00000055, IRP:8683DCD8- STATUS_SUCCESS (Proc:System, Thr:2C)
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_QUERY_INTERFACE IRP: 0x865990A8
    Query GUID: 136AA9B1E03D74459B01C08FEAB318D6
    Enter internal control 0
    internal control:2228227 IOCTL_INTERNAL_USB_SUBMIT_URB
    URB FUNC:11 URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE
    finish read_irp seqnum 1
    enter Read func
    Read return:0x00000103
    enter Write func
    Sucess Finish URB FUNC:11 URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE in len:18 ret:18 #p:0 #p ret:0
    Write return:00000000
    Enter internal control 0
    internal control:2228227 IOCTL_INTERNAL_USB_SUBMIT_URB
    URB FUNC:11 URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE
    finish read_irp seqnum 2
    enter Read func
    Read return:0x00000103
    enter Write func
    not full cfg
    Sucess Finish URB FUNC:11 URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE in len:9 ret:9 #p:0 #p ret:0
    Write return:00000000
    Enter internal control 0
    internal control:2228227 IOCTL_INTERNAL_USB_SUBMIT_URB
    URB FUNC:11 URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE
    finish read_irp seqnum 3
    enter Read func
    Read return:0x00000103
    enter Write func
    save config for using when select config
    Sucess Finish URB FUNC:11 URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE in len:1132 ret:1132 #p:0 #p ret:0
    Write return:00000000
    << IRP_MJ_PNP Drv:usbvideo, Dev:#86836380, IRP:8683DCD8- Error: STATUS_UNSUCCESSFUL (Proc:System, Thr:2C)

    >> IRP_MJ_PNP Drv:usbvideo, Dev:#86836380, IRP:865B6A20, Proc:System, Thr:3C
      * IRP_MN_REMOVE_DEVICE
    << IRP_MJ_PNP Drv:usbvideo, Dev:#86836380, IRP:865B6A20- *Skipped* (Proc:System, Thr:3C)

    >> IRP_MJ_PNP Drv:USBIPEnum, Dev:00000055, IRP:865B6A20, Proc:System, Thr:3C
      * IRP_MN_REMOVE_DEVICE
    Bus_PnP
    BusEnum.SYS:
    PDO IRP_MN_REMOVE_DEVICE IRP: 0x865B6A20
    << IRP_MJ_PNP Drv:USBIPEnum, Dev:00000055, IRP:865B6A20- STATUS_SUCCESS (Proc:System, Thr:3C)
      
        The message "<< IRP_MJ_PNP Drv:usbvideo, Dev:#86836380, IRP:8683DCD8- Error: STATUS_UNSUCCESSFUL (Proc:System, Thr:2C)" shows that usbvideo.sys report fails after
    usbip BusEnum.sys complete get configuration descriptor request.
        
        3. When I filter out usb audio interfaces from get configuration descriptor reply in
    usbip BusEnum.sys, Windows  works perfertly with foregoing webcams.
      
       4. I test these webcams under linux usbip server+linux usbip client by luvcview, all of them work perfectly.
      
       5. I uses tcpdump+usbmon to get urb data from usbip linux server, printf usbip reply
    data in BusEnum.sys function process_write_irp().I find there is no change in get configuration descriptor's reply.
      
       Does usbip windows client support webcams with usb audio interfaces?
       Does anybody know how to solve this problem?

     
  • FrankSun
    FrankSun
    2014-04-22

    have you solved the problem yet? I met the same problem with you.