A CAM is in charge of de-scrambling the TS stream coming from the satellite. The CAM is mostly a micro-controller that will communicate with the Linux driver.
This communication is based on the EN50221 standard which specifies the hardware and software interface of the Common Interface.
EN50221 is a layered protocol with:
- The application layer
- The session layer
- The transaction layer
- The physical layer
Each CAM implements this layered stack. The Linux host will also need to have this layered stack so both sides of the CI can understand each others.
Some DVB cards (like the Hauppauge) implements only the physical layer. The other layers are handled by the host. For instance, vdr provides the 3 upper layers (application, session and transaction). In this case the userland application uses the so-called low-level CI API.
Other DVB cards like the TwinHan implements the physical, transaction and session layers directly in the card using a micro-controller. The host provides only the application layer.
Unfortunately, some bugs have crept in the various implementations of the EN50221 standard in the CAM and cards, and the compatibility between the various cards and CAMs is to be checked for every combination.