====== Setting up lirc and evdev on Le Potato ====== * Make sure that the kernel module is loaded **meson_ir** (Its in their kernel by default and if you use their config for a custom kernel) * Install Dependencies emerge --ask media-tv/v4l-utils app-misc/lirc dev-python/python-evdev app-misc/evtest * Modprobe kernel modules modprobe -a ir-nec-decoder ir-rc5-decoder ir-rc6-decoder ir-jvc-decoder ir-sony-decoder ir-rc5-sz-decoder ir-sanyo-decoder ir-mce_kbd-decoder ir-lirc-codec *Get keycodes for each button on your remote ir-keytable -c -p NEC,RC-5,RC-6,JVC,SONY -t * press buttons and make a list of buttons, keycodes and protocol from output similar to below lirc protocol(nec): scancode = 0x40 * using the information you gathered created make remote definition [[https://github.com/torvalds/linux/blob/master/include/uapi/linux/input-event-codes.h:Valid Keycodes]] austin@mobilemouse ~/mocp_i2c_lcd_ir_remote $ cat /lib/udev/rc_keymaps/my_remote.toml [[protocols]] name = "My_Remote" protocol = "nec" variant = "nec32" [protocols.scancodes] 0x45 = "KEY_POWER" 0x46 = "KEY_MODE" 0x47 = "KEY_MUTE" 0x44 = "KEY_PLAYPAUSE" 0x40 = "KEY_BACK" 0x43 = "KEY_FORWARD" 0x07 = "" 0x15 = "KEY_VOLUMEDOWN" 0x09 = "KEY_VOLUMEUP" 0x16 = "KEY_0" 0x19 = "KEY_SHUFFLE" 0x0d = "" 0x0c = "KEY_1" 0x18 = "KEY_2" 0x5e = "KEY_3" 0x08 = "KEY_4" 0x1c = "KEY_5" 0x5a = "KEY_6" 0x42 = "KEY_7" 0x52 = "KEY_8" 0x4a = "KEY_9" * Clear the keytable and test with your config file ir-keytable -c -w /lib/udev/rc_keymaps/my_remote.toml -t * Add the remote def to /etc/rc_maps.cfg #driver table file * * my_remote.toml * Load it on boot * create service mobilemouse /etc/init.d # cat irkeytable #!/sbin/openrc-run # Copyright 2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 name="irkeytable" description="add irkeytable config" start() { /usr/bin/ir-keytable -a /etc/rc_maps.cfg -s rc0 } * add to default run level rc-update add irkeytable default * Add any modules that you might need to autoload (my case was: ir-nec-decoder and ir-lirc-codec) echo "ir-nec-decoder\nir-lirc-codec" >> /etc/modprobe.d/lirc.conf * Reboot to verify its good and test with evtest austin@mobilemouse ~/mocp_i2c_lcd_ir_remote $ evtest No device specified, trying to scan all of /dev/input/event* Not running as root, no devices may be available. Available devices: /dev/input/event0: Solid State System Co.,Ltd. USB PnP Audio Device /dev/input/event5: meson_ao_cec /dev/input/event6: meson-ir Select the device event number [0-6]: 6 Input driver version is 1.0.1 Input device ID: bus 0x19 vendor 0x0 product 0x0 version 0x0 Input device name: "meson-ir" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 2 (KEY_1) Event code 3 (KEY_2) Event code 4 (KEY_3) Event code 5 (KEY_4) Event code 6 (KEY_5) Event code 7 (KEY_6) Event code 8 (KEY_7) Event code 9 (KEY_8) Event code 10 (KEY_9) Event code 11 (KEY_0) Event code 113 (KEY_MUTE) Event code 114 (KEY_VOLUMEDOWN) Event code 115 (KEY_VOLUMEUP) Event code 116 (KEY_POWER) Event code 158 (KEY_BACK) Event code 159 (KEY_FORWARD) Event code 164 (KEY_PLAYPAUSE) Event code 373 (KEY_MODE) Event code 410 (KEY_SHUFFLE) Event type 2 (EV_REL) Event code 0 (REL_X) Event code 1 (REL_Y) Event type 4 (EV_MSC) Event code 4 (MSC_SCAN) Key repeat handling: Repeat type 20 (EV_REP) Repeat code 0 (REP_DELAY) Value 400 Repeat code 1 (REP_PERIOD) Value 80 Properties: Property type 5 (INPUT_PROP_POINTING_STICK) Testing ... (interrupt to exit) * Once evtest is working you can code against it: [[https://github.com/adrenlinerush/mocp_i2c_lcd_ir_remote/blob/master/mocp_ir_daemon.py|My Example controlling moc]]