ir-keytable: infinite loops, segfaults

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I have a fairly old dvico dual digital 4 tuner and remote.
There seem to be some issues with support for it, can I help fix them?

I am using ir-keytable 1.10.0-1 on Ubuntu 16.04 LTS,
with kernel 4.4.0-47-generic (package version 4.4.0-47-generic)

The remote's keymapping is the one in /lib/udev/rc_keymaps/dvico_mce;
kernel support for the device is in media/usb/dvb-usb/cxusb.c.

Mostly it works, in that I get correct keycodes back from evtest
and ir-keytable -t. But I want to change some of the keycode mappings
and that is not working.

  # cat >testfile
  0xfe47 KEY_PAUSE
  ^D
  
  # ir-keytable -v -d /dev/input/event15 -w testfile
  Parsing testfile keycode file
  parsing 0xfe47=KEY_PAUSE:   value=119
  Opening /dev/input/event15
  Input Protocol version: 0x00010001
      fe47=0077
  Wrote 1 keycode(s) to driver

So far so good, yes? But evtest still reports the same keycode
for the key I tried to modify.

  # evtest
  <select device 15>
  <press PLAYPAUSE key on remote>
  Event: time 1479206112.262746, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
  Event: time 1479206112.262746, -------------- SYN_REPORT ------------
  Event: time 1479206112.262760, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
  Event: time 1479206112.262760, -------------- SYN_REPORT ------------
 
  # irkeytable -r -d /dev/input/event15 |grep PAUSE
  Enabled protocols: unknown rc-5 sony nec sanyo mce-kbd rc-6 sharp xmp 
  scancode 0xfe02 = KEY_PAUSE (0x77)
  scancode 0xfe47 = KEY_PLAYPAUSE (0xa4)

I thought that I might need to clear and replace the entire table
to get things working. This is where the problems really start.

First trying to clear the table causes an infinite loop.

  # ir-keytable -d /dev/input/event15 -c
  Opening /dev/input/event15
  Input Protocol version: 0x00010001
  Deleting entry 1
  Deleting entry 2
  Deleting entry 3
  Deleting entry 4
  ....
  Deleting entry 2114689
  Deleting entry 2114690
  ^C

Then I tried to load a modified version of dvico_mce
The whole file was there, with just this change:
--- dvico_mce   2016-11-13 22:50:11.442092350 +1100
+++ testfile    2016-11-16 20:46:29.361411631 +1100
@@ -38,7 +38,7 @@
 0xfe03 KEY_0
 0xfe1f KEY_ZOOM
 0xfe43 KEY_REWIND
-0xfe47 KEY_PLAYPAUSE
+0xfe47 KEY_PAUSE
 0xfe4f KEY_FASTFORWARD
 0xfe57 KEY_MUTE
 0xfe0d KEY_STOP

The program seems to parse the modified file ok but then
segaults while reading from the input device.

  # ir-keytable -v -d /dev/input/event15 -w testfile
  Parsing testfile keycode file
  parsing 0xfe02=KEY_TV:  value=377
  parsing 0xfe0e=KEY_MP3: value=391
  parsing 0xfe1a=KEY_DVD: value=389
  parsing 0xfe1e=KEY_FAVORITES:   value=364
  parsing 0xfe16=KEY_SETUP:   value=141
  parsing 0xfe46=KEY_POWER2:  value=356
  parsing 0xfe0a=KEY_EPG: value=365
  parsing 0xfe49=KEY_BACK:    value=158
  parsing 0xfe4d=KEY_MENU:    value=139
  parsing 0xfe51=KEY_UP:  value=103
  parsing 0xfe5b=KEY_LEFT:    value=105
  parsing 0xfe5f=KEY_RIGHT:   value=106
  parsing 0xfe53=KEY_DOWN:    value=108
  parsing 0xfe5e=KEY_OK:  value=352
  parsing 0xfe59=KEY_INFO:    value=358
  parsing 0xfe55=KEY_TAB: value=15
  parsing 0xfe0f=KEY_PREVIOUSSONG:    value=165
  parsing 0xfe12=KEY_NEXTSONG:    value=163
  parsing 0xfe42=KEY_ENTER:   value=28
  parsing 0xfe15=KEY_VOLUMEUP:    value=115
  parsing 0xfe05=KEY_VOLUMEDOWN:  value=114
  parsing 0xfe11=KEY_CHANNELUP:   value=402
  parsing 0xfe09=KEY_CHANNELDOWN: value=403
  parsing 0xfe52=KEY_CAMERA:  value=212
  parsing 0xfe5a=KEY_TUNER:   value=386
  parsing 0xfe19=KEY_OPEN:    value=134
  parsing 0xfe0b=KEY_1:   value=2
  parsing 0xfe17=KEY_2:   value=3
  parsing 0xfe1b=KEY_3:   value=4
  parsing 0xfe07=KEY_4:   value=5
  parsing 0xfe50=KEY_5:   value=6
  parsing 0xfe54=KEY_6:   value=7
  parsing 0xfe48=KEY_7:   value=8
  parsing 0xfe4c=KEY_8:   value=9
  parsing 0xfe58=KEY_9:   value=10
  parsing 0xfe13=KEY_ANGLE:   value=371
  parsing 0xfe03=KEY_0:   value=11
  parsing 0xfe1f=KEY_ZOOM:    value=372
  parsing 0xfe43=KEY_REWIND:  value=168
  parsing 0xfe47=KEY_PAUSE:   value=119
  parsing 0xfe4f=KEY_FASTFORWARD: value=208
  parsing 0xfe57=KEY_MUTE:    value=113
  parsing 0xfe0d=KEY_STOP:    value=128
  parsing 0xfe01=KEY_RECORD:  value=167
  parsing 0xfe4e=KEY_POWER:   value=116
  Read dvico_mce table
  Opening /dev/input/event15
  Input Protocol version: 0x00010001
      fe4e=0074
      fe01=00a7
      fe0d=0080
      fe57=0071
      fe4f=00d0
      fe47=0077
      fe43=00a8
      fe1f=0174
      fe03=000b
      fe13=0173
      fe58=000a
      fe4c=0009
      fe48=0008
      fe54=0007
      fe50=0006
      fe07=0005
      fe1b=0004
      fe17=0003
      fe0b=0002
      fe19=0086
      fe5a=0182
      fe52=00d4
      fe09=0193
      fe11=0192
      fe05=0072
      fe15=0073
      fe42=001c
      fe12=00a3
      fe0f=00a5
      fe55=000f
      fe59=0166
      fe5e=0160
      fe53=006c
      fe5f=006a
      fe5b=0069
      fe51=0067
      fe4d=008b
      fe49=009e
      fe0a=016d
      fe46=0164
      fe16=008d
      fe1e=016c
      fe1a=0185
      fe0e=0187
      fe02=0179
  Wrote 45 keycode(s) to driver
  Segmentation fault (core dumped)
 
Is this just operator error?
What further diagnostics would help?

Vince

PS evtest reports this about the device:
  # evtest /dev/input/event15
  Input driver version is 1.0.1
  Input device ID: bus 0x3 vendor 0xfe9 product 0xdb78 version 0x827b
  Input device name: "IR-receiver inside an USB DVB receiver"
  Supported events:
    Event type 0 (EV_SYN)
    Event type 1 (EV_KEY)
    ...<elided>...
    Event code 403 (KEY_CHANNELDOWN)
  Properties:
  Testing ... (interrupt to exit)
  ^C
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux