'Multimedia eXtension Board' (MXB) by Siemens-Nixdorf


The 'Multimedia eXtension Board' (or short: mxb) is a plain tv-card that was build until October 1998 to supplement the Siemens "Scenic"-PC series.

The MXB has all the stuff other tv-cards have: a tuner for watching tv, plus addition inputs for S-VHS and auxillary (aux) sources. It consists of seven major chipsets: saa7146, saa7111a, saa5281, tea6420, tea6415c, tda9840 and fi1216mk2. You can download the datasheets from the main page.

For plugging external connectors to the MXB, a so-called "multicable" is needed. Siemens-Nixdorf permitted me to publish the pin-description of the external connectors, so building the multicable should not be that difficult. Simply download multicable.pdf and have some exciting hours with your soldering-iron... ;-)

The so-called 'Sound Arena' add-on module is supported in some sort of way. It will just be initialised to pass-through with some standard values.

Unfortunately, all MXBs use the saa7146 (without 'a', revision 0), which has some very serious hardware bugs. Due to this, using the vbi-stuff of my driver is not possible, e.g. you cannot use a any vbi teletext decoder.

The driver is called mxb.

Ubuntu 7.10


You switched to Ubuntu 7.10 and now the mxb driver is not loaded automatically any more?

It's even worse. The Ubuntu folks decided to entirely remove the mxb drivers by mistake. I complained about this here: https://bugs.launchpad.net/ubuntu/+source/linux-ubuntu-modules-2.6.22/+bug/201197

Hopefully this will be fixed with the next update of the kernel package and in upcoming versions of Ubuntu.

In the meantime, you can try to fix the problem by following these instructions on your own risk.

Become root Install the Linux kernel source package Uncompress the Linux kernel source package Copy the configuration of your current kernel and modify it. Now you have to start your favorite editor and edit .config. Find the line where it says

# CONFIG_VIDEO_MXB is not set

and replace it with

CONFIG_VIDEO_MXB=m.

Compile the mxb.ko driver module and compile it to the place where your installation stores the modules Refresh the module dependencies Now you should be able to do modprobe mxb as root and have your mxb working agin. After a reboot, the mxb driver should be loaded automatically again.

Oddities with mainboards featuring hardware monitoring capabilties


You have switched to a new mainboard and/or you have switched on the hardware monitoring capabilites of your mainboard and now the MXB driver refuses to work anymore? If you try to load the modules as usual, you perhaps get the following error message:
Inserting MXB modules into kernel/lib/modules/2.6.22/misc/mxb.o: init_module: No such device
Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters
/lib/modules/2.6.22/misc/mxb.o: insmod /lib/modules/2.6.22/misc/mxb.o failed
/lib/modules/2.6.22/misc/mxb.o: insmod mxb failed
Both the MXB driver and the hardware monitoring rely on the i2c subsystem of the kernel. There are several i2c helper chipsets on the MXB and hardware monitoring is done via thermal sensors that can be addressed via i2c, too. i2c helper chipsets are addressed via a 7-bit address (ie. there are only 128 different addresses for i2c chipsets) and unfortunately some thermal sensors share the same i2c address with one of the i2c helpers on the MXB...

Know candidates are: Most of the time, the hardware monitoring drivers are loaded at boot time. When you later try to load the MXB driver, the i2c bus of the MXB gets visible and all helper chipset drivers try to find their corresponding chipset on the fresh new i2c bus...

Now some of the drivers mentioned above erroneously assume that a thermal sensor is present on the MXB i2c bus and some trash the bus while they try to initialize the chipset. Even unloading all modules and forcing to load the modules in the right order won't help anymore -- you have to reboot your system to get the MXB to work again.

You can work around this problem as follows: all i2c drivers can be forced to ignore certain i2c addresses and busses. If you load your modules by hand, you can try the following:

modprobe w83781d ignore_range=1,0x00,0x7f

or

modprobe it87.o ignore_range=1,0x00,0x7f

The i2c bus of your mainboard (where the hardware monitoring chipset resides) is usually bus 0, the i2c bus of the MXB is bus 1. This will tell the "w83781d" or "it87" module to ignore the bus of the MXB completely.

Thanks go to Sebastian Ude, who first reported this kind of problem for the "w83781d" and Andreas Behnert, who told me about "it87.o"

Some technical background informations


There are two bus-controlled audio-matrix chips TEA6420, which are cascaded and are used to switch the different audio sources to the two available outputs. The input- and output-pins are enumerated in the specs, so I am using the canonical names.
       +--------+           +--------+
Tuner--|1      1|-----------|1      1|--CD
CD-----|2      2|-----------|2      2|
Radio--|3  9a  3|-    AUX3--|3  98  3|--Line
CAM----|4      4|-    AUX2--|4      4|
MPEG---|5       |     AUX1--|5       |
       +--------+           +--------+
The bus-controlled video-matrix-switch TEA6415C has the following input and outputs. Because the input- and outputs-pins are not explicitly enumerated in the specs, the numbers refer to the pins of the chipset.
         +----------+ 
         |    T     |
AUX1 ----|1   E   13|--"to Multicable"
Tuner ---|3   A     |
CAM Y ---|5   6   17|-- Out1 
CAM C ---|6   4   18|-- Out2
CAM -----|10  1     |
MPEG ----|20  5     |
         |    C     |
         +----------+ 
The video-input-processor saa7111a has the following inputs.
                +------------+ 
Out1------------|A11         |
Out2------------|A21  SAA    |
                |     7111A  |
AUX3 and AUX Y--|A12         |
AUX3 C----------|A22         |
                +------------+