# [SOLVED] Thinkpad t61 internal usb camera

## johnny99

Has anyone activated the Thinkpad t61 internal usb camera?

This site http://www.linux-usb.org/ibmcam/ lists several vendor ID's

for Chicony Electronics Co., Ltd., but not the vendor ID of this camera.

lsusb shows

```
Bus 002 Device 002: ID 17ef:1004

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               2.00

  bDeviceClass          239 Miscellaneous Device

  bDeviceSubClass         2 Common Class

  bDeviceProtocol         1 Interface Association

  bMaxPacketSize0        64

  idVendor           0x17ef

  idProduct          0x1004

  bcdDevice            3.20

  iManufacturer           2 Chicony Electronics Co., Ltd.

  iProduct                1 Integrated Camera

  iSerial                 3 SN0001

  bNumConfigurations      1

  Configuration Descriptor:

    bLength                 9

    bDescriptorType         2

    wTotalLength          588

    bNumInterfaces          2

    bConfigurationValue     1

    iConfiguration          0

    bmAttributes         0x80

    MaxPower              500mA

    UNRECOGNIZED:  08 0b 00 02 0e 03 00 01

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        0

      bAlternateSetting       0

      bNumEndpoints           1

      bInterfaceClass        14 Video

      bInterfaceSubClass      1 Video Control

      bInterfaceProtocol      0

      iInterface              1 Integrated Camera

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x83  EP 3 IN

        bmAttributes            3

          Transfer Type            Interrupt

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0010  1x 16 bytes

        bInterval               6

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       0

      bNumEndpoints           0

      bInterfaceClass        14 Video

      bInterfaceSubClass      2 Video Streaming

      bInterfaceProtocol      0

      iInterface              0

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       1

      bNumEndpoints           1

      bInterfaceClass        14 Video

      bInterfaceSubClass      2 Video Streaming

      bInterfaceProtocol      0

      iInterface              0

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            5

          Transfer Type            Isochronous

          Synch Type               Asynchronous

          Usage Type               Data

        wMaxPacketSize     0x0080  1x 128 bytes

        bInterval               1

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       2

      bNumEndpoints           1

      bInterfaceClass        14 Video

      bInterfaceSubClass      2 Video Streaming

      bInterfaceProtocol      0

      iInterface              0

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            5

          Transfer Type            Isochronous

          Synch Type               Asynchronous

          Usage Type               Data

        wMaxPacketSize     0x0100  1x 256 bytes

        bInterval               1

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       3

      bNumEndpoints           1

      bInterfaceClass        14 Video

      bInterfaceSubClass      2 Video Streaming

      bInterfaceProtocol      0

      iInterface              0

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            5

          Transfer Type            Isochronous

          Synch Type               Asynchronous

          Usage Type               Data

        wMaxPacketSize     0x0320  1x 800 bytes

        bInterval               1

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       4

      bNumEndpoints           1

      bInterfaceClass        14 Video

      bInterfaceSubClass      2 Video Streaming

      bInterfaceProtocol      0

      iInterface              0

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            5

          Transfer Type            Isochronous

          Synch Type               Asynchronous

          Usage Type               Data

        wMaxPacketSize     0x0b20  2x 800 bytes

        bInterval               1

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       5

      bNumEndpoints           1

      bInterfaceClass        14 Video

      bInterfaceSubClass      2 Video Streaming

      bInterfaceProtocol      0

      iInterface              0

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            5

          Transfer Type            Isochronous

          Synch Type               Asynchronous

          Usage Type               Data

        wMaxPacketSize     0x1320  3x 800 bytes

        bInterval               1

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       6

      bNumEndpoints           1

      bInterfaceClass        14 Video

      bInterfaceSubClass      2 Video Streaming

      bInterfaceProtocol      0

      iInterface              0

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            5

          Transfer Type            Isochronous

          Synch Type               Asynchronous

          Usage Type               Data

        wMaxPacketSize     0x13e8  3x 1000 bytes

        bInterval               1
```

eix -I usbutils

```
[I] sys-apps/usbutils

     Available versions:  0.71-r1 ~0.72-r4

     Installed versions:  0.71-r1(08:49:32 AM 06/26/2007)

     Homepage:            http://linux-usb.sourceforge.net/

     Description:         USB enumeration utilities
```

Last edited by johnny99 on Wed Jul 04, 2007 5:37 am; edited 1 time in total

----------

## didymos

Different manufacturer, different driver.  IBM just rebrands stuff from different manufacturers, and I can't figure out which model of Chicony webcam this corresponds to.  The ibmcam driver is for Xirlink-based devices. It is a UVC cam, however, so try the generic media-video/linux-uvc driver.

----------

## johnny99

 *didymos wrote:*   

> Different manufacturer, different driver.  IBM just rebrands stuff from different manufacturers, and I can't figure out which model of Chicony webcam this corresponds to.  The ibmcam driver is for Xirlink-based devices. It is a UVC cam, however, so try the generic media-video/linux-uvc driver.

 

Thank you!  That driver seems to work.

I installed the media-video/linux-uvc driver and loaded the driver.  

emerge linux-uvc

echo 'uvcvideo' >> /etc/modules.autoload.d/kernel-2.6

update-modules

modprobe  uvcvideo

Here is more info about the camera.

udevinfo -n /dev/video0 -q all

```
P: /class/video4linux/video0

N: v4l/video0

S: video0

E: IN_HOTPLUG=1
```

udevinfo -a -p /class/video4linux/video0

```
Udevinfo starts with the device specified by the devpath and then

walks up the chain of parent devices. It prints for every device

found, all possible attributes in the udev rules key format.

A rule to match, can be composed by the attributes of the device

and the attributes from one single parent device.

  looking at device '/class/video4linux/video0':

    KERNEL=="video0"

    SUBSYSTEM=="video4linux"

    DRIVER==""

    ATTR{name}=="USB Video Class"

    ATTR{dev}=="81:0"

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-5':

    KERNELS=="2-5"

    SUBSYSTEMS=="usb"

    DRIVERS=="usb"

    ATTRS{serial}=="SN0001"

    ATTRS{product}=="Integrated Camera"

    ATTRS{manufacturer}=="Chicony Electronics Co., Ltd."

    ATTRS{maxchild}=="0"

    ATTRS{version}==" 2.00"

    ATTRS{devnum}=="2"

    ATTRS{speed}=="480"

    ATTRS{bMaxPacketSize0}=="64"

    ATTRS{bNumConfigurations}=="1"

    ATTRS{bDeviceProtocol}=="01"

    ATTRS{bDeviceSubClass}=="02"

    ATTRS{bDeviceClass}=="ef"

    ATTRS{bcdDevice}=="0320"

    ATTRS{idProduct}=="1004"

    ATTRS{idVendor}=="17ef"

    ATTRS{bMaxPower}=="500mA"

    ATTRS{bmAttributes}=="80"

    ATTRS{bConfigurationValue}=="1"

    ATTRS{bNumInterfaces}==" 2"

    ATTRS{configuration}==""

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2':

    KERNELS=="usb2"

    SUBSYSTEMS=="usb"

    DRIVERS=="usb"

    ATTRS{serial}=="0000:00:1d.7"

    ATTRS{product}=="EHCI Host Controller"

    ATTRS{manufacturer}=="Linux 2.6.20-gentoo-r8 ehci_hcd"

    ATTRS{maxchild}=="6"

    ATTRS{version}==" 2.00"

    ATTRS{devnum}=="1"

    ATTRS{speed}=="480"

    ATTRS{bMaxPacketSize0}=="64"

    ATTRS{bNumConfigurations}=="1"

    ATTRS{bDeviceProtocol}=="01"

    ATTRS{bDeviceSubClass}=="00"

    ATTRS{bDeviceClass}=="09"

    ATTRS{bcdDevice}=="0206"

    ATTRS{idProduct}=="0000"

    ATTRS{idVendor}=="0000"

    ATTRS{bMaxPower}=="  0mA"

    ATTRS{bmAttributes}=="e0"

    ATTRS{bConfigurationValue}=="1"

    ATTRS{bNumInterfaces}==" 1"

    ATTRS{configuration}==""

  looking at parent device '/devices/pci0000:00/0000:00:1d.7':

    KERNELS=="0000:00:1d.7"

    SUBSYSTEMS=="pci"

    DRIVERS=="ehci_hcd"

    ATTRS{msi_bus}==""

    ATTRS{broken_parity_status}=="0"

    ATTRS{enable}=="1"

    ATTRS{modalias}=="pci:v00008086d00002836sv000017AAsd000020ABbc0Csc03i20"

    ATTRS{local_cpus}=="ffffffff"

    ATTRS{irq}=="11"

    ATTRS{class}=="0x0c0320"

    ATTRS{subsystem_device}=="0x20ab"

    ATTRS{subsystem_vendor}=="0x17aa"

    ATTRS{device}=="0x2836"

    ATTRS{vendor}=="0x8086"

  looking at parent device '/devices/pci0000:00':

    KERNELS=="pci0000:00"

    SUBSYSTEMS==""

    DRIVERS==""
```

I installed Ekiga, set it to use v4l2, and when I activated the camera the green light turned on and I can see my self. Yay!

I found the advice from https://forums.gentoo.org/viewtopic-t-429502-highlight-v4lconf+dga.html

Now I need to find applications that will work with it.

Apps that haven't worked: webcam, xawtv, gtkam, and mplayer.

But, I asked to get this camera working, and it does. 

Marking as solved

----------

## Alien_Freak

Ekiga works with this cam.

www.ekiga.org, also known as gnome meeting.

Make sure you used V4L2, and I have a working vid cam.  

though quality is pretty shabby, not sure if it's a linux thing or the camera overall

--

Freak

----------

## wbecker

I got mplayer working on a thinkpad t61 (i think its the same cam) with this command:

mplayer -tv driver=v4l2:width=320:height=240:device=/dev/video0 -fps 25 tv://

Been working on this for a week! Now to get the fingerprint scanner going...

----------

## fivestars

Good post , it is useful to me this time , my friend seems to have the silimar problem.

----------

## johnny99

Update usb camera 

ebuild media-video/linux-uvc no longer works with kernel >=2.6.34-gentoo.

The driver uvcvideo.ko appears to be built into the kernel, but I can't get it working.

Kernel Configure change:

```
Device Drivers  --->

    Multimedia devices  --->

      [*] Video For Linux  --->

        [*] Video capture adapters  --->

            [*] V4L USB devices  --->

                <M>   USB Video Class (UVC)
```

place in my autoloading module:

```
echo 'uvcvideo' >> /etc/modules.autoload.d/kernel-2.6
```

dmesg shows:

```
usbcore: registered new interface driver uvcvideo

USB Video Class driver (v0.1.0)

hdaps: inverting axis (3) readings.

hdaps: LENOVO ThinkPad T61 detected.

input: hdaps as /devices/platform/hdaps/input/input9

hdaps: driver successfully loaded.
```

lsmod |grep uvcvideo

```
uvcvideo               44263  0

usbcore                93821  11 cdc_acm,moto_modem,usbserial,uvcvideo,usbhid,ohci_hcd,uhci_hcd,usb_storage,usb_libusual,ehci_hcd
```

lsusb

```
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
```

udevadm info --path=/sys/devices/platform/hdaps/input/input9 --query=all

```
P: /devices/platform/hdaps/input/input9

E: UDEV_LOG=3

E: DEVPATH=/devices/platform/hdaps/input/input9

E: PRODUCT=10/0/0/0

E: NAME="hdaps"

E: PHYS="isa1600/input0"

E: EV==9

E: ABS==3

E: MODALIAS=input:b0010v0000p0000e0000-e0,3,kra0,1,mlsfw

E: SUBSYSTEM=input
```

The only thing I can find in /dev is 

/dev/input/event9

This doesn't look like the same device as it used to.

----------

## johnny99

I still don't have a solution for 2.6.36 or 2.6.37 kernel.

The uvc project (http://www.ideasonboard.org/uvc/#documentation ) implement Video4Linux 2 (V4L2) API, and "Supported Devices" lists 17ef:1004, and Linux 2.6.26 and newer kernels includes the Linux UVC driver natively, but I still don't having it working.  They also say UVC-specific parts of the driver API are documented in the Linux kernel tree starting at version 2.6.38

in Documentation/video4linux/uvcvideo.txt, and the old v4L1 support will be dropped in 3.6.39 kernel.

----------

## johnny99

Found the problem.  I removed the bezel shroud around the LCD, to find the board that holds the camera (and connects to the bluetooth card) had a bubbled/fried surface mount chip.  The machine is out of warranty, but I found a replacement on line.  During one of the trips to the thinkpad repair center, a technician ran the metal bar that operates the latches (to open the laptop), ran the bar over the top of the board, which probably shorted something.  When both blutooth and camera died, and I opened the screen, it all made sense.

----------

