我想“伪造”一个遥控器来做一些家庭自动化并打开我的电视 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处理器)。任何帮助表示赞赏