Suspend/Wakeup via IR remote (ARMBIAN VERSION 5.24)

После исполнения одной из команд, процессор засыпает:

echo mem > /sys/power/state
echo standby > /sys/power/state
echo bootfast > /sys/power/state

Пробуждение работает на ARMBIAN 5.24 и 5.25 после нажатии кнопки Power Button,
Для пробуждения с пульта (IR remote), требуется ряд телодвижений. Но обязательно пульт должен быть NEC совместимый.
Товарищ bir8339e с форума orangepi.org “отреверсинжинерил” декодирование POWER key процессором ARISC firmware H3. LIRC должен быть настроен LIRC (IR/InfraRed) на Orange PI
Открываем lircd.conf. У меня такой:

begin remote

  name  /etc/lirc/lircd.conf
  bits           16
  flags SPACE_ENC|CONST_LENGTH
  eps            30
  aeps          100

  header       8967  4428
  one           590  1641
  zero          590   525
  ptrail        569
  repeat       8973  2194
  pre_data_bits   16
  pre_data       0x00FF
  gap          107157
  toggle_bit_mask 0x0

      begin codes
          KEY_SLEEP                0xA25D
          menu                     0xE21D
          test                     0x22DD
-----------------

Нас интересует pre_data и код кнопки которой будем будить процессор, например: KEY_SLEEP
преобразуем:

pre_data = 0x00FF = 0000 0000 1111 1111 => (bit-reversed) => 1111 1111 0000 0000 = 0xFF00
KEY_SLEEP = 0xA25D => code = 0xA2 = 1010 0010 => (bit-reversed) => 0100 0101 = 0x45

У автора было так:

pre_data = 0x205D = 0010 0000 0101 1101 => (bit-reversed) => 1011 1010 0000 0100 = 0xBA04
KEY_SLEEP = 0x38C7 => code = 0x38 = 0011 1000 => (bit-reversed) => 0001 1100 = 0x1C

  • получаете fex из bin, правите его:
apt-get update && apt-get upgrade -y
cd /boot/bin
bin2fex orangepipc.bin orangepipc.fex

меняем ir_power_key_code0 и ir_addr_code0 в orangepipc.fex (для Orange Pi PC)


[s_cir0]
ir_used = 1
ir_rx = port:PL11<2><1>
ir_power_key_code0 = 0x45
ir_addr_code0 = 0xFF00


, и конвертируете назад в bin:

fex2bin orangepipc.fex orangepipc.bin
reboot

ну и если добавить в /etc/lirc/lircrc

begin
        remote = /etc/lirc/lircd.conf	
	button = KEY_SLEEP
	repeat = 0
	delay	= 0
	prog = irexec
	config = echo standby > /sys/power/state
        config = echo > null
end

сон и пробуждение будем иметь, при нажатии одной кнопки на пульте под псевдонимом KEY_SLEEP

После обновления armbian с версии 5.24 на 5.25 правленый файл orangepipc.bin будет перемещен в /boot/bin.old

тестировал на подобном пульте

файлы /etc/lirc
Да, возврат к истокам Мой первый пост на 4pda

Share
Send
Pin
Your comment
won’t be published

HTML will not work

Ctrl + Enter
Popular