public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* UVCIOC_CTRL_MAP not work
@ 2023-04-28  7:04 hardycheng(鄭易昕)
  2023-04-28  8:04 ` Ricardo Ribalda
  0 siblings, 1 reply; 11+ messages in thread
From: hardycheng(鄭易昕) @ 2023-04-28  7:04 UTC (permalink / raw)
  To: 'linux-media@vger.kernel.org'

[-- Attachment #1: Type: text/plain, Size: 1829 bytes --]

Hi,

# Environment:

OS = Ubuntu 22.04 LTS (Linux version 5.19.0-41-generic)
Program Language = C Language

# Overview:

We plug in our UVC camera to PC, and try to use `UVCIOC_CTRL_MAP` function on PC to create the v4l2 control mapping, but we got error `UVCIOC_CTRL_MAP: Inappropriate ioctl for device`
Development with `C language` in `Ubuntu 22.04 LTS` 

# Description:

We have a custom UVC camera and we can modify the extension unit(XU) by ourself. (USB descriptions reference attachments `uvc_xu_descriptor.PNG` & `usb_decriptions.txt`)

We make sure that UVCIOC_CTRL_QUERY is work to control our XU item (demo code in attachment `uvc_xu_ioctl_demo.c`)

but UVCIOC_CTRL_MAP function fail with error message `UVCIOC_CTRL_MAP: Inappropriate ioctl for device` (demo code in attachment `uvc_xu_v4l_mapping_demo.c`)

# Problems:

1.	Is UVCIOC_CTRL_MAP function using in the PC host?
2.	Can you found any syntax problem in our demo code `uvc_xu_v4l_mapping_demo.c`?
3.	Is there any sample code about struct `uvc_xu_control_mapping` using?

Looking forward to your reply,
Best Regards,
Hardy#2374

*****CONFIDENTIAL INFORMATION*****

This email is intended only for the use of the person or entity to whom it is
addressed and contains information that may be subject to and/or may be
restricted from disclosure by contract or applicable law. If you are not the 
intended recipient of this email, be advised that any disclosure, copy, 
distribution or use of the contents of this message is strictly prohibited. 
If you are not the intended recipient of this email, please notify the sender 
that you have received this in error by replying to this message. Then, 
please delete it from your system. Our Privacy Policy is available here 
https://www.msi.com/page/privacy-policy. Thank you.

[-- Attachment #2: uvc_xu_ioctl_demo.c --]
[-- Type: text/plain, Size: 2464 bytes --]

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <linux/usb/video.h>
#include <linux/uvcvideo.h>
#include <linux/videodev2.h>

#define XU_QUERY_SIZE 0x3C

char originStr[XU_QUERY_SIZE];
char modifyStr[XU_QUERY_SIZE] = "Test123";

bool getUVC_XU_DemoString(char* buf, int size);
bool setUVC_XU_DemoString(char* buf, int size);

int main(int argc, char **argv)
{
    if(getUVC_XU_DemoString(originStr, XU_QUERY_SIZE)){
        printf("XU GET: %s\n", originStr);
    }
    if(setUVC_XU_DemoString(modifyStr, XU_QUERY_SIZE)){
        printf("XU SET: %s\n", modifyStr);
    }
    if(getUVC_XU_DemoString(modifyStr, XU_QUERY_SIZE)){
        printf("XU GET: %s\n", modifyStr);
    }
    if(setUVC_XU_DemoString(originStr, XU_QUERY_SIZE)){
        printf("XU SET: %s\n", originStr);
    }
    return 0;
}

bool getUVC_XU_DemoString(char* buf, int size){
    int fd = open("/dev/video0", O_RDWR);
    bool result = true;
    if(fd < 0) {
        perror("File Open Fail");
        result = false;
        goto ret;
    }
    if(size < XU_QUERY_SIZE){
        perror("Invalid buffer size");
        result = false;
        goto ret;
    }
    struct uvc_xu_control_query query = {
        .query = UVC_GET_CUR,
        .unit = 0x4,
        .selector = 0x01,
        .size = XU_QUERY_SIZE,
        .data = (unsigned char*)malloc(XU_QUERY_SIZE),
    };
    if (ioctl(fd, UVCIOC_CTRL_QUERY, &query) < 0) {
        perror("UVCIOC_CTRL_QUERY");
        result = false;
        goto ret;
    }
    memcpy(buf, query.data, query.size);
    free(query.data);
    ret:
    close(fd);
    return result;
}

bool setUVC_XU_DemoString(char* buf, int size){
int fd = open("/dev/video0", O_RDWR);
    bool result = true;
    if(fd < 0) {
        perror("File Open Fail");
        result = false;
        goto ret;
    }
    if(size > XU_QUERY_SIZE){
        perror("Invalid buffer size");
        result = false;
        goto ret;
    }
    struct uvc_xu_control_query query = {
        .query = UVC_SET_CUR,
        .unit = 0x4,
        .selector = 0x01,
        .size = XU_QUERY_SIZE,
        .data = (unsigned char*)malloc(XU_QUERY_SIZE),
    };
    memcpy(query.data, buf, size);
    if (ioctl(fd, UVCIOC_CTRL_QUERY, &query) < 0) {
        perror("UVCIOC_CTRL_QUERY");
        result = false;
        goto ret;
    }
    free(query.data);
    ret:
    close(fd);
    return result;
}

[-- Attachment #3: uvc_xu_v4l_mapping_demo.c --]
[-- Type: text/plain, Size: 1051 bytes --]

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <linux/usb/video.h>
#include <linux/uvcvideo.h>
#include <linux/videodev2.h>

int main(){
    int result;
    int fd = open("/dev/video0", O_RDWR);
    if(fd < 0) {
        perror("File Open Fail");
        goto close;
    }

    struct uvc_xu_control_mapping mapping = {
        .id = 0x01,
        .name = "My Extension Unit",
        .entity = {0x10, 0xbc, 0x46, 0xba, 0x28, 0x5a, 0x4d, 0x7b, 0x97, 0x0e, 0xfd, 0x91, 0x46, 0xa5, 0x2f, 0x2d},
        .selector = 0x01,
        .size = 0x3C,
        .offset = 0x00,
        .v4l2_type = V4L2_CTRL_TYPE_STRING,
        .data_type = UVC_CTRL_DATA_TYPE_RAW,
        .menu_info = NULL,
        .menu_count = 0,
        .reserved = {0},
    };

    result = ioctl(fd, _IOWR('u', 0x20, struct uvc_xu_control_mapping), &mapping);
    if (result != 0) {
        perror("UVCIOC_CTRL_MAP");
        goto close;
    }

    close:
    close(fd);
    return 0;
}

[-- Attachment #4: usb_decriptions.txt --]
[-- Type: text/plain, Size: 26131 bytes --]

Bus 001 Device 002: ID 2245:1230 Aspeed Technology, Inc. Cupola360 Camera

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               2.10

  bDeviceClass          239 Miscellaneous Device

  bDeviceSubClass         2 

  bDeviceProtocol         1 Interface Association

  bMaxPacketSize0        64

  idVendor           0x2245 Aspeed Technology, Inc.

  idProduct          0x1230 

  bcdDevice            1.00

  iManufacturer           1 ASPEED Technology Inc.

  iProduct                2 Cupola360 Camera

  iSerial                 3 123456

  bNumConfigurations      1

  Configuration Descriptor:

    bLength                 9

    bDescriptorType         2

    wTotalLength       0x02b8

    bNumInterfaces          8

    bConfigurationValue     1

    iConfiguration          0 

    bmAttributes         0x80

      (Bus Powered)

    MaxPower              500mA

    Interface Association:

      bLength                 8

      bDescriptorType        11

      bFirstInterface         0

      bInterfaceCount         2

      bFunctionClass         14 Video

      bFunctionSubClass       3 Video Interface Collection

      bFunctionProtocol       0 

      iFunction               0 

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        0

      bAlternateSetting       0

      bNumEndpoints           1

      bInterfaceClass        14 Video

      bInterfaceSubClass      1 Video Control

      bInterfaceProtocol      0 

      iInterface              0 

      VideoControl Interface Descriptor:

        bLength                13

        bDescriptorType        36

        bDescriptorSubtype      1 (HEADER)

        bcdUVC               1.00

        wTotalLength       0x006d

        dwClockFrequency        1.000000MHz

        bInCollection           1

        baInterfaceNr( 0)       1

      VideoControl Interface Descriptor:

        bLength                18

        bDescriptorType        36

        bDescriptorSubtype      2 (INPUT_TERMINAL)

        bTerminalID             1

        wTerminalType      0x0201 Camera Sensor

        bAssocTerminal          0

        iTerminal               0 

        wObjectiveFocalLengthMin      0

        wObjectiveFocalLengthMax      0

        wOcularFocalLength            0

        bControlSize                  3

        bmControls           0x00000a0e

          Auto-Exposure Mode

          Auto-Exposure Priority

          Exposure Time (Absolute)

          Zoom (Absolute)

          PanTilt (Absolute)

      VideoControl Interface Descriptor:

        bLength                11

        bDescriptorType        36

        bDescriptorSubtype      5 (PROCESSING_UNIT)

      Warning: Descriptor too short

        bUnitID                 2

        bSourceID               1

        wMaxMultiplier      16384

        bControlSize            2

        bmControls     0x0000157b

          Brightness

          Contrast

          Saturation

          Sharpness

          Gamma

          White Balance Temperature

          Backlight Compensation

          Power Line Frequency

          White Balance Temperature, Auto

        iProcessing             0 

        bmVideoStandards     0x1d

          None

          PAL - 625/50

          SECAM - 625/50

          NTSC - 625/50

      VideoControl Interface Descriptor:

        bLength                29

        bDescriptorType        36

        bDescriptorSubtype      6 (EXTENSION_UNIT)

        bUnitID                 3

        guidExtensionCode         {c11e4cc3-68f9-4b92-aca4-2d73c4d49348}

        bNumControls           32

        bNrInPins               1

        baSourceID( 0)          2

        bControlSize            4

        bmControls( 0)       0x01

        bmControls( 1)       0x00

        bmControls( 2)       0x00

        bmControls( 3)       0x00

        iExtension              0 

      VideoControl Interface Descriptor:

        bLength                29

        bDescriptorType        36

        bDescriptorSubtype      6 (EXTENSION_UNIT)

        bUnitID                 4

        guidExtensionCode         {10bc46ba-285a-4d7b-970e-fd9146a52f2d}

        bNumControls           32

        bNrInPins               1

        baSourceID( 0)          3

        bControlSize            4

        bmControls( 0)       0x01

        bmControls( 1)       0x00

        bmControls( 2)       0x00

        bmControls( 3)       0x00

        iExtension              0 

      VideoControl Interface Descriptor:

        bLength                 9

        bDescriptorType        36

        bDescriptorSubtype      3 (OUTPUT_TERMINAL)

        bTerminalID             6

        wTerminalType      0x0101 USB Streaming

        bAssocTerminal          0

        bSourceID               4

        iTerminal               0 

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x85  EP 5 IN

        bmAttributes            3

          Transfer Type            Interrupt

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0040  1x 64 bytes

        bInterval               8

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       0

      bNumEndpoints           1

      bInterfaceClass        14 Video

      bInterfaceSubClass      2 Video Streaming

      bInterfaceProtocol      0 

      iInterface              0 

      VideoStreaming Interface Descriptor:

        bLength                            15

        bDescriptorType                    36

        bDescriptorSubtype                  1 (INPUT_HEADER)

        bNumFormats                         2

        wTotalLength                   0x0107

        bEndpointAddress                 0x81  EP 1 IN

        bmInfo                              0

        bTerminalLink                       6

        bStillCaptureMethod                 0

        bTriggerSupport                     0

        bTriggerUsage                       0

        bControlSize                        1

        bmaControls( 0)                     0

        bmaControls( 1)                     0

      VideoStreaming Interface Descriptor:

        bLength                            27

        bDescriptorType                    36

        bDescriptorSubtype                  4 (FORMAT_UNCOMPRESSED)

        bFormatIndex                        1

        bNumFrameDescriptors                1

        guidFormat                            {32595559-0000-0010-8000-00aa00389b71}

        bBitsPerPixel                      16

        bDefaultFrameIndex                  1

        bAspectRatioX                       0

        bAspectRatioY                       0

        bmInterlaceFlags                 0x00

          Interlaced stream or variable: No

          Fields per frame: 2 fields

          Field 1 first: No

          Field pattern: Field 1 only

        bCopyProtect                        0

      VideoStreaming Interface Descriptor:

        bLength                            34

        bDescriptorType                    36

        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)

        bFrameIndex                         1

        bmCapabilities                   0x00

          Still image unsupported

        wWidth                            640

        wHeight                           360

        dwMinBitRate                 55296000

        dwMaxBitRate                110592000

        dwMaxVideoFrameBufferSize      460800

        dwDefaultFrameInterval         333333

        bFrameIntervalType                  2

        dwFrameInterval( 0)            333333

        dwFrameInterval( 1)            666666

      VideoStreaming Interface Descriptor:

        bLength                            11

        bDescriptorType                    36

        bDescriptorSubtype                  6 (FORMAT_MJPEG)

        bFormatIndex                        2

        bNumFrameDescriptors                5

        bFlags                              0

          Fixed-size samples: No

        bDefaultFrameIndex                  1

        bAspectRatioX                       0

        bAspectRatioY                       0

        bmInterlaceFlags                 0x00

          Interlaced stream or variable: No

          Fields per frame: 1 fields

          Field 1 first: No

          Field pattern: Field 1 only

        bCopyProtect                        0

      VideoStreaming Interface Descriptor:

        bLength                            34

        bDescriptorType                    36

        bDescriptorSubtype                  7 (FRAME_MJPEG)

        bFrameIndex                         1

        bmCapabilities                   0x00

          Still image unsupported

        wWidth                           1920

        wHeight                          1080

        dwMinBitRate                248832000

        dwMaxBitRate                497664000

        dwMaxVideoFrameBufferSize     2073600

        dwDefaultFrameInterval         333333

        bFrameIntervalType                  2

        dwFrameInterval( 0)            333333

        dwFrameInterval( 1)            666666

      VideoStreaming Interface Descriptor:

        bLength                            34

        bDescriptorType                    36

        bDescriptorSubtype                  7 (FRAME_MJPEG)

        bFrameIndex                         2

        bmCapabilities                   0x00

          Still image unsupported

        wWidth                           1280

        wHeight                           720

        dwMinBitRate                110592000

        dwMaxBitRate                221184000

        dwMaxVideoFrameBufferSize      921600

        dwDefaultFrameInterval         333333

        bFrameIntervalType                  2

        dwFrameInterval( 0)            333333

        dwFrameInterval( 1)            666666

      VideoStreaming Interface Descriptor:

        bLength                            34

        bDescriptorType                    36

        bDescriptorSubtype                  7 (FRAME_MJPEG)

        bFrameIndex                         3

        bmCapabilities                   0x00

          Still image unsupported

        wWidth                           3840

        wHeight                          1712

        dwMinBitRate                788889600

        dwMaxBitRate                1577779200

        dwMaxVideoFrameBufferSize     6574080

        dwDefaultFrameInterval         333333

        bFrameIntervalType                  2

        dwFrameInterval( 0)            333333

        dwFrameInterval( 1)            666666

      VideoStreaming Interface Descriptor:

        bLength                            34

        bDescriptorType                    36

        bDescriptorSubtype                  7 (FRAME_MJPEG)

        bFrameIndex                         4

        bmCapabilities                   0x00

          Still image unsupported

        wWidth                           2560

        wHeight                          1136

        dwMinBitRate                348979200

        dwMaxBitRate                697958400

        dwMaxVideoFrameBufferSize     2908160

        dwDefaultFrameInterval         333333

        bFrameIntervalType                  2

        dwFrameInterval( 0)            333333

        dwFrameInterval( 1)            666666

      VideoStreaming Interface Descriptor:

        bLength                            34

        bDescriptorType                    36

        bDescriptorSubtype                  7 (FRAME_MJPEG)

        bFrameIndex                         5

        bmCapabilities                   0x00

          Still image unsupported

        wWidth                           2560

        wHeight                          1440

        dwMinBitRate                442368000

        dwMaxBitRate                884736000

        dwMaxVideoFrameBufferSize     3686400

        dwDefaultFrameInterval         333333

        bFrameIntervalType                  2

        dwFrameInterval( 0)            333333

        dwFrameInterval( 1)            666666

      VideoStreaming Interface Descriptor:

        bLength                             6

        bDescriptorType                    36

        bDescriptorSubtype                 13 (COLORFORMAT)

        bColorPrimaries                     1 (BT.709,sRGB)

        bTransferCharacteristics            1 (BT.709)

        bMatrixCoefficients                 4 (SMPTE 170M (BT.601))

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            2

          Transfer Type            Bulk

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0200  1x 512 bytes

        bInterval               0

    Interface Association:

      bLength                 8

      bDescriptorType        11

      bFirstInterface         2

      bInterfaceCount         3

      bFunctionClass          1 Audio

      bFunctionSubClass       0 

      bFunctionProtocol       0 

      iFunction               0 

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        2

      bAlternateSetting       0

      bNumEndpoints           0

      bInterfaceClass         1 Audio

      bInterfaceSubClass      1 Control Device

      bInterfaceProtocol      0 

      iInterface              9 Cupola360 Audio

      AudioControl Interface Descriptor:

        bLength                10

        bDescriptorType        36

        bDescriptorSubtype      1 (HEADER)

        bcdADC               1.00

        wTotalLength       0x003e

        bInCollection           2

        baInterfaceNr(0)        3

        baInterfaceNr(1)        4

      AudioControl Interface Descriptor:

        bLength                12

        bDescriptorType        36

        bDescriptorSubtype      2 (INPUT_TERMINAL)

        bTerminalID             1

        wTerminalType      0x0101 USB Streaming

        bAssocTerminal          0

        bNrChannels             2

        wChannelConfig     0x0000

        iChannelNames           0 

        iTerminal               0 

      AudioControl Interface Descriptor:

        bLength                10

        bDescriptorType        36

        bDescriptorSubtype      6 (FEATURE_UNIT)

        bUnitID                 2

        bSourceID               1

        bControlSize            1

        bmaControls(0)       0x03

          Mute Control

          Volume Control

        bmaControls(1)       0x00

        bmaControls(2)       0x00

        iFeature                0 

      AudioControl Interface Descriptor:

        bLength                 9

        bDescriptorType        36

        bDescriptorSubtype      3 (OUTPUT_TERMINAL)

        bTerminalID             3

        wTerminalType      0x0301 Speaker

        bAssocTerminal          0

        bSourceID               2

        iTerminal               0 

      AudioControl Interface Descriptor:

        bLength                12

        bDescriptorType        36

        bDescriptorSubtype      2 (INPUT_TERMINAL)

        bTerminalID            17

        wTerminalType      0x0201 Microphone

        bAssocTerminal          0

        bNrChannels             1

        wChannelConfig     0x0000

        iChannelNames           0 

        iTerminal               0 

      AudioControl Interface Descriptor:

        bLength                 9

        bDescriptorType        36

        bDescriptorSubtype      3 (OUTPUT_TERMINAL)

        bTerminalID            19

        wTerminalType      0x0101 USB Streaming

        bAssocTerminal          0

        bSourceID              17

        iTerminal               0 

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        3

      bAlternateSetting       0

      bNumEndpoints           0

      bInterfaceClass         1 Audio

      bInterfaceSubClass      2 Streaming

      bInterfaceProtocol      0 

      iInterface              4 Speaker

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        3

      bAlternateSetting       1

      bNumEndpoints           1

      bInterfaceClass         1 Audio

      bInterfaceSubClass      2 Streaming

      bInterfaceProtocol      0 

      iInterface              4 Speaker

      AudioStreaming Interface Descriptor:

        bLength                 7

        bDescriptorType        36

        bDescriptorSubtype      1 (AS_GENERAL)

        bTerminalLink           1

        bDelay                  1 frames

        wFormatTag         0x0001 PCM

      AudioStreaming Interface Descriptor:

        bLength                11

        bDescriptorType        36

        bDescriptorSubtype      2 (FORMAT_TYPE)

        bFormatType             1 (FORMAT_TYPE_I)

        bNrChannels             2

        bSubframeSize           2

        bBitResolution         16

        bSamFreqType            1 Discrete

        tSamFreq[ 0]        48000

      Endpoint Descriptor:

        bLength                 9

        bDescriptorType         5

        bEndpointAddress     0x01  EP 1 OUT

        bmAttributes            9

          Transfer Type            Isochronous

          Synch Type               Adaptive

          Usage Type               Data

        wMaxPacketSize     0x00c0  1x 192 bytes

        bInterval               4

        bRefresh                0

        bSynchAddress           0

        AudioStreaming Endpoint Descriptor:

          bLength                 7

          bDescriptorType        37

          bDescriptorSubtype      1 (EP_GENERAL)

          bmAttributes         0x01

            Sampling Frequency

          bLockDelayUnits         1 Milliseconds

          wLockDelay         0x0001

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        4

      bAlternateSetting       0

      bNumEndpoints           0

      bInterfaceClass         1 Audio

      bInterfaceSubClass      2 Streaming

      bInterfaceProtocol      0 

      iInterface              5 Microphone

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        4

      bAlternateSetting       1

      bNumEndpoints           1

      bInterfaceClass         1 Audio

      bInterfaceSubClass      2 Streaming

      bInterfaceProtocol      0 

      iInterface              5 Microphone

      AudioStreaming Interface Descriptor:

        bLength                 7

        bDescriptorType        36

        bDescriptorSubtype      1 (AS_GENERAL)

        bTerminalLink          19

        bDelay                  1 frames

        wFormatTag         0x0001 PCM

      AudioStreaming Interface Descriptor:

        bLength                11

        bDescriptorType        36

        bDescriptorSubtype      2 (FORMAT_TYPE)

        bFormatType             1 (FORMAT_TYPE_I)

        bNrChannels             1

        bSubframeSize           2

        bBitResolution         16

        bSamFreqType            1 Discrete

        tSamFreq[ 0]        16000

      Endpoint Descriptor:

        bLength                 9

        bDescriptorType         5

        bEndpointAddress     0x86  EP 6 IN

        bmAttributes            5

          Transfer Type            Isochronous

          Synch Type               Asynchronous

          Usage Type               Data

        wMaxPacketSize     0x0024  1x 36 bytes

        bInterval               4

        bRefresh                0

        bSynchAddress           0

        AudioStreaming Endpoint Descriptor:

          bLength                 7

          bDescriptorType        37

          bDescriptorSubtype      1 (EP_GENERAL)

          bmAttributes         0x01

            Sampling Frequency

          bLockDelayUnits         0 Undefined

          wLockDelay         0x0001

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        5

      bAlternateSetting       0

      bNumEndpoints           2

      bInterfaceClass       255 Vendor Specific Class

      bInterfaceSubClass      0 

      bInterfaceProtocol      0 

      iInterface              8 AstStream

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x02  EP 2 OUT

        bmAttributes            2

          Transfer Type            Bulk

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0200  1x 512 bytes

        bInterval               0

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x82  EP 2 IN

        bmAttributes            2

          Transfer Type            Bulk

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0200  1x 512 bytes

        bInterval               0

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        6

      bAlternateSetting       0

      bNumEndpoints           2

      bInterfaceClass         3 Human Interface Device

      bInterfaceSubClass      0 

      bInterfaceProtocol      0 

      iInterface              7 HidExtension

        HID Device Descriptor:

          bLength                 9

          bDescriptorType        33

          bcdHID               1.11

          bCountryCode            0 Not supported

          bNumDescriptors         1

          bDescriptorType        34 Report

          wDescriptorLength      38

         Report Descriptors: 

           ** UNAVAILABLE **

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x03  EP 3 OUT

        bmAttributes            3

          Transfer Type            Interrupt

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0040  1x 64 bytes

        bInterval               1

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x89  EP 9 IN

        bmAttributes            3

          Transfer Type            Interrupt

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0040  1x 64 bytes

        bInterval               1

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        7

      bAlternateSetting       0

      bNumEndpoints           2

      bInterfaceClass         3 Human Interface Device

      bInterfaceSubClass      0 

      bInterfaceProtocol      0 

      iInterface             11 HidCustom

        HID Device Descriptor:

          bLength                 9

          bDescriptorType        33

          bcdHID               1.11

          bCountryCode            0 Not supported

          bNumDescriptors         1

          bDescriptorType        34 Report

          wDescriptorLength      38

         Report Descriptors: 

           ** UNAVAILABLE **

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x04  EP 4 OUT

        bmAttributes            3

          Transfer Type            Interrupt

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0040  1x 64 bytes

        bInterval               4

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x84  EP 4 IN

        bmAttributes            3

          Transfer Type            Interrupt

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0040  1x 64 bytes

        bInterval               4

Binary Object Store Descriptor:

  bLength                 5

  bDescriptorType        15

  wTotalLength       0x0032

  bNumDeviceCaps          3

  Platform Device Capability:

    bLength                28

    bDescriptorType        16

    bDevCapabilityType      5

    bReserved               0

    PlatformCapabilityUUID    {d8dd60df-4589-4cc7-9cd2-659d9e648a9f}

    CapabilityData[0]    0x00

    CapabilityData[1]    0x00

    CapabilityData[2]    0x03

    CapabilityData[3]    0x06

    CapabilityData[4]    0xb2

    CapabilityData[5]    0x00

    CapabilityData[6]    0x01

    CapabilityData[7]    0x00

  USB 2.0 Extension Device Capability:

    bLength                 7

    bDescriptorType        16

    bDevCapabilityType      2

    bmAttributes   0x0000050e

      BESL Link Power Management (LPM) Supported

    BESL value     1280 us 

  SuperSpeed USB Device Capability:

    bLength                10

    bDescriptorType        16

    bDevCapabilityType      3

    bmAttributes         0x00

    wSpeedsSupported   0x000c

      Device can operate at High Speed (480Mbps)

      Device can operate at SuperSpeed (5Gbps)

    bFunctionalitySupport   2

      Lowest fully-functional device speed is High Speed (480Mbps)

    bU1DevExitLat          10 micro seconds

    bU2DevExitLat         511 micro seconds

Device Status:     0x0000

  (Bus Powered)

[-- Attachment #5: uvc_xu_descriptor.PNG --]
[-- Type: image/png, Size: 73713 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: UVCIOC_CTRL_MAP not work
  2023-04-28  7:04 UVCIOC_CTRL_MAP not work hardycheng(鄭易昕)
@ 2023-04-28  8:04 ` Ricardo Ribalda
  2023-04-28  8:20   ` hardycheng(鄭易昕)
  0 siblings, 1 reply; 11+ messages in thread
From: Ricardo Ribalda @ 2023-04-28  8:04 UTC (permalink / raw)
  To: hardycheng(鄭易昕); +Cc: linux-media@vger.kernel.org

Hi Hardy

Why are you using:

result = ioctl(fd, _IOWR('u', 0x20, struct uvc_xu_control_mapping), &mapping);

instead of

result = ioctl(fd, UVCIOC_CTRL_MAP, &mapping);

Can you return the output of:

strace -f  uvc_xu_v4l_mapping_demo

Thanks!

On Fri, 28 Apr 2023 at 09:15, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
>
> Hi,
>
> # Environment:
>
> OS = Ubuntu 22.04 LTS (Linux version 5.19.0-41-generic)
> Program Language = C Language
>
> # Overview:
>
> We plug in our UVC camera to PC, and try to use `UVCIOC_CTRL_MAP` function on PC to create the v4l2 control mapping, but we got error `UVCIOC_CTRL_MAP: Inappropriate ioctl for device`
> Development with `C language` in `Ubuntu 22.04 LTS`
>
> # Description:
>
> We have a custom UVC camera and we can modify the extension unit(XU) by ourself. (USB descriptions reference attachments `uvc_xu_descriptor.PNG` & `usb_decriptions.txt`)
>
> We make sure that UVCIOC_CTRL_QUERY is work to control our XU item (demo code in attachment `uvc_xu_ioctl_demo.c`)
>
> but UVCIOC_CTRL_MAP function fail with error message `UVCIOC_CTRL_MAP: Inappropriate ioctl for device` (demo code in attachment `uvc_xu_v4l_mapping_demo.c`)
>
> # Problems:
>
> 1.      Is UVCIOC_CTRL_MAP function using in the PC host?
> 2.      Can you found any syntax problem in our demo code `uvc_xu_v4l_mapping_demo.c`?
> 3.      Is there any sample code about struct `uvc_xu_control_mapping` using?
>
> Looking forward to your reply,
> Best Regards,
> Hardy#2374
>
> *****CONFIDENTIAL INFORMATION*****
>
> This email is intended only for the use of the person or entity to whom it is
> addressed and contains information that may be subject to and/or may be
> restricted from disclosure by contract or applicable law. If you are not the
> intended recipient of this email, be advised that any disclosure, copy,
> distribution or use of the contents of this message is strictly prohibited.
> If you are not the intended recipient of this email, please notify the sender
> that you have received this in error by replying to this message. Then,
> please delete it from your system. Our Privacy Policy is available here
> https://www.msi.com/page/privacy-policy. Thank you.



-- 
Ricardo Ribalda

^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: UVCIOC_CTRL_MAP not work
  2023-04-28  8:04 ` Ricardo Ribalda
@ 2023-04-28  8:20   ` hardycheng(鄭易昕)
  2023-04-28  8:25     ` Ricardo Ribalda
  0 siblings, 1 reply; 11+ messages in thread
From: hardycheng(鄭易昕) @ 2023-04-28  8:20 UTC (permalink / raw)
  To: 'Ricardo Ribalda'; +Cc: linux-media@vger.kernel.org

[-- Attachment #1: Type: text/plain, Size: 3508 bytes --]

Hi Ricardo,

Thanks for reply,

I replace `_IOWR('u', 0x20, struct uvc_xu_control_mapping)` to ` UVCIOC_CTRL_MAP` and got the same error,
Please check attachment for command output `strace -f ./uvc_xu_v4l_mapping_demo`

Best Regards,
Hardy

-----Original Message-----
From: Ricardo Ribalda <ribalda@chromium.org> 
Sent: Friday, April 28, 2023 4:04 PM
To: hardycheng(鄭易昕) <hardycheng@msi.com>
Cc: linux-media@vger.kernel.org
Subject: Re: UVCIOC_CTRL_MAP not work

Hi Hardy

Why are you using:

result = ioctl(fd, _IOWR('u', 0x20, struct uvc_xu_control_mapping), &mapping);

instead of

result = ioctl(fd, UVCIOC_CTRL_MAP, &mapping);

Can you return the output of:

strace -f  uvc_xu_v4l_mapping_demo

Thanks!

On Fri, 28 Apr 2023 at 09:15, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
>
> Hi,
>
> # Environment:
>
> OS = Ubuntu 22.04 LTS (Linux version 5.19.0-41-generic) Program 
> Language = C Language
>
> # Overview:
>
> We plug in our UVC camera to PC, and try to use `UVCIOC_CTRL_MAP` 
> function on PC to create the v4l2 control mapping, but we got error 
> `UVCIOC_CTRL_MAP: Inappropriate ioctl for device` Development with `C 
> language` in `Ubuntu 22.04 LTS`
>
> # Description:
>
> We have a custom UVC camera and we can modify the extension unit(XU) 
> by ourself. (USB descriptions reference attachments 
> `uvc_xu_descriptor.PNG` & `usb_decriptions.txt`)
>
> We make sure that UVCIOC_CTRL_QUERY is work to control our XU item 
> (demo code in attachment `uvc_xu_ioctl_demo.c`)
>
> but UVCIOC_CTRL_MAP function fail with error message `UVCIOC_CTRL_MAP: 
> Inappropriate ioctl for device` (demo code in attachment 
> `uvc_xu_v4l_mapping_demo.c`)
>
> # Problems:
>
> 1.      Is UVCIOC_CTRL_MAP function using in the PC host?
> 2.      Can you found any syntax problem in our demo code `uvc_xu_v4l_mapping_demo.c`?
> 3.      Is there any sample code about struct `uvc_xu_control_mapping` using?
>
> Looking forward to your reply,
> Best Regards,
> Hardy#2374
>
> *****CONFIDENTIAL INFORMATION*****
>
> This email is intended only for the use of the person or entity to 
> whom it is addressed and contains information that may be subject to 
> and/or may be restricted from disclosure by contract or applicable 
> law. If you are not the intended recipient of this email, be advised 
> that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> If you are not the intended recipient of this email, please notify the 
> sender that you have received this in error by replying to this 
> message. Then, please delete it from your system. Our Privacy Policy 
> is available here https://www.msi.com/page/privacy-policy. Thank you.



--
Ricardo Ribalda


*****CONFIDENTIAL INFORMATION*****

This email is intended only for the use of the person or entity to whom it is
addressed and contains information that may be subject to and/or may be
restricted from disclosure by contract or applicable law. If you are not the 
intended recipient of this email, be advised that any disclosure, copy, 
distribution or use of the contents of this message is strictly prohibited. 
If you are not the intended recipient of this email, please notify the sender 
that you have received this in error by replying to this message. Then, 
please delete it from your system. Our Privacy Policy is available here 
https://www.msi.com/page/privacy-policy. Thank you.

[-- Attachment #2: strace_20230428.log --]
[-- Type: application/octet-stream, Size: 3290 bytes --]

root@ubuntu22:/ms5548_test# strace -f ./uvc_xu_v4l_mapping_demo
execve("./uvc_xu_v4l_mapping_demo", ["./uvc_xu_v4l_mapping_demo"], 0x7fff9c969de8 /* 76 vars */) = 0
brk(NULL)                               = 0x55baa8504000
arch_prctl(0x3001 /* ARCH_??? */, 0x7ffc59064f70) = -1 EINVAL (Invalid argument)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb94c41f000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=65987, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 65987, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb94c40e000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\237\2\0\0\0\0\0"..., 832) = 832
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
pread64(3, "\4\0\0\0 \0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0"..., 48, 848) = 48
pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0i8\235HZ\227\223\333\350s\360\352,\223\340."..., 68, 896) = 68
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=2216304, ...}, AT_EMPTY_PATH) = 0
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
mmap(NULL, 2260560, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb94c000000
mmap(0x7fb94c028000, 1658880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7fb94c028000
mmap(0x7fb94c1bd000, 360448, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bd000) = 0x7fb94c1bd000
mmap(0x7fb94c215000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x214000) = 0x7fb94c215000
mmap(0x7fb94c21b000, 52816, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb94c21b000
close(3)                                = 0
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb94c40b000
arch_prctl(ARCH_SET_FS, 0x7fb94c40b740) = 0
set_tid_address(0x7fb94c40ba10)         = 6285
set_robust_list(0x7fb94c40ba20, 24)     = 0
rseq(0x7fb94c40c0e0, 0x20, 0, 0x53053053) = 0
mprotect(0x7fb94c215000, 16384, PROT_READ) = 0
mprotect(0x55baa6c47000, 4096, PROT_READ) = 0
mprotect(0x7fb94c459000, 8192, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0x7fb94c40e000, 65987)           = 0
openat(AT_FDCWD, "/dev/video0", O_RDWR) = 3
ioctl(3, UVCIOC_CTRL_MAP, 0x7ffc59064fb0) = -1 ENOTTY (Inappropriate ioctl for device)
dup(2)                                  = 4
fcntl(4, F_GETFL)                       = 0x2 (flags O_RDWR)
getrandom("\x87\xd1\x7a\x35\xc1\x4e\xa8\x44", 8, GRND_NONBLOCK) = 8
brk(NULL)                               = 0x55baa8504000
brk(0x55baa8525000)                     = 0x55baa8525000
newfstatat(4, "", {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0), ...}, AT_EMPTY_PATH) = 0
write(4, "UVCIOC_CTRL_MAP: Inappropriate i"..., 48UVCIOC_CTRL_MAP: Inappropriate ioctl for device
) = 48
close(4)                                = 0
close(3)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: UVCIOC_CTRL_MAP not work
  2023-04-28  8:20   ` hardycheng(鄭易昕)
@ 2023-04-28  8:25     ` Ricardo Ribalda
  2023-04-28  8:38       ` hardycheng(鄭易昕)
  0 siblings, 1 reply; 11+ messages in thread
From: Ricardo Ribalda @ 2023-04-28  8:25 UTC (permalink / raw)
  To: hardycheng(鄭易昕); +Cc: linux-media@vger.kernel.org

Hi Hardy

Seems like you can only add mappings for  V4L2_CTRL_TYPE_INTEGER,
V4L2_CTRL_TYPE_BOOLEAN:V4L2_CTRL_TYPE_BUTTON  and V4L2_CTRL_TYPE_MENU.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/media/usb/uvc/uvc_v4l2.c#n130

You are trying to add a map for a V4L2_CTRL_TYPE_STRING

Regards

On Fri, 28 Apr 2023 at 10:20, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
>
> Hi Ricardo,
>
> Thanks for reply,
>
> I replace `_IOWR('u', 0x20, struct uvc_xu_control_mapping)` to ` UVCIOC_CTRL_MAP` and got the same error,
> Please check attachment for command output `strace -f ./uvc_xu_v4l_mapping_demo`
>
> Best Regards,
> Hardy
>
> -----Original Message-----
> From: Ricardo Ribalda <ribalda@chromium.org>
> Sent: Friday, April 28, 2023 4:04 PM
> To: hardycheng(鄭易昕) <hardycheng@msi.com>
> Cc: linux-media@vger.kernel.org
> Subject: Re: UVCIOC_CTRL_MAP not work
>
> Hi Hardy
>
> Why are you using:
>
> result = ioctl(fd, _IOWR('u', 0x20, struct uvc_xu_control_mapping), &mapping);
>
> instead of
>
> result = ioctl(fd, UVCIOC_CTRL_MAP, &mapping);
>
> Can you return the output of:
>
> strace -f  uvc_xu_v4l_mapping_demo
>
> Thanks!
>
> On Fri, 28 Apr 2023 at 09:15, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> >
> > Hi,
> >
> > # Environment:
> >
> > OS = Ubuntu 22.04 LTS (Linux version 5.19.0-41-generic) Program
> > Language = C Language
> >
> > # Overview:
> >
> > We plug in our UVC camera to PC, and try to use `UVCIOC_CTRL_MAP`
> > function on PC to create the v4l2 control mapping, but we got error
> > `UVCIOC_CTRL_MAP: Inappropriate ioctl for device` Development with `C
> > language` in `Ubuntu 22.04 LTS`
> >
> > # Description:
> >
> > We have a custom UVC camera and we can modify the extension unit(XU)
> > by ourself. (USB descriptions reference attachments
> > `uvc_xu_descriptor.PNG` & `usb_decriptions.txt`)
> >
> > We make sure that UVCIOC_CTRL_QUERY is work to control our XU item
> > (demo code in attachment `uvc_xu_ioctl_demo.c`)
> >
> > but UVCIOC_CTRL_MAP function fail with error message `UVCIOC_CTRL_MAP:
> > Inappropriate ioctl for device` (demo code in attachment
> > `uvc_xu_v4l_mapping_demo.c`)
> >
> > # Problems:
> >
> > 1.      Is UVCIOC_CTRL_MAP function using in the PC host?
> > 2.      Can you found any syntax problem in our demo code `uvc_xu_v4l_mapping_demo.c`?
> > 3.      Is there any sample code about struct `uvc_xu_control_mapping` using?
> >
> > Looking forward to your reply,
> > Best Regards,
> > Hardy#2374
> >
> > *****CONFIDENTIAL INFORMATION*****
> >
> > This email is intended only for the use of the person or entity to
> > whom it is addressed and contains information that may be subject to
> > and/or may be restricted from disclosure by contract or applicable
> > law. If you are not the intended recipient of this email, be advised
> > that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > If you are not the intended recipient of this email, please notify the
> > sender that you have received this in error by replying to this
> > message. Then, please delete it from your system. Our Privacy Policy
> > is available here https://www.msi.com/page/privacy-policy. Thank you.
>
>
>
> --
> Ricardo Ribalda
>
>
> *****CONFIDENTIAL INFORMATION*****
>
> This email is intended only for the use of the person or entity to whom it is
> addressed and contains information that may be subject to and/or may be
> restricted from disclosure by contract or applicable law. If you are not the
> intended recipient of this email, be advised that any disclosure, copy,
> distribution or use of the contents of this message is strictly prohibited.
> If you are not the intended recipient of this email, please notify the sender
> that you have received this in error by replying to this message. Then,
> please delete it from your system. Our Privacy Policy is available here
> https://www.msi.com/page/privacy-policy. Thank you.



-- 
Ricardo Ribalda

^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: UVCIOC_CTRL_MAP not work
  2023-04-28  8:25     ` Ricardo Ribalda
@ 2023-04-28  8:38       ` hardycheng(鄭易昕)
  2023-04-28  8:44         ` Ricardo Ribalda
  0 siblings, 1 reply; 11+ messages in thread
From: hardycheng(鄭易昕) @ 2023-04-28  8:38 UTC (permalink / raw)
  To: 'Ricardo Ribalda'; +Cc: linux-media@vger.kernel.org

[-- Attachment #1: Type: text/plain, Size: 5870 bytes --]

Hi Ricardo,

So I modify the `uvc_xu_control_mapping` struct as follows:
(full code reference attachment `uvc_xu_v4l_mapping_demo.c`)
struct uvc_xu_control_mapping mapping = {
        .id = 0x01,
        .name = "My Extension Unit",
        .entity = {0x10, 0xbc, 0x46, 0xba, 0x28, 0x5a, 0x4d, 0x7b, 0x97, 0x0e, 0xfd, 0x91, 0x46, 0xa5, 0x2f, 0x2d},
        .selector = 0x01,
        .size = 32,
        .offset = 0,
        .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
        .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
        .menu_info = NULL,
        .menu_count = 0,
        .reserved = {0},
};

And I got difference error message `UVCIOC_CTRL_MAP: No such file or directory`
Please check attachment `strace_20230428_2.log` for strace output


Best Regards,
Hardy


-----Original Message-----
From: Ricardo Ribalda <ribalda@chromium.org> 
Sent: Friday, April 28, 2023 4:26 PM
To: hardycheng(鄭易昕) <hardycheng@msi.com>
Cc: linux-media@vger.kernel.org
Subject: Re: UVCIOC_CTRL_MAP not work

Hi Hardy

Seems like you can only add mappings for  V4L2_CTRL_TYPE_INTEGER, V4L2_CTRL_TYPE_BOOLEAN:V4L2_CTRL_TYPE_BUTTON  and V4L2_CTRL_TYPE_MENU.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/media/usb/uvc/uvc_v4l2.c#n130

You are trying to add a map for a V4L2_CTRL_TYPE_STRING

Regards

On Fri, 28 Apr 2023 at 10:20, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
>
> Hi Ricardo,
>
> Thanks for reply,
>
> I replace `_IOWR('u', 0x20, struct uvc_xu_control_mapping)` to ` 
> UVCIOC_CTRL_MAP` and got the same error, Please check attachment for 
> command output `strace -f ./uvc_xu_v4l_mapping_demo`
>
> Best Regards,
> Hardy
>
> -----Original Message-----
> From: Ricardo Ribalda <ribalda@chromium.org>
> Sent: Friday, April 28, 2023 4:04 PM
> To: hardycheng(鄭易昕) <hardycheng@msi.com>
> Cc: linux-media@vger.kernel.org
> Subject: Re: UVCIOC_CTRL_MAP not work
>
> Hi Hardy
>
> Why are you using:
>
> result = ioctl(fd, _IOWR('u', 0x20, struct uvc_xu_control_mapping), 
> &mapping);
>
> instead of
>
> result = ioctl(fd, UVCIOC_CTRL_MAP, &mapping);
>
> Can you return the output of:
>
> strace -f  uvc_xu_v4l_mapping_demo
>
> Thanks!
>
> On Fri, 28 Apr 2023 at 09:15, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> >
> > Hi,
> >
> > # Environment:
> >
> > OS = Ubuntu 22.04 LTS (Linux version 5.19.0-41-generic) Program 
> > Language = C Language
> >
> > # Overview:
> >
> > We plug in our UVC camera to PC, and try to use `UVCIOC_CTRL_MAP` 
> > function on PC to create the v4l2 control mapping, but we got error
> > `UVCIOC_CTRL_MAP: Inappropriate ioctl for device` Development with 
> > `C language` in `Ubuntu 22.04 LTS`
> >
> > # Description:
> >
> > We have a custom UVC camera and we can modify the extension unit(XU) 
> > by ourself. (USB descriptions reference attachments 
> > `uvc_xu_descriptor.PNG` & `usb_decriptions.txt`)
> >
> > We make sure that UVCIOC_CTRL_QUERY is work to control our XU item 
> > (demo code in attachment `uvc_xu_ioctl_demo.c`)
> >
> > but UVCIOC_CTRL_MAP function fail with error message `UVCIOC_CTRL_MAP:
> > Inappropriate ioctl for device` (demo code in attachment
> > `uvc_xu_v4l_mapping_demo.c`)
> >
> > # Problems:
> >
> > 1.      Is UVCIOC_CTRL_MAP function using in the PC host?
> > 2.      Can you found any syntax problem in our demo code `uvc_xu_v4l_mapping_demo.c`?
> > 3.      Is there any sample code about struct `uvc_xu_control_mapping` using?
> >
> > Looking forward to your reply,
> > Best Regards,
> > Hardy#2374
> >
> > *****CONFIDENTIAL INFORMATION*****
> >
> > This email is intended only for the use of the person or entity to 
> > whom it is addressed and contains information that may be subject to 
> > and/or may be restricted from disclosure by contract or applicable 
> > law. If you are not the intended recipient of this email, be advised 
> > that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > If you are not the intended recipient of this email, please notify 
> > the sender that you have received this in error by replying to this 
> > message. Then, please delete it from your system. Our Privacy Policy 
> > is available here https://www.msi.com/page/privacy-policy. Thank you.
>
>
>
> --
> Ricardo Ribalda
>
>
> *****CONFIDENTIAL INFORMATION*****
>
> This email is intended only for the use of the person or entity to 
> whom it is addressed and contains information that may be subject to 
> and/or may be restricted from disclosure by contract or applicable 
> law. If you are not the intended recipient of this email, be advised 
> that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> If you are not the intended recipient of this email, please notify the 
> sender that you have received this in error by replying to this 
> message. Then, please delete it from your system. Our Privacy Policy 
> is available here https://www.msi.com/page/privacy-policy. Thank you.



--
Ricardo Ribalda


*****CONFIDENTIAL INFORMATION*****

This email is intended only for the use of the person or entity to whom it is
addressed and contains information that may be subject to and/or may be
restricted from disclosure by contract or applicable law. If you are not the 
intended recipient of this email, be advised that any disclosure, copy, 
distribution or use of the contents of this message is strictly prohibited. 
If you are not the intended recipient of this email, please notify the sender 
that you have received this in error by replying to this message. Then, 
please delete it from your system. Our Privacy Policy is available here 
https://www.msi.com/page/privacy-policy. Thank you.

[-- Attachment #2: uvc_xu_v4l_mapping_demo.c --]
[-- Type: text/plain, Size: 1020 bytes --]

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <linux/usb/video.h>
#include <linux/uvcvideo.h>
#include <linux/videodev2.h>

int main(){
    int result;
    int fd = open("/dev/video0", O_RDWR);
    if(fd < 0) {
        perror("File Open Fail");
        goto close;
    }

    struct uvc_xu_control_mapping mapping = {
        .id = 0x01,
        .name = "My Extension Unit",
        .entity = {0x10, 0xbc, 0x46, 0xba, 0x28, 0x5a, 0x4d, 0x7b, 0x97, 0x0e, 0xfd, 0x91, 0x46, 0xa5, 0x2f, 0x2d},
        .selector = 0x01,
        .size = 32,
        .offset = 0,
        .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
        .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
        .menu_info = NULL,
        .menu_count = 0,
        .reserved = {0},
    };

    result = ioctl(fd, UVCIOC_CTRL_MAP, &mapping);
    if (result != 0) {
        perror("UVCIOC_CTRL_MAP");
        goto close;
    }

    close:
    close(fd);
    return 0;
}

[-- Attachment #3: strace_20230428_2.log --]
[-- Type: application/octet-stream, Size: 3280 bytes --]

root@ubuntu22:/ms5548_test# strace -f ./uvc_xu_v4l_mapping_demo
execve("./uvc_xu_v4l_mapping_demo", ["./uvc_xu_v4l_mapping_demo"], 0x7fff918670d8 /* 76 vars */) = 0
brk(NULL)                               = 0x55a9e3bd7000
arch_prctl(0x3001 /* ARCH_??? */, 0x7ffdcb619c10) = -1 EINVAL (Invalid argument)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2dffcff000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=65987, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 65987, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f2dffcee000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\237\2\0\0\0\0\0"..., 832) = 832
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
pread64(3, "\4\0\0\0 \0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0"..., 48, 848) = 48
pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0i8\235HZ\227\223\333\350s\360\352,\223\340."..., 68, 896) = 68
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=2216304, ...}, AT_EMPTY_PATH) = 0
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
mmap(NULL, 2260560, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2dffa00000
mmap(0x7f2dffa28000, 1658880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7f2dffa28000
mmap(0x7f2dffbbd000, 360448, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bd000) = 0x7f2dffbbd000
mmap(0x7f2dffc15000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x214000) = 0x7f2dffc15000
mmap(0x7f2dffc1b000, 52816, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2dffc1b000
close(3)                                = 0
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2dffceb000
arch_prctl(ARCH_SET_FS, 0x7f2dffceb740) = 0
set_tid_address(0x7f2dffceba10)         = 6662
set_robust_list(0x7f2dffceba20, 24)     = 0
rseq(0x7f2dffcec0e0, 0x20, 0, 0x53053053) = 0
mprotect(0x7f2dffc15000, 16384, PROT_READ) = 0
mprotect(0x55a9e30a1000, 4096, PROT_READ) = 0
mprotect(0x7f2dffd39000, 8192, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0x7f2dffcee000, 65987)           = 0
openat(AT_FDCWD, "/dev/video0", O_RDWR) = 3
ioctl(3, UVCIOC_CTRL_MAP, 0x7ffdcb619c50) = -1 ENOENT (No such file or directory)
dup(2)                                  = 4
fcntl(4, F_GETFL)                       = 0x2 (flags O_RDWR)
getrandom("\xab\x1f\x34\x15\xb8\x09\x28\x79", 8, GRND_NONBLOCK) = 8
brk(NULL)                               = 0x55a9e3bd7000
brk(0x55a9e3bf8000)                     = 0x55a9e3bf8000
newfstatat(4, "", {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0), ...}, AT_EMPTY_PATH) = 0
write(4, "UVCIOC_CTRL_MAP: No such file or"..., 43UVCIOC_CTRL_MAP: No such file or directory
) = 43
close(4)                                = 0
close(3)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: UVCIOC_CTRL_MAP not work
  2023-04-28  8:38       ` hardycheng(鄭易昕)
@ 2023-04-28  8:44         ` Ricardo Ribalda
  2023-04-28  8:50           ` hardycheng(鄭易昕)
  0 siblings, 1 reply; 11+ messages in thread
From: Ricardo Ribalda @ 2023-04-28  8:44 UTC (permalink / raw)
  To: hardycheng(鄭易昕); +Cc: linux-media@vger.kernel.org

Hi Hardy

try running:

echo 0xffffffff > /sys/module/uvcvideo/parameters/trace

and then your program

and then dmesg

It will tell you where it got stock

Regards!

On Fri, 28 Apr 2023 at 10:38, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
>
> Hi Ricardo,
>
> So I modify the `uvc_xu_control_mapping` struct as follows:
> (full code reference attachment `uvc_xu_v4l_mapping_demo.c`)
> struct uvc_xu_control_mapping mapping = {
>         .id = 0x01,
>         .name = "My Extension Unit",
>         .entity = {0x10, 0xbc, 0x46, 0xba, 0x28, 0x5a, 0x4d, 0x7b, 0x97, 0x0e, 0xfd, 0x91, 0x46, 0xa5, 0x2f, 0x2d},
>         .selector = 0x01,
>         .size = 32,
>         .offset = 0,
>         .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
>         .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
>         .menu_info = NULL,
>         .menu_count = 0,
>         .reserved = {0},
> };
>
> And I got difference error message `UVCIOC_CTRL_MAP: No such file or directory`
> Please check attachment `strace_20230428_2.log` for strace output
>
>
> Best Regards,
> Hardy
>
>
> -----Original Message-----
> From: Ricardo Ribalda <ribalda@chromium.org>
> Sent: Friday, April 28, 2023 4:26 PM
> To: hardycheng(鄭易昕) <hardycheng@msi.com>
> Cc: linux-media@vger.kernel.org
> Subject: Re: UVCIOC_CTRL_MAP not work
>
> Hi Hardy
>
> Seems like you can only add mappings for  V4L2_CTRL_TYPE_INTEGER, V4L2_CTRL_TYPE_BOOLEAN:V4L2_CTRL_TYPE_BUTTON  and V4L2_CTRL_TYPE_MENU.
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/media/usb/uvc/uvc_v4l2.c#n130
>
> You are trying to add a map for a V4L2_CTRL_TYPE_STRING
>
> Regards
>
> On Fri, 28 Apr 2023 at 10:20, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> >
> > Hi Ricardo,
> >
> > Thanks for reply,
> >
> > I replace `_IOWR('u', 0x20, struct uvc_xu_control_mapping)` to `
> > UVCIOC_CTRL_MAP` and got the same error, Please check attachment for
> > command output `strace -f ./uvc_xu_v4l_mapping_demo`
> >
> > Best Regards,
> > Hardy
> >
> > -----Original Message-----
> > From: Ricardo Ribalda <ribalda@chromium.org>
> > Sent: Friday, April 28, 2023 4:04 PM
> > To: hardycheng(鄭易昕) <hardycheng@msi.com>
> > Cc: linux-media@vger.kernel.org
> > Subject: Re: UVCIOC_CTRL_MAP not work
> >
> > Hi Hardy
> >
> > Why are you using:
> >
> > result = ioctl(fd, _IOWR('u', 0x20, struct uvc_xu_control_mapping),
> > &mapping);
> >
> > instead of
> >
> > result = ioctl(fd, UVCIOC_CTRL_MAP, &mapping);
> >
> > Can you return the output of:
> >
> > strace -f  uvc_xu_v4l_mapping_demo
> >
> > Thanks!
> >
> > On Fri, 28 Apr 2023 at 09:15, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> > >
> > > Hi,
> > >
> > > # Environment:
> > >
> > > OS = Ubuntu 22.04 LTS (Linux version 5.19.0-41-generic) Program
> > > Language = C Language
> > >
> > > # Overview:
> > >
> > > We plug in our UVC camera to PC, and try to use `UVCIOC_CTRL_MAP`
> > > function on PC to create the v4l2 control mapping, but we got error
> > > `UVCIOC_CTRL_MAP: Inappropriate ioctl for device` Development with
> > > `C language` in `Ubuntu 22.04 LTS`
> > >
> > > # Description:
> > >
> > > We have a custom UVC camera and we can modify the extension unit(XU)
> > > by ourself. (USB descriptions reference attachments
> > > `uvc_xu_descriptor.PNG` & `usb_decriptions.txt`)
> > >
> > > We make sure that UVCIOC_CTRL_QUERY is work to control our XU item
> > > (demo code in attachment `uvc_xu_ioctl_demo.c`)
> > >
> > > but UVCIOC_CTRL_MAP function fail with error message `UVCIOC_CTRL_MAP:
> > > Inappropriate ioctl for device` (demo code in attachment
> > > `uvc_xu_v4l_mapping_demo.c`)
> > >
> > > # Problems:
> > >
> > > 1.      Is UVCIOC_CTRL_MAP function using in the PC host?
> > > 2.      Can you found any syntax problem in our demo code `uvc_xu_v4l_mapping_demo.c`?
> > > 3.      Is there any sample code about struct `uvc_xu_control_mapping` using?
> > >
> > > Looking forward to your reply,
> > > Best Regards,
> > > Hardy#2374
> > >
> > > *****CONFIDENTIAL INFORMATION*****
> > >
> > > This email is intended only for the use of the person or entity to
> > > whom it is addressed and contains information that may be subject to
> > > and/or may be restricted from disclosure by contract or applicable
> > > law. If you are not the intended recipient of this email, be advised
> > > that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > > If you are not the intended recipient of this email, please notify
> > > the sender that you have received this in error by replying to this
> > > message. Then, please delete it from your system. Our Privacy Policy
> > > is available here https://www.msi.com/page/privacy-policy. Thank you.
> >
> >
> >
> > --
> > Ricardo Ribalda
> >
> >
> > *****CONFIDENTIAL INFORMATION*****
> >
> > This email is intended only for the use of the person or entity to
> > whom it is addressed and contains information that may be subject to
> > and/or may be restricted from disclosure by contract or applicable
> > law. If you are not the intended recipient of this email, be advised
> > that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > If you are not the intended recipient of this email, please notify the
> > sender that you have received this in error by replying to this
> > message. Then, please delete it from your system. Our Privacy Policy
> > is available here https://www.msi.com/page/privacy-policy. Thank you.
>
>
>
> --
> Ricardo Ribalda
>
>
> *****CONFIDENTIAL INFORMATION*****
>
> This email is intended only for the use of the person or entity to whom it is
> addressed and contains information that may be subject to and/or may be
> restricted from disclosure by contract or applicable law. If you are not the
> intended recipient of this email, be advised that any disclosure, copy,
> distribution or use of the contents of this message is strictly prohibited.
> If you are not the intended recipient of this email, please notify the sender
> that you have received this in error by replying to this message. Then,
> please delete it from your system. Our Privacy Policy is available here
> https://www.msi.com/page/privacy-policy. Thank you.



-- 
Ricardo Ribalda

^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: UVCIOC_CTRL_MAP not work
  2023-04-28  8:44         ` Ricardo Ribalda
@ 2023-04-28  8:50           ` hardycheng(鄭易昕)
  2023-04-28  8:57             ` Ricardo Ribalda
  0 siblings, 1 reply; 11+ messages in thread
From: hardycheng(鄭易昕) @ 2023-04-28  8:50 UTC (permalink / raw)
  To: 'Ricardo Ribalda'; +Cc: linux-media@vger.kernel.org

Hi Ricardo,

Thank you for such a quick reply.
Follow your advice, but I just got few logs in dmesg

[ 9452.677337] usb 1-1: uvc_v4l2_open
[ 9452.725254] usb 1-1: Resuming interface 0
[ 9452.725258] usb 1-1: Resuming interface 1
[ 9452.751971] usb 1-1: uvc_v4l2_release
[ 9455.236973] usb 1-1: Suspending interface 1
[ 9455.236977] usb 1-1: Suspending interface 0

Is there any way to get more debug message about this issue?


Best Regards,
Hardy#2374


-----Original Message-----
From: Ricardo Ribalda <ribalda@chromium.org> 
Sent: Friday, April 28, 2023 4:45 PM
To: hardycheng(鄭易昕) <hardycheng@msi.com>
Cc: linux-media@vger.kernel.org
Subject: Re: UVCIOC_CTRL_MAP not work

Hi Hardy

try running:

echo 0xffffffff > /sys/module/uvcvideo/parameters/trace

and then your program

and then dmesg

It will tell you where it got stock

Regards!

On Fri, 28 Apr 2023 at 10:38, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
>
> Hi Ricardo,
>
> So I modify the `uvc_xu_control_mapping` struct as follows:
> (full code reference attachment `uvc_xu_v4l_mapping_demo.c`) struct 
> uvc_xu_control_mapping mapping = {
>         .id = 0x01,
>         .name = "My Extension Unit",
>         .entity = {0x10, 0xbc, 0x46, 0xba, 0x28, 0x5a, 0x4d, 0x7b, 0x97, 0x0e, 0xfd, 0x91, 0x46, 0xa5, 0x2f, 0x2d},
>         .selector = 0x01,
>         .size = 32,
>         .offset = 0,
>         .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
>         .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
>         .menu_info = NULL,
>         .menu_count = 0,
>         .reserved = {0},
> };
>
> And I got difference error message `UVCIOC_CTRL_MAP: No such file or 
> directory` Please check attachment `strace_20230428_2.log` for strace 
> output
>
>
> Best Regards,
> Hardy
>
>
> -----Original Message-----
> From: Ricardo Ribalda <ribalda@chromium.org>
> Sent: Friday, April 28, 2023 4:26 PM
> To: hardycheng(鄭易昕) <hardycheng@msi.com>
> Cc: linux-media@vger.kernel.org
> Subject: Re: UVCIOC_CTRL_MAP not work
>
> Hi Hardy
>
> Seems like you can only add mappings for  V4L2_CTRL_TYPE_INTEGER, V4L2_CTRL_TYPE_BOOLEAN:V4L2_CTRL_TYPE_BUTTON  and V4L2_CTRL_TYPE_MENU.
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tre
> e/drivers/media/usb/uvc/uvc_v4l2.c#n130
>
> You are trying to add a map for a V4L2_CTRL_TYPE_STRING
>
> Regards
>
> On Fri, 28 Apr 2023 at 10:20, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> >
> > Hi Ricardo,
> >
> > Thanks for reply,
> >
> > I replace `_IOWR('u', 0x20, struct uvc_xu_control_mapping)` to ` 
> > UVCIOC_CTRL_MAP` and got the same error, Please check attachment for 
> > command output `strace -f ./uvc_xu_v4l_mapping_demo`
> >
> > Best Regards,
> > Hardy
> >
> > -----Original Message-----
> > From: Ricardo Ribalda <ribalda@chromium.org>
> > Sent: Friday, April 28, 2023 4:04 PM
> > To: hardycheng(鄭易昕) <hardycheng@msi.com>
> > Cc: linux-media@vger.kernel.org
> > Subject: Re: UVCIOC_CTRL_MAP not work
> >
> > Hi Hardy
> >
> > Why are you using:
> >
> > result = ioctl(fd, _IOWR('u', 0x20, struct uvc_xu_control_mapping), 
> > &mapping);
> >
> > instead of
> >
> > result = ioctl(fd, UVCIOC_CTRL_MAP, &mapping);
> >
> > Can you return the output of:
> >
> > strace -f  uvc_xu_v4l_mapping_demo
> >
> > Thanks!
> >
> > On Fri, 28 Apr 2023 at 09:15, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> > >
> > > Hi,
> > >
> > > # Environment:
> > >
> > > OS = Ubuntu 22.04 LTS (Linux version 5.19.0-41-generic) Program 
> > > Language = C Language
> > >
> > > # Overview:
> > >
> > > We plug in our UVC camera to PC, and try to use `UVCIOC_CTRL_MAP` 
> > > function on PC to create the v4l2 control mapping, but we got 
> > > error
> > > `UVCIOC_CTRL_MAP: Inappropriate ioctl for device` Development with 
> > > `C language` in `Ubuntu 22.04 LTS`
> > >
> > > # Description:
> > >
> > > We have a custom UVC camera and we can modify the extension 
> > > unit(XU) by ourself. (USB descriptions reference attachments 
> > > `uvc_xu_descriptor.PNG` & `usb_decriptions.txt`)
> > >
> > > We make sure that UVCIOC_CTRL_QUERY is work to control our XU item 
> > > (demo code in attachment `uvc_xu_ioctl_demo.c`)
> > >
> > > but UVCIOC_CTRL_MAP function fail with error message `UVCIOC_CTRL_MAP:
> > > Inappropriate ioctl for device` (demo code in attachment
> > > `uvc_xu_v4l_mapping_demo.c`)
> > >
> > > # Problems:
> > >
> > > 1.      Is UVCIOC_CTRL_MAP function using in the PC host?
> > > 2.      Can you found any syntax problem in our demo code `uvc_xu_v4l_mapping_demo.c`?
> > > 3.      Is there any sample code about struct `uvc_xu_control_mapping` using?
> > >
> > > Looking forward to your reply,
> > > Best Regards,
> > > Hardy#2374
> > >
> > > *****CONFIDENTIAL INFORMATION*****
> > >
> > > This email is intended only for the use of the person or entity to 
> > > whom it is addressed and contains information that may be subject 
> > > to and/or may be restricted from disclosure by contract or 
> > > applicable law. If you are not the intended recipient of this 
> > > email, be advised that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > > If you are not the intended recipient of this email, please notify 
> > > the sender that you have received this in error by replying to 
> > > this message. Then, please delete it from your system. Our Privacy 
> > > Policy is available here https://www.msi.com/page/privacy-policy. Thank you.
> >
> >
> >
> > --
> > Ricardo Ribalda
> >
> >
> > *****CONFIDENTIAL INFORMATION*****
> >
> > This email is intended only for the use of the person or entity to 
> > whom it is addressed and contains information that may be subject to 
> > and/or may be restricted from disclosure by contract or applicable 
> > law. If you are not the intended recipient of this email, be advised 
> > that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > If you are not the intended recipient of this email, please notify 
> > the sender that you have received this in error by replying to this 
> > message. Then, please delete it from your system. Our Privacy Policy 
> > is available here https://www.msi.com/page/privacy-policy. Thank you.
>
>
>
> --
> Ricardo Ribalda
>
>
> *****CONFIDENTIAL INFORMATION*****
>
> This email is intended only for the use of the person or entity to 
> whom it is addressed and contains information that may be subject to 
> and/or may be restricted from disclosure by contract or applicable 
> law. If you are not the intended recipient of this email, be advised 
> that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> If you are not the intended recipient of this email, please notify the 
> sender that you have received this in error by replying to this 
> message. Then, please delete it from your system. Our Privacy Policy 
> is available here https://www.msi.com/page/privacy-policy. Thank you.



--
Ricardo Ribalda


*****CONFIDENTIAL INFORMATION*****

This email is intended only for the use of the person or entity to whom it is
addressed and contains information that may be subject to and/or may be
restricted from disclosure by contract or applicable law. If you are not the 
intended recipient of this email, be advised that any disclosure, copy, 
distribution or use of the contents of this message is strictly prohibited. 
If you are not the intended recipient of this email, please notify the sender 
that you have received this in error by replying to this message. Then, 
please delete it from your system. Our Privacy Policy is available here 
https://www.msi.com/page/privacy-policy. Thank you.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: UVCIOC_CTRL_MAP not work
  2023-04-28  8:50           ` hardycheng(鄭易昕)
@ 2023-04-28  8:57             ` Ricardo Ribalda
  2023-04-28  9:10               ` hardycheng(鄭易昕)
       [not found]               ` <72f03a2b961f462f89fe592d684121d8@msi.com>
  0 siblings, 2 replies; 11+ messages in thread
From: Ricardo Ribalda @ 2023-04-28  8:57 UTC (permalink / raw)
  To: hardycheng(鄭易昕); +Cc: linux-media@vger.kernel.org

What about:

rmmod uvcvideo
modprobe uvcvideo trace=0xffffffff

then run your program

You might be able to figure out what xu controls are discovered.


On Fri, 28 Apr 2023 at 10:50, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
>
> Hi Ricardo,
>
> Thank you for such a quick reply.
> Follow your advice, but I just got few logs in dmesg
>
> [ 9452.677337] usb 1-1: uvc_v4l2_open
> [ 9452.725254] usb 1-1: Resuming interface 0
> [ 9452.725258] usb 1-1: Resuming interface 1
> [ 9452.751971] usb 1-1: uvc_v4l2_release
> [ 9455.236973] usb 1-1: Suspending interface 1
> [ 9455.236977] usb 1-1: Suspending interface 0
>
> Is there any way to get more debug message about this issue?
>
>
> Best Regards,
> Hardy#2374
>
>
> -----Original Message-----
> From: Ricardo Ribalda <ribalda@chromium.org>
> Sent: Friday, April 28, 2023 4:45 PM
> To: hardycheng(鄭易昕) <hardycheng@msi.com>
> Cc: linux-media@vger.kernel.org
> Subject: Re: UVCIOC_CTRL_MAP not work
>
> Hi Hardy
>
> try running:
>
> echo 0xffffffff > /sys/module/uvcvideo/parameters/trace
>
> and then your program
>
> and then dmesg
>
> It will tell you where it got stock
>
> Regards!
>
> On Fri, 28 Apr 2023 at 10:38, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> >
> > Hi Ricardo,
> >
> > So I modify the `uvc_xu_control_mapping` struct as follows:
> > (full code reference attachment `uvc_xu_v4l_mapping_demo.c`) struct
> > uvc_xu_control_mapping mapping = {
> >         .id = 0x01,
> >         .name = "My Extension Unit",
> >         .entity = {0x10, 0xbc, 0x46, 0xba, 0x28, 0x5a, 0x4d, 0x7b, 0x97, 0x0e, 0xfd, 0x91, 0x46, 0xa5, 0x2f, 0x2d},
> >         .selector = 0x01,
> >         .size = 32,
> >         .offset = 0,
> >         .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
> >         .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
> >         .menu_info = NULL,
> >         .menu_count = 0,
> >         .reserved = {0},
> > };
> >
> > And I got difference error message `UVCIOC_CTRL_MAP: No such file or
> > directory` Please check attachment `strace_20230428_2.log` for strace
> > output
> >
> >
> > Best Regards,
> > Hardy
> >
> >
> > -----Original Message-----
> > From: Ricardo Ribalda <ribalda@chromium.org>
> > Sent: Friday, April 28, 2023 4:26 PM
> > To: hardycheng(鄭易昕) <hardycheng@msi.com>
> > Cc: linux-media@vger.kernel.org
> > Subject: Re: UVCIOC_CTRL_MAP not work
> >
> > Hi Hardy
> >
> > Seems like you can only add mappings for  V4L2_CTRL_TYPE_INTEGER, V4L2_CTRL_TYPE_BOOLEAN:V4L2_CTRL_TYPE_BUTTON  and V4L2_CTRL_TYPE_MENU.
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tre
> > e/drivers/media/usb/uvc/uvc_v4l2.c#n130
> >
> > You are trying to add a map for a V4L2_CTRL_TYPE_STRING
> >
> > Regards
> >
> > On Fri, 28 Apr 2023 at 10:20, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> > >
> > > Hi Ricardo,
> > >
> > > Thanks for reply,
> > >
> > > I replace `_IOWR('u', 0x20, struct uvc_xu_control_mapping)` to `
> > > UVCIOC_CTRL_MAP` and got the same error, Please check attachment for
> > > command output `strace -f ./uvc_xu_v4l_mapping_demo`
> > >
> > > Best Regards,
> > > Hardy
> > >
> > > -----Original Message-----
> > > From: Ricardo Ribalda <ribalda@chromium.org>
> > > Sent: Friday, April 28, 2023 4:04 PM
> > > To: hardycheng(鄭易昕) <hardycheng@msi.com>
> > > Cc: linux-media@vger.kernel.org
> > > Subject: Re: UVCIOC_CTRL_MAP not work
> > >
> > > Hi Hardy
> > >
> > > Why are you using:
> > >
> > > result = ioctl(fd, _IOWR('u', 0x20, struct uvc_xu_control_mapping),
> > > &mapping);
> > >
> > > instead of
> > >
> > > result = ioctl(fd, UVCIOC_CTRL_MAP, &mapping);
> > >
> > > Can you return the output of:
> > >
> > > strace -f  uvc_xu_v4l_mapping_demo
> > >
> > > Thanks!
> > >
> > > On Fri, 28 Apr 2023 at 09:15, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> > > >
> > > > Hi,
> > > >
> > > > # Environment:
> > > >
> > > > OS = Ubuntu 22.04 LTS (Linux version 5.19.0-41-generic) Program
> > > > Language = C Language
> > > >
> > > > # Overview:
> > > >
> > > > We plug in our UVC camera to PC, and try to use `UVCIOC_CTRL_MAP`
> > > > function on PC to create the v4l2 control mapping, but we got
> > > > error
> > > > `UVCIOC_CTRL_MAP: Inappropriate ioctl for device` Development with
> > > > `C language` in `Ubuntu 22.04 LTS`
> > > >
> > > > # Description:
> > > >
> > > > We have a custom UVC camera and we can modify the extension
> > > > unit(XU) by ourself. (USB descriptions reference attachments
> > > > `uvc_xu_descriptor.PNG` & `usb_decriptions.txt`)
> > > >
> > > > We make sure that UVCIOC_CTRL_QUERY is work to control our XU item
> > > > (demo code in attachment `uvc_xu_ioctl_demo.c`)
> > > >
> > > > but UVCIOC_CTRL_MAP function fail with error message `UVCIOC_CTRL_MAP:
> > > > Inappropriate ioctl for device` (demo code in attachment
> > > > `uvc_xu_v4l_mapping_demo.c`)
> > > >
> > > > # Problems:
> > > >
> > > > 1.      Is UVCIOC_CTRL_MAP function using in the PC host?
> > > > 2.      Can you found any syntax problem in our demo code `uvc_xu_v4l_mapping_demo.c`?
> > > > 3.      Is there any sample code about struct `uvc_xu_control_mapping` using?
> > > >
> > > > Looking forward to your reply,
> > > > Best Regards,
> > > > Hardy#2374
> > > >
> > > > *****CONFIDENTIAL INFORMATION*****
> > > >
> > > > This email is intended only for the use of the person or entity to
> > > > whom it is addressed and contains information that may be subject
> > > > to and/or may be restricted from disclosure by contract or
> > > > applicable law. If you are not the intended recipient of this
> > > > email, be advised that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > > > If you are not the intended recipient of this email, please notify
> > > > the sender that you have received this in error by replying to
> > > > this message. Then, please delete it from your system. Our Privacy
> > > > Policy is available here https://www.msi.com/page/privacy-policy. Thank you.
> > >
> > >
> > >
> > > --
> > > Ricardo Ribalda
> > >
> > >
> > > *****CONFIDENTIAL INFORMATION*****
> > >
> > > This email is intended only for the use of the person or entity to
> > > whom it is addressed and contains information that may be subject to
> > > and/or may be restricted from disclosure by contract or applicable
> > > law. If you are not the intended recipient of this email, be advised
> > > that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > > If you are not the intended recipient of this email, please notify
> > > the sender that you have received this in error by replying to this
> > > message. Then, please delete it from your system. Our Privacy Policy
> > > is available here https://www.msi.com/page/privacy-policy. Thank you.
> >
> >
> >
> > --
> > Ricardo Ribalda
> >
> >
> > *****CONFIDENTIAL INFORMATION*****
> >
> > This email is intended only for the use of the person or entity to
> > whom it is addressed and contains information that may be subject to
> > and/or may be restricted from disclosure by contract or applicable
> > law. If you are not the intended recipient of this email, be advised
> > that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > If you are not the intended recipient of this email, please notify the
> > sender that you have received this in error by replying to this
> > message. Then, please delete it from your system. Our Privacy Policy
> > is available here https://www.msi.com/page/privacy-policy. Thank you.
>
>
>
> --
> Ricardo Ribalda
>
>
> *****CONFIDENTIAL INFORMATION*****
>
> This email is intended only for the use of the person or entity to whom it is
> addressed and contains information that may be subject to and/or may be
> restricted from disclosure by contract or applicable law. If you are not the
> intended recipient of this email, be advised that any disclosure, copy,
> distribution or use of the contents of this message is strictly prohibited.
> If you are not the intended recipient of this email, please notify the sender
> that you have received this in error by replying to this message. Then,
> please delete it from your system. Our Privacy Policy is available here
> https://www.msi.com/page/privacy-policy. Thank you.



-- 
Ricardo Ribalda

^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: UVCIOC_CTRL_MAP not work
  2023-04-28  8:57             ` Ricardo Ribalda
@ 2023-04-28  9:10               ` hardycheng(鄭易昕)
       [not found]               ` <72f03a2b961f462f89fe592d684121d8@msi.com>
  1 sibling, 0 replies; 11+ messages in thread
From: hardycheng(鄭易昕) @ 2023-04-28  9:10 UTC (permalink / raw)
  To: 'Ricardo Ribalda'; +Cc: linux-media@vger.kernel.org

[-- Attachment #1: Type: text/plain, Size: 9975 bytes --]

Hi Ricardo,

Seems like no more message of XU controls,
I run my program in time [10246.557462], 
the relevant message is as follows:
[10246.557462] usb 1-1: uvc_v4l2_open
[10246.625260] usb 1-1: Resuming interface 0
[10246.625266] usb 1-1: Resuming interface 1
[10246.645515] usb 1-1: uvc_v4l2_release

Please check attachment of dmseg output `dmesg_20230428.log`


Best Regards,
Hardy#2374


-----Original Message-----
From: Ricardo Ribalda <ribalda@chromium.org> 
Sent: Friday, April 28, 2023 4:58 PM
To: hardycheng(鄭易昕) <hardycheng@msi.com>
Cc: linux-media@vger.kernel.org
Subject: Re: UVCIOC_CTRL_MAP not work

What about:

rmmod uvcvideo
modprobe uvcvideo trace=0xffffffff

then run your program

You might be able to figure out what xu controls are discovered.


On Fri, 28 Apr 2023 at 10:50, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
>
> Hi Ricardo,
>
> Thank you for such a quick reply.
> Follow your advice, but I just got few logs in dmesg
>
> [ 9452.677337] usb 1-1: uvc_v4l2_open
> [ 9452.725254] usb 1-1: Resuming interface 0 [ 9452.725258] usb 1-1: 
> Resuming interface 1 [ 9452.751971] usb 1-1: uvc_v4l2_release [ 
> 9455.236973] usb 1-1: Suspending interface 1 [ 9455.236977] usb 1-1: 
> Suspending interface 0
>
> Is there any way to get more debug message about this issue?
>
>
> Best Regards,
> Hardy#2374
>
>
> -----Original Message-----
> From: Ricardo Ribalda <ribalda@chromium.org>
> Sent: Friday, April 28, 2023 4:45 PM
> To: hardycheng(鄭易昕) <hardycheng@msi.com>
> Cc: linux-media@vger.kernel.org
> Subject: Re: UVCIOC_CTRL_MAP not work
>
> Hi Hardy
>
> try running:
>
> echo 0xffffffff > /sys/module/uvcvideo/parameters/trace
>
> and then your program
>
> and then dmesg
>
> It will tell you where it got stock
>
> Regards!
>
> On Fri, 28 Apr 2023 at 10:38, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> >
> > Hi Ricardo,
> >
> > So I modify the `uvc_xu_control_mapping` struct as follows:
> > (full code reference attachment `uvc_xu_v4l_mapping_demo.c`) struct 
> > uvc_xu_control_mapping mapping = {
> >         .id = 0x01,
> >         .name = "My Extension Unit",
> >         .entity = {0x10, 0xbc, 0x46, 0xba, 0x28, 0x5a, 0x4d, 0x7b, 0x97, 0x0e, 0xfd, 0x91, 0x46, 0xa5, 0x2f, 0x2d},
> >         .selector = 0x01,
> >         .size = 32,
> >         .offset = 0,
> >         .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
> >         .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
> >         .menu_info = NULL,
> >         .menu_count = 0,
> >         .reserved = {0},
> > };
> >
> > And I got difference error message `UVCIOC_CTRL_MAP: No such file or 
> > directory` Please check attachment `strace_20230428_2.log` for 
> > strace output
> >
> >
> > Best Regards,
> > Hardy
> >
> >
> > -----Original Message-----
> > From: Ricardo Ribalda <ribalda@chromium.org>
> > Sent: Friday, April 28, 2023 4:26 PM
> > To: hardycheng(鄭易昕) <hardycheng@msi.com>
> > Cc: linux-media@vger.kernel.org
> > Subject: Re: UVCIOC_CTRL_MAP not work
> >
> > Hi Hardy
> >
> > Seems like you can only add mappings for  V4L2_CTRL_TYPE_INTEGER, V4L2_CTRL_TYPE_BOOLEAN:V4L2_CTRL_TYPE_BUTTON  and V4L2_CTRL_TYPE_MENU.
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/t
> > re
> > e/drivers/media/usb/uvc/uvc_v4l2.c#n130
> >
> > You are trying to add a map for a V4L2_CTRL_TYPE_STRING
> >
> > Regards
> >
> > On Fri, 28 Apr 2023 at 10:20, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> > >
> > > Hi Ricardo,
> > >
> > > Thanks for reply,
> > >
> > > I replace `_IOWR('u', 0x20, struct uvc_xu_control_mapping)` to ` 
> > > UVCIOC_CTRL_MAP` and got the same error, Please check attachment 
> > > for command output `strace -f ./uvc_xu_v4l_mapping_demo`
> > >
> > > Best Regards,
> > > Hardy
> > >
> > > -----Original Message-----
> > > From: Ricardo Ribalda <ribalda@chromium.org>
> > > Sent: Friday, April 28, 2023 4:04 PM
> > > To: hardycheng(鄭易昕) <hardycheng@msi.com>
> > > Cc: linux-media@vger.kernel.org
> > > Subject: Re: UVCIOC_CTRL_MAP not work
> > >
> > > Hi Hardy
> > >
> > > Why are you using:
> > >
> > > result = ioctl(fd, _IOWR('u', 0x20, struct 
> > > uvc_xu_control_mapping), &mapping);
> > >
> > > instead of
> > >
> > > result = ioctl(fd, UVCIOC_CTRL_MAP, &mapping);
> > >
> > > Can you return the output of:
> > >
> > > strace -f  uvc_xu_v4l_mapping_demo
> > >
> > > Thanks!
> > >
> > > On Fri, 28 Apr 2023 at 09:15, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> > > >
> > > > Hi,
> > > >
> > > > # Environment:
> > > >
> > > > OS = Ubuntu 22.04 LTS (Linux version 5.19.0-41-generic) Program 
> > > > Language = C Language
> > > >
> > > > # Overview:
> > > >
> > > > We plug in our UVC camera to PC, and try to use 
> > > > `UVCIOC_CTRL_MAP` function on PC to create the v4l2 control 
> > > > mapping, but we got error
> > > > `UVCIOC_CTRL_MAP: Inappropriate ioctl for device` Development 
> > > > with `C language` in `Ubuntu 22.04 LTS`
> > > >
> > > > # Description:
> > > >
> > > > We have a custom UVC camera and we can modify the extension
> > > > unit(XU) by ourself. (USB descriptions reference attachments 
> > > > `uvc_xu_descriptor.PNG` & `usb_decriptions.txt`)
> > > >
> > > > We make sure that UVCIOC_CTRL_QUERY is work to control our XU 
> > > > item (demo code in attachment `uvc_xu_ioctl_demo.c`)
> > > >
> > > > but UVCIOC_CTRL_MAP function fail with error message `UVCIOC_CTRL_MAP:
> > > > Inappropriate ioctl for device` (demo code in attachment
> > > > `uvc_xu_v4l_mapping_demo.c`)
> > > >
> > > > # Problems:
> > > >
> > > > 1.      Is UVCIOC_CTRL_MAP function using in the PC host?
> > > > 2.      Can you found any syntax problem in our demo code `uvc_xu_v4l_mapping_demo.c`?
> > > > 3.      Is there any sample code about struct `uvc_xu_control_mapping` using?
> > > >
> > > > Looking forward to your reply,
> > > > Best Regards,
> > > > Hardy#2374
> > > >
> > > > *****CONFIDENTIAL INFORMATION*****
> > > >
> > > > This email is intended only for the use of the person or entity 
> > > > to whom it is addressed and contains information that may be 
> > > > subject to and/or may be restricted from disclosure by contract 
> > > > or applicable law. If you are not the intended recipient of this 
> > > > email, be advised that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > > > If you are not the intended recipient of this email, please 
> > > > notify the sender that you have received this in error by 
> > > > replying to this message. Then, please delete it from your 
> > > > system. Our Privacy Policy is available here https://www.msi.com/page/privacy-policy. Thank you.
> > >
> > >
> > >
> > > --
> > > Ricardo Ribalda
> > >
> > >
> > > *****CONFIDENTIAL INFORMATION*****
> > >
> > > This email is intended only for the use of the person or entity to 
> > > whom it is addressed and contains information that may be subject 
> > > to and/or may be restricted from disclosure by contract or 
> > > applicable law. If you are not the intended recipient of this 
> > > email, be advised that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > > If you are not the intended recipient of this email, please notify 
> > > the sender that you have received this in error by replying to 
> > > this message. Then, please delete it from your system. Our Privacy 
> > > Policy is available here https://www.msi.com/page/privacy-policy. Thank you.
> >
> >
> >
> > --
> > Ricardo Ribalda
> >
> >
> > *****CONFIDENTIAL INFORMATION*****
> >
> > This email is intended only for the use of the person or entity to 
> > whom it is addressed and contains information that may be subject to 
> > and/or may be restricted from disclosure by contract or applicable 
> > law. If you are not the intended recipient of this email, be advised 
> > that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > If you are not the intended recipient of this email, please notify 
> > the sender that you have received this in error by replying to this 
> > message. Then, please delete it from your system. Our Privacy Policy 
> > is available here https://www.msi.com/page/privacy-policy. Thank you.
>
>
>
> --
> Ricardo Ribalda
>
>
> *****CONFIDENTIAL INFORMATION*****
>
> This email is intended only for the use of the person or entity to 
> whom it is addressed and contains information that may be subject to 
> and/or may be restricted from disclosure by contract or applicable 
> law. If you are not the intended recipient of this email, be advised 
> that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> If you are not the intended recipient of this email, please notify the 
> sender that you have received this in error by replying to this 
> message. Then, please delete it from your system. Our Privacy Policy 
> is available here https://www.msi.com/page/privacy-policy. Thank you.



--
Ricardo Ribalda


*****CONFIDENTIAL INFORMATION*****

This email is intended only for the use of the person or entity to whom it is
addressed and contains information that may be subject to and/or may be
restricted from disclosure by contract or applicable law. If you are not the 
intended recipient of this email, be advised that any disclosure, copy, 
distribution or use of the contents of this message is strictly prohibited. 
If you are not the intended recipient of this email, please notify the sender 
that you have received this in error by replying to this message. Then, 
please delete it from your system. Our Privacy Policy is available here 
https://www.msi.com/page/privacy-policy. Thank you.

[-- Attachment #2: dmesg_20230428.log --]
[-- Type: application/octet-stream, Size: 4936 bytes --]

[10228.102415] usbcore: deregistering interface driver uvcvideo

[10228.166395] usb 1-1: Resuming interface 0

[10228.166399] usb 1-1: Resuming interface 1

[10238.516447] usb 1-1: Probing generic UVC device 1

[10238.516895] usb 1-1: Found format YUV 4:2:2 (YUYV)

[10238.516897] usb 1-1: - 640x360 (30.0 fps)

[10238.516899] usb 1-1: Found format MJPEG

[10238.516900] usb 1-1: - 1920x1080 (30.0 fps)

[10238.516901] usb 1-1: - 1280x720 (30.0 fps)

[10238.516902] usb 1-1: - 3840x1712 (30.0 fps)

[10238.516903] usb 1-1: - 2560x1136 (30.0 fps)

[10238.516904] usb 1-1: - 2560x1440 (30.0 fps)

[10238.516907] usb 1-1: Found a Status endpoint (addr 85)

[10238.516909] usb 1-1: Found UVC 1.00 device Cupola360 Camera (2245:1230)

[10238.516911] usb 1-1: Scanning UVC chain:

[10238.516912]  OT 6 <- XU 4 <- XU 3 <- PU 2 <- IT 1

[10238.516915] usb 1-1: Found a valid video chain (1 -> 6)

[10238.516918] usb 1-1: Added control 00000000-0000-0000-0000-000000000101/2 to device 1 entity 2

[10238.519753] usb 1-1: Adding mapping 'Brightness' to control 00000000-0000-0000-0000-000000000101/2

[10238.519756] usb 1-1: Added control 00000000-0000-0000-0000-000000000101/3 to device 1 entity 2

[10238.521738] usb 1-1: Adding mapping 'Contrast' to control 00000000-0000-0000-0000-000000000101/3

[10238.521741] usb 1-1: Added control 00000000-0000-0000-0000-000000000101/7 to device 1 entity 2

[10238.524638] usb 1-1: Adding mapping 'Saturation' to control 00000000-0000-0000-0000-000000000101/7

[10238.524641] usb 1-1: Added control 00000000-0000-0000-0000-000000000101/8 to device 1 entity 2

[10238.528517] usb 1-1: Adding mapping 'Sharpness' to control 00000000-0000-0000-0000-000000000101/8

[10238.528519] usb 1-1: Added control 00000000-0000-0000-0000-000000000101/9 to device 1 entity 2

[10238.533369] usb 1-1: Adding mapping 'Gamma' to control 00000000-0000-0000-0000-000000000101/9

[10238.533373] usb 1-1: Added control 00000000-0000-0000-0000-000000000101/10 to device 1 entity 2

[10238.537354] usb 1-1: Adding mapping 'White Balance Temperature' to control 00000000-0000-0000-0000-000000000101/10

[10238.537358] usb 1-1: Added control 00000000-0000-0000-0000-000000000101/1 to device 1 entity 2

[10238.541310] usb 1-1: Adding mapping 'Backlight Compensation' to control 00000000-0000-0000-0000-000000000101/1

[10238.541313] usb 1-1: Added control 00000000-0000-0000-0000-000000000101/5 to device 1 entity 2

[10238.545304] usb 1-1: Adding mapping 'Power Line Frequency' to control 00000000-0000-0000-0000-000000000101/5

[10238.545307] usb 1-1: Added control 00000000-0000-0000-0000-000000000101/11 to device 1 entity 2

[10238.549130] usb 1-1: Adding mapping 'White Balance, Automatic' to control 00000000-0000-0000-0000-000000000101/11

[10238.549134] usb 1-1: Added control 00000000-0000-0000-0000-000000000001/2 to device 1 entity 1

[10238.553029] usb 1-1: Adding mapping 'Auto Exposure' to control 00000000-0000-0000-0000-000000000001/2

[10238.553033] usb 1-1: Added control 00000000-0000-0000-0000-000000000001/3 to device 1 entity 1

[10238.555980] usb 1-1: Adding mapping 'Exposure, Dynamic Framerate' to control 00000000-0000-0000-0000-000000000001/3

[10238.555983] usb 1-1: Added control 00000000-0000-0000-0000-000000000001/4 to device 1 entity 1

[10238.558990] usb 1-1: Adding mapping 'Exposure Time, Absolute' to control 00000000-0000-0000-0000-000000000001/4

[10238.558993] usb 1-1: Added control 00000000-0000-0000-0000-000000000001/11 to device 1 entity 1

[10238.562800] usb 1-1: Adding mapping 'Zoom, Absolute' to control 00000000-0000-0000-0000-000000000001/11

[10238.562803] usb 1-1: Added control 00000000-0000-0000-0000-000000000001/13 to device 1 entity 1

[10238.565682] usb 1-1: Adding mapping 'Pan, Absolute' to control 00000000-0000-0000-0000-000000000001/13

[10238.565685] usb 1-1: Adding mapping 'Tilt, Absolute' to control 00000000-0000-0000-0000-000000000001/13

[10238.583824] input: Cupola360 Camera as /devices/pci0000:00/0000:00:0b.0/usb1/1-1/1-1:1.0/input/input9

[10238.584441] usb 1-1: uvc_v4l2_open

[10238.584466] usb 1-1: uvc_v4l2_release

[10238.585235] usb 1-1: UVC device initialized

[10238.589916] usbcore: registered new interface driver uvcvideo

[10238.634813] usb 1-1: uvc_v4l2_open

[10238.634908] usb 1-1: uvc_v4l2_release

[10238.641366] usb 1-1: uvc_v4l2_open

[10238.643786] usb 1-1: uvc_v4l2_open

[10238.643790] usb 1-1: uvc_v4l2_release

[10238.643816] usb 1-1: uvc_v4l2_open

[10238.827419] usb 1-1: uvc_v4l2_release

[10238.827463] usb 1-1: uvc_v4l2_release

[10241.066818] usb 1-1: Suspending interface 1

[10241.066822] usb 1-1: Suspending interface 0

[10246.557462] usb 1-1: uvc_v4l2_open

[10246.625260] usb 1-1: Resuming interface 0

[10246.625266] usb 1-1: Resuming interface 1

[10246.645515] usb 1-1: uvc_v4l2_release

^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: UVCIOC_CTRL_MAP not work
       [not found]               ` <72f03a2b961f462f89fe592d684121d8@msi.com>
@ 2023-04-28 12:06                 ` hardycheng(鄭易昕)
  2023-04-28 12:11                   ` Ricardo Ribalda
  0 siblings, 1 reply; 11+ messages in thread
From: hardycheng(鄭易昕) @ 2023-04-28 12:06 UTC (permalink / raw)
  To: 'Ricardo Ribalda'; +Cc: linux-media@vger.kernel.org

Hi Ricardo,

I need to sincerely apologize to you for my mistake of implanting the wrong GUID, which resulted in the device not being found. 
This was a foolish error on my part and I am sorry for taking up your valuable time.

Thank you again for your help.

Best Regards,
Hardy

-----Original Message-----
From: hardycheng(鄭易昕) 
Sent: Friday, April 28, 2023 5:10 PM
To: Ricardo Ribalda <ribalda@chromium.org>
Cc: linux-media@vger.kernel.org
Subject: RE: UVCIOC_CTRL_MAP not work

Hi Ricardo,

Seems like no more message of XU controls, I run my program in time [10246.557462], the relevant message is as follows:
[10246.557462] usb 1-1: uvc_v4l2_open
[10246.625260] usb 1-1: Resuming interface 0 [10246.625266] usb 1-1: Resuming interface 1 [10246.645515] usb 1-1: uvc_v4l2_release

Please check attachment of dmseg output `dmesg_20230428.log`


Best Regards,
Hardy#2374


-----Original Message-----
From: Ricardo Ribalda <ribalda@chromium.org>
Sent: Friday, April 28, 2023 4:58 PM
To: hardycheng(鄭易昕) <hardycheng@msi.com>
Cc: linux-media@vger.kernel.org
Subject: Re: UVCIOC_CTRL_MAP not work

What about:

rmmod uvcvideo
modprobe uvcvideo trace=0xffffffff

then run your program

You might be able to figure out what xu controls are discovered.


On Fri, 28 Apr 2023 at 10:50, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
>
> Hi Ricardo,
>
> Thank you for such a quick reply.
> Follow your advice, but I just got few logs in dmesg
>
> [ 9452.677337] usb 1-1: uvc_v4l2_open
> [ 9452.725254] usb 1-1: Resuming interface 0 [ 9452.725258] usb 1-1: 
> Resuming interface 1 [ 9452.751971] usb 1-1: uvc_v4l2_release [ 
> 9455.236973] usb 1-1: Suspending interface 1 [ 9455.236977] usb 1-1:
> Suspending interface 0
>
> Is there any way to get more debug message about this issue?
>
>
> Best Regards,
> Hardy#2374
>
>
> -----Original Message-----
> From: Ricardo Ribalda <ribalda@chromium.org>
> Sent: Friday, April 28, 2023 4:45 PM
> To: hardycheng(鄭易昕) <hardycheng@msi.com>
> Cc: linux-media@vger.kernel.org
> Subject: Re: UVCIOC_CTRL_MAP not work
>
> Hi Hardy
>
> try running:
>
> echo 0xffffffff > /sys/module/uvcvideo/parameters/trace
>
> and then your program
>
> and then dmesg
>
> It will tell you where it got stock
>
> Regards!
>
> On Fri, 28 Apr 2023 at 10:38, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> >
> > Hi Ricardo,
> >
> > So I modify the `uvc_xu_control_mapping` struct as follows:
> > (full code reference attachment `uvc_xu_v4l_mapping_demo.c`) struct 
> > uvc_xu_control_mapping mapping = {
> >         .id = 0x01,
> >         .name = "My Extension Unit",
> >         .entity = {0x10, 0xbc, 0x46, 0xba, 0x28, 0x5a, 0x4d, 0x7b, 0x97, 0x0e, 0xfd, 0x91, 0x46, 0xa5, 0x2f, 0x2d},
> >         .selector = 0x01,
> >         .size = 32,
> >         .offset = 0,
> >         .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
> >         .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
> >         .menu_info = NULL,
> >         .menu_count = 0,
> >         .reserved = {0},
> > };
> >
> > And I got difference error message `UVCIOC_CTRL_MAP: No such file or 
> > directory` Please check attachment `strace_20230428_2.log` for 
> > strace output
> >
> >
> > Best Regards,
> > Hardy
> >
> >
> > -----Original Message-----
> > From: Ricardo Ribalda <ribalda@chromium.org>
> > Sent: Friday, April 28, 2023 4:26 PM
> > To: hardycheng(鄭易昕) <hardycheng@msi.com>
> > Cc: linux-media@vger.kernel.org
> > Subject: Re: UVCIOC_CTRL_MAP not work
> >
> > Hi Hardy
> >
> > Seems like you can only add mappings for  V4L2_CTRL_TYPE_INTEGER, V4L2_CTRL_TYPE_BOOLEAN:V4L2_CTRL_TYPE_BUTTON  and V4L2_CTRL_TYPE_MENU.
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/t
> > re
> > e/drivers/media/usb/uvc/uvc_v4l2.c#n130
> >
> > You are trying to add a map for a V4L2_CTRL_TYPE_STRING
> >
> > Regards
> >
> > On Fri, 28 Apr 2023 at 10:20, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> > >
> > > Hi Ricardo,
> > >
> > > Thanks for reply,
> > >
> > > I replace `_IOWR('u', 0x20, struct uvc_xu_control_mapping)` to ` 
> > > UVCIOC_CTRL_MAP` and got the same error, Please check attachment 
> > > for command output `strace -f ./uvc_xu_v4l_mapping_demo`
> > >
> > > Best Regards,
> > > Hardy
> > >
> > > -----Original Message-----
> > > From: Ricardo Ribalda <ribalda@chromium.org>
> > > Sent: Friday, April 28, 2023 4:04 PM
> > > To: hardycheng(鄭易昕) <hardycheng@msi.com>
> > > Cc: linux-media@vger.kernel.org
> > > Subject: Re: UVCIOC_CTRL_MAP not work
> > >
> > > Hi Hardy
> > >
> > > Why are you using:
> > >
> > > result = ioctl(fd, _IOWR('u', 0x20, struct 
> > > uvc_xu_control_mapping), &mapping);
> > >
> > > instead of
> > >
> > > result = ioctl(fd, UVCIOC_CTRL_MAP, &mapping);
> > >
> > > Can you return the output of:
> > >
> > > strace -f  uvc_xu_v4l_mapping_demo
> > >
> > > Thanks!
> > >
> > > On Fri, 28 Apr 2023 at 09:15, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> > > >
> > > > Hi,
> > > >
> > > > # Environment:
> > > >
> > > > OS = Ubuntu 22.04 LTS (Linux version 5.19.0-41-generic) Program 
> > > > Language = C Language
> > > >
> > > > # Overview:
> > > >
> > > > We plug in our UVC camera to PC, and try to use 
> > > > `UVCIOC_CTRL_MAP` function on PC to create the v4l2 control 
> > > > mapping, but we got error
> > > > `UVCIOC_CTRL_MAP: Inappropriate ioctl for device` Development 
> > > > with `C language` in `Ubuntu 22.04 LTS`
> > > >
> > > > # Description:
> > > >
> > > > We have a custom UVC camera and we can modify the extension
> > > > unit(XU) by ourself. (USB descriptions reference attachments 
> > > > `uvc_xu_descriptor.PNG` & `usb_decriptions.txt`)
> > > >
> > > > We make sure that UVCIOC_CTRL_QUERY is work to control our XU 
> > > > item (demo code in attachment `uvc_xu_ioctl_demo.c`)
> > > >
> > > > but UVCIOC_CTRL_MAP function fail with error message `UVCIOC_CTRL_MAP:
> > > > Inappropriate ioctl for device` (demo code in attachment
> > > > `uvc_xu_v4l_mapping_demo.c`)
> > > >
> > > > # Problems:
> > > >
> > > > 1.      Is UVCIOC_CTRL_MAP function using in the PC host?
> > > > 2.      Can you found any syntax problem in our demo code `uvc_xu_v4l_mapping_demo.c`?
> > > > 3.      Is there any sample code about struct `uvc_xu_control_mapping` using?
> > > >
> > > > Looking forward to your reply,
> > > > Best Regards,
> > > > Hardy#2374
> > > >
> > > > *****CONFIDENTIAL INFORMATION*****
> > > >
> > > > This email is intended only for the use of the person or entity 
> > > > to whom it is addressed and contains information that may be 
> > > > subject to and/or may be restricted from disclosure by contract 
> > > > or applicable law. If you are not the intended recipient of this 
> > > > email, be advised that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > > > If you are not the intended recipient of this email, please 
> > > > notify the sender that you have received this in error by 
> > > > replying to this message. Then, please delete it from your 
> > > > system. Our Privacy Policy is available here https://www.msi.com/page/privacy-policy. Thank you.
> > >
> > >
> > >
> > > --
> > > Ricardo Ribalda
> > >
> > >
> > > *****CONFIDENTIAL INFORMATION*****
> > >
> > > This email is intended only for the use of the person or entity to 
> > > whom it is addressed and contains information that may be subject 
> > > to and/or may be restricted from disclosure by contract or 
> > > applicable law. If you are not the intended recipient of this 
> > > email, be advised that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > > If you are not the intended recipient of this email, please notify 
> > > the sender that you have received this in error by replying to 
> > > this message. Then, please delete it from your system. Our Privacy 
> > > Policy is available here https://www.msi.com/page/privacy-policy. Thank you.
> >
> >
> >
> > --
> > Ricardo Ribalda
> >
> >
> > *****CONFIDENTIAL INFORMATION*****
> >
> > This email is intended only for the use of the person or entity to 
> > whom it is addressed and contains information that may be subject to 
> > and/or may be restricted from disclosure by contract or applicable 
> > law. If you are not the intended recipient of this email, be advised 
> > that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > If you are not the intended recipient of this email, please notify 
> > the sender that you have received this in error by replying to this 
> > message. Then, please delete it from your system. Our Privacy Policy 
> > is available here https://www.msi.com/page/privacy-policy. Thank you.
>
>
>
> --
> Ricardo Ribalda
>
>
> *****CONFIDENTIAL INFORMATION*****
>
> This email is intended only for the use of the person or entity to 
> whom it is addressed and contains information that may be subject to 
> and/or may be restricted from disclosure by contract or applicable 
> law. If you are not the intended recipient of this email, be advised 
> that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> If you are not the intended recipient of this email, please notify the 
> sender that you have received this in error by replying to this 
> message. Then, please delete it from your system. Our Privacy Policy 
> is available here https://www.msi.com/page/privacy-policy. Thank you.



--
Ricardo Ribalda


*****CONFIDENTIAL INFORMATION*****

This email is intended only for the use of the person or entity to whom it is
addressed and contains information that may be subject to and/or may be
restricted from disclosure by contract or applicable law. If you are not the 
intended recipient of this email, be advised that any disclosure, copy, 
distribution or use of the contents of this message is strictly prohibited. 
If you are not the intended recipient of this email, please notify the sender 
that you have received this in error by replying to this message. Then, 
please delete it from your system. Our Privacy Policy is available here 
https://www.msi.com/page/privacy-policy. Thank you.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: UVCIOC_CTRL_MAP not work
  2023-04-28 12:06                 ` hardycheng(鄭易昕)
@ 2023-04-28 12:11                   ` Ricardo Ribalda
  0 siblings, 0 replies; 11+ messages in thread
From: Ricardo Ribalda @ 2023-04-28 12:11 UTC (permalink / raw)
  To: hardycheng(鄭易昕); +Cc: linux-media@vger.kernel.org

Hi Hardy

On Fri, 28 Apr 2023 at 14:06, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
>
> Hi Ricardo,
>
> I need to sincerely apologize to you for my mistake of implanting the wrong GUID, which resulted in the device not being found.
> This was a foolish error on my part and I am sorry for taking up your valuable time.

Absolutely no worries, happy that it works for you now :)

Have a great weekend!

>
> Thank you again for your help.
>
> Best Regards,
> Hardy
>
> -----Original Message-----
> From: hardycheng(鄭易昕)
> Sent: Friday, April 28, 2023 5:10 PM
> To: Ricardo Ribalda <ribalda@chromium.org>
> Cc: linux-media@vger.kernel.org
> Subject: RE: UVCIOC_CTRL_MAP not work
>
> Hi Ricardo,
>
> Seems like no more message of XU controls, I run my program in time [10246.557462], the relevant message is as follows:
> [10246.557462] usb 1-1: uvc_v4l2_open
> [10246.625260] usb 1-1: Resuming interface 0 [10246.625266] usb 1-1: Resuming interface 1 [10246.645515] usb 1-1: uvc_v4l2_release
>
> Please check attachment of dmseg output `dmesg_20230428.log`
>
>
> Best Regards,
> Hardy#2374
>
>
> -----Original Message-----
> From: Ricardo Ribalda <ribalda@chromium.org>
> Sent: Friday, April 28, 2023 4:58 PM
> To: hardycheng(鄭易昕) <hardycheng@msi.com>
> Cc: linux-media@vger.kernel.org
> Subject: Re: UVCIOC_CTRL_MAP not work
>
> What about:
>
> rmmod uvcvideo
> modprobe uvcvideo trace=0xffffffff
>
> then run your program
>
> You might be able to figure out what xu controls are discovered.
>
>
> On Fri, 28 Apr 2023 at 10:50, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> >
> > Hi Ricardo,
> >
> > Thank you for such a quick reply.
> > Follow your advice, but I just got few logs in dmesg
> >
> > [ 9452.677337] usb 1-1: uvc_v4l2_open
> > [ 9452.725254] usb 1-1: Resuming interface 0 [ 9452.725258] usb 1-1:
> > Resuming interface 1 [ 9452.751971] usb 1-1: uvc_v4l2_release [
> > 9455.236973] usb 1-1: Suspending interface 1 [ 9455.236977] usb 1-1:
> > Suspending interface 0
> >
> > Is there any way to get more debug message about this issue?
> >
> >
> > Best Regards,
> > Hardy#2374
> >
> >
> > -----Original Message-----
> > From: Ricardo Ribalda <ribalda@chromium.org>
> > Sent: Friday, April 28, 2023 4:45 PM
> > To: hardycheng(鄭易昕) <hardycheng@msi.com>
> > Cc: linux-media@vger.kernel.org
> > Subject: Re: UVCIOC_CTRL_MAP not work
> >
> > Hi Hardy
> >
> > try running:
> >
> > echo 0xffffffff > /sys/module/uvcvideo/parameters/trace
> >
> > and then your program
> >
> > and then dmesg
> >
> > It will tell you where it got stock
> >
> > Regards!
> >
> > On Fri, 28 Apr 2023 at 10:38, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> > >
> > > Hi Ricardo,
> > >
> > > So I modify the `uvc_xu_control_mapping` struct as follows:
> > > (full code reference attachment `uvc_xu_v4l_mapping_demo.c`) struct
> > > uvc_xu_control_mapping mapping = {
> > >         .id = 0x01,
> > >         .name = "My Extension Unit",
> > >         .entity = {0x10, 0xbc, 0x46, 0xba, 0x28, 0x5a, 0x4d, 0x7b, 0x97, 0x0e, 0xfd, 0x91, 0x46, 0xa5, 0x2f, 0x2d},
> > >         .selector = 0x01,
> > >         .size = 32,
> > >         .offset = 0,
> > >         .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
> > >         .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
> > >         .menu_info = NULL,
> > >         .menu_count = 0,
> > >         .reserved = {0},
> > > };
> > >
> > > And I got difference error message `UVCIOC_CTRL_MAP: No such file or
> > > directory` Please check attachment `strace_20230428_2.log` for
> > > strace output
> > >
> > >
> > > Best Regards,
> > > Hardy
> > >
> > >
> > > -----Original Message-----
> > > From: Ricardo Ribalda <ribalda@chromium.org>
> > > Sent: Friday, April 28, 2023 4:26 PM
> > > To: hardycheng(鄭易昕) <hardycheng@msi.com>
> > > Cc: linux-media@vger.kernel.org
> > > Subject: Re: UVCIOC_CTRL_MAP not work
> > >
> > > Hi Hardy
> > >
> > > Seems like you can only add mappings for  V4L2_CTRL_TYPE_INTEGER, V4L2_CTRL_TYPE_BOOLEAN:V4L2_CTRL_TYPE_BUTTON  and V4L2_CTRL_TYPE_MENU.
> > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/t
> > > re
> > > e/drivers/media/usb/uvc/uvc_v4l2.c#n130
> > >
> > > You are trying to add a map for a V4L2_CTRL_TYPE_STRING
> > >
> > > Regards
> > >
> > > On Fri, 28 Apr 2023 at 10:20, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> > > >
> > > > Hi Ricardo,
> > > >
> > > > Thanks for reply,
> > > >
> > > > I replace `_IOWR('u', 0x20, struct uvc_xu_control_mapping)` to `
> > > > UVCIOC_CTRL_MAP` and got the same error, Please check attachment
> > > > for command output `strace -f ./uvc_xu_v4l_mapping_demo`
> > > >
> > > > Best Regards,
> > > > Hardy
> > > >
> > > > -----Original Message-----
> > > > From: Ricardo Ribalda <ribalda@chromium.org>
> > > > Sent: Friday, April 28, 2023 4:04 PM
> > > > To: hardycheng(鄭易昕) <hardycheng@msi.com>
> > > > Cc: linux-media@vger.kernel.org
> > > > Subject: Re: UVCIOC_CTRL_MAP not work
> > > >
> > > > Hi Hardy
> > > >
> > > > Why are you using:
> > > >
> > > > result = ioctl(fd, _IOWR('u', 0x20, struct
> > > > uvc_xu_control_mapping), &mapping);
> > > >
> > > > instead of
> > > >
> > > > result = ioctl(fd, UVCIOC_CTRL_MAP, &mapping);
> > > >
> > > > Can you return the output of:
> > > >
> > > > strace -f  uvc_xu_v4l_mapping_demo
> > > >
> > > > Thanks!
> > > >
> > > > On Fri, 28 Apr 2023 at 09:15, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> > > > >
> > > > > Hi,
> > > > >
> > > > > # Environment:
> > > > >
> > > > > OS = Ubuntu 22.04 LTS (Linux version 5.19.0-41-generic) Program
> > > > > Language = C Language
> > > > >
> > > > > # Overview:
> > > > >
> > > > > We plug in our UVC camera to PC, and try to use
> > > > > `UVCIOC_CTRL_MAP` function on PC to create the v4l2 control
> > > > > mapping, but we got error
> > > > > `UVCIOC_CTRL_MAP: Inappropriate ioctl for device` Development
> > > > > with `C language` in `Ubuntu 22.04 LTS`
> > > > >
> > > > > # Description:
> > > > >
> > > > > We have a custom UVC camera and we can modify the extension
> > > > > unit(XU) by ourself. (USB descriptions reference attachments
> > > > > `uvc_xu_descriptor.PNG` & `usb_decriptions.txt`)
> > > > >
> > > > > We make sure that UVCIOC_CTRL_QUERY is work to control our XU
> > > > > item (demo code in attachment `uvc_xu_ioctl_demo.c`)
> > > > >
> > > > > but UVCIOC_CTRL_MAP function fail with error message `UVCIOC_CTRL_MAP:
> > > > > Inappropriate ioctl for device` (demo code in attachment
> > > > > `uvc_xu_v4l_mapping_demo.c`)
> > > > >
> > > > > # Problems:
> > > > >
> > > > > 1.      Is UVCIOC_CTRL_MAP function using in the PC host?
> > > > > 2.      Can you found any syntax problem in our demo code `uvc_xu_v4l_mapping_demo.c`?
> > > > > 3.      Is there any sample code about struct `uvc_xu_control_mapping` using?
> > > > >
> > > > > Looking forward to your reply,
> > > > > Best Regards,
> > > > > Hardy#2374
> > > > >
> > > > > *****CONFIDENTIAL INFORMATION*****
> > > > >
> > > > > This email is intended only for the use of the person or entity
> > > > > to whom it is addressed and contains information that may be
> > > > > subject to and/or may be restricted from disclosure by contract
> > > > > or applicable law. If you are not the intended recipient of this
> > > > > email, be advised that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > > > > If you are not the intended recipient of this email, please
> > > > > notify the sender that you have received this in error by
> > > > > replying to this message. Then, please delete it from your
> > > > > system. Our Privacy Policy is available here https://www.msi.com/page/privacy-policy. Thank you.
> > > >
> > > >
> > > >
> > > > --
> > > > Ricardo Ribalda
> > > >
> > > >
> > > > *****CONFIDENTIAL INFORMATION*****
> > > >
> > > > This email is intended only for the use of the person or entity to
> > > > whom it is addressed and contains information that may be subject
> > > > to and/or may be restricted from disclosure by contract or
> > > > applicable law. If you are not the intended recipient of this
> > > > email, be advised that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > > > If you are not the intended recipient of this email, please notify
> > > > the sender that you have received this in error by replying to
> > > > this message. Then, please delete it from your system. Our Privacy
> > > > Policy is available here https://www.msi.com/page/privacy-policy. Thank you.
> > >
> > >
> > >
> > > --
> > > Ricardo Ribalda
> > >
> > >
> > > *****CONFIDENTIAL INFORMATION*****
> > >
> > > This email is intended only for the use of the person or entity to
> > > whom it is addressed and contains information that may be subject to
> > > and/or may be restricted from disclosure by contract or applicable
> > > law. If you are not the intended recipient of this email, be advised
> > > that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > > If you are not the intended recipient of this email, please notify
> > > the sender that you have received this in error by replying to this
> > > message. Then, please delete it from your system. Our Privacy Policy
> > > is available here https://www.msi.com/page/privacy-policy. Thank you.
> >
> >
> >
> > --
> > Ricardo Ribalda
> >
> >
> > *****CONFIDENTIAL INFORMATION*****
> >
> > This email is intended only for the use of the person or entity to
> > whom it is addressed and contains information that may be subject to
> > and/or may be restricted from disclosure by contract or applicable
> > law. If you are not the intended recipient of this email, be advised
> > that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > If you are not the intended recipient of this email, please notify the
> > sender that you have received this in error by replying to this
> > message. Then, please delete it from your system. Our Privacy Policy
> > is available here https://www.msi.com/page/privacy-policy. Thank you.
>
>
>
> --
> Ricardo Ribalda
>
>
> *****CONFIDENTIAL INFORMATION*****
>
> This email is intended only for the use of the person or entity to whom it is
> addressed and contains information that may be subject to and/or may be
> restricted from disclosure by contract or applicable law. If you are not the
> intended recipient of this email, be advised that any disclosure, copy,
> distribution or use of the contents of this message is strictly prohibited.
> If you are not the intended recipient of this email, please notify the sender
> that you have received this in error by replying to this message. Then,
> please delete it from your system. Our Privacy Policy is available here
> https://www.msi.com/page/privacy-policy. Thank you.



-- 
Ricardo Ribalda

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2023-04-28 12:12 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-28  7:04 UVCIOC_CTRL_MAP not work hardycheng(鄭易昕)
2023-04-28  8:04 ` Ricardo Ribalda
2023-04-28  8:20   ` hardycheng(鄭易昕)
2023-04-28  8:25     ` Ricardo Ribalda
2023-04-28  8:38       ` hardycheng(鄭易昕)
2023-04-28  8:44         ` Ricardo Ribalda
2023-04-28  8:50           ` hardycheng(鄭易昕)
2023-04-28  8:57             ` Ricardo Ribalda
2023-04-28  9:10               ` hardycheng(鄭易昕)
     [not found]               ` <72f03a2b961f462f89fe592d684121d8@msi.com>
2023-04-28 12:06                 ` hardycheng(鄭易昕)
2023-04-28 12:11                   ` Ricardo Ribalda

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox