Proprietary Knowledge Base

      • Burning hex file into Si4010 step-by-step

        tanagy | 07/195/2017 | 12:30 PM

        The basic operation flow of the NVM Programming Utility (Si4010_NVM_Burner.exe)  is as follows:


        1. Select the Main tab on the GUI.

        2. Select the USB adapter.

        3. Hit the Connect button to connect to the part.


        4. Add your application code intel hex file to the User Boot section.

        5. Keep the address value as it is — first line has 0xE180 address filled automatically.

        6. Check "Run" checkbox only.

        7. Specify the new output NVM Burn File. Choose Overwrite if desired. GUI must check the file existence before running the composer since the composer always overwrites the existing output file.

        8. Hit Compose and observe the results. The gui_composer.exe is invoked behind the scenes and the NBF file gets generated.


        4.Load existing, previously generated NVM Burn File. The Compose Map gets filled in from the file. Then go to Step 9.

        In both cases:

        9.Make sure the 6.5 V programming voltage is connected to GPIO[0] of the part. For example, slide the PROG switch on the MSC-BA4 board to the ON position.

        10. Hit Burn to burn the device. The burning process loads the NBF file in the device and uses the information in the NBF file to do the actual burning. Observe the results. The burning process stops at first error encountered.

      • RAIL_SetStateTiming and scheduled TX

        tanagy | 07/195/2017 | 12:15 PM

        Here is an example about relation between RAIL_SetStateTiming setting and scheduled TX:

        If you scheduled a transmit to occur on absolute time 1000µs and have an idleToTx time of 100µs and have a ramp time of 30µs:

                   1. Scheduled transmit should start at absolute time 1000µs

                   2. IdleToTx is then in effect. The PA ramp will start at absolute time 1100µs.

                   3. PA ramps. Modulation starts when ramp ends (at 1130µs in this case).


        tanagy | 07/195/2017 | 11:58 AM

        In RAIL_SchedulRx() you can configure a ‘receive window’. If you do not receive a sync word within this window, the RAIL_RX_CONFIG_TIMEOUT callback will be asserted.

      • Si4x6x-C2A, Si4x55-C2A startup sequence

        tanagy | 04/96/2017 | 10:32 AM

                      In the Si4x6x chips there is a timeout after POR built-in to make sure if there is no host activity (SPI comms), the chip would go back to inactive state saving energy. Inactive state is the state the chip is sitting in after POR.

                      Because of this time-out, some refinement is necessary on the recommended startup sequence of AN633, as follows:


        1. Assert SDN
        2. Wait at least 10us
        3. Deassert SDN
        4. Wait at least 14ms or until GPIO1(CTS) goes  HIGH
        5. Issue the POWER_UP command over SPI (or send first line of patch if applied)

                      This first SPI transaction has to take less than 4ms (NSEL LOW time). If it cannot be guaranteed, send a shorter command (e.g. NOP) first, check CTS, then send POWER_UP or patch.

      • Using PART_INFO command to identify EZRadio/PRO part number

        tanagy | 04/94/2017 | 08:24 AM

        The PART and ROMID replay fields of the PART_INFO command are sufficient to identify EZRadio/PRO part number and revision according to the following table.



        Part number PART ROM_ID Revision Top marking
        Si4060-B1B 4060 3 B1B 40601B Bxxxxx
        Si4063-B1B 4063 3 B1B 44631B Bxxxxx
        Si4355-B1A 4355 3 B1A 355A Bxxx
        Si4362-B1B 4362 3 B1B 44621B Bxxxxx
        Si4438-B1C 4438 3 B1C 44381C Bxxxxx
        Si4455-B1A 4455 3 B1A 455A Bxxx
        Si4460-B1B 4460 3 B1B 44601B Bxxxxx
        Si4461-B1B 4461 3 B1B 44611B Bxxxxx
        Si4463-B1B 4463 3 B1B 44631B Bxxxxx
        Si4464-B1B 4464 3 B1B 44641B Bxxxxx
        Si4055-C2A 4055 6 C2A 055A Cxxx
        Si4060-C2A 4060 6 C2A 40602A Cxxxxx
        Si4063-C2A 4063 6 C2A 40632A Cxxxxx
        Si4355-C2A 4355 6 C2A 355A Cxxx
        Si4362-C2A 4362 6 C2A 43622A Cxxxxx
        Si4438-C2A 4438 6 C2A 44382A Cxxxxx
        Si4455-C2A 4455 6 C2A 455A Cxxx
        Si4460-C2A 4460 6 C2A 44602A Cxxxxx
        Si4461-C2A 4461 6 C2A 44612A Cxxxxx
        Si4463-C2A 4463 6 C2A 44632A Cxxxxx
        Si4467-A2A 4467 6 A2A 44672A Cxxxxx
        Si4468-A2A 4468 6 A2A 44682A Cxxxxx
















      • Setting up a one way link with the Si4010 Key Fob Development Kit (P/N 4010-KFOBDEV-xxx)

        tanagy | 07/183/2016 | 10:02 AM


        How can I set up a one way link with the Si4010 Key Fob Development Kit (P/N 4010-KFOBDEV-xxx)? (xxx is the frequency band of the kit)


        Setting up the Si4010 MSOP Key Fob Development Board (P/N 4010-DKPBxxx-BM) as the transmitting node of the link.

        1. Connect your 4010-DKPBxxx-BM board to your PC according to chapter 5 of AN690: Si4010 Development Kit Quick-Start Guide

        Note, that the Si4010 is an OTP device, but during this test it is used in debug mode, i.e. the example program is loaded in and run from the RAM of the device, so

        1. The 6.5 V programming voltage switch on the burning adapter board has to be in OFF state.
        2. The battery switch on the development board has to be in OFF state, the power to the Si4010 will be provided by the burning adapter board. If you switch on the battery switch, VDD of the Si4010 will be momentarily interrupted and your downloaded code from the RAM may get lost during the interruption.
        3. Make sure, that the Si4010 on the board is in factory new state, i.e. the NVM (OTP) memory of the device was not programmed previously.
        1. Install the Silicon Labs IDE from
        2. Download and extract the Si4010 example projects from​/
        3. Open the keyfob_demo_2 project in Silicon Labs IDE by clicking on \Si4010_example_programs\keyfob_demo_2\bin\keyfob_​demo_2.wsp
        4. Connect the Silabs IDE to your connected Si4010 device by clicking the Connect button or invoking the Debug -> Connect menu item.
        5. If your development kit is for the 434MHz band, you can skip steps 7, 8, 9 and 10.
        6. Install the unlimited Keil PK51 for 8-bit MCUs (Professional Developer's Kit) from​crocontroller-software.aspx#keil-pk51
        7. Register and receive the key to unlock your PK51 tools at
        8. To unlock your PK51 tools, follow the instructions in Application Note 104.
        9. In the keyfob_demo_2 project, modify the frequency setting according to the band of your development kit (434, 868 or 915 MHz). You can do this by changing the constants in the following lines of keyfob_demo_2_main.c:

                fDesiredFreqFSK      = f_433_RkeFreqFSK_c;

                bFskDev                       = b_433_RkeFskDev_c;

        The constants for the different bands are defined in the keyfob_demo_2.h file.

        1. Recompile the project by hitting the Rebuild All button on the tool bar of the IDE.
        2. Download the OMF file either by hitting the Download code (Alt+D) toolbar button or from the Debug -> Download object code menu item. The latter also allows IntelHEX download.
        3. Start the program by hitting the Disconnect button on the tool bar. Note, that the program is running from RAM, so it will be lost upon disconnecting the power to the Si4010.


        Setting up the Si4355 RFStick Receiver Board (P/N 4355-LED-xxx-SRX) as the receiving node of the link.

        1. Connect your 4355-LED-xxx-SRX board to an USB port of your PC via the Toolstick Base Adapter of the development kit.

        After power up the board is ready to receive the packets sent by the keyfob_demo_2 program.

        The operating frequency is set by the receiver program automatically according to the content of the on-board EBID (board identification) memory.

        1. The 8051F930 MCU on this board is factory-programmed with the Si4010/Si4355 EZRadio Remote Control Demo Kit receiver side sw. The full program project can be downloaded from the link. It contains a precompiled hex file that can be reloaded to the board if necessary, using the Silicon Labs IDE and the Toolstick Base Adapter.


        Operating the link:

        When a button is pressed on the 4010-DKPBxxx-BM transmitter board, LEDs flash on the 4355-LED-xxx-SRX receiver board according to which button was pressed. For details of the packet structure and RF parameters used in this demo, see the Si4010/Si4355 EZRadio® Remote Control Demo Kit User's Guide

        Note that the LED on the transmitter board won't flash because of a debug mode limitation. See details in section 7. of the kit's quick start guide (AN690).

      • Free Keil PK51 license expiry

        tanagy | 04/97/2016 | 07:25 AM


        Silabs free Keil PK51 License expires on March,2016. How can it be renewed?


        Silicon Labs provides a new license number with new expiration date. Existing licenses will continue to work after 31-Mar-16, but new releases of PK51 published after that date will require re-activation with the new license number.

        So, as long as the user doesn't update their installation of Keil, there should be no interruption of service for them.




        To update an existing installation to a current license for the PK51 toolchain, please follow these instructions:

        1) Go to the following web page:
        2) Fill out the form on the right and click [Submit] to receive a product serial number (PSN). Save this 15 character code for later.
        3) If you have already registered your Keil PK51 toolchain using the Simplicity Studio dialog box and registration instructions, please uninstall the PK51 toolchain. To do so in Simplicity Studio, click [Window] > [Preferences] > [Simplicity Studio] > [Toolchains].
        4) Click the link that says "Need more toolchains? Customize your installation here..."
        5) Scroll down to "Keil 8051 Toolchain (v9.53)" and click Uninstall
        6) Restart Simplicity Studio
        7) Please reinstall the Keil 8051 toolchain. Repeat Steps 3-6, but this time click [install] next to "Keil 8051 Toolchain (v9.53)"
        8) Click [Help] > [Licensing] > [Keil 8051 v9.53]
        9) In the dialog box that pops up, click the link ("this form") to go to the Keil Single-User License registration form.
        10) Replace the Product Serial # (PSN) in the form with the code you got in step 2 above, and fill out the rest of the form as normal. Submit.
        11) Once you receive your email from Keil with the new license ID code (LIC), copy the the LIC into the Simplicity Studio Licensing Helper dialog box from step 9 above and click OK.
        12) You should now have a valid license for the PK51 toolchain that does not expire until March 2019.

      • Zero gap between transmitted packets on Si446x

        tanagy | 08/224/2015 | 12:11 PM

        If you need zero gap between two transmitted packets, a trick could be to load in the fifo the payload of the first packet and also the preamble, sync and payload of the second packet, and transmit the two packets as one packet. E.g. if you have 5bytes preamble (55 55 55 55 55), and sync is 2d d4, and payload is 12 34 56 for the first packet and 78 9a bc for the second packet, then you should fill in the fifo 12 34 56 55 55 55 55 55 2d d4 78 9a bc and send it as a single packet with 13 byte long payload.

      • Si4x6x API documentation

        tanagy | 07/195/2015 | 10:52 AM


        Where can I find the latest AN625: Si446x API Descriptions application note?


        AN625 is obsolete for a long time and not available on

        API documentation is provided in html format and can be found at

        or at

        Pick the one that matches your chip revision.

      • Internal pull-ups on the SPI bus of Si446x

        tanagy | 07/188/2015 | 06:14 AM


        I know SDO has a pull-up in shutdown, and an optional pull-up when the chip is active - but do the input pins SDI, SCLK, NSEL have any pull-up options?


        There are no internal pull-ups available on SDI, SCLK and NSEL. Their state during shutdown and after POR is HiZ input.