Irrecord segmentation fault

Hey y’all, i followed the how to do a support post so i’m hoping this is a solveable problem.

I’m trying to add an additional universal remote so that i can do all the home theater things using just one. This new ir remote learned my tv and soundsystem codes really easily, but the osmc remote uses fr (i think?). So it can’t learn ir codes from the osmc remote.

I have a vero 4k+, a tcl/roku tv, and a denon avr sound system.

I found these semi-helpful other resources which got me to where i am at right now;

So. The setup. I borrowed some ir codes from a spare vcr remote and mapped those to the directional control and other side buttons i wanted to use in my universal remote. Then, i ran irrecord to try and record those codes. (I still have no plan other than trial and error to figure out which lirc code name corresponds with what button on the vero 4k remote, so if you have a list or a map that would be awesome).

However, irrecord has been giving me a segmentation fault error. First, it does successfully check for (and fail to find) any ir interference. Then it also manages to accept me pressing a random ir button. However, every time i try to record a named code (btn_left was my go to) the program tells me ‘segmentation fault’ and then crashes. I have attached a screenshot of it in case the logs aren’t good enough.

My log pastebin is here; https://paste.osmc.tv/hilorisine

The only other thread that mentions an irrecord segfault says to downgrade or wait for an update to the software as a fix, which alright, but is there an alternative for learning the directional buttons on an ir remote? Surely it’s not that hard to do on a media center device, and im just looking in the wrong spot.

Skip the irrecord thing and just setup your universal remote to something that already has a configuration available in OSMC. If you go into the My OSMC add-on there is a remotes section which you can select which ir remote it will respond to. An Xbox or MCE would be a good choice. If there is anything that isn’t mapped the way you want by default just use the keymap editor add-on to change how the buttons act.

None of the samsung or xbox codes in my universal remote match any of the samsung or xbox remotes already set up in osmc. I have no idea what the osmc rc6 remote is listed under for my universal remote.

Having seen the list of remotes i am now quite sure that i could use irrecord to get my stolen ir codes to work if irrecord stopped segfaulting.

I don’t see how it could possibly be true that a universal remote exists with xbox codes that don’t match up to one of the three in OSMC. The rc6-mce-lirc one may be listed in the universal remote as Microsoft Media Center or Windows PC. MCE remotes have been in most universal remotes for several decades now.

The universal remote i have is this one; Streamer Remote | One For All

Turns out it does have a couple codes for microsoft remotes listed. None of them worked either.

I sorted out the irrecord segfault issue. Removing the -f (force) from the command made it run. I used the browse function to add/enable the custom .lircd.conf file and it didn’t work either. Also, leaving the remotes app menu reset the selected remote and removed my custom remote from the list altogether. Is there a way to make my custom remote stay on the menu? Its currently stored in the ~ folder.

So now i’m very seriously wondering if it isn’t the universal remote that isn’t sending ir signals, but rather, osmc that isn’t accepting them for some reason.

There is a check box labeled ‘disable RC6’ in the osmc remotes menu, but changing it appears to do nothing. I have no idea what other options i would need to look through to see if osmc is accepting ir input or not.

When you highlight a different remote type and click on the select button on your remote there should be a popup that asks you to confirm your new selection. Are you seeing something different? The selection is sticking for me. The checkbox for RC6 is to make those remotes use RC5 instead which I think is suppose to work better for some.

Only the custom option i created with irrecord is unable to be selected and is removed from the list once i leave the remotes menu for other menus. Defaults that are already there are able to be confirmed and selected just fine.

I figured out why my universal remote wasn’t working with anything; it turns out that specifically learned ir codes have priority over the quick setup from its memory. A hard reset and now osmc can see my ir buttons. I ended up choosing the rc6 remote in the osmc menu (since it was the first one to work), but two of the buttons on that have the same ir code as two other buttons, so i can have a home button or an info button, but not both. Most everything else is working though, so i’ll call this a partial win.

I would love to be able to use custom ir codes (which i very much cannot right now due to the impermanence of custom config files) but i’ll save that for another afternoon. Thanks for helping me out with this.

If you turn on debug logging do both keys show the exact same handlekey event in Kodi’s log (or alternatively the same keyid in keymap editor)? Kodi default keymaps the same actions to a number of keys but if it is seeing them as different keys you can change what they do easy enough.

Where is your custom file located? All that selection is doing is changing a symlink (and probably reloading something). I suppose you could manually change the symlink if you wanted…

osmc@VeroV:~$ ls -la /etc/lirc/
total 1508
drwxr-xr-x  2 root root   4096 Aug  7 19:27 .
drwxr-xr-x 74 root root   4096 Aug  6 18:50 ..
-rw-r--r--  1 root root   1089 May 26  2022 apple-silver-A1294-lircd.conf
-rw-r--r--  1 root root  26870 May 26  2022 apple-silver-A1294-lircd.png
-rw-r--r--  1 root root   1038 May 26  2022 apple-white-A1156-lircd.conf
-rw-r--r--  1 root root  39796 May 26  2022 apple-white-A1156-lircd.png
-rw-r--r--  1 root root  23092 May 26  2022 atilibusb-lircd.conf
-rw-r--r--  1 root root 169574 May 26  2022 atilibusb-lircd.png
-rw-r--r--  1 root root   1586 May 26  2022 dell-travel-remote-nu851.lircd.conf
-rw-r--r--  1 root root 157000 May 26  2022 dell-travel-remote-nu851.lircd.png
-rw-r--r--  1 root root      0 May 26  2022 dvicoo-lircd.conf
-rw-r--r--  1 root root  42554 May 26  2022 dvicoo-lircd.png
-rw-r--r--  1 root root   4394 May 26  2022 hauppage45-pvr350-lircd.conf
-rw-r--r--  1 root root  39180 May 26  2022 hauppage45-pvr350-lircd.png
-rw-r--r--  1 root root   2013 May 26  2022 kls-1.6-lircd.conf
-rw-r--r--  1 root root  54790 May 26  2022 lircd-full.conf
lrwxrwxrwx  1 root root     28 Aug  7 19:27 lircd.conf -> /etc/lirc/xbox360-lircd.conf
-rw-r--r--  1 root root   1175 May 26  2022 osmc-remote-lircd.conf
-rw-r--r--  1 root root 142537 May 26  2022 osmc-remote-lircd.png
-rw-r--r--  1 root root   2717 May 26  2022 philips-srm-7500-lircd.conf
-rw-r--r--  1 root root  59276 May 26  2022 philips-srm-7500-lircd.png
-rw-r--r--  1 root root  11197 May 26  2022 rc6-mce-lircd.conf
-rw-r--r--  1 root root  29164 May 26  2022 rc6-mce-lircd.png
-rw-r--r--  1 root root   5450 May 26  2022 samsung-lircd.conf
-rw-r--r--  1 root root 131181 May 26  2022 samsung-lircd.png
-rw-r--r--  1 root root  10146 May 26  2022 ttusbir-lircd.conf
-rw-r--r--  1 root root   1470 May 26  2022 wdtvlive-remote-lircd.conf
-rw-r--r--  1 root root 113255 May 26  2022 wdtvlive-remote-lircd.png
-rw-r--r--  1 root root    992 May 26  2022 xbox-lircd.conf
-rw-r--r--  1 root root 157549 May 26  2022 xbox-lircd.png
-rw-r--r--  1 root root   1670 May 26  2022 xbox-one-lircd.conf
-rw-r--r--  1 root root 120143 May 26  2022 xbox-one-lircd.png
-rw-r--r--  1 root root   2698 May 26  2022 xbox360-lircd.conf
-rw-r--r--  1 root root 109895 May 26  2022 xbox360-lircd.png
-rw-r--r--  1 root root   1045 May 26  2022 yausbirv2_frontswitch.conf
osmc@VeroV:~$

EDIT: I just checked adding a custom conf file and what I found was if you place the file in /etc/lirc/ it shows up every time you open the remote screen but if it is located somewhere else the conf file is still active but just not displayed in that screen anymore. I’m not sure if @anxdpanic wants to tweak the behavior of My OSMC for this or not. I don’t remember it getting brought up as an issue previously.

Same issue, irrecord crashes on first recorded key.
Using Vero V with the factory software.

Did you stop both LIRC and the eventlirc helpers first?

Sam

What commands were you using? I was able to get it to work with…

systemctl stop eventlircd
irrecord -d /dev/lirc0 --driver default

@sam_nazarko
I did stop those first (including mediacenter) and used this irrecord command:
irrecord -f -d /dev/lirc0 marantz.conf

@darwindesign
I don’t know how but after a reboot and doing the commands you pasted, it worked for me (minus the --driver default part) as in, it didn’t crash, i was able to record keys.

systemctl stop eventlircd
irrecord -d /dev/lirc0

Interesting. I’ll try and chase down the exact cause of the segfault
Were you able to record a profile, and does it work as expected?

I ask because we have something similar here: IR-Remote on Vero V - #55 by darwindesign.

Not a recording issue but rather a user having issues with their IR remote.

Sam

Yes, I am able to record a profile using irrecord and testing with irw and with the GUI.
This is how far I got, there are still a bunch of keys that I need to add:

begin remote

  name  marantz-rc003pmcd
  bits           13
  flags RC5|CONST_LENGTH
  eps            30
  aeps          100

  one           834   935
  zero          834   935
  plead         824
  gap          113424
  min_repeat      1
#  suppress_repeat 1
#  uncomment to suppress unwanted repeats
  toggle_bit_mask 0x800
  frequency    38000

      begin codes
          KEY_POWER                0x150C
          KEY_FORWARD              0x1520
          KEY_REWIND               0x1521
          KEY_STOP                 0x1536
          KEY_PLAY                 0x1535
          KEY_PAUSE                0x1530
          KEY_OK                   0x0517
          KEY_UP                   0x0510
          KEY_DOWN                 0x0511
          KEY_RIGHT                0x0516
          KEY_LEFT                 0x0515
          KEY_BACK		   0x1529
          KEY_0                    0x1500
          KEY_1                    0x1501
          KEY_2                    0x1502
          KEY_3                    0x1503
          KEY_4                    0x1504
          KEY_5                    0x1505
          KEY_6                    0x1506
          KEY_7                    0x1507
          KEY_8                    0x1508
          KEY_9                    0x1509
          KEY_BACKSPACE            0x1531
      end codes

end remote

My main frustration now is that I don’t know how to use this lirc ecosystem thing and oftentimes it errors out while doing a recording session (or whatever you call it) with irrecord. Here’s an example, keys work, until they don’t:

Please enter the name for the next button (press <ENTER> to finish recording)
KEY_VOLUMEUP

Now hold down button "KEY_VOLUMEUP".

Please enter the name for the next button (press <ENTER> to finish recording)
KEY_VOLUMEDOWN

Now hold down button "KEY_VOLUMEDOWN".

Please enter the name for the next button (press <ENTER> to finish recording)
KEY_INFO

Now hold down button "KEY_INFO".
Something went wrong: Cannot decode data
Please try again. (28 retries left)

Now hold down button "KEY_INFO".
Something went wrong: Cannot decode data
Please try again. (27 retries left)

Now hold down button "KEY_INFO".
Something went wrong: Cannot decode data
Please try again. (26 retries left)

Also, I’d like to use the existing config I pasted above (that works already with a subset of keys) to set the lirc “interpreter” in that way, and have it spit out numbers for each key I press, existing or new. This way I could add up all the missing keys to the config very fast. But these are already lirc questions, not osmc questions…

Does this conf contain all the codes for your remote?

https://lirc.sourceforge.net/remotes/marantz/RC4000CD

Good find! It does seem to match many of the keys but still maybe 30% are not there.
Also, my remote has 2 special buttons which put it into CD mode and NET (Network player presumably) mode which probably flip a bit in the IR code to be able to send different codes for different devices with the same key. Some keys have like a secondary function label printed next to them. This essentially doubles the amount of keys that I could map :smiley: I just need to find a way to make irrecord print the codes on screen and not in config file. But this is very off-topic !! I will use google for this stuff. Thanks both for the help!

If you drop the last part of the url you will find a few other Marantz conf files as well. It might be worth taking a look.

Are you starting over each time? If you add the filename to the end of the your command (ir irrecord -d /dev/lirc0 filename) and filename has part of the configuration, doesn’t it just pick up where it left off? If not you could still just grab the information from different sessions and manually piece it together.

It may be off topic for the segfault issue but there hasn’t been a lot of recent irrecord information on this forum so others would likely find interest in the totality of the adventure.

Your very welcome.

The one that you linked is the best fit.

Yes and it takes time.

Ok so you’ve helped me a lot here and passed along an existing config and it picks up right where it left, this is helpful. The following command successfully recorded 2 more keys in the same file!

$ irrecord -d /dev/lirc0 --driver=default --update --loglevel=notice ./marantz-rc003pmcd.conf                  
Using driver default on device /dev/lirc0

irrecord -  application for recording IR-codes for usage with lirc
Copyright (C) 1998,1999 Christoph Bartelmus(lirc@bartelmus.de)

This program will record the signals from your remote control
and create a config file for lircd.

A proper config file for lircd is maybe the most vital part of this
package, so you should invest some time to create a working config
file. Although I put a good deal of effort in this program it is often
not possible to automatically recognize all features of a remote
control. Often short-comings of the receiver hardware make it nearly
impossible. If you have problems to create a config file READ THE
DOCUMENTATION at https://sf.net/p/lirc-remotes/wiki

If there already is a remote control of the same brand available at
http://sf.net/p/lirc-remotes you might want to try using such a
remote as a template. The config files already contains all
parameters of the protocol used by remotes of a certain brand and
knowing these parameters makes the job of this program much
easier. There are also template files for the most common protocols
available. Templates can be downloaded using irdb-get(1). You use a
template file by providing the path of the file as a command line
parameter.

Please take the time to finish the file as described in
https://sourceforge.net/p/lirc-remotes/wiki/Checklist/ an send it
to  <lirc@bartelmus.de> so it can be made available to others.

Press RETURN to continue.

Checking for ambient light  creating too much disturbances.
Please don't press any buttons, just wait a few seconds...

No significant noise (received 0 bytes)

Signals are biphase encoded.
Signal length is 13
RC5 encoding

Please enter the name for the next button (press <ENTER> to finish recording)
KEY_VOLUMEUP

Now hold down button "KEY_VOLUMEUP".

Please enter the name for the next button (press <ENTER> to finish recording)
KEY_VOLUMEDOWN

Now hold down button "KEY_VOLUMEDOWN".

Please enter the name for the next button (press <ENTER> to finish recording)


Successfully written config file ./marantz-rc003pmcd.conf
Saving old config file in ./marantz-rc003pmcd.conf.bak

Ok so if others would find this interesting, I was able to find why irrecord errors out with some keys! It’s not irrecord’s fault, it’s the way the remote is designed.

I’ve used this command to get the RC5 pulse times for the Volume Up button:

mode2 -d /dev/lirc0 --driver default -m
volume up

 16777215

      877      892     1767     1788     1742      955
      882      868      858     1808      742     1038
     1773      894      930      872      856      921
      869      883      913    90364

Which I then coded for easier reading as S - Short, L - Long Pulse on a piece of paper (right notebook, top sequence).

Then I manually recomposed the “waveform” using that sequence (left notebook) and interpretted the bits and I got 0x1460 which is indeed the code for Volume Up.

Now, I used the same mode2 command to get the rc5 pulse sequence for a special key on my remote that makes irrecord to print those errors.

$ mode2 -d /dev/lirc0 --driver default -m
Using driver default on device /dev/lirc0
Trying device: /dev/lirc0
Using device: /dev/lirc0
 16777215

      848     1002      774      925      883      895
     1768     1818     1713      929      856     4486
      885      894      854     1790      821      949
      909      894      857      896     1767      938
      847     1804     1744     1814     1687    76182

I’ve coded this on the same right notebook with S and L and one pulse it’s weird, last column of second row. I think this is a very non-standard pulse by rc5 means so I think I might need to somehow record these keys differently, maybe in some sort of a raw mode. I hope irrecord lets me do that, but I think I’m in luck coz I saw some config files in some sort of a raw mode, I just need to understand how to use it.

2 Likes

Probably better to search for your remote and ‘ir-keytable’ if you want to process raw codes. This would do processing in kernel; have better performance / response and be completely customisable.

Our long(er) term plan is to ditch LIRC for ir-keytable.

I was able to record some keys in raw mode using irrecord and they work in the GUI interface but since there is no concept of toggle bit in raw mode, sometimes i need to press twice the same button for it to be picked up by the raw interpretter which is quite a bummer.

I will investigate ir-keytable, thanks for the suggestion, didn’t know about it.