The drivers and an explanation of the current state here:
http://lsb.blogdns.net/ry5u870/
The devices of interest are custom OEM built-in webcams based on the Ricoh R5U870 USB webcam controller chip or something very similar. They report USB vendor ID 0x05CA, and may or may not report UVC interface descriptors. The Windows device drivers are named Mvc25u870.sys, 5U870CAP.sys, and newer UVC model filter drivers are named R5U870FLx86.sys.
Devices known to fit this description include:
| Device ID | Description | Support |
|---|---|---|
| 05ca:1830 | Sony VAIO SZ webcam, found in certain VAIO SZ machines that shipped with Windows XP. Known as "Sony Visual Communication Camera VGP-VCC2" |
Yes |
| 05ca:1832 | Sony VAIO UX webcam Known as "Sony Visual Communication Camera VGP-VCC3" This webcam apparently has two image sensors, although it can only use one sensor at a time. Information about the mechanism for selecting the active image sensor has not been collected, the Windows kernel driver for this camera does not appear to handle this function, and support for choosing between the image sensors is not present. |
Yes |
| 05ca:1833 | Sony VAIO AR webcam, found in certain VAIO AR machines that shipped with Windows XP. Known as "Sony Visual Communication Camera VGP-VCC2" Thanks to Steve Wood for pointing out this device and sending a sniffusb trace. |
Yes |
| 05ca:1834 | Sony VAIO AR webcam, found in certain VAIO AR machines that shipped with Windows XP. Known as "Sony Visual Communication Camera VGP-VCC2" Support for this device exists thanks to Benoît Canet, who independently reverse engineered the Windows driver for this camera and submitted appropriate patches. |
Yes |
| 05ca:1835 | Sony VAIO SZ webcam, found in certain VAIO SZ machines that shipped with Windows Vista. Known as "Sony Visual Communication Camera VGP-VCC5" This device is UVC compliant, although it must still have its microcode file uploaded before it can be used, and has a number of picture controls that are not reported through the UVC descriptor table. |
Yes |
| 05ca:1836 | Sony VAIO webcam, found in certain VAIO FE and VAIO AR machines that shipped with Windows Vista. Known as "Sony Visual Communication Camera VGP-VCC4" This device is similar to the above 1835 device, but requires a different microcode file. |
Yes |
| 05ca:1870 | HP Pavilion built-in webcam There are two distinct models with the same device IDs:
Both devices are supported by the current version of the driver. |
Yes |
| 05ca:1810 | HP Pavilion built-in webcam (UVC, 1.3MP resolution) Known as "HP Pavilion Webcam" This device is very similar to the above 05ca:1870 "HP Pavilion Webcam" device, but partly complies with the UVC driver model. A firmware upgrade is available from HP for the non-dv1000 05ca:1870 device, as part of their Windows Vista migration package, which converts that 05ca:1870 device into an 05ca:1810 device. The entire upgrade process appears to rewrite the USB descriptor table present on the device, and nothing else. |
Yes |
tar xzf ry5u870-0.8.0.tgz # or upper version
cd ry5u870-0.8.0 # or upper version
make # you may need to have the linux-headers package installed
sudo make install
###
ekiga needs to set it up as V4L2
Some comments:
- couldn't get the webcam to work with wengophone: when testing it, the green led blinks, but I get no image.
- some people have the 0x1870 device instead of the 0x1830, and the driver it's not working for them.
- xawtv may not work if you are using the Nvidia graphic card.
- add the VIDEO_BUF module to your kernel, if not there.
- remove debugging lines 1748 to 1761in usbcam.c to remove the confused missing symbol messages.
- try effectv (sudo apt-get install effectv) Matrix and Nervous (up/down keys) effects... hilarious!!!
###
###
###
###
old camera notes follow:
Results of running http://www.microsoft.com/whdc/device/stream/vidcap/UVCView.mspx
---===>Device Information<===---
ConnectionStatus:
Current Config Value: 0x01 -> Device Bus Speed: High
Device Address: 0x02
Open Pipes: 2
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x81 -> Direction: IN - EndpointID: 1
bmAttributes: 0x03 -> Interrupt Transfer Type
wMaxPacketSize: 0x0040 = 1 transactions per microframe, 0x40 max bytes
bInterval: 0x01
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x86 -> Direction: IN - EndpointID: 6
bmAttributes: 0x01 -> Isochronous Transfer Type
Synchronization Type = No Synchronization
Bulk Transfer Type
wMaxPacketSize: 0x0000 = 1 transactions per microframe, 0x00 max bytes
bInterval: 0x01
===>Device Descriptor<===
bLength: 0x12
bDescriptorType: 0x01
bcdUSB: 0x0200
bDeviceClass: 0x00 -> This is an Interface Class Defined Device
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x40 = (64) Bytes
idVendor: 0x05CA = Ricoh Company Ltd.
idProduct: 0x1830
bcdDevice: 0x0100
iManufacturer: 0x00
iProduct: 0x00
iSerialNumber: 0x00
bNumConfigurations: 0x01
===>Configuration Descriptor<===
bLength: 0x09
bDescriptorType: 0x02
wTotalLength: 0x004E -> Validated
bNumInterfaces: 0x01
bConfigurationValue: 0x01
iConfiguration: 0x00
bmAttributes: 0x80 -> Bus Powered
MaxPower: 0x32 = 100 mA
===>Interface Descriptor<===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x00
bAlternateSetting: 0x00
bNumEndpoints: 0x02
bInterfaceClass: 0x06 -> This is a Power USB Device Interface Class (This may be obsolete)
bInterfaceSubClass: 0x00
bInterfaceProtocol: 0x00
CAUTION: This may be an invalid bInterfaceProtocol
iInterface: 0x00
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x81 -> Direction: IN - EndpointID: 1
bmAttributes: 0x03 -> Interrupt Transfer Type
wMaxPacketSize: 0x0040 = 1 transactions per microframe, 0x40 max bytes
bInterval: 0x01
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x86 -> Direction: IN - EndpointID: 6
bmAttributes: 0x01 -> Isochronous Transfer Type
Synchronization Type = No Synchronization
Bulk Transfer Type
wMaxPacketSize: 0x0000 = 1 transactions per microframe, 0x00 max bytes
bInterval: 0x01
===>Interface Descriptor<===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x00
bAlternateSetting: 0x01
bNumEndpoints: 0x02
bInterfaceClass: 0x06 -> This is a Power USB Device Interface Class (This may be obsolete)
bInterfaceSubClass: 0x00
bInterfaceProtocol: 0x00
CAUTION: This may be an invalid bInterfaceProtocol
iInterface: 0x00
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x81 -> Direction: IN - EndpointID: 1
bmAttributes: 0x03 -> Interrupt Transfer Type
wMaxPacketSize: 0x0040 = 1 transactions per microframe, 0x40 max bytes
bInterval: 0x01
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x86 -> Direction: IN - EndpointID: 6
bmAttributes: 0x01 -> Isochronous Transfer Type
Synchronization Type = No Synchronization
Bulk Transfer Type
wMaxPacketSize: 0x0C00 = 2 transactions per microframe, 0x00 max bytes
bInterval: 0x01
===>Interface Descriptor<===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x00
bAlternateSetting: 0x02
bNumEndpoints: 0x02
bInterfaceClass: 0x06 -> This is a Power USB Device Interface Class (This may be obsolete)
bInterfaceSubClass: 0x00
bInterfaceProtocol: 0x00
CAUTION: This may be an invalid bInterfaceProtocol
iInterface: 0x00
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x81 -> Direction: IN - EndpointID: 1
bmAttributes: 0x03 -> Interrupt Transfer Type
wMaxPacketSize: 0x0040 = 1 transactions per microframe, 0x40 max bytes
bInterval: 0x01
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x86 -> Direction: IN - EndpointID: 6
bmAttributes: 0x01 -> Isochronous Transfer Type
Synchronization Type = No Synchronization
Bulk Transfer Type
wMaxPacketSize: 0x1400 = 3 transactions per microframe, 0x00 max bytes
bInterval: 0x01
more stuff:
http://linuxtv.org/v4lwiki/index.php/USBVideo
UPDATE 20061031: about the letter to be sent to Ricoh
The SZ owners have been meaning to send a letter to Ricoh for quite a while, but we are still dubious about how to do it. Ideally, We would like people who are strongly acknowledged in the Open Source community to sign it, so that Ricoh takes the request seriously. I tried to contact the OSDL, but didn't receive any answer. I have many names in mind, but I don't know how feasible is to have them do it. Obviously, Linus is a very busy man, and so is Richard Stallman. Mark Shuttleworth? Alan Cox? Greg Kroah-Hartman is probably my best candidate, but I don't know how does his email inbox looks like on a given day... Also having EmperorLinux people to sign would be really important (waiting for an answer).
The second part is to hook up the documentation to a USB linux kernel programmer willing to spend a bit of time on it. M.N. is keen on doing that. Anyone else?
Examples of letters:
[a bit harsh] http://marc.theaimsgroup.com/?l=openbsd-misc&m=109880902230242
Hi reader, if you happen to have information regarding this topic, please email me!!
This is what an "lshal" looks like:
udi = '/org/freedesktop/Hal/devices/usb_device_5ca_1830_noserial_if0'
info.udi = '/org/freedesktop/Hal/devices/usb_device_5ca_1830_noserial_if0' (string)
linux.subsystem = 'usb' (string)
linux.hotplug_type = 1 (0x1) (int)
info.product = 'USB Imaging Interface' (string)
usb.interface.protocol = 0 (0x0) (int)
usb.interface.subclass = 0 (0x0) (int)
usb.interface.class = 6 (0x6) (int)
usb.interface.number = 0 (0x0) (int)
usb.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.0' (string)
usb.configuration_value = 1 (0x1) (int)
usb.num_configurations = 1 (0x1) (int)
usb.num_interfaces = 1 (0x1) (int)
usb.device_class = 0 (0x0) (int)
usb.device_subclass = 0 (0x0) (int)
usb.device_protocol = 0 (0x0) (int)
usb.vendor_id = 1482 (0x5ca) (int)
usb.product_id = 6192 (0x1830) (int)
usb.vendor = 'Ricoh Co., Ltd' (string)
usb.product = 'USB Imaging Interface' (string)
usb.device_revision_bcd = 256 (0x100) (int)
usb.max_power = 100 (0x64) (int)
usb.num_ports = 0 (0x0) (int)
usb.linux.device_number = 4 (0x4) (int)
usb.speed_bcd = 294912 (0x48000) (int)
usb.version_bcd = 512 (0x200) (int)
usb.is_self_powered = false (bool)
usb.can_wake_up = false (bool)
usb.bus_number = 5 (0x5) (int)
info.bus = 'usb' (string)
info.parent = '/org/freedesktop/Hal/devices/usb_device_5ca_1830_noserial' (string)
linux.sysfs_path_device = '/sys/devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.0' (string)
linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.0' (string)
UPDATE 20060912:
https://lists.berlios.de/pipermail/linux-uvc-devel/2006-September/thread.html
wget -b http://mesh.dl.sourceforge.net/sourceforge/linux-usb/usbutils-0.72.tar.gz
tar xzf usbutils-0.72.tar.gz
cd usbutils-0.72/
./configure
wget -b http://mesh.dl.sourceforge.net/sourceforge/libusb/libusb-0.1.12.tar.gz
tar xzf libusb-0.1.12.tar.gz
cd libusb-0.1.12/
./configure
make
find -name "*.la"
sudo make install
cd ../usbutils-0.72/
./configure
make
./lsusb -v
./lsusb -v > lsusb.v.log
./lsusb > lsusb.log
----
env LANG=C gphoto2 --debug --auto-detect --capture-image 1> gphoto2.1.log 2> gphoto2.2.log
Any gphoto2 expert?
----
> > not UVC compliant. The USB descriptors report an imaging class device
> > (still image capture). Are you sure that the device is one of those you
> > mentionned in your previous e-mail ? Could you try and see if gPhoto2
> > recognizes your camera ?
>
> The MS Windows drivers have the 5U870 id scattered in this file (attached):
>
> ./windows_drivers/Drivers/Camera/VGP-VCC2/Mvc25U870.inf
>
> and the device is advertised as UVC compliant in Ricoh's website. Not
> sure it it is version 1 or 2, though.
afraid it seems your device is not UVC compliant.
> I installed gphoto2 and did this:
>
> avilella@magneto:~/sonyvaio/camera$ gphoto2 --auto-detect
> Model Port
> ----------------------------------------------------------
> USB PTP Class Camera usb:
> USB PTP Class Camera usb:002,004
>
> What would that mean?
probably means that Ricoh, in their infinite wisdom, decided that a still
image capture interface was the way to go for a webcam device, and wrote a
Windows driver to emulate a video device from something that looks like a
digital camera to the computer.
Try to play with gPhoto2 and see if you can take a picture. There are probably
GUI applications based on libgphoto2, you might find that easier.
----
MS driver has some indications this device is the 5U870, but
doesn't seem to clarify which one it is. From the website, the
only difference I can see between both is that one has a "blue"
LED, and the other is "red" and is a GPIO device:
http://www.ricoh.com/LSI/product_pcif/usb/5u870_v001/
http://www.ricoh.com/LSI/product_pcif/usb/5u870_v002/
Apparently, the "U" stands for UVC, which is good news (compliant
with Video Class 1.1 in USB Device Class).
http://www.usb.org/developers/devclass_docs
Someone with good knowledge about uvc?
-----
This was a totally blind test, basically triggered by Ronald's blog post:
http://blogs.gnome.org/view/rbultje/2006/07/08/0
(on a side note: it is amazing how similar are the MacBooks and the Sony Vaio in terms of the hardware)
and
http://www.ubuntuforums.org/showthread.php?t=194793&page=2
http://svn.berlios.de/svnroot/repos/linux-uvc/linux-uvc/trunk/
509 cd UVC/
510 ls
515 sudo apt-get install linux-headers-`uname -r`
516 make
517 sudo make install
/home/avilella/sonyvaio/camera/luvcview/luvcview-20060207
539 sudo apt-get install libsdl1.2-dev
make
./luvcview
uvcview verion 0.1.4
Video driver: x11
A window manager is available
video /dev/video0
ERROR opening V4L interface
: No such file or directory
-----
M.N. reports that using VMWare and a Windows image won't help, as the camera requires a USB 2.0 host.
-----
M.N. suggests using a USB protocol sniffer in Windows to see what sort of device is this.
-----
J.L. reports that the HP pavilion dv2011 laptop also has this device:
http://h10025.www1.hp.com/ewfrf/wc/softwareList?os=228&lc=en&cc=us&product=3191050&jumpid=reg_R1002_USEN&dlc=en
and indeed the windows drivers seem almost identical