Lorin Olivier’s GL860 driver

Lorin Olivier has created a kernel driver for his GL860 webcam. Lorin’s device is the 05e3:f191 variant, whereas mine is the more common 05e3:0503. There are differences between the devices that we don’t have much of a grasp on. The code we’ve written for each device is incompatible with the other, even though there are some protocol similarities.

Lorin reports that his driver works reasonably well with his device – it works with camorama, xawtv, ekiga, amsn, mplayer and xsane. He has also determined how to adjust various camera settings (luminosity, saturation, hue, sharpness, retrolighting, mirror effects, light source, AC power frequency).

Although Lorin doesn’t actually own an 0503 device, he’s attempted to implement support for it based on my earlier efforts. Given that I didn’t get very far, it probably doesn’t work that well. I haven’t had a chance to try it, but there’s no point me sitting on this any longer.

It’s in my git repository in the nvgl subdirectory:
git://projects.reactivated.net/~dsd/gl860.git (gitweb).

All credit goes to Lorin here – thanks! He’s done a great job, but do remember that its experimental code based on a reverse-engineered protocol, so don’t expect it to be flawless.

112 thoughts on “Lorin Olivier’s GL860 driver

  1. Nol

    No, you have at least 640×480 and 1280×960. According to the gl860.inf, you can do 1600×1280. No 800×600 eventually.

  2. almighurt

    that’s really weird, because the relog.c in version 0.2d’s tar.gz gives me only 640×480 and 1600×1080 pictures. i’ll try to capture some logs tomorrow, now it’s time for me to sleep. my neighbours finally calm down now after celebrating the victory of german soccer team over austria… :)

  3. almighurt

    p.s.: yes, it’s really 1600×1080 and NOT 1600×1280 it’s not a typo.

  4. almighurt

    Of course, but you won’t see much. Most of the image is white and black, just the upper part looks like there is something captured:
    http://michael-gerhaeuser.de/gl860/im003.png
    (converted to png, original bmp has about 5MB)

    And with sizes >= 640×480 there are only such pictures, nothing to see, mostly black, weird sizes (not only 1600×1080 but also 1600×1000, 1600×1002)

  5. Nol

    Don’t take these images into account.
    Relog try to find the width and height of an image with the approximate number of bytes received and with Height=4/3*Width. Then it keeps as width the nearest of 320, 640, 800, 1024, 1280 or 1600 and infers a new height. When there is no prefered width near enough, it keeps the former width.
    You have weird sizes because while making logs, there is too many data to log and USBSniff misses data, so you have smaller pictures than expected because image data were lost or bigger pictures because “end of image marker” were lost and the number of bytes received is that of 2 images or less depending on the data loss.

    If you have clean images in 1280×960, that is the webcam send 1280×960 images.

  6. nol

    @ Amighurt or Sur3

    Hello, I need to be sure about the settings of parameter which are not asked to the webcam by the driver. So could you make a log while changing the brightness from the minimum to the maximum after the brightness of the picture is steady (not during the start of the webcam when the lumonisity chnages). If in the images created by relog there is no change in brightness, no problem, if there is a
    change, i need the raw log (not processed with relog).
    Thanks

  7. root_42

    I tried compiling the GIT version, as the released version on sf.net, but i get (with 2.6.27-rc4) the following error:

    ~/compile/nvgl$ ./install
    *****************************************************************************
    1/8) [Kernel headers for current kernel installed]

    2/8) [Make is present]
    *****************************************************************************
    3/8) [No old module…] Nothing to do

    4/8) [Clean up from previous compilations]
    $ make -f Makefile.standalone clean
    make -C /lib/modules/2.6.27-rc4-wl/build SUBDIRS=/home/schmitz/compile/nvgl clean
    make[1]: Entering directory `/root/compile/wireless-testing’
    CLEAN /home/schmitz/compile/nvgl/.tmp_versions
    make[1]: Leaving directory `/root/compile/wireless-testing’
    *****************************************************************************
    5/8) [Source code generation…]
    6/8) [Compiling driver…]
    $ make -f Makefile.standalone
    make -C /lib/modules/2.6.27-rc4-wl/build SUBDIRS=/home/schmitz/compile/nvgl modules
    make[1]: Entering directory `/root/compile/wireless-testing’
    CC [M] /home/schmitz/compile/nvgl/gl860-usb.o
    /home/schmitz/compile/nvgl/gl860-usb.c: In function ‘usb_gl860_probe’:
    /home/schmitz/compile/nvgl/gl860-usb.c:755: error: implicit declaration of function ‘PAGE_ALIGN’
    make[2]: *** [/home/schmitz/compile/nvgl/gl860-usb.o] Fehler 1
    make[1]: *** [_module_/home/schmitz/compile/nvgl] Fehler 2
    make[1]: Leaving directory `/root/compile/wireless-testing’
    make: *** [driver] Fehler 2

    What do you make of that?

Comments are closed.