This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Smart Remote 3, keyboard keys are not received on Android TV when disabling power management

Hi all, 

I get a really weird issue developing on the smart remote 3 project.

I work with my own hardware design, and as I want a specific behaviour I disabled power_management go to sys off when remote is disconnecting or when the advertising stops.

Once I have done this, when testing on Android TV (Nvidia Shied alike), I can connect correctly to it, I get voice and consumer keys but Keyboard keys are not always received (sometimes I get all of them (20% of times), or none (80%)). It seems that sometimes I connect alright and sometimes I don't. It works perfectly on Windows and on smartphones.

Can you reproduce this issue? Do you have any idea how to solve this issue?

Thanks in advance

  • Thanks for the additional information, Sylvain. What version Android TV are you testing with? We can  try to reproduce the issue here by removing nrf_pwr_mgmt_shutdown() from default code.

  • I'm on Android TV 7.1.2 with security patch from 1 december 2017 but I also get issues on android 8.0.0 with security patch from 5 december 2018 

  • Can you share some more details regarding the function you call to advertise when disconnected and a button is pressed?
    I've done some testing on a Nexus Player running Android 8.0, but haven't seen the issue yet.

    I made the following modifications to default SR3 v1.2.1 (PCA63519 hardware) to recreate your setup:

    - In application sdk_config.h, set NRF_PWR_MGMT_CONFIG_STANDBY_TIMEOUT_ENABLED 0

    - Remove all calls to nrf_pwr_mgmt_shutdown(NRF_PWR_MGMT_SHUTDOWN_GOTO_SYSOFF)

    - Added the following behavior when a button is pressed and remote is not currently connected:

    if (!m_coms_ble_adv_running())
    {
        (void) m_coms_ble_advertise(false);
    }

    I also tried with m_coms_ble_advertise(true), but this will cause the remote to erase the existing bond if CONFIG_MAX_BONDS ==1 (default value), in order to free up enough space in bond database to create new bond. In this case I ended up in an connect/disconnect cycle with the Nexus Player due to encryption failing (encryption keys erased by remote).

    Please let me know if I'm missing some important difference between our setups

Related