[mythtv-users] Fire-wire / Motorola DCX-3200M

Erik Sejr esejr at wildroseinternet.ca
Fri Mar 4 03:29:43 UTC 2011


On 3/3/2011 10:14 AM, robert Larson wrote:
> Hello,
>
> Just a quick thank you to Jarod W about a post that I had found back
> from 2009 that explained the fire-wire stack (old vs new) from there I
> was finally able to figure out that I had the old fire-wire stack
> enabled and not the new stack.
>
>
> I am finally able to get a good test using the firewire_tester script
> using broadcase mode ( i think )
>
> rob at dell:/usr/local/bin$ sudo ./firewire_tester -B -P 0 -n 0
> Action: Attempt to fix broadcast connection 1 times, node 0
> Broadcast: Testing...Success, 173 packets
> Broadcast: Testing...Success, 37 packets
> Broadcast: Testing...Success, 186 packets
> Broadcast: Testing...Success, 28 packets
> Broadcast: Testing...Success, 216 packets
> Broadcast Fix: Success (already stable)
>
> Next I deleted all tuners and all video sources and re-added the
> firewire capture, grabbed the channels updated the database with the
> listings and it fails. So I checked the backend logs and it reports:
>
> 2011-03-03 11:58:00.919 FireChan(E48399FFFE4AC6E7), Error: Model:
> 'DCX-3200' is not supported.
> 2011-03-03 11:58:00.985 mythbackend: Problem with capture cards: Card
> 8failed init
> 2011-03-03 11:58:01.016 MythBackend, Warning: No valid capture cards
> are defined in the database.
> 2011-03-03 11:58:01.110 mythbackend: No capture cards are defined:
> This backend will not be used for recording.
>
> I checked the wiki and it appears that others are using this
> particular model but I dont know how to get around the not supported
> issue.
>
> Any advice that you can pass along would be great!
>
> I am using ubuntu 10.04.2 LTS with the following for myth:
> MythTV Version   : v0.24-198-g0d3d3a4
> MythTV Branch    : fixes/0.24
> Network Protocol : 63
> Library API      : 0.24.20101129-1
> QT Version       : 4.6.2
>
>
> Output of lsmod:
> lsmod | grep 'firewire\|1394'
> firewire_ohci          21002  0
> firewire_core          44510  1 firewire_ohci
> crc_itu_t               1371  1 firewire_core
> _______________________________________________
> mythtv-users mailing list
> mythtv-users at mythtv.org
> http://www.mythtv.org/mailman/listinfo/mythtv-users

Robert,
You need to patch the firewiredevice.cpp file and videosource.cpp file.
First you need the model and vendor ID's of the DCX-3200-M you have.
When I had one of these I used the old 6200ch channel changer in verbose
mode to get these ID's - something like this (Note, DON'T use these ID's
they are for my current DCX-3400-M which is the 3200's big brother:

[root at mythbox 6200ch]# /usr/sbin/6200ch -v 340
starting with node: 1
node 1: vendor_id = 0x000025f1 model_id = 0x0000e741
AV/C Command: 340 = Op1=0x00487C23 Op2=0x00487C24 Op3=0x00487C20

Next, in firewiredevice.cpp you need to find a section that looks
something like this:

const uint64_t motorola_vendor_ids[] =
    {
        /* DCH-3200, DCX-3200 */
        0x1c11,    0x1cfb,    0x1fc4,    0x23a3,    0x23ee,    0x25f1,
        /* DCX-3432 */
        0x24a0,
        /* DCH-3416 */
        0x1e46,
        /* DCT-3416 */
        0x1bdd,
        /* DCT-3412 */
        0x159a,
        /* DCT-6200, DCT-3416 */
        0x0ce5,    0x0e5c,    0x1225,    0x0f9f,    0x1180,
        0x12c9,    0x11ae,    0x152f,    0x14e8,    0x16b5,    0x1371,
        0x19a6,    0x1aad,    0x0b06,    0x195e,    0x10dc,
        /* DCT-6212 */
        0x0f9f,    0x152f,
        /* DCT-6216, 2224 */
        0x17ee,    0x1a66,
        /* QIP 6200 */
        0x211e,
        /* QIP 7100 */

If the vendor ID 6200ch gives you is not included here you need to add
it. If it already exists don't duplicate it, regardless of what the
comment above it might say! Chances are very very good it is already
listed, so look carefully.

Next, in the same file, find a section that looks like this:

for (uint i = 0; i < motorola_vendor_id_cnt; i++)
    {
        id_to_model[motorola_vendor_ids[i] << 32 | 0xf740] = "DCX-3200";
        id_to_model[motorola_vendor_ids[i] << 32 | 0xfa07] = "DCX-3200";
        id_to_model[motorola_vendor_ids[i] << 32 | 0xea05] = "DCX-3432";
        id_to_model[motorola_vendor_ids[i] << 32 | 0xd330] = "DCH-3200";
        id_to_model[motorola_vendor_ids[i] << 32 | 0xe741] = "DCX-3400";
        id_to_model[motorola_vendor_ids[i] << 32 | 0xb630] = "DCH-3416";
        id_to_model[motorola_vendor_ids[i] << 32 | 0x34cb] = "DCT-3412";
        id_to_model[motorola_vendor_ids[i] << 32 | 0x346b] = "DCT-3416";
        id_to_model[motorola_vendor_ids[i] << 32 | 0xb630] = "DCT-3416";
        id_to_model[motorola_vendor_ids[i] << 32 | 0x6200] = "DCT-6200";
        id_to_model[motorola_vendor_ids[i] << 32 | 0x620a] = "DCT-6200";
        id_to_model[motorola_vendor_ids[i] << 32 | 0x64ca] = "DCT-6212";
        id_to_model[motorola_vendor_ids[i] << 32 | 0x64cb] = "DCT-6212";
        id_to_model[motorola_vendor_ids[i] << 32 | 0x646b] = "DCT-6216";
        id_to_model[motorola_vendor_ids[i] << 32 | 0x8100] = "QIP-7100";
        id_to_model[motorola_vendor_ids[i] << 32 | 0x7100] = "QIP-6200";
        id_to_model[motorola_vendor_ids[i] << 32 | 0x0001] = "QIP-7100";
    }

Add in the model id for your DCX-3200 in a similar manner. If it is
already listed but associated with a different model, you can add it in
and associate it with a "DCX-3200".

Next, in the same file look for a part like this:

Add DCX-3200 into this list as well.

bool FirewireDevice::IsSTBSupported(const QString &panel_model)
{
    QString model = panel_model.toUpper();
    return ((model == "DCH-3200") ||
            (model == "DCH-3416") ||
            (model == "DCT-3412") ||
            (model == "DCT-3416") ||
            (model == "DCT-6200") ||
            (model == "DCT-6212") ||
            (model == "DCT-6216") ||
            (model == "SA3250HD") ||
            (model == "SA4200HD") ||
            (model == "SA4250HDC") ||
            (model == "SA8300HD") ||
            (model == "PACE-550") ||
            (model == "PACE-779") ||
            (model == "QIP-6200") ||
            (model == "QIP-7100") ||
            (model == "DCX-3400") ||
            (model == "GENERIC"));

Lastly, in videosource.cpp try to find a section like this:
If it doesn't already exist add "DCX-3200" matching the model you
entered above.

{
    setLabel(QObject::tr("Cable box model"));
    addSelection(QObject::tr("Generic"), "GENERIC");
    addSelection("DCH-3200");
    addSelection("DCX-3200");
    addSelection("DCX-3400");
    addSelection("DCT-3412");
    addSelection("DCT-3416");
    addSelection("DCT-6200");
    addSelection("DCT-6212");
    addSelection("DCT-6216");
    addSelection("QIP-6200");
    addSelection("QIP-7100");
    addSelection("PACE-550");
    addSelection("PACE-779");
    addSelection("SA3250HD");
    addSelection("SA4200HD");
    addSelection("SA4250HDC");
    addSelection("SA8300HD");

After that recompile Mythtv. In the mythtv-setup program DCX-3200 should
be an option, select it and configure accordingly.

A few caveats though:
I stopped using my 3200 after I got a 3400 about 4 months ago, so
something may have changed since then that could cause these
instructions not to work as expected.
My DCX-3200-M worked fairly well at the time via firewire with both
mythtv 0.23 and earlier versions of 0.24-fixes. I since switched to an
HD-PVR for my DCX-3400 though with firewire the DCX-3400 is very
unstable so I gave up on it.

The moral of the story is, your mileage may vary.

Good Luck.

Erik


More information about the mythtv-users mailing list