[mythtv-users] Firewire Channel Changing on SA3250HD not doing anything?????

Daniel Arfsten darfsten at hotmail.com
Mon Sep 24 14:16:15 UTC 2007

Wow, people are responding to you, I can barely get that. I have 2 
sa3250HD's and can't get the external channel changer or the built in sa3250 
or the sa4200 to work. The channel's never change and I am have no idea how 
to troubleshoot this. Can you suggest anything? I have plenty of posts on 
gossamer's archive, here are a few:


Is it possible that since I am using the Ubuntu package that I don't have 
somethign that I need? The ubuntu mythtv package was just updated with 20.2 
fixes per Mario (the dev of mythbuntu) I also, downloaded the sa3250ch.c 
from svn trunk tree and compiled that but still nothing. Isnt' that patch 
I've seen here: http://threebit.net/mail-archive/mythtv-dev/msg05196.html
already applied to the trunk version of the sa3250ch.c file?
Another weird thing I see when looking at the patch is that these lines 

    cmd[0] = CTL_CMD0 | AVC1394_SA3250_OPERAND_KEY_PRESS;
    cmd[1] = CTL_CMD1 | (chn<<8);
    cmd[2] = CTL_CMD2;

Are different than the sa3250ch.c file I downloaded from svn trunk. Here's 
what the similar lines have:

if (single) {
       /* Send channel as single number for SA4200 and some SA3250s */
       if (verbose)
        printf("Using single number channel change command method\n");

       cmd[0] = CTL_CMD0 | AVC1394_SA3250_OPERAND_KEY_PRESS;
       cmd[1] = CTL_CMD1 | (chn << 8);
       cmd[2] = 0x0;

       if (verbose)
            printf("AV/C Command: cmd0=0x%08x cmd1=0x%08x cmd2=0x%08x\n",
                   cmd[0], cmd[1], cmd[2]);
       avc1394_transaction_block(handle, 0, cmd, 3, 1);
   } else {
       /* Default method sending three seperate digits */
       dig[2] = 0x30 | (chn % 10);
       dig[1] = 0x30 | ((chn % 100)  / 10);
       dig[0] = 0x30 | ((chn % 1000) / 100);

       cmd[0] = CTL_CMD0 | AVC1394_SA3250_OPERAND_KEY_PRESS;
       cmd[1] = CTL_CMD1 | (dig[2] << 16) | (dig[1] << 8) | dig[0];
       cmd[2] = CTL_CMD2;

Does this line need to be updated:
       cmd[1] = CTL_CMD1 | (dig[2] << 16) | (dig[1] << 8) | dig[0];

Or is the correct one already updated in the first part above? Please PLease 
Please anyone please help me with this.....


More information about the mythtv-users mailing list