We are currently struggling to get any useful range from the SI4455 (ZETAPLUS 433MHz) in an outdoor environment LOS (line of sight), using this antenna (https://www.rfsolutions.co.uk/antennas-c8/1-4-wave-flexi-433mhz-sma-ra-antenna-p116) for both transceivers (i.e. transmitter and receiver), connected using this UFL to SMA cable (https://uk.rs-online.com/web/p/coaxial-cable-assemblies/1408015/). For our application we need up to 200m/300m range (around 5ft above ground), but we are barely getting consistent transmission at 30m apart. We are transmitting 12 byte packets, every 20 seconds, using an RF baud rate of 9600 with the output power set to the maximum.
The documentation quotes a range of upto 2km LOS, are we missing something obvious, or is there something we need to tweak in the setting or in our hardware setup to get better transmission range?
Could you please elaborate a bit about the RAIL_ScheduleRx() behaviour.
Can in be called from the context of a radioRxEventHandler, or should it be called from a separate task?
Can you schedule multiple future packets for the same railHandle, or should you schedule them one by one?
My current test setup is two EFR32 modules and one HackRF (SDR transmitter). In Simplicity IDE my start point was the “simple_txr” example but to achieve a GMSK modulation I changed the radio configuration as:
Modulation type: MSK
Shaping Filter: Gaussian
Bitrate: 125 kbps
Using the frequency of 434MHz the transmission make by the HackRF is received by the two EFR32 modules and a transmission from one EFR32 module is received by the other EFR32 module; everything works as expected. The problem is when I change the frequency to 228MHz, in this case the modules still received the HackRf transmission but the transmission from one module is not received by the other. Also, in the spectrum analyze the module transmission in 228 MHz looks different from the HackRf transmission.
I’m using two custom modules with the EFR32FG12P431F1024GM48 part. I also tested with two Developer Kits with the same result, these kits are “Wireless Starter Kit Mainboard (BRD4001A Rev A01)” with the parts “EFR32FG14 2400/434 MHz 10 dBm Dual Band Radio Board (SLWRB4259A)”
Since the description of the radio transceiver related registers of the chip are not published, I only can use the RAIL API to interact with the transceiver when implementing a proprietary communication stack. So, I am stuck with this problem. Any help?
the error says "validation problem ... correct path for assembler, compiler, linker".
The path indicated is the correct path so why the error?
I can't seem to find the S2 security layer specifications. I can find only S0, although it is not referenced by the public specification site.
Regards and thank you!
I have a SI4455 transmitting packages every 200 ms. It works fine - most of the time.
Suddenly, it can be after 5 minutes to 25 minutes, I don't get af CTS signal.
Code ( portet to a ATmega644 / Codevision compiler):
unsigned char radio_comm_GetResp_434(unsigned char byteCount, unsigned char* pData)
unsigned int errCnt;
unsigned char ctsVal;
ctsVal = 0;
errCnt = RADIO_CTS_TIMEOUT;
while (errCnt != 0) //wait until radio IC is ready with the data
radio_hal_SpiWriteByte_434(0x44); //read CMD buffer
ctsVal = radio_hal_SpiReadByte_434();
if (ctsVal == 0xFF)
if (errCnt == 0)
/* ERROR!!!! CTS should never take this long. */
printf("\r\nERROR!!!! CTS should never take this long. %u",ctsVal);
if (ctsVal == 0xFF)
ctsWentHigh_434 = 1;
I use SI4463 transceiver with 433 MHz OOK and 4GFSK modulations (two separate chips). I'm building a device where it is required to limit link budget manually by the user. It's not possible to decrease Tx power so what has left is Rx sensitivity.
I can't find the answer in the documentation. Is there any effective way of reducing Rx sensitivity in Si4463?
I'm using the Si4010 EEPROM for storing rolling counters. At the moment it works for 20 bit counters but I'd like to use them at 32 bit.
I've tried but it seems it's working only using 20 bits.
The code I'm using is:
xdata uint32_t tmp;
tmp = 0xFFFFF;
vMtp_SetDecCount(&tmp, 0, 6);
value = lMtp_GetDecCount(0, 6); // value is 0xFFFFF
value = lMtp_GetDecCount(0, 6); // value is 0x00000
I've set the first counter to the max value for a 20 bit counter and I've read and the value is correct.
Then I've incremented it and final result is 0.
The same has happened when I've tried to set the counter to a value greater then 0xFFFFF.
i was wondering if the product-ID of the SI4012 RF-Transmitter (see data sheet on page 18) is unique or not?
I mean it is 32 bit long and therefore can save over 4,2 bilions different numbers.
So i think it is unique but the data sheet says nothing about if the ID is unique or not.
For my project i have to now if it is unique or not, because every device has to have his own serial ID.
Thank you for helping
We are using Silabs EasyRadio Pro Si4463 transceivers on both 868 MHz (Europe) and 915 MHz (US) bands. Not all devices in the network are using Silabs chips (we also need to talk to 3rd party devices), but PHY/MAC parameters are nothing exotic and perfectly be handled by si446x devices. For debugging it would be very handy to be able to sniff all network traffic.
Is there a standard sniffer solution (HW and SW) available from Silabs which would enable us to capture all wireless traffic?
I was reading about the Network Analyzer build into Simplicity Studio, but don't find anything back about what options or boards are supported. Ideally I would just like to buy a standard board (for example some dev kit) and use this in combination with Network Analyzer of Simplicity Studio. But currently I have no idea what board I would have to buy.
I'm trying to change nIRQ interrupts during receive (so I've put device in receive mode with rssi threshold and rx timeout interrupts) If rssi threshold happens before rx timeout I want to remove rssi interrupt and extend rx timeout one, behaviour I get is that even if I remove flag from INT_CTL_MODEM_ENABLE register with RSSI I still got HW interrupts on this pin (from RSSI). only if I turn it to idle beforehand this is resolved. Is it expected behaviour? I would really need functionality to change those interrupts "on the fly" ideally to not get out of receive mode if possible.
My current "flow" of app is:
Are there any examples of direct use of the RAIL API for DSSS? I am trying to evaluate EFR32 to communicate with existing systems based on the Cypress CYRF6936 and that allows arbitrary chip codes to be configured. This does not appear to be possible using the RAIL Configurator GUI.