FreeBSD cx88 Wiki
Welcome to the FreeBSD cx88 Wiki!
This is a wiki for info on the new "cx88" video capture driver for FreeBSD. This driver shares its name and some supported hardware with the Linux cx88 driver, but uses a very different architecture and does not reuse any of the Linux driver's code.
Overview
cx88 is a package that provides kernel drivers and a simple capture application for video/audio capture cards based on the Conexant CX2388x family of PCI bridge chips.
What's a CX2388x?
The Conexant CX2388x is a series of what I informally call "multimedia bridge" chips. A multimedia bridge chip is responsible for providing an interface between a host data bus (e.g. PCI, PCI-express, USB, etc.) and a "frontend" for receiving audio or video signals. Frontends typically consist of a series of highly specialized pieces of silicon, such as RF tuner chips or digital TV demodulator chips. The bridge chip must provide a bus (typically I2C) for controlling frontend devices and expose functions for controlling the transfer of audio/video data across the host bus. Depending on the application, the bridge chip may also expose specialized functions for controlling the reception and decoding of the A/V signals.
Multimedia bridge chips are typically sold to A/V capture card vendors, who integrate those chips with a frontend package of their choice. Therefore, it is often the case that two different capture cards made by completely different companies will utilize the same bridge chip and differ only in their frontend configuration.
Supported Chips
The CX2388x family contains several iterations. The cx88 kernel drivers currently generically recognize any capture card based on the CX23880/1/2/3 flavors, as well as the newer CX23885/7/8 PCI-express chips.
Supported Operating Systems
The cx88 driver supports FreeBSD version 8.3 and later. The driver is actively tested and maintained against the FreeBSD 9-STABLE and 10-CURRENT branches. Snapshots of the driver prior to 20071215 were built against FreeBSD 6.2, and versions prior to 1.4.6 also supported FreeBSD 7.x.
Supported Architectures
The cx88 driver is known to work on i386 and amd64. It is intended to be machine-independent and should thus work on other architectures supported by FreeBSD, but AFAIK it hasn't been used outside of i386/amd64. Again, please let me know if you encounter problems with the driver on another architecture and I'll work to resolve them.
Driver Overview
Ideas
Contributors
- The Infrared Remote driver (cx88ir) was written by Richard Airlie.
- Konstantin Dimitrov has added support for numerous cards, and has contributed much of the research and code for CX23885/7/8 support.
Announcements
- [2009/06/16] cx88 v1.1.0 and earlier has a bug that can cause a kernel panic when using userspace buffers on 64-bit/PAE machines
- with more than 4GB of RAM. In particular, this affects analog video captures using the cx88 capture app. MPEG and analog audio captures are unaffected. The fix for this is in the SVN repo, and will be pushed to ports shortly.
- [2009/06/22] cx88 v1.2.0 is now in ports, including the above fix and MPEG support for CX23885/7/8-based PCIe cards.
- [2009/09/17] cx88 v1.2.1 is now in ports, including support for the DViCO Fusion 7 Dual Express and a PID filter in the capture app.
- [2010/01/14] The cx88 build is broken on 8-STABLE and 9-CURRENT because it attempts to use the newbus_x[un]lock() functions which were
- pulled just prior to 8.0-RELEASE. You may safely edit cx88_i2c.c to remove the calls to these functions and instead lock/unlock Giant. The newbus locking functions are supposed to be returning shortly, so hopefully I can get a fix out Really Soon Now.
In the meantime, pre-release port buildfiles for cx88 1.2.2 are available here. You can just copy them to /usr/ports/multimedia/cx88 and build/upgrade as a normal port--should build on all -CURRENT and -STABLE.
- pulled just prior to 8.0-RELEASE. You may safely edit cx88_i2c.c to remove the calls to these functions and instead lock/unlock Giant. The newbus locking functions are supposed to be returning shortly, so hopefully I can get a fix out Really Soon Now.
- [2010/04/25] cx88 v1.2.2 is now in ports, including a fix for the above build issue.
- [2010/11/21] cx88 v1.3.0 is now in ports, including analog audio support for CX23885/7/8-based PCIe cards.
See Supported Cards for details on card-specific support.
- [2011/09/21] cx88 v1.4.0 is now in ports, with Linux DVB support via cuse4bsd and dvb:// capture URLs
- [2011/10/11] cx88 v1.4.1 is now in ports, with several DVB fixes
- [2012/03/03] cx88 v1.4.2 is now in ports, with Linux /dev/radio support via cuse4bsd and radio:// capture URLs
- [2012/06/17] cx88 v1.4.3 is now in ports, with HAL registration of DVB devices for Kaffeine support
- [2012/09/19] cx88 v1.4.4 is now in ports, with a "cx88d" rc script to automatically create DVB devices
Email: jason.harmening@gmail.com