Remote control longpress question.

  • Hello. I have an issue where the long down arrow press on my TV remote is not scrolling down title lists of my RPi/libreelec/Kodi. It used to work fine with the remote of my LG television, but I recently changed to a Cello TV, and now although everything else still works, the repeated up/downscrolling does not, meaning that I have to keep pressing the up/down arrows to move up/down more than once. I'm pretty certain that this is going to reduce the working life of the affected button :) Long pressing the left and right arrows still works, but that is of much less use to me.

    I know that the remote is continuing to send a signal, since a flashing indicator on the front if the TV tells me so. Is there any possibility of getting this working as before?

  • Try and play a little bit with these settings for the CEC adapter:

    • Remote button press repeat rate (ms): 100
    • Remote button press delay before repeating (ms): 200
    • Remote button press release time (ms): 0

    Settings -> System -> Input -> Peripherals -> CEC Adapter

  • Many thanks for the reply, but I'm afraid it didn't help. In fact, I already had those values set, since I'd seen it mentioned in another post while I was searching for suggestions. I've tried all kinds of other values, too, but without success.

  • Appears like a firmware issue of your Cello TV. To diagnostic what happens in detail, you could enable the KODI debug logging and watch with tail -F /storage/.kodi/temp/kodi.log which key events will be received from your TV via CEC during you held the up/down arrow keys and if there is a different to left/right arrow keys.
    Some TVs interprets a long press signal from the remote control as a different function or the remote control sends a different key instead of repeating. If there is send a different key via CEC, then you could map this to Channel Up / Down to have page wise scrolling to mitigate the issue.

  • Only the last entry here is a longpress (the others are just presses). It looks like it can't see any difference between short down and long down.

    2025-05-13 11:20:40.137 T:1020 DEBUG <general>: PushCecKeypress - received key a9 duration 0
    2025-05-13 11:20:40.145 T:982 DEBUG <general>: HandleKey: 169 (0xa9, obc86) pressed, action is Left
    2025-05-13 11:20:41.541 T:1020 DEBUG <general>: PushCecKeypress - received key a8 duration 0
    2025-05-13 11:20:41.558 T:982 DEBUG <general>: HandleKey: 168 (0xa8, obc87) pressed, action is Right
    2025-05-13 11:20:43.117 T:1020 DEBUG <general>: PushCecKeypress - received key a6 duration 0
    2025-05-13 11:20:43.128 T:982 DEBUG <general>: HandleKey: 166 (0xa6, obc89) pressed, action is Up
    2025-05-13 11:20:44.302 T:1020 DEBUG <general>: PushCecKeypress - received key a7 duration 0
    2025-05-13 11:20:44.313 T:982 DEBUG <general>: HandleKey: 167 (0xa7, obc88) pressed, action is Down
    2025-05-13 11:20:47.825 T:1020 DEBUG <general>: PushCecKeypress - received key a7 duration 0
    2025-05-13 11:20:47.828 T:982 DEBUG <general>: HandleKey: 167 (0xa7, obc88) pressed, action is Down

  • I've noticed a difference between the longpress Down (above) and the longpress Right. The Right longpress shows multiple entries with increasing durations. With the Down, there are no repeats.

    2025-05-13 15:06:06.820 T:1020 DEBUG <general>: PushCecKeypress - received key a8 duration 0
    2025-05-13 15:06:06.825 T:982 DEBUG <general>: HandleKey: 168 (0xa8, obc87) pressed, action is Right
    2025-05-13 15:06:07.478 T:1020 DEBUG <general>: PushCecKeypress - received key a8 duration 658
    2025-05-13 15:06:07.494 T:982 DEBUG <general>: HandleKey: 168 (0xa8, obc87) pressed, action is Right
    2025-05-13 15:06:07.679 T:1020 DEBUG <general>: PushCecKeypress - received key a8 duration 859
    2025-05-13 15:06:07.680 T:982 DEBUG <general>: HandleKey: 168 (0xa8, obc87) pressed, action is Right
    2025-05-13 15:06:07.879 T:1020 DEBUG <general>: PushCecKeypress - received key a8 duration 1059
    2025-05-13 15:06:07.893 T:982 DEBUG <general>: HandleKey: 168 (0xa8, obc87) pressed, action is Right
    2025-05-13 15:06:08.079 T:1020 DEBUG <general>: PushCecKeypress - received key a8 duration 1259
    2025-05-13 15:06:08.089 T:982 DEBUG <general>: HandleKey: 168 (0xa8, obc87) pressed, action is Right
    2025-05-13 15:06:08.279 T:1020 DEBUG <general>: PushCecKeypress - received key a8 duration 1459
    2025-05-13 15:06:08.293 T:982 DEBUG <general>: HandleKey: 168 (0xa8, obc87) pressed, action is Right

  • I'm guessing that the 200ms between each press is coming from the setting currently configured for the CEC adapter. I'm also guessing that although the remote is sending long Down presses (or at least sending something), the TV is not forwarding them like it does for Left and Right.

  • You can also use cec-client to get more CEC details than with the KODI debug logging.

    • Stop KODI process: systemctl stop kodi
    • Start CEC client: cec-client

    This CLI client will announced as "CECTester" on the TV. Depending on the behaviour of the TV it could be necessary to switch to the selected HDMI port again, to get CEC to work.

    In general it's sometimes a good idea to disconnect the HDMI devices and TV physical and make all the components powerless simultaneous for some minutes. Afterwards the HDMI handshake will be initiated again and sometimes the CEC issues are like "magical" blown away.

  • Okay, I have some output. Apologies for the length.


    This is for the short Right press:

    DEBUG: [ 146950] CLinuxCECAdapterCommunication::Process - ioctl CEC_RECEIVE - rx_status=01 len=3 addr=01 opcode=44
    TRAFFIC: [ 146950] >> 01:44:04
    DEBUG: [ 146950] SetCurrentButton right (4) D:0ms cur:4
    DEBUG: [ 146950] key pressed: right (4) current(ff) duration(0)
    DEBUG: [ 146950] Changed key right (4) D:0ms cur:ff
    DEBUG: [ 146950] key pressed: right (4, 0)
    DEBUG: [ 146950] CheckKeypressTimeout T:83899.165
    DEBUG: [ 146950] Key right: idle (duration:0) (4) timeout:30222488ms (rel:500,rep:0,prs:500,rel:0)
    DEBUG: [ 146950] >> TV (0) -> Recorder 1 (1): user control pressed (44)

    DEBUG: [ 147281] CLinuxCECAdapterCommunication::Process - ioctl CEC_RECEIVE - rx_status=01 len=2 addr=01 opcode=45
    TRAFFIC: [ 147281] >> 01:45
    DEBUG: [ 147281] key released: right (4) D:331ms
    DEBUG: [ 147281] >> TV (0) -> Recorder 1 (1): user control release (45)


    This is for the long (a few seconds) Right press (which repeats as expected):

    DEBUG: [ 149353] CLinuxCECAdapterCommunication::Process - ioctl CEC_RECEIVE - rx_status=01 len=3 addr=01 opcode=44
    TRAFFIC: [ 149353] >> 01:44:04
    DEBUG: [ 149353] SetCurrentButton right (4) D:0ms cur:4
    DEBUG: [ 149353] key pressed: right (4) current(ff) duration(0)
    DEBUG: [ 149353] Changed key right (4) D:0ms cur:ff
    DEBUG: [ 149353] key pressed: right (4, 0)
    DEBUG: [ 149353] >> TV (0) -> Recorder 1 (1): user control pressed (44)
    DEBUG: [ 149353] CheckKeypressTimeout T:83901.568
    DEBUG: [ 149353] Key right: idle (duration:0) (4) timeout:30222488ms (rel:500,rep:0,prs:500,rel:0)

    DEBUG: [ 149685] CLinuxCECAdapterCommunication::Process - ioctl CEC_RECEIVE - rx_status=01 len=2 addr=01 opcode=45
    TRAFFIC: [ 149685] >> 01:45
    DEBUG: [ 149685] key released: right (4) D:332ms
    DEBUG: [ 149685] >> TV (0) -> Recorder 1 (1): user control release (45)


    This is for the short Down press:

    DEBUG: [ 153315] CLinuxCECAdapterCommunication::Process - ioctl CEC_RECEIVE - rx_status=01 len=3 addr=01 opcode=44
    TRAFFIC: [ 153315] >> 01:44:02
    DEBUG: [ 153315] SetCurrentButton down (2) D:0ms cur:2
    DEBUG: [ 153315] key pressed: down (2) current(ff) duration(0)
    DEBUG: [ 153315] Changed key down (2) D:0ms cur:ff
    DEBUG: [ 153315] key pressed: down (2, 0)
    DEBUG: [ 153315] CheckKeypressTimeout T:83905.530
    DEBUG: [ 153315] Key down: idle (duration:0) (2) timeout:30222488ms (rel:500,rep:0,prs:500,rel:0)
    DEBUG: [ 153315] >> TV (0) -> Recorder 1 (1): user control pressed (44)

    DEBUG: [ 153556] CLinuxCECAdapterCommunication::Process - ioctl CEC_RECEIVE - rx_status=01 len=2 addr=01 opcode=45
    TRAFFIC: [ 153556] >> 01:45
    DEBUG: [ 153556] key released: down (2) D:241ms
    DEBUG: [ 153556] >> TV (0) -> Recorder 1 (1): user control release (45)


    This is for the long (a few seconds) Down press (which does not repeat as expected):

    DEBUG: [ 156065] CLinuxCECAdapterCommunication::Process - ioctl CEC_RECEIVE - rx_status=01 len=3 addr=01 opcode=44
    TRAFFIC: [ 156065] >> 01:44:02
    DEBUG: [ 156065] SetCurrentButton down (2) D:0ms cur:2
    DEBUG: [ 156065] key pressed: down (2) current(ff) duration(0)
    DEBUG: [ 156065] Changed key down (2) D:0ms cur:ff
    DEBUG: [ 156065] key pressed: down (2, 0)
    DEBUG: [ 156065] CheckKeypressTimeout T:83908.280
    DEBUG: [ 156065] Key down: idle (duration:0) (2) timeout:30222488ms (rel:500,rep:0,prs:500,rel:0)
    DEBUG: [ 156065] >> TV (0) -> Recorder 1 (1): user control pressed (44)

    DEBUG: [ 156305] CLinuxCECAdapterCommunication::Process - ioctl CEC_RECEIVE - rx_status=01 len=2 addr=01 opcode=45
    TRAFFIC: [ 156306] >> 01:45
    DEBUG: [ 156306] key released: down (2) D:241ms
    DEBUG: [ 156306] >> TV (0) -> Recorder 1 (1): user control release (45)

  • This part looks strange to me, or better: is different to the behaviour I know from my SONY TVs.

    (rel:500,rep:0,prs:500,rel:0)

    The prs: counter increases continuously by 1, starting at 1, as long as I hold down a button. In your case, it seems to be fixed to 500. Also timeout:30222488ms looks wrong -> 8h 24min.

    Which RPi do you have and which LE version do you currently use?

  • Is 12.0.2 the current version? I have automatic updates enabled, so I assumed I'd always be on the latest one.


    I see that 12.0.2 is indeed the current one. Can I safely go from 10 to 12 in one go?

    Edited once, last by LeeDerbyshire: Merged a post created by LeeDerbyshire into this post. (May 14, 2025 at 6:02 PM).

  • Theoretically yes, if you put the image file in the /storage/.update directory and then reboot. Please make a backup before.
    The main problem could be that you have to reinstall additional add-ons because the architecture for the RPi4/5 has been changed from arm to aarch64. This is the reason why it is not recommended to go this way.

    chewitt
    January 29, 2025 at 6:07 AM
  • Well, the update went smoothly enough, although I've lost Confluence (but that's okay - I'd rather be up-to-date, and I've learned that I can't entirely leave the thing to do it by itself).

    Less happily, it hasn't solved the button problem.

  • Has the output of the cec-client changed in regards to the 2 things I mentioned? I assume you only get 1 event when you hold down the button, not multiple, right?

    Do you have already checked if a newer firmware version for your Cello TV is available?

  • I'll run the cec-client tomorrow.

    I've thought about updating the TV firmware. There is nothing on the web site that I can see, so I'll probably need to get in touch via email. My expectations aren't high.