Making my camera to work with driver sn9c102

I am the owner of a webcam named “Microdia videocam NB 300”, but the outcase says “Genius”.

This camera DOES works on openSUSE 11.1 but not on 11.2 (my current setup) and after a lot of research i realise that the preblem is that the proper driver “sn9c102” for my webcam is not compiled on the new kernels.

I was unsuccessful on setting up the kernel driver again and i hope that somebody here can help me, or better, fix this problem for the next kernel release.

uname -r

2.6.31.12-0.2-desktop

lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 1bcf:0007 Sunplus Innovation Technology Inc.
Bus 004 Device 003: ID 0c45:602b Microdia VideoCAM NB 300

If you look in kernel’s menuconfig at next point zou will see it disabled.

make menuconfig

Linux kernel Configuration -> Device Drivers -> Multimedia Support -> V4L USB devices -> USB SN9C1xx PC Camera Controller support

I tried to compile this driver without recompiling the whole kernel and i succeded, but with some problems which make it fail.

I followed the instructions from here:
Como compilar un módulo sin recompilar todo el kernel (en OpenSuSE 10.2) « El magnífico – Unico e irreproducible

Howto compile a kernel’s module without recompiling the whole kernel:

cd /usr/src/linux

make clean

make cloneconfig

make menuconfig (and select the module mentioned)

make modules_prepare

make SUBDIRS=drivers/media/video/sn9c102 modules

cp drivers/media/video/sn9c102/sn9c102.ko /lib/modules/2.6.31.12-0.2-desktop/kernel/drivers/media/video/sn9c102/sn9c102.ko

depmod -a

This works to compile the kernel’s module but with the next warnning:

WARNING: Symbol version dump /usr/src/linux-2.6.31.12-0.2/Module.symvers
is missing; modules will have no dependencies and modversions.

modprobe sn9c102

FATAL: Error inserting sn9c102 (/lib/modules/2.6.31.12-0.2-desktop/kernel/drivers/media/video/sn9c102/sn9c102.ko): Invalid module format

This would be because of the warnning, so i forced it to load with the nexts results:

modprobe -f sn9c102 (worked, no errors on stdout)

dmesg


5040.323180] sn9c102: no symbol version for module_layout
5170.050070] sn9c102: V4L2 driver for SN9C1xx PC Camera Controllers v1:1.47pre49
5170.051867] usb 4-5: SN9C10[12] PC Camera Controller detected (vid:pid 0x0C45:0x602B)
5170.159850] usb 4-5: MI-0343 image sensor detected
5170.351826] usb 4-5: Initialization succeeded
5170.351946] usb 4-5: V4L2 device registered as /dev/video0
5170.351955] usb 4-5: Optional device control through ‘sysfs’ interface disabled
5170.351993] usbcore: registered new interface driver sn9c102
5170.358930] usb 4-5: usb_submit_urb() failed, error -28
5170.371833] ohci_hcd 0000:00:04.0: leak ed f52be240 (#81) state 2
5170.371860] usb 4-5: usb_submit_urb() failed, error -28

The driver recogniced my camera and created the device video0 but failed on usb_submit_urb().

How can i fix this ?
Why is the file Module.symvers missing?
Why was this working driver removed from opensuse?

I hope that somebody have a clue.
Thanks in advance

Rather than compile your own driver, did you try going to the build service, seaching for and using a version of the sn9c102 driver compiled by someone else? For example when I search on sn9c I get this hit for sn9c with many sn9cx hits. One would need to install the rpm that is specific to one’s kernel version which in your case is the 2.6.31.12-0.2-desktop. For example you could try the sn9c20x-kmp-desktop, although I concede its NOT the same as the sn9c102 that you reported. Hence its possible my suggestion is not good.

I did tryed with sn9c20x, but this driver doesnt support this camera:
Check here:
project-status - microdia | Google Groups
And my camera’s VID/PID is 0c45:602b

Because no supported VID/PID is connected, this driver doesnt load.

The correct one, the one that is known to work is sn9c102.

thanks

when I search for sn9c102 I get this:
openSUSE Software Portal
which suggests to me that driver is included as part of spca5xx

when I then go here: HCL/Web Cameras - openSUSE and then look for 0c45:602b here http://mxhaard.free.fr/spca5xx.html I can’t find your 0c45:602b, although there are MANY sn9c1xx based Cameras listed. I suppose you could try that, although its questionable it it will work.

I also searched here GSPCA V4L2 - Webcams but also had no luck getting a specific hit on the 0c45:602b, but again, I suppose you could try that.

Reference the page you linked to: project-status - microdia | Google Groups I do not see your camera listed. Hence I do not think that is any more likely to work than the spcaxx nor the gspca drivers I linked above.

If none of those work, then IMHO you are back to the approach you have been trying, which is custom compile, but I’m skeptical of that, since your camera is NOT listed there.

Hi.

Thanks for your colaboration.

I tested again with this driver. I installed it, but the driver is not yet on my system, so i checked what files does this package installs, and this is what i see on the install-manager

/lib/modules/2.6.31.5-0.1-desktop/updates
snd-bt87x.ko, snd-tea575x-tuner.ko

nothing else.

So the driver sn9c102 is not there.

Also. The driver sn9c102 IS what i need:
Please, search for de VID/PID 0c45:602b here:
http://www.kernel.org/doc/Documentation/video4linux/sn9c102.txt

I still cant get a driver which was previusly working… I hope that in the next kernel release they add this driver or i will have to switch back, or move to another distro :S

Also, another possibility would be to install a third party kernel including it…
The problem is to find one that includes this file.

Do you know a way to do a filename based search in the repositories with zypper ?
I cant find any way. Also none in internet.

Hi
Strange that it’s not built for your kernel, anyway it is present in
2.6.32, 2.6.34. If you have a look here, I’ve built the module for you
as a KMP;
http://software.opensuse.org/search?q=sn9c102+&baseproject=openSUSE%3A11.2&exclude_debuginfo=true
sn9c102-kmp-desktop-1.47pre49_2.6.31.5_0.1-2.1.{arch}.rpm


Cheers Malcolm °¿° (Linux Counter #276890)
SUSE Linux Enterprise Desktop 11 (x86_64) Kernel 2.6.32.12-0.7-default
up 3 days 22:34, 3 users, load average: 0.40, 0.15, 0.18
GPU GeForce 8600 GTS Silent - Driver Version: 195.36.31

Hi malcolmlewis

Thank you very much.

I downloaded the package that you maked and it worked perfectly.
I didnt tested thoose new kernels that you say, but if you say that the driver is included, then shouldn’t be any problems in future, i hope.

Its solved.

kryet thats great news.

malcolmlewis, well done! We are lucky to you have on our forum and as part of our Linux distribution community !

Hi
Your welcome :slight_smile: If/when you upgrade to the next release you should be
fine.


Cheers Malcolm °¿° (Linux Counter #276890)
SUSE Linux Enterprise Desktop 11 (x86_64) Kernel 2.6.32.12-0.7-default
up 4 days 14:14, 2 users, load average: 0.17, 0.08, 0.02
GPU GeForce 8600 GTS Silent - Driver Version: 256.35

Thanks for the compliment oldcpu :slight_smile: we do what we do to keep our users
happy :wink:


Cheers Malcolm °¿° (Linux Counter #276890)
SUSE Linux Enterprise Desktop 11 (x86_64) Kernel 2.6.32.12-0.7-default
up 4 days 15:39, 2 users, load average: 0.03, 0.04, 0.00
GPU GeForce 8600 GTS Silent - Driver Version: 256.35