Bug 477111

Summary: Philips WebCam SPC 600 NC (0471:0327) worked with <= kernel 2.6.26 + gspca but not with 2.6.27.7-53.fc9.x86_64
Product: [Fedora] Fedora Reporter: Mack Stanley <m.or.j.stanley>
Component: kernelAssignee: Hans de Goede <hdegoede>
Status: CLOSED UPSTREAM QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: 9CC: kernel-maint, quintela
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-03-13 09:49:45 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Mack Stanley 2008-12-19 05:51:15 UTC
User-Agent:       Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.3) Gecko/20070417 Fedora/2.0.0.3-4.fc7 Firefox/2.0.0.3

I think that this is a matter for the video4linux developers.

Kernel documentation shows that this webcam should be supported by gspca_sonixj:

Bus 002 Device 008: ID 0471:0327 Philips WebCam SPC 6000 NC (WebCam w/ mic)

[That actually should be 600 not 6000.]

Udev does not create /dev/video0.  Booting with the camera plugged in the pilot light on it comes on, as though it were running. The light should only be on when an application is using the camera.  

I downloaded the most recent gspca snapshot, gspca-b9ad46be2923,
from http://linuxtv.org/hg/~jfrancois/gspca/ built it against
kernel 2.6.27.7-53.fc9.x86_64 and installed the modules.

It still doesn't work.

When I plug in the camera, these modules are loaded:

sn9c102               153092  0 
compat_ioctl32         16384  1 sn9c102
videodev               44928  2 sn9c102,compat_ioctl32

Here are the messages:

Dec 18 21:11:04 tails kernel: usb 2-4: new full speed USB device using ohci_hcd and address 9
Dec 18 21:11:04 tails kernel: usb 2-4: configuration #1 chosen from 1 choice
Dec 18 21:11:04 tails kernel: usb 2-4: SN9C105 PC Camera Controller detected (vid:pid 0x0471:0x0327)
Dec 18 21:11:05 tails kernel: usb 2-4: No supported image sensor detected for this bridge
Dec 18 21:11:05 tails kernel: usb 2-4: New USB device found, idVendor=0471, idProduct=0327
Dec 18 21:11:05 tails kernel: usb 2-4: New USB device strings: Mfr=0, Product=1, SerialNumber=0
Dec 18 21:11:05 tails kernel: usb 2-4: Product: USB camera
Dec 18 21:11:06 tails pulseaudio[3210]: alsa-util.c: Device hw:1 doesn't support 44100 Hz, changed to 16000 Hz.
Dec 18 21:11:06 tails pulseaudio[3210]: alsa-util.c: Device hw:1 doesn't support 2 channels, changed to 1.

I tried blacklisting sn9c102 and loading gspca_sonixj.  The pilot light doesn't come on and /dev/video0 is not created.

This camera worked perfectly using gspcav1 under kernels through 2.6.26.6-79.fc9.x86_64 (640x480 with good frame rate---possibly 30 fps in good light).  (Maybe that's an overstatement.  I couldn't get the microphone to work with 2.6.22.14-72.fc6.x86_64.)

Reproducible: Always

Steps to Reproduce:
1.Boot with a 2.6.27 kernel with the webcam plugged in.
2.Or boot, then plug in the webcam.
3.
Actual Results:  
Udev turns pilot light on the camera on.  /dev/video0 is not created

Expected Results:  
The gspca_sonixj module loads when the webcam is detected.
Udev creates /dev/video0
Hal briefly flashes the pilot light on the webcam.

Wildcards:

I'm using the proprietary nvidia driver for this kernel posted on rpmfusion-nonfree-updates.

I'm using the Linuxant hsf modem driver.  It includes some replacement alsa drivers.

Neither of these caused problems under earlier kernels.

Comment 1 Mack Stanley 2008-12-19 17:38:06 UTC
http://moinejf.free.fr/webcam.html shows this webcam as "not tested" but having the same sensor as the Philips spc 700 nc (0471:0328) with works with sonixj under
gspca v4l2.

Comment 2 Hans de Goede 2009-03-09 10:07:04 UTC
Hi,

Sorry it took so long for this to get assigned to me . I'm Fedora's webcam expert and one of the gspca authors. So the problem is the sn9c102 driver which has been
part of the kernel for a while now, sucks, as it claims to support devices
which it doesn't.

When we added gspca to the mainline kernel, when a USB-ID was already claimed
by the sn9c102 driver, we added it to gspca the following way:

#if !defined CONFIG_USB_SN9C102 && !defined CONFIG_USB_SN9C102_MODULE
        {USB_DEVICE(0x0471, 0x0327), BSI(SN9C105, MI0360, 0x5d)},
#endif

This means then when you build gspca from source, or as part of the kernel and
the sn9c102 module is enabled, we won't include the ID (to avoid conflicting
with sn9c102 and causing potential regressions for users of sn9c102).

Slowly as we get more reports like yours, we remove the ID's from the sn9c102 driver and add them unconditionally to the gspca driver. Sorry about all the pain
this causes.

So what I would like you to do, is get the latest gspca tree from:
http://linuxtv.org/hg/~jfrancois/gspca/

Like you did before and then edit linux/drivers/media/video/gspca/sonixj.c, and
remove the #if ..., #endif around the USB id for your cam. Then make sure you do
not have sn9c102 loaded, and you do have gspca_sonixj loaded, and then plug in
your cam.

Hopefully things will then just work, if that is the case I'll do a patch
removing the USB-ID for your cam form sn9c102, and removing the #if #endif from
sonixj.c

Thanks!

Comment 3 Mack Stanley 2009-03-09 20:24:47 UTC
Thanks very much; what you said to do works perfectly!

I removed the #if ... #endif around line 2231 in linux/drivers/media/video/gspca/sonixj.c.  Then make; make install; and reboot.

The sn9c102 module still loads when I plug in the webcam, but I guess gspca takes over:

Mar  9 13:08:15 localhost kernel: usb 3-4: new full speed USB device using ohci_hcd and address 4
Mar  9 13:08:15 localhost kernel: usb 3-4: configuration #1 chosen from 1 choice
Mar  9 13:08:15 localhost kernel: usb 3-4: SN9C105 PC Camera Controller detected (vid:pid 0x0471:0x0327)
Mar  9 13:08:15 localhost kernel: usb 3-4: No supported image sensor detected for this bridge
Mar  9 13:08:15 localhost kernel: gspca: probing 0471:0327
Mar  9 13:08:15 localhost kernel: sonixj: Sonix chip id: 11
Mar  9 13:08:15 localhost kernel: sonixj: Unknown sensor 0000 - forced to mi0360
Mar  9 13:08:15 localhost kernel: gspca: probe ok
Mar  9 13:08:15 localhost kernel: gspca: probing 0471:0327
Mar  9 13:08:15 localhost kernel: usb 3-4: New USB device found, idVendor=0471, idProduct=0327
Mar  9 13:08:15 localhost kernel: usb 3-4: New USB device strings: Mfr=0, Product=1, SerialNumber=0
Mar  9 13:08:15 localhost kernel: usb 3-4: Product: USB camera

I tried using the camera with "camstream" and it works perfectly.  

-------------------

This is a different topic, but since you're the Fedora webcam expert and since it's good news rather than more problems, I might mention that I have another webcam that works out of the box and is
listed as "untested" at http://moinejf.free.fr/webcam.html.
I can report this somewhere else, if it's more useful.

This is the working camera:

ov519	041e:4061	Creative Live! VISTA VF0400	?? 	not tested

Here are the messages when it's plugged in:

Mar  9 12:45:34 localhost kernel: usb 3-4: new full speed USB device using ohci_hcd and address 3
Mar  9 12:45:34 localhost kernel: usb 3-4: configuration #1 chosen from 1 choice
Mar  9 12:45:34 localhost kernel: usb 3-4: New USB device found, idVendor=041e, idProduct=4061
Mar  9 12:45:34 localhost kernel: usb 3-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Mar  9 12:45:34 localhost kernel: usb 3-4: Product: VF0400 Live! Cam Notebook Pro
Mar  9 12:45:34 localhost kernel: usb 3-4: Manufacturer: Creative Labs
Mar  9 12:45:34 localhost kernel: gspca: probing 041e:4061
Mar  9 12:45:34 localhost kernel: ov519: I2C synced in 0 attempt(s)
Mar  9 12:45:34 localhost kernel: ov519: starting OV7xx0 configuration
Mar  9 12:45:34 localhost kernel: ov519: Sensor is an OV7670
Mar  9 12:45:36 localhost kernel: gspca: probe ok
Mar  9 12:45:36 localhost kernel: usbcore: registered new interface driver ov519
Mar  9 12:45:36 localhost kernel: ov519: registered

This used to be supported by the ov51x_jpeg driver that I found at
http://www.rastageeks.org/downloads/ov51x-jpeg/ov51x-jpeg-1.5.8.tar.gz.
I was surprised and pleased to see it just working with the 2.6.27 kernel.

------------------------

Thanks again for your great work!

Comment 4 Hans de Goede 2009-03-13 09:49:45 UTC
Thanks for testing!

Patch send upstream making this cam be handled by gspca instead of sn9c102 out of the box. It will end up in Fedora's kernel in due time through upstream.

p.s.

(In reply to comment #3)
> 
> This is a different topic, but since you're the Fedora webcam expert and since
> it's good news rather than more problems, I might mention that I have another
> webcam that works out of the box and is
> listed as "untested" at http://moinejf.free.fr/webcam.html.
> I can report this somewhere else, if it's more useful.
> 

Its the best if you submit info like this directly to JF Moine:
Jean-Francois Moine <moinejf>

Thanks.