'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
-
aptitude install linux-source
Uncompress the Linux kernel source package
- cd /usr/src
- tar xjf linux-source-2.6.22.tar.bz2
Copy the configuration of your current kernel and modify it.
- cd /usr/src/linux-source-2.6.22
- cp /boot/config-`uname -r` .config
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
- mkdir .tmp_versions
- make drivers/media/video/mxb.ko
- cp drivers/media/video/mxb.ko /lib/modules/`uname -r`/kernel/drivers/media/video
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:
- Winbond W83781D (w83781d.o)
- all IT87xxx (it87.o)
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 |
+------------+