# Something wrong with calibration procedure

**URL:** <https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163>\
**Category:** LimeSDR\
**Created:** [29 April 2017 12:52 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163 "2017-04-29T12:52:03Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![modimo](https://avatars.discourse-cdn.com/v4/letter/m/48db29/32.png) [@modimo](https://discourse.myriadrf.org/u/modimo)\
**Post date:** [29 April 2017 12:52 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/1 "2017-04-29T12:52:04Z")

</div>

Hello everyone!  
This is my first post on this forum. I wrote a c++ application using SoapySDR API working with LimeSDR. I use both channels 2_RX+2_TX at 20MSps. I am transmitting chirp signal from TX1 (TX2 sends zeros). Output of TX1 is attenuated and split in two signal (using power splitter) and connected to RX1 and RX2.

When everything is fine result is like the one in this picture:

 ![](https://canada1.discourse-cdn.com/flex034/uploads/myriadrf/original/1X/663da58341f3479c449af4bcd62eb17d8cb3a65b.png)

Top right window is spectrum for RX1 and RX2. Bottom is time domain for RX1 (real+ imag)  
However sometimes after RX calibrations the result is like this:

 ![](https://canada1.discourse-cdn.com/flex034/uploads/myriadrf/original/1X/15953322adffb23bd5ec86057fa80837052aa8a8.png)

Although RX calibration causes problems, the problem seems to be with TX. When I change TX center frequency it looks like this:

 ![](https://canada1.discourse-cdn.com/flex034/uploads/myriadrf/original/1X/40078b438b29399802b3a17bf2072e20e6fff154.png)

Additionally RX calibration breaks DC calibration for TX and I need to recalibrate TX after RX.  
I use BAND1 for TX and LNAL for rx, but the results are repeatable for any configuration.  
To perform calibration I deactivate streams and activate them after calibrations are complete.

Anyone else noticed problems with calibrations? What could be the cause? How to overcome this?

Thanks Rafal

---

<div class="post-metadata">

**Author:** ![Ancer](https://avatars.discourse-cdn.com/v4/letter/a/278dde/32.png) [@Ancer](https://discourse.myriadrf.org/u/Ancer)\
**Post date:** [29 April 2017 12:54 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/2 "2017-04-29T12:54:21Z")

</div>

Good job now why don’t you share us the software so that we can all test it?

---

<div class="post-metadata">

**Author:** ![modimo](https://avatars.discourse-cdn.com/v4/letter/m/48db29/32.png) [@modimo](https://discourse.myriadrf.org/u/modimo)\
**Post date:** [29 April 2017 13:08 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/3 "2017-04-29T13:08:57Z")

</div>

Why not. Although be warned project is a bit of a mess.

> **[GitHub - gitmodimo/LimeSDRTest](https://github.com/gitmodimo/LimeSDRTest)**
>
> Contribute to gitmodimo/LimeSDRTest development by creating an account on GitHub.

Project for qtcreator dependent on alglib and fftw (fftw can be removed).

The strange thing is that real and imag amplitude varies in very bizarre way. Considering imag and real as separate signals the frequency on both sides of DC crossing are the same but amplitude is different.

 ![](https://canada1.discourse-cdn.com/flex034/uploads/myriadrf/original/1X/b0f859ae653ed2785a5d16122e0a9465e19eb15a.png)

---

<div class="post-metadata">

**Author:** ![modimo](https://avatars.discourse-cdn.com/v4/letter/m/48db29/32.png) [@modimo](https://discourse.myriadrf.org/u/modimo)\
**Post date:** [30 April 2017 16:51 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/4 "2017-04-30T16:51:21Z")

</div>

I compared all LMS registers and they are identical. Is there any other configuration that i can compare?

---

<div class="post-metadata">

**Author:** ![modimo](https://avatars.discourse-cdn.com/v4/letter/m/48db29/32.png) [@modimo](https://discourse.myriadrf.org/u/modimo)\
**Post date:** [1 May 2017 15:48 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/5 "2017-05-01T15:48:06Z")

</div>

I recreated the test i PothosGui. Can anyone try it out?  
Procedure to recreate(try multiple times):  
Stop button  
Cal button  
Start button  
Connect TX1\_1 with RX1\_L

When it’s all good it looks like this:

 ![](https://canada1.discourse-cdn.com/flex034/uploads/myriadrf/original/1X/1bce60135cb69f4d077e554013d6abb09c49691f.png)

And when its bad it looks like this:

 ![](https://canada1.discourse-cdn.com/flex034/uploads/myriadrf/original/1X/49fe4eb59a452fb4ab1f6c5296df22c98984a8e1.png)

Spectrum is choppy.

Project file:  
test.pothos file

> <https://github.com/gitmodimo/LimeSDRTest/blob/master/test.pothos>

---

<div class="post-metadata">

**Author:** ![andrewback](https://avatars.discourse-cdn.com/v4/letter/a/22d042/32.png) [@andrewback](https://discourse.myriadrf.org/u/andrewback)\
**Post date:** [2 May 2017 10:42 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/6 "2017-05-02T10:42:47Z")

</div>

Hi @modimo, just to let you know that we’re currently reviewing calibration and there should be an update on this soon. Thanks for sharing your tests also!

---

<div class="post-metadata">

**Author:** ![BelmY](https://yyz2.discourse-cdn.com/flex034/user_avatar/discourse.myriadrf.org/belmy/32/843_2.png) [@BelmY](https://discourse.myriadrf.org/u/BelmY)\
**Post date:** [18 May 2017 04:16 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/7 "2017-05-18T04:16:25Z")

</div>

Hi @andrewback, any news about the calibration review and update?

As other users, I’d like to express my interest on it, so, I’d really appreciate if an official full **“LimeSDR Calibration and Test Procedure”** is prepared and described.

Thanks to @modimo for the shared work [LimeSDRTest by modimo](https://github.com/gitmodimo/LimeSDRTest), it is very well appreciated.

Cheers  
BelmY

---

<div class="post-metadata">

**Author:** ![andrewback](https://avatars.discourse-cdn.com/v4/letter/a/22d042/32.png) [@andrewback](https://discourse.myriadrf.org/u/andrewback)\
**Post date:** [18 May 2017 06:30 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/8 "2017-05-18T06:30:53Z")

</div>

Hi @BelmY,

Just pinged @IgnasJ and @Zack for an update.

---

<div class="post-metadata">

**Author:** ![Zack](https://yyz2.discourse-cdn.com/flex034/user_avatar/discourse.myriadrf.org/zack/32/89_2.png) [@Zack](https://discourse.myriadrf.org/u/Zack)\
**Post date:** [18 May 2017 07:27 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/9 "2017-05-18T07:27:03Z")

</div>

Hello @modimo,

Checking [calibrateAll()](https://github.com/gitmodimo/LimeSDRTest/blob/master/limesdr.cpp#L438) function. Could you explain why you remember LNA, TIA, PGA, PAD settings, then set your own, calibrate and set these settings back? This will break your calibration. If you calibrate for some specific LNA, TIA, PGA, PAD settings, then you can not change these settings after calibration and expect to stay calibrated.  
What values are for RXDCOffsetMode and TXDCOffsetMode?

---

<div class="post-metadata">

**Author:** ![modimo](https://avatars.discourse-cdn.com/v4/letter/m/48db29/32.png) [@modimo](https://discourse.myriadrf.org/u/modimo)\
**Post date:** [18 May 2017 07:45 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/10 "2017-05-18T07:45:34Z")

</div>

Well I don’t think changing gains should break the calibrations. If you look at calibrations script(the one that stores all calibrated values for every frequency and takes 8hours). It does not store every possible combination of gains. Corrections are (best to my knowledge) only IQ imbalance and leakage corrections and DC offset calibration. I can’t run tests this week but from what remember it’s either calibration procedure changed my gain settings or the results were somewhat more repeatable with fixed gain settings.  
The best results i obtained was when I removed calibration cache before initialization of lime and perform only one calibration at start. It gave 50% chance for successful calibration(without effect described in previous posts).  
I even compared every single register value after good and bad calibration and they were identical.  
Next week I will probably get my hands on brand new LimeSdr and test if my unit is not broken or something.  
P.S.  
I don’t store gain value in pothos example and still reproduce the result.

---

<div class="post-metadata">

**Author:** ![Zack](https://yyz2.discourse-cdn.com/flex034/user_avatar/discourse.myriadrf.org/zack/32/89_2.png) [@Zack](https://discourse.myriadrf.org/u/Zack)\
**Post date:** [19 May 2017 06:24 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/11 "2017-05-19T06:24:18Z")

</div>

Hi @modimo,

> [@modimo](#):
>
> Well I don’t think changing gains should break the calibrations.

Gain changes puts your transceiver chain in an undefined condition. Can you be sure that is not saturated at these settings? You want to configure DC and IQ calibration at the exact gain settings you are using, since changes in these values can effect optimum calibration values.

> [@modimo](#):
>
> Next week I will probably get my hands on brand new LimeSd

What LimeSDR-USB board version are using right now?

---

<div class="post-metadata">

**Author:** ![modimo](https://avatars.discourse-cdn.com/v4/letter/m/48db29/32.png) [@modimo](https://discourse.myriadrf.org/u/modimo)\
**Post date:** [19 May 2017 07:03 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/12 "2017-05-19T07:03:36Z")

</div>

> [@Zack](#):
>
> What LimeSDR-USB board version are using right now?

I don’t have access to the board now. I got my board in second flock of crowdsupply. I think it’s 1.4. I’ll check on monday to be sure.

---

<div class="post-metadata">

**Author:** ![modimo](https://avatars.discourse-cdn.com/v4/letter/m/48db29/32.png) [@modimo](https://discourse.myriadrf.org/u/modimo)\
**Post date:** [19 May 2017 08:22 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/13 "2017-05-19T08:22:45Z")

</div>

> [@Zack](#):
>
> Gain changes puts your transceiver chain in an undefined condition. Can you be sure that is not saturated at these settings? You want to configure DC and IQ calibration at the exact gain settings you are using, since changes in these values can effect optimum calibration values.

What kind of radio LimeSDR is then. If you cannot change gain how do I implement AGC. I know that receiver is not saturated from spectrum shape. When I go into saturation zone a lot IM products come up.

---

<div class="post-metadata">

**Author:** ![Laurent](https://yyz2.discourse-cdn.com/flex034/user_avatar/discourse.myriadrf.org/laurent/32/877_2.png) [@Laurent](https://discourse.myriadrf.org/u/Laurent)\
**Post date:** [19 May 2017 09:01 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/14 "2017-05-19T09:01:52Z")

</div>

Hi,

I have the same issue, or similar.  
My boards are v1.4s, LimeSuite is latest git master, Ubuntu on a good PC.  
We tried several boards ans several PCs.

The issue is: not changing anything, several consecutive runs of the same program, with same parameters, have very different results.

Time to time calibration is good, time to time it is actually bad.

Also, we can reach bad situation 100% of cases if the .ini file, or the gain is not making possible to calibrate correctly.  
Nevertheless, the calibration function always answer “Ok”.

I use a new R&S analyzer to verify the output (a older Agilent was giving the same).  
My modem makes LTE signal, no MIMO, band 5MHZ, or 10MHz, 20MHz

I made a lot of trials, with several .ini files, supposed to be optimized per frequency band.  
EVM is better near 800MHz, and acceptable near 2.6GHz, but the calibration is not working.

I confirm, changing the gain make the issue more frequent, or even the system always fails to calibrate.  
But the function: LMS\_Calibrate() always returns ‘OK’.

The sequence e of code I use:  
LMS\_Open(&lms\_device,list[0],NULL);  
LMS\_Init(lms\_device);  
LMS\_Reset(lms\_device);  
LMS\_EnableCalibCache(lms\_device,false);  
LMS\_LoadConfig(lms\_device, \<my\_.ini\_file\>);  
LMS\_VCTCXOWrite(lms\_device,129);  
LMS\_SetSampleRate(lms\_device,,4), “”); //rate is LTE standard one, so a division of 30720MS/s  
LMS\_SetLOFrequency(lms\_device,LMS\_CH\_RX, 0,, “”); // several feq tested 700MHz-3600MHz  
LMS\_SetLOFrequency(lms\_device,LMS\_CH\_TX, 0,, “”); // Tx/Rx freq are different, gap is defined by 3GPP  
LMS\_SetGaindB(lms\_device, LMS\_CH\_TX, 0, openair0\_cfg-\>tx\_gain[0]),"");  
LMS\_SetGaindB(lms\_device, LMS\_CH\_RX, 0,);  
//value is 0…70, we saw the today limitation: it is not actually in dB, but still the range is 0…70  
LMS\_SetGaindB(lms\_device, LMS\_CH\_TX, 0,);  
LMS\_SetLPFBW(lms\_device,LMS\_CH\_RX,0,device-\>openair0\_cfg-\>rx\_bw);  
LMS\_SetLPFBW(lms\_device,LMS\_CH\_TX,0,device-\>openair0\_cfg-\>tx\_bw);  
LMS\_Calibrate(lms\_device,LMS\_CH\_RX,0,device-\>openair0\_cfg-\>rx\_bw,0);  
LMS\_Calibrate(lms\_device,LMS\_CH\_TX,i,device-\>openair0\_cfg-\>tx\_bw,0);

rx\_stream.channel = 0;  
rx\_stream.fifoSize = 256_1024;  
rx\_stream.throughputVsLatency = 0.1;  
rx\_stream.dataFmt = lms\_stream\_t::LMS\_FMT\_I12;  
rx\_stream.isTx = false;  
assertLMS(!LMS\_SetupStream(lms\_device, &rx\_stream),"");  
tx\_stream.channel = 0;  
tx\_stream.fifoSize = 256_1024;  
tx\_stream.throughputVsLatency = 0.1;  
tx\_stream.dataFmt = lms\_stream\_t::LMS\_FMT\_I12;  
tx\_stream.isTx = true;  
LMS\_SetupStream(lms\_device, &tx\_stream);  
LMS\_StartStream(&rx\_stream);  
LMS\_StartStream(&tx\_stream);

* * *

## Typical output of Lime above functions

## XXXXXXXXXXXXXXXXXXX Connecting to device: LimeSDR-USB, media=USB 3.0, module=STREAM, addr=1d50:6108, serial=0009060B00462F14 XXXXXXXXXXXXXXXXX [INFO] Estimated reference clock 30.7195 MHz [INFO] Selected reference clock 30.720 MHz [INFO] LMS7002M cache /home/laurent/.limesuite/LMS7002M\_cache\_values.db M=204, N=3, Fvco=1044.480 MHz 16: 00 A8 AA 4760: AA 5A 5D phase: min 23.8; max 190.6; selected 107.2) M=204, N=3, Fvco=1044.480 MHz M=204, N=3, Fvco=1044.480 MHz 16: 66 DC 3D 16: AA 52 D5 phase: min 11.9; max 178.7; selected 95.3) M=204, N=3, Fvco=1044.480 MHz XXXXXXXXXXXXXXXX Start with samplerate=30720000.000000, tx freq= 2630000000.000000 XXXXXXXXXXXXXXX CGEN: Freq=491.52 MHz, VCO=1.96608 GHz, INT=63, FRAC=0, DIV\_OUTCH\_CGEN=1 CGEN ICT\_VCO\_CGEN changed to 31 M=204, N=12, Fvco=1044.480 MHz 16: 55 A5 AA 16: 55 A5 AA 16: 55 AD 2A 16: 55 AD 2A 16: F5 BB 5C 16: F7 DB 5D 19: AB 5A 55 phase: min 95.3; max 243.5; selected 169.4) M=204, N=12, Fvco=1044.480 MHz M=204, N=12, Fvco=1044.480 MHz 16: 55 AD 2A 16: 55 AD 2A 16: 55 AD 2A 16: 55 AD 2A 16: 57 AD 3B 16: 77 9D 39 16: 77 DD 3D 16: 66 DC 3D 16: AA 5C 75 16: AA 58 75 31: AA 5A 75 16: AA 5A D5 phase: min 63.5; max 174.7; selected 119.1) M=204, N=12, Fvco=1044.480 MHz XXXXXXXXXXXXXXXXXX Call set gain: Tx= 20.000000, Rx= -5.000000 band=30720000.000000 (30720000.000000) XXXXXXXXXXXXXXXXXXXX MCU algorithm time: 10 ms MCU programming : 16384/16384 MCU Programming finished, 740 ms MCU Ref. clock: 30.72 MHz MCU algorithm time: 173 ms MCU algorithm time: 1 ms MCU Ref. clock: 30.72 MHz MCU algorithm time: 110 ms ############################################################ Rx calibration using RSSI INTERNAL ON BOARD loopback Rx ch.A @ 2510 MHz, BW: 30.72 MHz, RF input: LNAH, PGA: 31, LNA: 15, TIA: 3 Performed by: MCU

## MCU algorithm time: 1 ms Current MCU firmware: 3, DC/IQ calibration full MCU Ref. clock: 30.72 MHz MCU algorithm time: 223 ms ############################################################ Tx calibration using RSSI MCU INTERNAL ON BOARD loopback Tx ch.A @ 2630 MHz, BW: 30.72 MHz, RF output: BAND2, Gain: 20 Performed by: MCU

MCU algorithm time: 1 ms  
Current MCU firmware: 3, DC/IQ calibration full  
MCU Ref. clock: 30.72 MHz  
MCU algorithm time: 312 ms  
XXXXXXXXXXXXXXXXXXXXX  
init done  
XXXXXXXXXXXXXXXXXXXXX

Example of outputs  
Good initialization result:  
[![](https://open-cells.com/RS-results/FPS_ScreenShot_2017-05-15_16-25-35-gain5.PNG) ](https://open-cells.com/RS-results/FPS_ScreenShot_2017-05-15_16-25-35-gain5.PNG)  
bad initialization result:  
[![](https://open-cells.com/RS-results/FPS_ScreenShot_2017-05-15_16-19-48-unkown-various-random.PNG) ](https://open-cells.com/RS-results/FPS_ScreenShot_2017-05-15_16-19-48-unkown-various-random.PNG)  
Best result, still not perfect at 2.68GHz  
[![](https://open-cells.com/RS-results/FPS_ScreenShot_2017-05-15_16-44-02-itispossible.PNG) ](https://open-cells.com/RS-results/FPS_ScreenShot_2017-05-15_16-44-02-itispossible.PNG)

---

<div class="post-metadata">

**Author:** ![Zack](https://yyz2.discourse-cdn.com/flex034/user_avatar/discourse.myriadrf.org/zack/32/89_2.png) [@Zack](https://discourse.myriadrf.org/u/Zack)\
**Post date:** [19 May 2017 14:24 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/15 "2017-05-19T14:24:13Z")

</div>

LMS7002M is a direct conversion transceiver, hence one of the main drawbacks is IQ imperfection which is dependent on a lot of factors, including gain settings. The calibration routine is static in a sense, that it optimizes settings for only the active setting set. It does not perform prediction of optimal settings at other settings, since most of them are chip and environment dependent hence hard to predict. It could be possible to calibrate a range of settings, but the values should be updated according to the new gain (for example) settings by the user or baseband. Since the calibration is done by the internal MCU, which is a slave device, it cannot automatically update the calibration values for different user settings by itself. Hence for AGC purposes, a batch of calibrations (could be in fixed steps) should be performed prior to use and the settings then uploaded dynamically by the baseband.

Please note, that not every setting change may need a new calibration procedure. For example, optimal calibrations settings at PGA gain of 0dB and 1dB will be very similar, but not the same, hence a decrease in image or DC level suppression might be observed.

---

<div class="post-metadata">

**Author:** ![modimo](https://avatars.discourse-cdn.com/v4/letter/m/48db29/32.png) [@modimo](https://discourse.myriadrf.org/u/modimo)\
**Post date:** [19 May 2017 15:05 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/16 "2017-05-19T15:05:52Z")

</div>

We are going a little off topic. The main question is why rx calibrations break TX signal.  
My wild guess would be something bad happening in transmit interpolator.  
Can you guys at LimeSDR reproduce this effect?

---

<div class="post-metadata">

**Author:** ![modimo](https://avatars.discourse-cdn.com/v4/letter/m/48db29/32.png) [@modimo](https://discourse.myriadrf.org/u/modimo)\
**Post date:** [22 May 2017 11:01 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/17 "2017-05-22T11:01:37Z")

</div>

I got access to spectrum analyser today and I can confirm that transmit gets broken after rx calibration.  
Correct spectrum (signal transmitted on LSB from -5 to 0MHz LO=900MHz). No signal at USB.

 ![](https://canada1.discourse-cdn.com/flex034/uploads/myriadrf/original/1X/5a11f94d30167712b856cb0fec2b910fb8427940.jpg)  
after rx calibration heavy leakage to USB and LSB distortion visible.  
 ![](https://canada1.discourse-cdn.com/flex034/uploads/myriadrf/original/1X/76f6bd56dd497ff08d79bbfc5ac35254e425c9be.jpg)

---

<div class="post-metadata">

**Author:** ![Zack](https://yyz2.discourse-cdn.com/flex034/user_avatar/discourse.myriadrf.org/zack/32/89_2.png) [@Zack](https://discourse.myriadrf.org/u/Zack)\
**Post date:** [22 May 2017 11:17 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/18 "2017-05-22T11:17:28Z")

</div>

Hello @modimo,

We are checking it. There are no issues when we use LimeSuiteGUI to calibrate. It looks like there are some issues in upper software layers. Will update later.

---

<div class="post-metadata">

**Author:** ![IgnasJ](https://avatars.discourse-cdn.com/v4/letter/i/278dde/32.png) [@IgnasJ](https://discourse.myriadrf.org/u/IgnasJ)\
**Post date:** [23 May 2017 14:14 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/19 "2017-05-23T14:14:51Z")

</div>

Hi,  
I was able to reproduce the problem and made a fix.  
You can check if it is fixed for you by compiling the latest LimeSuite from GitHub (master branch).

> **[myriadrf/LimeSuite](https://github.com/myriadrf/LimeSuite)**
>
> Driver and GUI for LMS7002M-based SDR platforms. Contribute to myriadrf/LimeSuite development by creating an account on GitHub.

---

<div class="post-metadata">

**Author:** ![modimo](https://avatars.discourse-cdn.com/v4/letter/m/48db29/32.png) [@modimo](https://discourse.myriadrf.org/u/modimo)\
**Post date:** [23 May 2017 14:44 UTC](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163/20 "2017-05-23T14:44:03Z")

</div>

> [@IgnasJ](#):
>
> Hi,  
> I was able to reproduce the problem and made a fix.  
> You can check if it is fixed for you by compiling the latest LimeSuite from GitHub (master branch).  
> [GitHub - myriadrf/LimeSuite: Driver and GUI for LMS7002M-based SDR platforms](https://github.com/myriadrf/LimeSuite)

Great job IgnasJ!. It fixed the problem for me.  
Thank you.

[Next page](https://discourse.myriadrf.org/t/something-wrong-with-calibration-procedure/1163.md?page=2)
