Yes, it’s software controlled.
DC outputs are connected to a “12V” line. This line is powered from either battery (8.4V-12.6V) or DC adapter (~15V), so output voltage may vary.
The outputs are controlled by PWM signal (switching 12V on/off):
With this method - output voltage can be controller. The longer signal is “on” more energy can be saturated and voltage increases. If you set duty cycle to 50%
X4.dcA.power(50) and measure output with multimeter - you will see reading around 5.5V. 100% will be the same as directly connected to the battery. So, by using power (duty cycle) range 0-55 you will get output voltage ~0-6V.
Also, important role is PWM signal frequency. Be default it’s 50Hz. This tells how fast switching is happening. Bigger motors like lower frequencies as their coil requires more time to saturate energy. For smaller motors (like N20 used in MiniTrooper), a higher frequency (~1000Hz, depends on motor) is required, because 12V will spin that small coil right away even in low duty cycle. This improves motor response to different power ranges. Frequency can be changed with function
This only applies when powering small motors with high voltage.
As for yellow motors with gearbox, we tried running these with X4 without any limitations (12V). They run quite impressively and seems can withstand some abuse. Of course they will get a bit hot, lowering their longevity, but may work for some projects.