1

我想“伪造”一个遥控器来做一些家庭自动化并打开我的电视 STB。这不是关于“接收”而是“传输”给接收者。

我想出了相关遥控器的代码,它有点工作。但是,我的电视机顶盒似乎通过再次发送预数据然后停止传输来检测按钮按下(以及多次重复按钮按下)的结束,而没有密钥的实际代码。

为了说明这一点,在模式 2 中,当我连续按下电源两次(但在两者之间释放按钮)时,我会收到以下一系列脉冲和空格:

277 682 597 703 256 362 277 362 597 703 256 362 597 362 256 703 597 362 277 682 597 362 277 682 619 16275
256 703 597 703 256 362 277 362 597 682 277 362 597 362 256 703 597 362 256 703 597 362 277 682 597 16275
277 682 597 703 277 362 256 362 619 682 256 362 597 16957
256 703 597 703 256 362 256 362 597 703 256 362 619 362 256 703 597 362 256 703 597 362 256 703 597 16275
256 703 597 703 256 362 256 362 597 703 277 362 597 362 256 703 597 362 256 703 597 362 256 703 597 16275
277 703 597 682 277 362 256 362 597 703 256 362 597 362 277 682 619 362 256 703 597 362 256 703 597 16275
256 703 597 703 256 362 277 362 597 682 277 362 597 16957

每一行都是重复的代码,用示波器,我测的差距要大很多(大约120ms)

奇怪的是:似乎没有切换位,但传输似乎在第 7 个脉冲结束,而不是在整个单词的末尾。这对所有键都是一样的。

正如我所提到的,这似乎是相关的,因为我无法打开电视盒(连续按两次电源)或更改例如频道 11 或 22。

我该如何实施?有任何想法吗?

我的 lirc 文件如下所示:

begin remote

    name leunet
    bits    10
    flags SHIFT_ENC|CONST_LENGTH
    eps 30
    aeps 100

    header 343 343
    one 343 343
    zero    343 343
    gap 118000
#   min_repeat  2
    pre_data_bits   8
    pre_data    0xbb

        begin codes
            power   0x092
            key_1   0x091
......
        end codes
end remote

我尝试尝试以与前数据相同的方式定义“后数据”,但由于差距过长,这无法正常工作,并且“后数据”不应成为任何重复的一部分。

我讨厌修改 lirc 并重新编译,因为这总是会在更新、系统更改等方面大惊小怪,老实说,我想避免如此深入。

这可以通过脚本来完成而不会引入太多延迟(例如,仅定义远程发送 pre_data 的“停止代码”)。“伪装成遥控器”的盒子是一个相当强大的带有Debian的arm处理器(Allwinner A20处理器)。任何帮助表示赞赏

4

2 回答 2

0

DISPLAY

started the graphical environment via 'startx'

Install xmode2 (LIRC-X)

apt-get install lirc-x
xmode2

If everything has gone well, we can test the actual receiving hardware. Take a remote control and start the "xmode2" program (if you don’t use X start the character application, "mode2"); press then some buttons on the remote

in my case I use raspberry pi:

xmode2 –d /dev/lirc0 –t 1 # [msec]

To be sure what your IR-receiver is really receiving, to visualise it.

Your lirc file contains the octal code/protocol of the IR commands :

begin remote

name leunet
bits    10
flags SHIFT_ENC|CONST_LENGTH
eps 30
aeps 100

header 343 343
one 343 343
zero    343 343
gap 118000
pre_data_bits   8
pre_data    0xbb

    begin codes
        power   0x092
        key_1   0x091

...

how did you do it?

In my case it is raw, by the command

irrecord -d /dev/lirc0 ./out.conf

and this is my lirc.conf file

  begin raw_codes

      name KEY_VOLUMEUP
         4529    4451     606    1643     600    1651
          594    1645     598     526     601     524
          603     521     597     527     600     525
          602    1650     594    1646     598    1650
          605     519     597     527     599     525
          603     521     613     512     599    1648
          609    1638     602    1643     600     526
          603     521     596     528     598     526
          601     523     604     521     596     527
          599     526     603    1644     600    1651
          593    1648     605    1642     603    1643
          601   46795    4533    4454     594    1647
          597    1648     607    1647     596     522
          605     519     598     527     600     524
          602     522     597    1650     603    1648
          597    1644     597     527     603     521
          606     519     597     527     600     524
          604    1648     594    1648     597    1649
          606     518     598     527     600     524
          604     525     592     528     599     525
          602     523     626     498     597    1650
          605    1638     605    1650     595    1645
          597    1648     607

      name KEY_VOLUMEDOWN
         4537    4455     599    1639     605    1649
          595    1645     598     527     602     522
          603     522     596     528     599     525
          600    1652     593    1648     594    1651
          604     522     606     518     598     525
          602     523     605     526     588    1653
          603    1641     624     501     605    1642
          601     523     611     514     597     526
          601     523     604     521     596     529
          599    1645     598     550     586    1648
          588    1649     605    1641     602    1645
          599   46798    4540    4439     597    1650
          604    1643     600    1652     594     525
          601     523     605     534     603     507
          600     523     603    1643     602    1652
          591    1649     606     519     597     526
          602     524     603     521     595     529
          599    1653     591    1649     606     520
          595    1651     604     520     596     528
          600     525     607     516     605     520
          597     526     600    1647     598     526
          601    1647     596    1655     600    1641
          604    1642     600

      name KEY_OK
          478     250     226     214     230     543
          233     209     225     548     228     713
          228     212     233     209     225     217
          226     217     229     544     232     375
          236     538     226     382     229     379
          230     714     227     209     226

      name KEY_INFO
          473     248     228     214     230     543
          233     209     225     552     234     701
          229     213     232     211     224     217
          228     214     230     544     232     374
          236     540     225     216     229     214
          230     714     228     705     226

      name KEY_MENU
          472     253     234     208     226     547
          229     214     230     546     252     683
          226     216     229     214     230     211
          234     208     226     549     227     379
          231     543     232     376     235     373
          226     401     199     223     232

      name KEY_CHANNELDOWN
          475     251     204     237     207     567
          209     234     200     573     203     735
          205     237     207     236     200     241
          203     239     206     569     207     399
          200     575     201     240     205     569
          206     235     199     410     201

      name KEY_CHANNELUP
          480     246     230     212     232     541
          225     216     229     546     229     710
          231     210     234     208     227     218
          226     214     232     539     236     373
          227     547     228     214     230     544
          232     211     224     216     229

  end raw_codes

Thanks on beforehand.

于 2015-02-09T17:12:52.573 回答
0

好吧,我想避免这种情况,因为我认为我需要花费上周的晚上才能弄清楚 lirc 代码是如何工作的以及在哪里添加此功能,但这里是补丁: https ://github.com/matzrh/lirc/提交/fa7b01e94e7da8b7073865625f7811f284c8a825

它工作正常,但我没有测试重复之间的短间隙(<10ms),但理论上代码就在那里。我“滥用”remote->suppress_repeat 作为一个标志,以表明接下来应该对 pre 数据进行这种重复。因此,如果将其用于其他用途(我不知道它的用途),则可能会发生冲突。也许对其他人有用。我需要这个来伪造瑞士 Stafag/Leunet 提供的电视机顶盒的 Ocilion 遥控器。我在上面的预数据中添加了一个额外的位,使其成为 0x176。如果有人想要遥控器的完整 lircd.conf,请联系(仅在安装补丁后有效)

于 2014-09-28T12:32:20.483 回答