Enable “generic-fem-two-ctrl-pins” FEM driver for SKY66112-11


We want to use a BL6554PA (based on the nRF52840) as a thread node and enable the integrated Skyworks SKY66112-11 front-end module with PA and LNA to increase our range.

I am building the nRF Connect SDK v2.9.0 openthread cli example. Zephyr includes a board definition for the BL654PA (ezurio/bl654_dvk), which includes the dts definition for the FEM that indicates it’s compatible with the “generic-fem-two-ctrl-pins” FEM driver as shown below:

/ {
    /* Information from Nordic SDK-Based Application Development and SKY66112 datasheet */
    sky66112_fem: fem {
        compatible = "generic-fem-two-ctrl-pins";
        ctx-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
        crx-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
        ctx-settle-time-us = <23>;
        crx-settle-time-us = <5>;
        tx-gain-db = <22>;
        rx-gain-db = <11>;
    };
};
 
&radio {
    fem = <&sky66112_fem>;
};

We are able to build the application for, and operate a BL654PA as a thread node. However, from the configuration and the radio range, it appears the FEM is not enabled.

I suspect that MPSL_FEM_ANY_SUPPORT (which appears to be set correctly to ‘n’ in the configuration) is appearing enabled (set to 'y') somewhere in the build process, and resultantly being marked as an unfulfilled dependency for MPSL_FEM.


Configuration Details

  1. The zephyr configuration shows that DT_HAS_GENERIC_FEM_TWO_CTRL_PINS_ENABLED is enabled (set to ‘y’), but MPSL_FEM_GENERIC_TWO_CTRL_PINS_SUPPORT is disable (set to ‘n’).
  2. MPSL_FEM_GENERIC_TWO_CTRL_PINS_ SUPPORT is not directly configurable and depends on subsys/mpsl/fem.
  3. I expect to see MPSL_FEM enabled (set to ‘y’), but it is set to ‘n’.
    It’s dependencies: CONFIG_MPSL=y and MPSL_FEM_ANY_SUPPORT=n are both set correctly in the configuration, but menuconfig shows this dependency is not met:
Name: MPSL_FEM
Prompt: Radio front-end module (FEM) support
Type: bool
Value: n
 
Help:
 
  Controls if front-end module (FEM) is to be configured and enabled
  when MPSL is initialized. Default type of FEM to use depends on which
  compatible nodes are in devicetree.
 
Direct dependencies (=n):
     MPSL(=y)
  && MPSL_FEM_ANY_SUPPORT(=n)
 
Default:
  - y
4. Setting CONFIG_MPSL_FEM=y manually in the prj.conf displays the following build warning:

warning: MPSL_FEM (defined at /opt/nordic/ncs/v2.9.0/nrf/subsys/mpsl/fem/Kconfig:57) was assigned
the value 'y' but got the value 'n'. Check these unsatisfied dependencies: MPSL_FEM_ANY_SUPPORT
(=n). See http://docs.zephyrproject.org/latest/kconfig.html#CONFIG_MPSL_FEM and/or look up MPSL_FEM
in the menuconfig/guiconfig interface. The Application Development Primer, Setting Configuration
Values, and Kconfig - Tips and Best Practices sections of the manual might be helpful too.

(MPSL_FEM_ANY_SUPPORT is not directly configurable)

 

To clarify, the default configuration shows both these dependencies in the correct state,

MPSL(=y) && MPSL_FEM_ANY_SUPPORT(=n)

but MPSL_FEM is not enabled.

Curious what we might be missing!

Thanks!

  • Hello,

    ''I suspect that MPSL_FEM_ANY_SUPPORT (which appears to be set correctly to ‘n’ in the configuration) is appearing enabled (set to 'y') somewhere in the build process, and resultantly being marked as an unfulfilled dependency for MPSL_FEM.''

    I am not sure about this as you mentioned also that CONFIG_MPSL_FEM is not set.

    Here in previous case, it shows that if CONFIG_MPSL_FEM_ANY_SUPPORT  is set then consequently CONFIG_MPSL and CONFIG_MPSL_FEM_ONLY will be enabled.  (+) nrf21540 gain control - Nordic Q&A - Nordic DevZone - Nordic DevZone

    Can you set these also in

    CONFIG_MPSL_FEM=y
    CONFIG_MPSL_FEM_NRF21540_TX_GAIN_DB=10
    CONFIG_BT_CTLR_TX_PWR_ANTENNA=10

    MPSL_FEM_GENERIC_TWO_CTRL_PINS_SUPPORT =y in the prj.conf file?

Related