CHICONY WEBCAM USERS read this
I think we are looking at the wrong place. At least for chicony cameras. This is the deal. I have one of those viewsonic 22 inch monitors with the built in webcams. This thing works, Plug and play. I have a Gateway Laptop with a built in camera, this one doesn't work unless I use camtwist. This solution sort of okey, but there is one small problem. It introduces a 2-4 second lag on the video. Still from this I conclude that my camera CAN work in Leopard, and it is just a small detail that is keeping me from making it work. So why am I so excited? Continue reading.
I started comparing the working webcam from my viewsonic monitor, and my gateway laptop camera. Guess what they are basically the same chicony camera. Both of them are chicony Id Vendor "1226" or "0x042f" both have the same stats basically the only difference is the Product id Number: "45095" or "0xb027" for the gateway and "45089" or "0xb021" for the viewsonic. Usually such a small difference in id numbers means they are practically the same thing and the same driver. The only other difference is the bcdDevice number "37668" for gateway "852" for the viewsonic.
In other things I have hacked in Leopard to make things work, I basically go for the driver, modify the Ids to make them work, and presto I get a working device. Here is where I have hit a snag. According to ioreg, the drivers that are making the web cam work in the viewsonic are IOUSBCompositeDrvier.kext which is part of the the IOUSBFamily.kext and IOUSBLIb.bundle which is also under the IOUSBFamily.kext. The IOUSBCompositeDriver.kext has the correct ids. The problem is that the IOUSBLib.bundle has no ids to move or fix.
I feel I am so close to this, but I have hit a wall. Anyone know the difference between a bundle and a kext, and how would one go to modify ids on it. I am pretty sure this is the place to look at, at least for chicony (which is a large amount of the webcams in laptops)
Here are the relevant parts of the IOreg, to see if some one can make sense out of it.
For the working Viewsonic webcam
| | | +-o ViewSonic 1.3M, USB2.0 Webcam@fa200000 <class IOUSBDevice, registered, matched, active, busy 0, retain 9>
| | | | {
| | | | "PortNum" = 2
| | | | "Bus Power Available" = 250
| | | | "bNumConfigurations" = 1
| | | | "Device Speed" = 2
| | | | "sessionID" = 294705983020785
| | | | "USB Product Name" = "ViewSonic 1.3M, USB2.0 Webcam"
| | | | "bcdDevice" = 852
| | | | "locationID" = 18446744073610985472
| | | | "USB Vendor Name" = "Chicony Electronics Co., Ltd."
| | | | "USB Address" = 2
| | | | "idProduct" = 45089
| | | | "iProduct" = 1
| | | | "bDeviceProtocol" = 1
| | | | "iManufacturer" = 2
| | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| | | | "bDeviceClass" = 239
| | | | "iSerialNumber" = 3
| | | | "bMaxPacketSize0" = 64
| | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
| | | | "bDeviceSubClass" = 2
| | | | "IOGeneralInterest" = "IOCommand is not serializable"
| | | | "idVendor" = 1266
| | | | "USB Serial Number" = "SN0001"
| | | | }
| | | |
| | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, !registered, !matched, active, busy 0, retain 4>
| | | | {
| | | | "IOProviderClass" = "IOUSBDevice"
| | | | "IOProbeScore" = 60000
| | | | "bDeviceProtocol" = 1
| | | | "CFBundleIdentifier" = "com.apple.driver.AppleUSBComposite"
| | | | "bDeviceClass" = 239
| | | | "IOMatchCategory" = "IODefaultMatchCategory"
| | | | "bDeviceSubClass" = 2
| | | | "IOClass" = "IOUSBCompositeDriver"
| | | | }
| | | |
| | | +-o ViewSonic 1.3M, USB2.0 Webcam@0 <class IOUSBInterface, registered, matched, active, busy 0, retain 5>
| | | | {
| | | | "bInterfaceProtocol" = 0
| | | | "locationID" = 18446744073610985472
| | | | "bcdDevice" = 852
| | | | "bConfigurationValue" = 1
| | | | "iInterface" = 1
| | | | "idProduct" = 45089
| | | | "IOCFPlugInTypes" = {"2d9786c6-9ef3-11d4-ad51-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| | | | "bInterfaceSubClass" = 1
| | | | "bAlternateSetting" = 0
| | | | "IOUserClientClass" = "IOUSBInterfaceUserClientV2"
| | | | "bInterfaceClass" = 14
| | | | "bInterfaceNumber" = 0
| | | | "bNumEndpoints" = 1
| | | | "idVendor" = 1266
| | | | }
| | | |
| | | +-o IOUSBInterface@1 <class IOUSBInterface, registered, matched, active, busy 0, retain 5>
| | | {
| | | "bInterfaceProtocol" = 0
| | | "locationID" = 18446744073610985472
| | | "bcdDevice" = 852
| | | "bConfigurationValue" = 1
| | | "iInterface" = 0
| | | "idProduct" = 45089
| | | "IOCFPlugInTypes" = {"2d9786c6-9ef3-11d4-ad51-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| | | "bInterfaceSubClass" = 2
| | | "bAlternateSetting" = 0
| | | "IOUserClientClass" = "IOUSBInterfaceUserClientV2"
| | | "bInterfaceClass" = 14
| | | "bInterfaceNumber" = 1
| | | "bNumEndpoints" = 0
| | | "idVendor" = 1266
| | | }
For the none working Gateway laptop Webcam
| | | | +-o Gateway USB 2.0 Webcam@fa300000 <class IOUSBDevice, registered, matched, active, busy 0, retain 9>
| | | | | {
| | | | | "bNumConfigurations" = 1
| | | | | "sessionID" = 28830128290301
| | | | | "bcdDevice" = 37668
| | | | | "USB Address" = 2
| | | | | "iProduct" = 1
| | | | | "bDeviceClass" = 239
| | | | | "bMaxPacketSize0" = 64
| | | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
| | | | | "idVendor" = 1266
| | | | | "PortNum" = 3
| | | | | "Bus Power Available" = 250
| | | | | "Device Speed" = 2
| | | | | "USB Product Name" = "Gateway USB 2.0 Webcam"
| | | | | "Requested Power" = 250
| | | | | "locationID" = 18446744073612034048
| | | | | "USB Vendor Name" = "Chicony Electronics Co., Ltd."
| | | | | "idProduct" = 45095
| | | | | "bDeviceProtocol" = 1
| | | | | "iManufacturer" = 2
| | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| | | | | "iSerialNumber" = 3
| | | | | "IOGeneralInterest" = "IOCommand is not serializable"
| | | | | "bDeviceSubClass" = 2
| | | | | "Low Power Displayed" = No
| | | | | "USB Serial Number" = "SN0001"
| | | | | }
| | | | |
| | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, !registered, !matched, active, busy 0, retain 4>
| | | | | {
| | | | | "IOProviderClass" = "IOUSBDevice"
| | | | | "IOProbeScore" = 60000
| | | | | "bDeviceProtocol" = 1
| | | | | "CFBundleIdentifier" = "com.apple.driver.AppleUSBComposite"
| | | | | "bDeviceClass" = 239
| | | | | "IOMatchCategory" = "IODefaultMatchCategory"
| | | | | "bDeviceSubClass" = 2
| | | | | "IOClass" = "IOUSBCompositeDriver"
| | | | | }
| | | | |
| | | | +-o Gateway USB 2.0 Webcam@0 <class IOUSBInterface, registered, matched, active, busy 0, retain 5>
| | | | | {
| | | | | "IOUserClientCrossEndianCompatible" = No
| | | | | "bInterfaceProtocol" = 0
| | | | | "bcdDevice" = 37668
| | | | | "locationID" = 18446744073612034048
| | | | | "bConfigurationValue" = 1
| | | | | "iInterface" = 1
| | | | | "idProduct" = 45095
| | | | | "IOCFPlugInTypes" = {"2d9786c6-9ef3-11d4-ad51-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| | | | | "bInterfaceSubClass" = 1
| | | | | "bAlternateSetting" = 0
| | | | | "IOUserClientClass" = "IOUSBInterfaceUserClientV2"
| | | | | "IOGeneralInterest" = "IOCommand is not serializable"
| | | | | "USB Interface Name" = "Gateway USB 2.0 Webcam"
| | | | | "bInterfaceClass" = 14
| | | | | "bInterfaceNumber" = 0
| | | | | "bNumEndpoints" = 1
| | | | | "idVendor" = 1266
| | | | | }
| | | | |
Here is hoping for someone that can make sense of this, we are closer than we think.