Radio settings change request, optimized RF range

Hi all,

I am using 3 WIXEL in my house, for home automation purposes. During the setup process, i discovered that the wixels were not communicating properly in all the places of my house : it is an old house built in 17th century, and i have big granite walls inside.

I started to look at the documentation on the TI website and i downloaded the SmartRF application (works with wine under Linux, by the way). The application proposes some default settings : i selected the 10Kbaud @ 250 Khz, generated the registers settings and update the radio_registers.c file. And success !!! The WIXELs are now able to communicate with each other, with a maximum range of 15 meters between 2 modules.

Hence my proposition to the SDK development team : instead of only one default RF setting, i think that it would be a good idea to add one or two default modes, selected at compilation time by a define or something like that. I suspect that wide range and low bitrate can be also very useful for robotic applications.

If you need my registers settings, i will publish it here.

Hello. That sounds like a pretty cool house! I am glad you were able to have better results by changing the register settings. Could you please post your modified version of the Wixel SDK code here, in case anyone else wants to use it?


Here we go :

void radioRegistersInit()
    // Transmit power: one of the highest settings, but not the highest.
    PA_TABLE0 = 0xFF;

    FREQ2 = 0x65;
    FREQ1 = 0x60;
    FREQ0 = 0x00;

    MDMCFG1 = 0x23;
    MDMCFG0 = 0x11;  // Modem Configuration

    FSCTRL1 = 0x08;  // Frequency Synthesizer Control
    FSCTRL0 = 0x00;  // Frequency Synthesizer Control

    MDMCFG4 = 0x68;  MDMCFG3 = 0xB5; // Modem configuration (data rate = 10 kbps, bandwidth = 250 kHz).

    MDMCFG2 = 0x03;  // Modem Configuration

    DEVIATN = 0x45;  // Modem Deviation Setting.  No effect because we are using MSK.

    FREND1 = 0x56;   // Front End RX Configuration (adjusts various things, not well documented)
    FREND0 = 0x10;   // Front End TX Configuration (adjusts current TX LO buffer, not well documented)

    FOCCFG = 0x16;  // Frequency Offset Compensation Configuration
    BSCFG = 0x6C;   // Bit Synchronization Configuration

    AGCCTRL2 = 0x43;
    AGCCTRL1 = 0x40;
    AGCCTRL0 = 0x91;

    FSCAL3 = 0xA9;
    FSCAL2 = 0x0A;
    FSCAL1 = 0x00;
    FSCAL0 = 0x11;

    // Mostly-undocumented test settings.
    // NOTE: The datasheet says TEST1 must be 0x31, but SmartRF Studio recommends 0x11.
    TEST2 = 0x88;
    TEST1 = 0x31;//0x31;//0x11;
    TEST0 = 0x09;//0x09;//0x0B;

    // Packet control settings.
    PKTCTRL1 = 0x04;
    PKTCTRL0 = 0x45; // Enable data whitening, CRC, and variable length packets.

I forgot to add some comments.

I generated the registers values with SmartRF from TI with on of the default settings in the “Expert mode” tab :

Data rate 10kbaud, Dev 38khz, .... Optimized for sensitivity

I just changed the following values :

Base Frequency : 2403.47
Whitening enabled

Any chance to get those values in the SDK as a low bitrate option ?

Yes, we might consider doing that at some point. In the mean time, you are of course free to fork the pololu/wixel-sdk repository on github and make whatever changes you want in your copy of the SDK.