I2tLimitException

I have a simple loop where I read IMU, loadcell (through actpack), and actuator data and write to logs.

I get these errors related to thermals curves, seemingly at random times.

Example 1:

[2026-04-07 14:59:54,643] INFO: Time: 30.041; Ankle: +0.08; Knee: +0.09; Fz: -5; Roll: -0.59; Latency: 13.5ms;

[2026-04-07 14:59:54,666] INFO: Time: 30.055; Ankle: +0.08; Knee: +0.09; Fz: +0; Roll: -0.59; Latency: 23.0ms;

[2026-04-07 14:59:54,685] INFO: Time: 30.078; Ankle: +0.08; Knee: +0.09; Fz: -0; Roll: -0.59; Latency: 18.2ms;

[2026-04-07 14:59:54,704] INFO: Time: 30.097; Ankle: +0.08; Knee: +0.09; Fz: -3; Roll: -0.59; Latency: 18.1ms;

[2026-04-07 14:59:54,720] INFO: Time: 30.116; Ankle: +0.08; Knee: +0.09; Fz: -3; Roll: -0.59; Latency: 15.3ms;

[2026-04-07 14:59:54,720] ERROR: [KNEE] I2t limit exceeded. Current: 0.0 mA. 

opensourceleg.extras.safety.safety.I2tLimitException: Dephy Actpack I2t limit exceeded. Exiting.

Example 2:

[2026-04-07 15:06:28,564] INFO: Time: 138.147; Ankle: +0.23; Knee: +0.34; Fz: +3; Roll: -0.52; Latency: 18.1ms;

[2026-04-07 15:06:28,580] INFO: Time: 138.165; Ankle: +0.23; Knee: +0.34; Fz: +3; Roll: -0.52; Latency: 14.5ms;

[2026-04-07 15:06:28,580] ERROR: [ANKLE] I2t limit exceeded. Current: 0.0 mA. 

opensourceleg.extras.safety.safety.I2tLimitException: Dephy Actpack I2t limit exceeded. Exiting.

I have also observed this behavior when running this example.

(opensourceleg/tutorials/actuators/dephy/reading_multiple_actuators.py)

It occurs at random times. For example, in another session, it was working fine for 10 minutes before I manually stopped.

(By the way, the reported currents don’t make sense. The motors are powered by the RPi’s USB.)

Example output log:

Output log:

[2026-04-08 05:02:04,431] INFO: Time: 46.49; Motor Current 01: 2.00; Motor Current 02: -5.00;

[2026-04-08 05:02:04,436] INFO: Time: 46.49; Motor Current 01: 3.00; Motor Current 02: -4.00;

[2026-04-08 05:02:04,440] INFO: Time: 46.50; Motor Current 01: 3.00; Motor Current 02: -1.00;

[2026-04-08 05:02:04,444] INFO: Time: 46.50; Motor Current 01: 4.00; Motor Current 02: -3.00;

[2026-04-08 05:02:04,448] INFO: Time: 46.51; Motor Current 01: 1.00; Motor Current 02: -5.00;

[2026-04-08 05:02:04,452] INFO: Time: 46.51; Motor Current 01: 0.00; Motor Current 02: -4.00;

[2026-04-08 05:02:04,456] INFO: Time: 46.51; Motor Current 01: 2.00; Motor Current 02: -6.00;

[2026-04-08 05:02:04,460] ERROR: [DEPHYACTUATOR] I2t limit exceeded. Current: 1024.0 mA. 

[2026-04-08 05:02:04,460] DEBUG: [DephyActuator]  Exiting Voltage control mode.

[2026-04-08 05:02:05,166] DEBUG: [DephyActuator]  Exiting Voltage control mode.

Terminal output corresponding to the log in the previous post:



(OSLvenv) pressureheadless@pressure:~/osl_lib_test $ python3 reading_multiple_actuators.py 8.00;;
Warning: unable to access S3 to obtain updated available versions.
Warning: using firmware version information from: 57 days ago.
To update, connect to the internet and re-run this function.
Using firmware version: 7.2.0
Using library file: /home/pressureheadless/.dephy/precompiled_c_libs/7.2.0/pi_64bit/libfx_plan_stack.so
Warning: unable to access S3 to obtain updated available versions.
Warning: using firmware version information from: 57 days ago.
To update, connect to the internet and re-run this function.
Using firmware version: 7.2.0
Using library file: /home/pressureheadless/.dephy/precompiled_c_libs/7.2.0/pi_64bit/libfx_plan_stack.so
opensourceleg.extras.safety.safety.I2tLimitException: Dephy Actpack I2t limit exceeded. Exiting.

For now, commenting the line inside the update method in dephy.py where I2tLimitException() is raised seems to fix the problem.

I found a problem. For some reason, the reported/calculated winding temperature keeps rising monotonically as a function of time.

My opensourceleg library version is 3.2.1.

[2026-04-18 22:41:34,480] INFO: Time: 17.01; Motor Winding 01: 24.90; Motor Winding 02: 24.52;

[2026-04-18 22:41:34,680] INFO: Time: 17.21; Motor Winding 01: 24.94; Motor Winding 02: 24.55;

[2026-04-18 22:41:34,880] INFO: Time: 17.41; Motor Winding 01: 24.97; Motor Winding 02: 24.58;

[2026-04-18 22:41:35,080] INFO: Time: 17.61; Motor Winding 01: 25.01; Motor Winding 02: 24.62;

[2026-04-18 22:41:35,280] INFO: Time: 17.81; Motor Winding 01: 25.04; Motor Winding 02: 24.65;

[2026-04-18 22:41:35,481] INFO: Time: 18.01; Motor Winding 01: 25.07; Motor Winding 02: 24.68;

[2026-04-18 22:41:35,681] INFO: Time: 18.21; Motor Winding 01: 25.11; Motor Winding 02: 24.71;

[2026-04-18 22:41:35,881] INFO: Time: 18.41; Motor Winding 01: 25.14; Motor Winding 02: 24.74;

[2026-04-18 22:41:36,081] INFO: Time: 18.61; Motor Winding 01: 25.18; Motor Winding 02: 24.77;

[2026-04-18 22:41:36,281] INFO: Time: 18.81; Motor Winding 01: 25.21; Motor Winding 02: 24.80;

[2026-04-18 22:41:36,481] INFO: Time: 19.01; Motor Winding 01: 25.24; Motor Winding 02: 24.83;

[2026-04-18 22:41:36,681] INFO: Time: 19.21; Motor Winding 01: 25.28; Motor Winding 02: 24.86;

[2026-04-18 22:41:36,882] INFO: Time: 19.41; Motor Winding 01: 25.31; Motor Winding 02: 24.89;

[2026-04-18 22:41:37,082] INFO: Time: 19.61; Motor Winding 01: 25.34; Motor Winding 02: 24.92;

[2026-04-18 22:41:37,282] INFO: Time: 19.81; Motor Winding 01: 25.37; Motor Winding 02: 24.95;

[2026-04-18 22:41:37,482] INFO: Time: 20.01; Motor Winding 01: 25.41; Motor Winding 02: 24.97;

[2026-04-18 22:41:37,682] INFO: Time: 20.21; Motor Winding 01: 25.44; Motor Winding 02: 25.00;

[2026-04-18 22:41:37,882] INFO: Time: 20.41; Motor Winding 01: 25.47; Motor Winding 02: 25.03;

[2026-04-18 22:41:38,082] INFO: Time: 20.61; Motor Winding 01: 25.50; Motor Winding 02: 25.06;

[2026-04-18 22:41:38,283] INFO: Time: 20.81; Motor Winding 01: 25.53; Motor Winding 02: 25.09;

[2026-04-18 22:41:38,483] INFO: Time: 21.01; Motor Winding 01: 25.56; Motor Winding 02: 25.12;

[2026-04-18 22:41:38,683] INFO: Time: 21.22; Motor Winding 01: 25.60; Motor Winding 02: 25.15;

[2026-04-18 22:41:38,883] INFO: Time: 21.42; Motor Winding 01: 25.63; Motor Winding 02: 25.17;

[2026-04-18 22:41:39,083] INFO: Time: 21.62; Motor Winding 01: 25.66; Motor Winding 02: 25.20;

[2026-04-18 22:41:39,283] INFO: Time: 21.82; Motor Winding 01: 25.69; Motor Winding 02: 25.23;

[2026-04-18 22:41:39,483] INFO: Time: 22.02; Motor Winding 01: 25.72; Motor Winding 02: 25.26;

[2026-04-18 22:41:39,684] INFO: Time: 22.22; Motor Winding 01: 25.75; Motor Winding 02: 25.28;

[2026-04-18 22:41:39,884] INFO: Time: 22.42; Motor Winding 01: 25.78; Motor Winding 02: 25.31;

[2026-04-18 22:41:40,084] INFO: Time: 22.62; Motor Winding 01: 25.81; Motor Winding 02: 25.34;

[2026-04-18 22:41:40,284] INFO: Time: 22.82; Motor Winding 01: 25.84; Motor Winding 02: 25.36;

[2026-04-18 22:41:40,484] INFO: Time: 23.02; Motor Winding 01: 25.87; Motor Winding 02: 25.39;

[2026-04-18 22:41:40,684] INFO: Time: 23.22; Motor Winding 01: 25.90; Motor Winding 02: 25.42;

[2026-04-18 22:41:40,884] INFO: Time: 23.42; Motor Winding 01: 25.93; Motor Winding 02: 25.44;

[2026-04-18 22:41:41,085] INFO: Time: 23.62; Motor Winding 01: 25.96; Motor Winding 02: 25.47;



Also observed in the latest release (3.5.0).

[2026-05-08 22:26:05,904] ERROR: [KNEE] I2t limit exceeded (Maximum Average Current limit exceeded for time at current limit) for 2 consecutive readings. Current: -9050.0 mA. Review physical setup to ensure excessive torque is not normally applied. If issue persists, review ‘Maximum Average Current’, ‘Current Limit’, and ‘Time at current limit’ settings for the Dephy ActPack Firmware using the Plan GUI software. opensourceleg.math.math.I2tLimitException: Dephy Actpack I2t limit exceeded. Exiting.

Hi Mohsen! There are two ways the system can reach an I2t limit fault. The first is through the actuator thermal model, where motor current is continuously monitored and used to estimate the winding and case temperatures. If either temperature exceeds the allowable limit, the controller exits to protect the actuator.

The second is directly from the Dephy driver itself; based on the original error message you were receiving, this seems more likely to be the issue. If the driver detects an abnormal condition, it can set a fault bit and trigger an I2t limit error. Rather than exiting immediately from a single event, the driver uses a status counter and only exits once the fault count exceeds a defined threshold. Dephy recommended adding this type of check to prevent the I2t value from continuing to increase beyond safe limits. We would generally advise against completely commenting out the I2t exception. Instead, we recommend increasing the fault count threshold and/or debugging the USB connection, since communication issues can sometimes contribute to these faults.

To better understand the issue, are you seeing this behavior across all actuators or only on a specific one?