# Webcam problems (Function not implemented)

## lyallp

I have posted a question over in mulimedia, https://forums.gentoo.org/viewtopic-t-689983.html upon reflection, I think the question belongs here.

Hi, I have been following the wiki at http://gentoo-wiki.com/HOWTO_Install_a_webcam and seem to be having reasonable success, all the way up to the point where I actually try to use the webcam (an MSI StarCam 370i).

Firstly, I am doing everything as root - once I get things working, I will address any permission problems.

I have installed the gspcav1 driver.

```

# eix --nocolor gspcav1

[I] media-video/gspcav1

     Available versions:  (~)20060925 (~)20070110 (~)20070508 (~)20071224 {kernel_linux}

     Installed versions:  20071224(21:26:32 04/23/08)(kernel_linux)

     Homepage:            http://mxhaard.free.fr/download.html

     Description:         gspcav1 driver for webcams.

```

The kernel modules seem to be loaded ok

```
# lsmod

Module                  Size  Used by

ipv6                  217956  935 

fuse                   39188  6 

vboxdrv                44800  0 

e100                   28684  0 

nvidia               7363200  24 

gspca                 646096  0 

fan                     3332  0 

8139too                19200  0 

thermal                11420  0 

mii                     3584  2 e100,8139too

videodev               24448  1 gspca

pcspkr                  2048  0 

ohci1394               27824  0 

i2c_i801                7312  0 

v4l2_common            11904  1 videodev

v4l1_compat            13188  1 videodev

intel_agp              18708  1 

agpgart                21324  2 nvidia,intel_agp

processor              26304  1 thermal

button                  5904  0 

sg                     25744  0 
```

The device shows up in the lsusb (Microdia)

```
# lsusb

Bus 004 Device 001: ID 0000:0000  

Bus 005 Device 001: ID 0000:0000  

Bus 003 Device 001: ID 0000:0000  

Bus 002 Device 001: ID 0000:0000  

Bus 001 Device 006: ID 0c45:60c0 Microdia 

Bus 001 Device 004: ID 046d:c019 Logitech, Inc. 

Bus 001 Device 002: ID 05e3:0660 Genesys Logic, Inc. USB 2.0 Hub

Bus 001 Device 001: ID 0000:0000  

```

When I plug it in, it is recognised.... (from /var/log/messages)

```
Apr 27 18:22:11 lyalls-pc usb 1-6.3: new full speed USB device using ehci_hcd and address 6

Apr 27 18:22:11 lyalls-pc usb 1-6.3: configuration #1 chosen from 1 choice

Apr 27 18:22:11 lyalls-pc /tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: USB GSPCA camera found. SONIX JPEG (sn9c1xx) 

Apr 27 18:22:11 lyalls-pc /tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: [spca5xx_probe:4275] Camera type JPEG 

Apr 27 18:22:11 lyalls-pc /tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: [spca5xx_getcapability:1249] maxw 640 maxh 480 minw 160 minh 120

Apr 27 18:22:11 lyalls-pc ivman: New Device: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial

Apr 27 18:22:11 lyalls-pc ivman: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial wasn't mounted, by us or by others...

Apr 27 18:22:11 lyalls-pc ivman: New Device: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_if0

Apr 27 18:22:11 lyalls-pc ivman: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_if0 wasn't mounted, by us or by others...

Apr 27 18:22:11 lyalls-pc ivman: New Device: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_if2

Apr 27 18:22:11 lyalls-pc ivman: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_if2 wasn't mounted, by us or by others...

Apr 27 18:22:11 lyalls-pc ivman: New Device: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_if1

Apr 27 18:22:11 lyalls-pc ivman: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_if1 wasn't mounted, by us or by others...

Apr 27 18:22:11 lyalls-pc ivman: New Device: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_video4linux

Apr 27 18:22:11 lyalls-pc ivman: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_video4linux wasn't mounted, by us or by others...

Apr 27 18:22:11 lyalls-pc ivman: New Device: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_usbraw

Apr 27 18:22:11 lyalls-pc ivman: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_usbraw wasn't mounted, by us or by others...

```

I end up with the device successfully created, each time it's plugged in

```

  lrwxrwxrwx  1 root root            10 Apr 27 18:22 video -> v4l/video0

  lrwxrwxrwx  1 root root            10 Apr 27 18:22 video0 -> v4l/video0

```

which is

```

  crw-rw----  1 root video 81, 0 Apr 27 18:22 video0

```

When I try to do a v4l-info, I see the following in /var/log/messages

```
Apr 27 18:40:18 lyalls-pc /tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: [spca5xx_set_light_freq:1932] Sensor currently not support light frequency banding filters.

Apr 27 18:40:18 lyalls-pc /tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: [gspca_set_isoc_ep:945] ISO EndPoint found 0x81 AlternateSet 8

Apr 27 18:40:18 lyalls-pc /tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: init isoc: usb_submit_urb(0) ret -38

Apr 27 18:40:18 lyalls-pc /tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: [spca5xx_open:1996]  DEALLOC error on init_Isoc

```

I have tried increasing shared memory by adding 

```
echo "kernel.shmmax = 134217728" >> /etc/sysctl.conf ; sysctl -p
```

Good old mplayer has the same problems when I try use it, as described in the wiki - 

```
# mplayer tv:// -tv driver=v4l:width=352:height=288:device=/dev/video0

MPlayer dev-SVN-rUNKNOWN-4.1.2 (C) 2000-2008 MPlayer Team

CPU: Intel(R) Pentium(R) 4 CPU 2.80GHz (Family: 15, Model: 3, Stepping: 3)

CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1

Compiled for x86 CPU with extensions: MMX MMX2 SSE SSE2

Playing tv://.

TV file format detected.

Selected driver: v4l

 name: Video 4 Linux input

 author: Alex Beregszaszi

 comment: under development

unable to open '/dev/video0': Function not implemented

Exiting... (End of file)
```

mplayer has v4l and v4l2 use flags, as can be seen by the eix output below.

```
[I] media-video/mplayer

     Installed versions:  1.0_rc2_p25993(21:44:15 04/23/08)(X a52 aac alsa cddb cdparanoia dga directfb dts dv dvb dvd enca encode gif gtk iconv ipv6 jpeg kernel_linux libcaca mad mmx mmxext mp2 mp3 opengl oss png quicktime radio rar real rtc samba sdl speex sse sse2 svga tga truetype unicode v4l v4l2 video_cards_vesa vorbis win32codecs x264 xanim xinerama xv xvid xvmc -3dnow -3dnowext -aalib -altivec -amrnb -amrwb -arts -bidi -bindist -bl -cdio -cpudetection -custom-cflags -debug -doc -esd -fbcon -ftp -ggi -jack -joystick -ladspa -lirc -live -livecd -lzo -md5sum -musepack -nas -nemesi -openal -pnm -pulseaudio -srt -ssse3 -teletext -theora -tivo -video_cards_mga -video_cards_s3virge -video_cards_tdfx -vidix -xscreensaver -zoran)

     Homepage:            http://www.mplayerhq.hu/

     Description:         Media Player for Linux

```

Any assistance would be greatly appreciated.

----------

## BradN

I think this is the first spot where things start to go wrong:

Apr 27 18:40:18 lyalls-pc /tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: init isoc: usb_submit_urb(0) ret -38 

Without looking at the code and what could cause a -38 return code, I'm not sure what the problem would be.  It looks (first guess just from this message) like a usb call to outside of the gspca driver is failing.

Actually I've just used this driver sucessfully (with a different chipset webcam) a few days ago on 2.6.24-r4, and after figuring out I had to set the driver type to v4l (not v4l2) in mplayer, I had no problems getting an image.

One possible idea is trying a driver one version older, since sometimes later versions break a device that was working before...

Here are some outputs from a working session:

```
Apr 27 01:51:04 p100 usb 3-2: new full speed USB device using uhci_hcd and address 7

Apr 27 01:51:05 p100 usb 3-2: configuration #1 chosen from 1 choice

Apr 27 01:51:05 p100 /var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: USB GSPCA camera found.(ZC3XX)

Apr 27 01:51:05 p100 /var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: [spca5xx_probe:4275] Camera type JPEG

Apr 27 01:51:05 p100 /var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/Vimicro/zc3xx.h: [zc3xx_config:669] Find Sensor HV7131R(c)

Apr 27 01:51:05 p100 /var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: [spca5xx_getcapability:1249] maxw 640 maxh 480 minw 160 minh 120

Apr 27 01:51:05 p100 usbcore: registered new interface driver gspca

Apr 27 01:51:05 p100 /var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: gspca driver 01.00.20 registered

Apr 27 02:05:05 p100 /var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: [spca5xx_set_light_freq:1932] Sensor currently not support light frequency banding filters.

Apr 27 02:05:05 p100 /var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: [gspca_set_isoc_ep:945] ISO EndPoint found 0x81 AlternateSet 7

Apr 27 02:05:06 p100 /var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: [spca5xx_do_ioctl:2124] Bridge ZC301-2

Apr 27 02:05:06 p100 /var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: [spca5xx_do_ioctl:2124] Bridge ZC301-2
```

----------

## lyallp

Well, I know why the driver says 'Sensor currently not support light frequency banding filters'.

There is a 'switch' statement at roughly line 1918 in gspca_core.c which required, in my case, an additional line

```
case SENSOR_MI0360:
```

making the whole switch statement as follows (I have also tweaked the PDEBUG):-

```
   switch (spca50x->sensor) {

   case SENSOR_TAS5130C_VF0250:

   case SENSOR_TAS5130CXX:

   case SENSOR_PB0330:

   case SENSOR_PAS106:

   case SENSOR_ICM105A:

   case SENSOR_HDCS2020b:

   case SENSOR_CS2102:

   case SENSOR_OV7660:

   case SENSOR_OV7620:

   case SENSOR_MC501CB:

        case SENSOR_MI0360: /* put in by Lyall, just to see what happens */

      break;

   default:

      PDEBUG(0,

             "Sensor [decimal=%d hex=%x] currently not support light frequency banding filters.", spca50x->sensor, spca50x->sensor);

      return -EINVAL;

   }

```

Now, I don't receive the filter message but I still have the usb_submit_urb() problem. I am currently unable to figure out where the 38 is coming from. No docs, that I have read yet, mention a code which evaluates to 38 - I grep every .h file in the kernel source tree looking for each return value.

This is not an area I have spent any time in.

----------

## BradN

The light banding thing doesn't seem to prevent it from working (it shows up in my output but the camera worked)

----------

## lyallp

Well, I am making progress.

After digging around the kernel USB source, finding the ENOSYS return code (which is 38 ) which is returned by usb/core/hub.c, I thought I would try plugging my webcam directly into the mobo USB port, rather than the more convenient USB Hub I was using.

Now, I get a white screen with little trianglur bits spread in an even grid across the whole screen, when I use 

```
 mplayer tv:// -tv driver=v4l:width=352:height=288:device=/dev/video0
```

Every time I start mplayer, I see this in the /var/log/messages (note, this still includes my hacked driver, which sets the light banding)

```
Apr 29 14:32:37 lyalls-pc /tmp/gspcav1-20071224/gspca_core.c: [spca5xx_set_light_freq:1937] Light frequency banding filter set to 50HZ mode

Apr 29 14:32:37 lyalls-pc /tmp/gspcav1-20071224/gspca_core.c: [gspca_set_isoc_ep:945] ISO EndPoint found 0x81 AlternateSet 8

Apr 29 14:32:37 lyalls-pc /tmp/gspcav1-20071224/gspca_core.c: [spca5xx_do_ioctl:2125] Bridge SN9CXXX 

Apr 29 14:32:37 lyalls-pc /tmp/gspcav1-20071224/gspca_core.c: [spca5xx_do_ioctl:2125] Bridge SN9CXXX 

```

v4l-info reports the following 

```
root@lyalls-pc:lyall

# v4l-info 

### video4linux device info [/dev/video0] ###

general info

    VIDIOCGCAP

        name                    : "Sangha 350k"

        type                    : 0x1 [CAPTURE]

        channels                : 1

        audios                  : 0

        maxwidth                : 640

        maxheight               : 480

        minwidth                : 160

        minheight               : 120

channels

    VIDIOCGCHAN(0)

        channel                 : 0

        name                    : "SN9CXXX"

        tuners                  : 0

        flags                   : 0x0 []

        type                    : CAMERA

        norm                    : 0

tuner

ioctl VIDIOCGTUNER: Invalid argument

audio

ioctl VIDIOCGAUDIO: Invalid argument

picture

    VIDIOCGPICT

        brightness              : 65520

        hue                     : 0

        colour                  : 32768

        contrast                : 16128

        whiteness               : 0

        depth                   : 24

        palette                 : RGB24

buffer

    VIDIOCGFBUF

        base                    : (nil)

        height                  : 0

        width                   : 0

        depth                   : 0

        bytesperline            : 0

window

    VIDIOCGWIN

        x                       : 0

        y                       : 0

        width                   : 352

        height                  : 288

        chromakey               : 0

        flags                   : 0

```

xawtv generates the same output as mediaplayer.

I do note, however, that if I shine a light into the webcam (or point it outside), I see a faint flickering.

----------

## lyallp

Well, I am definitely having fun here.

I seem to have gone backwards, now nothing shows at all, not sure why.

I know the webcam won't work in my USB Hub, when everything else I have plugged into it does, because of some unimplemented functionality, either in the USB drivers or the Hub itself.

I tried using usbview (app-admin/usbview-1.0-r3) to have a look at the webcam. Now, I am no expert in what to expect but the output from this webcam looks really suspicious, like there is some form of looping somewhere, although, each repeat of the interface seems to vary it's max packet size.

I am very interested to see other webcams outputs from usbview (or from /proc/bus/usb/devices, as it's more compact and I can feed a file containing the /proc/bus/usb/devices data into usbview for 'prettifying').

Mine shows...USB camera

```

Speed: 12Mb/s (full)

USB Version:  1.10

Device Class: 00(>ifc )

Device Subclass: 00

Device Protocol: 00

Maximum Default Endpoint Size: 64

Number of Configurations: 1

Vendor Id: 0c45

Product Id: 60c0

Revision Number:  1.01

Config Number: 1

   Number of Interfaces: 3

   Attributes: 80

   MaxPower Needed: 500mA

   Interface Number: 0

      Name: gspca

      Alternate Number: 0

      Class: ff(vend.) 

      Sub Class: ff

      Protocol: ff

      Number of Endpoints: 3

         Endpoint Address: 81

         Direction: in

         Attribute: 1

         Type: Isoc

         Max Packet Size: 0

         Interval: 1ms

         Endpoint Address: 82

         Direction: in

         Attribute: 2

         Type: Bulk

         Max Packet Size: 64

         Interval: 0ms

         Endpoint Address: 83

         Direction: in

         Attribute: 3

         Type: Int.

         Max Packet Size: 1

         Interval: 100ms

   Interface Number: 0

      Name: gspca

      Alternate Number: 1

      Class: ff(vend.) 

      Sub Class: ff

      Protocol: ff

      Number of Endpoints: 3

         Endpoint Address: 81

         Direction: in

         Attribute: 1

         Type: Isoc

         Max Packet Size: 128

         Interval: 1ms

         Endpoint Address: 82

         Direction: in

         Attribute: 2

         Type: Bulk

         Max Packet Size: 64

         Interval: 0ms

         Endpoint Address: 83

         Direction: in

         Attribute: 3

         Type: Int.

         Max Packet Size: 1

         Interval: 100ms

   Interface Number: 0

      Name: gspca

      Alternate Number: 2

      Class: ff(vend.) 

      Sub Class: ff

      Protocol: ff

      Number of Endpoints: 3

         Endpoint Address: 81

         Direction: in

         Attribute: 1

         Type: Isoc

         Max Packet Size: 256

         Interval: 1ms

         Endpoint Address: 82

         Direction: in

         Attribute: 2

         Type: Bulk

         Max Packet Size: 64

         Interval: 0ms

         Endpoint Address: 83

         Direction: in

         Attribute: 3

         Type: Int.

         Max Packet Size: 1

         Interval: 100ms

   Interface Number: 0

      Name: gspca

      Alternate Number: 3

      Class: ff(vend.) 

      Sub Class: ff

      Protocol: ff

      Number of Endpoints: 3

         Endpoint Address: 81

         Direction: in

         Attribute: 1

         Type: Isoc

         Max Packet Size: 384

         Interval: 1ms

         Endpoint Address: 82

         Direction: in

         Attribute: 2

         Type: Bulk

         Max Packet Size: 64

         Interval: 0ms

         Endpoint Address: 83

         Direction: in

         Attribute: 3

         Type: Int.

         Max Packet Size: 1

         Interval: 100ms

   Interface Number: 0

      Name: gspca

      Alternate Number: 4

      Class: ff(vend.) 

      Sub Class: ff

      Protocol: ff

      Number of Endpoints: 3

         Endpoint Address: 81

         Direction: in

         Attribute: 1

         Type: Isoc

         Max Packet Size: 512

         Interval: 1ms

         Endpoint Address: 82

         Direction: in

         Attribute: 2

         Type: Bulk

         Max Packet Size: 64

         Interval: 0ms

         Endpoint Address: 83

         Direction: in

         Attribute: 3

         Type: Int.

         Max Packet Size: 1

         Interval: 100ms

   Interface Number: 0

      Name: gspca

      Alternate Number: 5

      Class: ff(vend.) 

      Sub Class: ff

      Protocol: ff

      Number of Endpoints: 3

         Endpoint Address: 81

         Direction: in

         Attribute: 1

         Type: Isoc

         Max Packet Size: 680

         Interval: 1ms

         Endpoint Address: 82

         Direction: in

         Attribute: 2

         Type: Bulk

         Max Packet Size: 64

         Interval: 0ms

         Endpoint Address: 83

         Direction: in

         Attribute: 3

         Type: Int.

         Max Packet Size: 1

         Interval: 100ms

   Interface Number: 0

      Name: gspca

      Alternate Number: 6

      Class: ff(vend.) 

      Sub Class: ff

      Protocol: ff

      Number of Endpoints: 3

         Endpoint Address: 81

         Direction: in

         Attribute: 1

         Type: Isoc

         Max Packet Size: 800

         Interval: 1ms

         Endpoint Address: 82

         Direction: in

         Attribute: 2

         Type: Bulk

         Max Packet Size: 64

         Interval: 0ms

         Endpoint Address: 83

         Direction: in

         Attribute: 3

         Type: Int.

         Max Packet Size: 1

         Interval: 100ms

   Interface Number: 0

      Name: gspca

      Alternate Number: 7

      Class: ff(vend.) 

      Sub Class: ff

      Protocol: ff

      Number of Endpoints: 3

         Endpoint Address: 81

         Direction: in

         Attribute: 1

         Type: Isoc

         Max Packet Size: 900

         Interval: 1ms

         Endpoint Address: 82

         Direction: in

         Attribute: 2

         Type: Bulk

         Max Packet Size: 64

         Interval: 0ms

         Endpoint Address: 83

         Direction: in

         Attribute: 3

         Type: Int.

         Max Packet Size: 1

         Interval: 100ms

   Interface Number: 0

      Name: gspca

      Alternate Number: 8

      Class: ff(vend.) 

      Sub Class: ff

      Protocol: ff

      Number of Endpoints: 3

         Endpoint Address: 81

         Direction: in

         Attribute: 1

         Type: Isoc

         Max Packet Size: 1023

         Interval: 1ms

         Endpoint Address: 82

         Direction: in

         Attribute: 2

         Type: Bulk

         Max Packet Size: 64

         Interval: 0ms

         Endpoint Address: 83

         Direction: in

         Attribute: 3

         Type: Int.

         Max Packet Size: 1

         Interval: 100ms

   Interface Number: 1

      Name: (none)

      Alternate Number: 0

      Class: 01(audio) 

      Sub Class: 01

      Protocol: 00

      Number of Endpoints: 0

   Interface Number: 2

      Name: (none)

      Alternate Number: 0

      Class: 01(audio) 

      Sub Class: 02

      Protocol: 00

      Number of Endpoints: 0

   Interface Number: 2

      Name: (none)

      Alternate Number: 1

      Class: 01(audio) 

      Sub Class: 02

      Protocol: 00

      Number of Endpoints: 1

         Endpoint Address: 84

         Direction: in

         Attribute: 1

         Type: Isoc

         Max Packet Size: 64

         Interval: 1ms

```

This output is sourced from /proc/bus/usb/devices, which shows a similar, but more condensed version of the above story.

```

T:  Bus=01 Lev=02 Prnt=03 Port=01 Cnt=01 Dev#=  6 Spd=12  MxCh= 0

D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

P:  Vendor=0c45 ProdID=60c0 Rev= 1.01

S:  Product=USB camera

C:* #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=500mA

I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=gspca

E:  Ad=81(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms

E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

E:  Ad=83(I) Atr=03(Int.) MxPS=   1 Ivl=100ms

I:  If#= 0 Alt= 1 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=gspca

E:  Ad=81(I) Atr=01(Isoc) MxPS= 128 Ivl=1ms

E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

E:  Ad=83(I) Atr=03(Int.) MxPS=   1 Ivl=100ms

I:  If#= 0 Alt= 2 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=gspca

E:  Ad=81(I) Atr=01(Isoc) MxPS= 256 Ivl=1ms

E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

E:  Ad=83(I) Atr=03(Int.) MxPS=   1 Ivl=100ms

I:  If#= 0 Alt= 3 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=gspca

E:  Ad=81(I) Atr=01(Isoc) MxPS= 384 Ivl=1ms

E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

E:  Ad=83(I) Atr=03(Int.) MxPS=   1 Ivl=100ms

I:  If#= 0 Alt= 4 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=gspca

E:  Ad=81(I) Atr=01(Isoc) MxPS= 512 Ivl=1ms

E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

E:  Ad=83(I) Atr=03(Int.) MxPS=   1 Ivl=100ms

I:  If#= 0 Alt= 5 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=gspca

E:  Ad=81(I) Atr=01(Isoc) MxPS= 680 Ivl=1ms

E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

E:  Ad=83(I) Atr=03(Int.) MxPS=   1 Ivl=100ms

I:  If#= 0 Alt= 6 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=gspca

E:  Ad=81(I) Atr=01(Isoc) MxPS= 800 Ivl=1ms

E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

E:  Ad=83(I) Atr=03(Int.) MxPS=   1 Ivl=100ms

I:  If#= 0 Alt= 7 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=gspca

E:  Ad=81(I) Atr=01(Isoc) MxPS= 900 Ivl=1ms

E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

E:  Ad=83(I) Atr=03(Int.) MxPS=   1 Ivl=100ms

I:* If#= 0 Alt= 8 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=gspca

E:  Ad=81(I) Atr=01(Isoc) MxPS=1023 Ivl=1ms

E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

E:  Ad=83(I) Atr=03(Int.) MxPS=   1 Ivl=100ms

I:* If#= 1 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=(none)

I:* If#= 2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=(none)

I:  If#= 2 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=(none)

E:  Ad=84(I) Atr=01(Isoc) MxPS=  64 Ivl=1ms

```

My /var/log/messages shows the following (with my slightly modified driver, which gives a little more info)

```

May  1 21:48:24 lyalls-pc usb 1-6.2: new full speed USB device using ehci_hcd and address 6

May  1 21:48:24 lyalls-pc usb 1-6.2: configuration #1 chosen from 1 choice

May  1 21:48:24 lyalls-pc usb 1-6.2: SN9C105 PC Camera Controller detected (vid:pid 0x0C45:0x60C0)

May  1 21:48:24 lyalls-pc ivman: New Device: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial

May  1 21:48:24 lyalls-pc ivman: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial wasn't mounted, by us or by others...

May  1 21:48:24 lyalls-pc ivman: New Device: /org/freedesktop/Hal/devices/usb_device_ffffffff_ffffffff_noserial

May  1 21:48:24 lyalls-pc ivman: /org/freedesktop/Hal/devices/usb_device_ffffffff_ffffffff_noserial wasn't mounted, by us or by others...

May  1 21:48:24 lyalls-pc usb 1-6.2: No supported image sensor detected for this bridge

May  1 21:48:24 lyalls-pc /tmp/gspcav1-20071224/gspca_core.c: [spcaDetectCamera:2946] vendor=(decimal=3141 hex=c45) product=(decimal=24768 hex=60c0)

May  1 21:48:24 lyalls-pc /tmp/gspcav1-20071224/gspca_core.c: USB GSPCA camera found. SONIX JPEG (sn9c1xx) 

May  1 21:48:24 lyalls-pc /tmp/gspcav1-20071224/gspca_core.c: [spca5xx_probe:4277] Camera type JPEG 

May  1 21:48:24 lyalls-pc /tmp/gspcav1-20071224/gspca_core.c: [spca5xx_getcapability:1249] maxw 640 maxh 480 minw 160 minh 120

May  1 21:48:24 lyalls-pc ivman: New Device: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_video4linux

May  1 21:48:24 lyalls-pc ivman: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_video4linux wasn't mounted, by us or by others...

May  1 21:48:24 lyalls-pc ivman: New Device: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_if1

May  1 21:48:24 lyalls-pc ivman: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_if1 wasn't mounted, by us or by others...

May  1 21:48:24 lyalls-pc ivman: New Device: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_if2

May  1 21:48:24 lyalls-pc ivman: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_if2 wasn't mounted, by us or by others...

May  1 21:48:24 lyalls-pc ivman: New Device: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_usbraw

May  1 21:48:24 lyalls-pc ivman: /org/freedesktop/Hal/devices/usb_device_c45_60c0_noserial_usbraw wasn't mounted, by us or by others...

May  1 21:49:14 lyalls-pc /tmp/gspcav1-20071224/gspca_core.c: [spca5xx_set_light_freq:1937] Light frequency banding filter set to 50HZ mode

May  1 21:49:14 lyalls-pc /tmp/gspcav1-20071224/gspca_core.c: [gspca_set_isoc_ep:945] ISO EndPoint found 0x81 AlternateSet 8

May  1 21:49:14 lyalls-pc /tmp/gspcav1-20071224/gspca_core.c: init isoc: usb_submit_urb(0) ret -38

May  1 21:49:14 lyalls-pc /tmp/gspcav1-20071224/gspca_core.c: [spca5xx_open:1997]  DEALLOC error on init_Isoc

```

----------

## BradN

At first glance it appears that all the different "alternate numbers" are there to support varying packet sizes, as the driver chooses the one with the largest packet size.

----------

## Bobe84

Ok, don't bother. I took gspcav1 driver and modified it to work with MSI StarCam 370i and MSI StarCam Clip.

Driver code is stripped down and only works with 0c45 60c0 id.

go to : http://pamplast.com/gspca/

download it 

it compiles as msicam module

remove old gspca 

and try this on

I u have problems please first read readme.txt, and u have email and jabber contact. 

Regards Boban Aleksov, Serbia.

----------

## BradN

Sounds like something the gspca crew would want to have... have you submitted a patch?

----------

## Bobe84

Well i didn't send them patch because there is no way to truly identify that this is my chip, i havent found way to read that from camera  :Sad: 

I was emailing Michele Mxaard and he replyed couple of times but for now it will stay this way. 

This driver is very modified, and my opinion was why not to make it only for 0c45 60c0, so i kicked out all other code. 

So now it compiles to modulename=MSICAM not GSPCA; Only works for 0c45 60c0 to escape posibility to have interference with gspca.

Only thing i have to do is to make color balancing or auto white balancing workin.(very big job) Now colors are increased equally.

Driver is configured to work from ~13fps to 30fps max.

Please email me at bobe84@gmail.com for some feedback and impressions.

----------

## BradN

Hmm, so what you're saying is that the USB ID isn't enough to guarantee you're talking to that specific chip?  Or you're having problems making sure your changes to the gspca code only affect it when using that chip?

----------

## Bobe84

Well yes, there seems to be other devices with that ID  :Sad:  Sangha 535k for example.And i tried to read chip id from camera with no  success.

Anyway i wrote different codes for sonix bridge init is completely different.

So i did what i did...

I dunno what is Michele from gspca planning to do or when it is going to release new, but i think next gspca will support these cameras.

(Problem with these cameras is that they have different i2c base, and when doing init to camera it writes to completely wrong place)

Second thing is that these cameras have newer image sensors on them( sort of upgraded version )

For example mine sensor has IFP incorporated, so he can automaticaly(without driver) change expo regulate color balance bla bla.

Mine driver is like driver for win and it does not use IFP feature because it turned out to be very unuseful feature.

----------

## BradN

Well, what other projects have done, ie bttv for video capture boards, is use a card= parameter to override any auto-detection or for boards that can't be distinguished... maybe something like that will be necessary.

----------

## lyallp

Well, I have an image now  :Smile: 

I installed camorama and things seem to work ok, with regard to video, but people are blue  :Smile: 

Thanks!

----------

## Bobe84

Ok, now try spcaview, camstream, cheese, skype, or some other program and it will work. 

Camorama doesn't now whether he has RGB or BGR stream.

If u really want to work this nice with camorama u can put FORCE_RGB=1 in gspca_core.c.

Cheers, Boban.

----------

## lyallp

spcaview - much better. 

Thanks  :Smile: 

Bottom line, it does not work when plugged into my Hub but does if I plug it directly into the Motherboard USB sockets.

The problem with the hub is some unimplemented functionality, which I think is in the Linux USB core, as the Hub works fine in Windows.

----------

