Skip to content

(Re)program systems for encapsulated units

Rémy Tribhout edited this page Apr 29, 2021 · 4 revisions

❓ Once the firmware is running as expected on a PGA, it is considered as less risked to flash it on an encapsulated system. Keep in mind that in the rare cases the code is corrupting the systems you will not be able to power-cycle an encapsulated unit. It is recommended to read and understand (Re)program systems for PGA🔐 before reading this wiki.


0️⃣ Setup configuration

Components list:

  1. Base station
  2. Gateway
  3. Power Supply

Base station | Gateway

⚠️ Please, if programming on a static-sensitive system as a PGA follow these checkpoints🔐.

1️⃣ Reprogram a system

Without reset

In the main function of the firmware, it checks the enumerated var value and only executes operation_init if the var is not set properly. enumerated gets set in operation_ini and so this is a way for the code to not re-initialize the system every time it wakes. Note that the system will always start program execution from the start of main each time it wakes. So what can sometimes happen is that you make a small change to a program, reload it without a full reset and it may not execute operation_init if it goes to check that variable and finds it unchanged. Therefore, it's recommended to change enumerated's value each time you update the code to avoid this issue.

Flash firmware → m3_ice -y -s COM5 goc --led=ir -d 0.5 -V3 -g **25** flash Tstack_ondemand_v6.5.hex

Verify if programming is successful with enumerated value:

Firmware versionm3_ice -y -s COM5 goc --led=ir -d 0.5 -V3 -g 25 message 0000008C F0000000

e48302a200a0bb00**54436050**

With soft/hard reset

Not available on TC110.

2️⃣ System / Gateway radio tuning

There are additional steps to be done after reprogramming in order to receive properly on the gateway.

Each encapsulated system has system-specific parameters such as the CFO and the SFO that need to be properly trimmed. The complete data is maintained by the manufacturer. After reprogramming, you can verify if the new program is running by observing the CFO with a spectrum analyzer as you trim it with the corresponding trigger. If trimming the CFO is not enough to receive on the gateway, and assuming the SFO setting is wrong, you can either change SFO value in the gateway settings to find the correct one that is working with your system, or if you have the data from manufacturer you can retrim SFO on the system with the appropriate trigger command.

For CFO trimming, use trigger 0x22. For SFO trimming, use trigger 0x23. There are two fields for the SFO trim but both are set to the same value for most systems. Since you may not know any more which system is which if you previously change CHIP_ID value, I'd suggest writing each CFO/SFO trim pair to see if you can pick up packets on the gateway.

  • #504: CFO: 0x3F, SFO: D & D
  • #505: CFO: 0x7F, SFO: E & E
  • #506: CFO: 0x7F, SFO: E & E

CFO trimmingm3_ice -y -s COM5 goc --led=ir -d 0.1 -V3 -g 25 message 0000008C 2200007F

SFO trimmingm3_ice -y -s COM5 goc --led=ir -d 0.1 -V3 -g 25 message 0000008C 23000E0E


SRR layer's CFO (CARRIER Frequency Offset)

SRR layer's SFO (Sampling Frequency Offset)

Read more