Workshop open Mon & Fri, 9am-6pm only 01566 334335

utMax – a GUI for uTracer 3 / 6


The main features are

  • Linux and Windows versions
  • Large full screen plots with multiple tabs for different views
  • Characterization using plate, screen and control grid voltages as simultaneous independent variables.
  • Add more plot export formats including “pdf”.
  • Direct generation of SPICE models
  • Cleaner interface
  • Auto setting of sweep parameters based on user selection of valve type
  • Display of pinout to ease setting up of uTracer
  • Open Source
  • User extensible database of valve parameters and pinouts
  • Easy Calibration
  • uTracer6 support
  • Save calibration data to uTracer processor
  • Markers on plot to allow you to read spot values
  • Tab based for multiple plot views
  • High resolution plots up to full screen size
  • utracer6 support from v2.3

There are also other goodies like real time readout LCDs while sweeping, a quick test and a triode plot mode that tests a pentode connected as a triode. Testing of dual triodes and dual diodes is now possible.

Has the ability to scale the grid one voltage to allow an attenuator in the grid one circuit to improve the accuracy at low grid voltages.

Also supports an arbitrary higher current range.

uTracer Firmware Upgrade Processor

The new firmware has the following enhancements.

  • Dynamically controlled boost pulse widths to allow the the boost voltages to be set more accurately at lower voltages.
  • All measurements are over-sampled to lower noise and improve accuracy.
  • The heater voltage accuracy* is improved by changing the PWM frequency to 2KHz. 
  • Grid voltage 12bit resolution (4095 steps) upgrade from original 10 bit (1023 steps)
  • Calibration data saved to chip for portability
  • V3 introduces firmware that can be updated from the uTmax GUI

*To make the most of the lower heater frequency, you should short out inductor L2 in the heater supply of your uTracer. This will demand high peak currents from the power supply which could cause an issue if the one you are using is not rated for sufficient current. If you find that is a problem you will need to replace the 0.4A 330uH and 0.5 ohm inductor with something more suitable. Something around 680uH 0.1 ohm (or lower) and at least 1.5A.  You should also change C6 to 4700uF.

Recent testing suggests an effective circuit impedance for the heater of around 0.12 ohms at 6.3V. This is is large part likely to be due to the Rds(on) of the FET used in the heater circuit. You should allow for this voltage drop when choosing the heater voltage i.e add 0.12V to the specified heater voltage for each amp of heater current.

12 bit grid voltages require the latest uTmax. The uTracer GUI is 10 bit only.

To install you simply swap the new chip for the old one and run the speedy calibration wizard. That’s it!

From V3.00, the firmware can be updated from the uTmax GUI “option” dialog. You can download the latest version V3.02 here. V3.02 offers a useful speed improvement.

Unplug the OPA227 chips from the uTracer board while updating the firmware. After the upgrade go to calibration and hit “save” to save the previous calibration to the chip



These are the utMax installation files for Windows and Linux. No further updates to the 32 bit version (2.32) are planned as a 64 bit version is being worked on.

uTmax has an installer for Windows. It will create a desktop and a start menu shortcut so you can launch the app from either one. Windows gives a spurious warning about protecting your PC. You can safely ignore this warning and proceed with the installation. It happens as the installer is not signed. The reason it’s not signed it that it requires a rather expensive annual fee for a code signing certificate.

For linux version, unzip the folder retaining the directory structure in your home folder. Execute from the terminal by typing ./uTmax

Initial Setup

After installation you need to edit a line in the cal.txt file. This can be found in the folder uTmax_files in your home folder. The line “firmware=” should be 100 if you have Roland Dekker’s processor chip or 200 otherwise.

Also set the resistor and maximum grid values for your tracer under utilities->calibration

There is a checkbox under options to enable uTracer6 mode. Status of that feature is ‘alpha’.

If you read nothing further, read this: If you hover the cursor over most items in the GUI, you will get a pop-up explanation of it’s purpose.

Once running, click on utilities->debug to bring up the debug dialog. Use the drop down box to select the COM port for your tracer. Now hit “Ping” to see if communication is working.

Hitting Read ADC will display the current various tracer voltages.

If you lose connection to the port, the GUI will automatically retry it.


Now we have to tell the app about your specific tracer hardware. To do this bring up the calibration dialog (utilities->calibration). Now press “Reset” to bring up the default values.

  • For the RaVal field, enter the value of the anode voltage sensing resistor in ohms.
  • In VaMax enter the maximum voltage of your tracer.
  • IaSense and IsSense put the value of the current sense resistors.
  • Finally, enter the maximum value of your grid voltage and hit “save”.

“Erase” deletes the calibration data stored on the chip.

“Save” saves the data to the chip and the cal.txt file.

Now, we are ready to start the calibration proper. Close the window with “X” or hit “Done”.

Calibration dialog

The current and voltage sense resistors. The value of these must be entered into the calibration dialog above.

Start the calibration wizard (utilities->calibration wizard).

Follow the prompts and in no time your tracer will be fully calibrated. If you are using the new firmware, the calibration data will be saved to the chip as well as into a cal.txt file.

The cal.txt file can be found in the C:\users\yourUserName\uTmax_files folder. Also in this folder, you will see the tube library file, data.csv file. You can edit the tube library in a spreadsheet if you wish but you can also manage it from within the uTmax app.

Calibration wizard

You are now ready to start curve tracing.

Let’s Go Tracing!

You probably have a 12AX7 ( ECC83) handy so try it out.  Pick 12AX7-ECC83 from the Tube Selector drop down. It will display the pin connections to guide you in setting those up.  The sweep parameter boxes will be pre-filled with the settings from the tube library so all you have to do it hit “Start”.   Over a few seconds you will see the green heater progress bar increase to maximum and then the app will wait by the time specified in the “Secs” box for the heaters to reach temperature. Next the sweep begins. The LCD’s will show the measurements as they are made.

If you click on  tab “1” you will have one plot showing the curve in real time. When the sweep is completed you will have something like this.

ecc83 plot1
More and Bigger Plots!

By clicking on the “New” tab you can add another plot. try it and see.  The three drop down boxes at the top left pick the  parameter that is used for the axes: X, Y left and Y right respectively.  So, if you pick Va, Ia(a) and Ia(b) you will have the plot line for both (a) and (b) section anode currents. Flip back to tab “1” and it still shows just Ia(a). Try the different choices to see what you can do.  Some will plot data from the mathematical model that has been fitted to the data. There is more about that process later.

Don’t forget you can drag the window size to fit the entire screen if you wish for more detail.

For now, don’t worry about the other controls “Triode Data”, “Select Curve” and Group by Color” as these only have meaning for pentodes or beam tetrodes.

Reading Points on the Plots

You’ve probably already noticed that as you hover over the plot, a marker appears that displays the values along the plot line. Move the mouse parallel to the X axis and the marker will follow.  If you left click on a different line the marker will jump to that line and a right click will freeze or unfreeze the marker.

Fun with Axes

Pointing to an axis with the cursor and holding the left button pans the axis. Rolling the mouse wheel or equivalent motion on a track pad zooms the axis.  Use one of the drop down axis lists to select a different parameter and the scale will be reset.

Saving your Plots

Utilities->Save plot will save all your tabbed plots as image files. If you select “Auto File Number” from the main “controls” tab,  the images will all be saved to the folder file name specified on the main “Controls” tab under “Save”. Otherwise you will be prompted for a folder and file name. The plot tab number is appended to the file name(s).

Pentodes and Beam Tetrodes

Go to the “controls” tab and pick something you have handy from the tube selector drop down, say an EL84. Notice that in the second drop down box an appropriate model is specified in this case “Koren Pentode”. Set up the pin connections and start the sweep as before.  If you watch the LCDs you might notice that the screen and plate voltage are the same for a complete set of grid voltages.  Thus the EL84 is being tested as a triode. This always happens if you select a pentode or beam tetrode mode. Once the triode bit is done the sweep proceeds with a usual plate voltage set followed by the grid voltage set and lastly the screen voltage set.

When you go to the “1” plot tab it will look like this.

EL84 Tab 1

This is rather a busy and confusing plot showing all the pentode curves. You can tidy the plot by selecting “group by color”. This makes all plot lines for a screen voltage have the same color and so makes it much easier to see what is going on.  Another way to tidy the chart is to use the “select curve” counter.  This will restrict the display to just one screen voltage.   “0” means display all screen voltages. Try it and see. You can still group by color if you wish. For example you can make the chart look like this:

EL84-1 Curve 1

Each plot tab can hold a different view of the data.

Now, on the third ( right Y axis) drop down select “Ia Model”. The plate current calculated from the model will be overlaid so you can compare the model with the measured data.  The model allows you to do some useful analysis. Try this. On the Y right select “gm(a)” and for Y left pick “off”.  You will now have a plot of gm over the operating range.

Now, for the next thing to try out, set Y left to Ia(b)/g2 and Y right to Ia(b)/g2 model. You are comparing the measured screen current with the model screen current. This brings us neatly to the next section.

One last thing before we move on, if you check the “Triode Data” box you will see the performance of the tube in triode mode.

Want a Model?

A mathematical model is fitted to the data, but there are several to chose from. The available models are from Norman Koren and Derk Reefman who have both published more details if you want to read more about them, and I advise that you do so.

Switch to the controls tab and change the model from “Koren Pentode” to “Derk Pentode”. See the LCDs are updated with useful tube parameters.  Go back to your plot 1 tab. You will notice that the screen current model is much closer to reality using this model.

You can try “Pentode II” to see if you get a better fit.   You might see a warning message “Info: model fit is poor. Try a different model or change your sweep settings“. This usually just means that the fit didn’t converge within a certain number of attempts.  There is a limit on the number of trials to avoid the process taking too long.   It’s just a warning and is usually is of little consequence. 

EL84-1 pentode II model screen current

Try changing the sweep parameters and tracing a fresh set of curves to see if you can get better convergence. On the controls tab, there is a field for plot power dissipation.  If the tube is dissipating more than the amount specified in this box then that data point is ignored when fitting the model. This might help you produce a better model.

The model can be saved in SPICE format, see Utilities->save Spice model

What, more controls?

On the controls tab, under the main sweep settings there is  checkbox Va/g2 = Va1. This forces the screen voltage to follow the plate voltage and is useful for tracing dual diodes, dual triodes or pentodes in triode mode.   There is another group of settings, currently greyed out, that are used for quick tests, checking  “quick test” will enable them.

The quick test is designed to test a tube against it’s data sheet specifications.  As a tube ages the cathode interface resistance rises and the gm falls. So, testing for low gm is a way of detecting worn tubes.  The measurement is done by wiggling the voltages around the specified center point by the percentage given in the % column to the right of the center column. The gm column specifies the datasheet transconductance.  The % column to the right of gm specifies the allowed tolerance before the tube is considered a failure.  I generally don’t fail tubes if the gm comes out a bit high, only when low.

If the quick test is not selected and a normal comprehensive sweep is done, then these values are used to display the gm calculated from the derived model at the center values given.

The bias column specifies  the setting at which to measure the current. This is handy for tube matching.


The current version is 2.21 so the following description is a little out of date. V2.21 has added b-spline smooth curve fitting and tentative support for the uTracer6. I don’t have a uTracer6 so it’s untested. Any feedback you can provide will be appreciated. Click the letter icon at the top for a contact form .

The options dialog allows to pick the various operating modes.

Va and Vg Scale are used when you have external dividers on the anode and grid usually for better accuracy at low ranges.

The tube database display order can be switched between ‘alphabetic’, ‘most frequently used’ and ‘last used’ making it easier to find the data you want.

The Firmware version shows 1.00 for uTracer 3 or 6 (set in cal.txt file). The utmax firmware is read it supply the version info. From V3 you can upgrade the firmware using the “Update HW button”.

Note that to protect the two OPA227 opamps, they should be unplugged from the uTracer board while updating.

In the program folder can be found several color themes generally using a css styling scheme call qss. You can make your own using one of the supplies ones as a guide. The syntax is documented here.

The LCDs have been tidied up and made easier to read and are generally better behaved.

The calibration data can be saved to the chip ( needs the new firmware ). This is so very handy if you have more than one tracer, or multiple computers that you use the one tracer you have on. 

“Reset” sets  to default values, “Save” writes the data to the chip and a backup file, “Erase” deletes the chip data. 

The dialog allows you to specify details about your tracer version viz. grid voltage range,  max plate voltage and current sense resistors that previously were in the calibration file.

A recent addition is a widget that guides you through the calibration process. This makes the calibration faster, easier and more accurate.

The axes can be scrolled and zoomed with the mouse. Use left button hold to pan and the wheel to zoom

You can tag a plot line with its values to make it easy to make measurements and the tagged point can be frozen by a simple right mouse click on the plot line.

Added is the ability to color the plot lines so that every one is different or you can group them by screen grid voltage which is easier to read.

The curves generated by the SPICE models are shown as smooth curves. Note the excellent fit of the SPICE model generated.

From V2.21 you can display smoothed plots

Stranger Things

Boost Voltage Drift

Something that must have been happening for years on my uTracer caught my attention the other day whilst doing a calibration. I set a target voltage test of 400V with a hold of twenty seconds or so. I noticed that the voltage would gradually fall over that time by about 2 or 3 volts. What was going on here? I checked the sense voltage on the PIC and it was rock steady so the problem had to be the 470K resistor in the HV sensing network. I had used a carbon film one there simply because I had one to hand.

No resistor is perfect but there are two problems that will affect the accuracy in this situation. One is the thermal co-efficient, this changes the resistance as it heats and is the reason for the effect I was seeing.

The thermal co-efficient of carbon film resistor could be around 500ppm/C so a 10C rise will change the resistance by 0.5%, about what I was seeing. 400V across a 470K resistor is 0.34 watts. In normal operation the measurement the voltage is not at maximum so making the average power dissipation lower so this effect in not likely to be causing a problem. However, the uTracer does produce heat and ambient temperature varies so there is merit on choosing a better resistor. Metal film types are better at about 75ppm/C and metal foil will get you to 1ppm/C.

You can improve the performance of the potential divider network if both resistors have the same thermal coefficient and are at the same temperature. This is hard to to in practice as one heats up much faster than the other so excellent thermal conductivity is required to make it effective

Another issue is the voltage co-efficient which causes the resistance to change with applied voltage. 10ppm/V is not unrealistic for carbon film and for a 400V change this amounts to 0.4%. Not huge but certainly significant. Again metal film and foil will serve you better.

You will a similar error when testing a resistor at high power dissipation. The resistor heats ans the measured current will drop. For example I used a 1K 2W metal film resistor and tested at 400V. With averaging set to 32 the current increased by 1.5% over the course of 20 measurements at the same voltage.

Grid Voltage Errors

From the very early days when I got my uTracer I have noticed that low grid voltages were not very accurate. To this end I added calibration corrections for 1V, 4V as well as 40V and Roland followed me on this approach. The thinking behind this was that the PWM signal was inherently inaccurate due to the waveform distortion from the rise and fall times.

When I added the Calibration Wizard the 0.5V range correction turned out to be rather poor. To figure out the problem three different tracers were compared by plotting the specified grid voltage with the wanted. This was the result.

Actual grid voltage vs desired.

You can see that there are two problems. One is the grid voltage is limited on the low end and the other is that there is a voltage offset that varies between units. The linearity is very good so knocking down the earlier idea.

The offset voltage has many sources.

  • The minimum low output voltage of the PIC,
  • The NE5534 filter chip – – offset and temperature drift (small effect)
  • The 741 opamp – offset and temperature drift
  • The tolerance of the two resistors that sense the cathode voltage.

We can tackle these issues by adding a trimmer to adjust the offset voltage. The 741 has pins dedicated for just the purpose. The trimmer can be soldered directly to the bottom of he PCB on the pins of the chip. The drift is most easily dealt with by using a different low drift opamp. I plan to test some candidates soon and see how they perform. In the meantime the 741 will suffice,

The limiting comes from the saturation voltage of the PNP transistors used on the output of the grid voltage circuit.

The saturation voltage that is limiting the lowest voltage is a bit harder. I first thought of using a P channel JFET. Turns out they are a dying breed. MOSFETs are a possibility but are surprisingly expensive even for low voltage low current types in a TO92 package plus the gate capacitance might lead to stability problems.

Fortunately there is a zero cost solution. What is needed it to feed the emitters of the PNP current mirror (T6 and T7) from a higher voltage. The cathode is about 0.5V lower than the supply due to the drop across the protection diode D11. We can disconnect the emitters from the cathode supply and connect to the main positive supply instead.

Mod to address the minimum grid voltage issue

This understanding of the problem led to a different way of calculating the grid voltage corrections. Previously there were corrections for -0.5V, -1V, -4V and -40V. The 1,4, and 40 ranges worked properly but 0.5V became more inaccurate as the desired voltage was closer to zero. A simple gain and offset correction was the solution and only requires two measurements instead of four during calibration. One nice feature is the approach will fix the below 0.5V range issue even without the modifications just described. But, if you don’t do them, you will still have the minimum voltage issue.

Maximum Grid Voltage Issue

The uTracer3 nominal grid voltage is stated to be 50V. This comes from the 5V logic supply multiplied by the gain of the grid amplifier of 10 i.e. 5v x 10 = 50V. But the supply will not be exactly 5V nor will the gain be always ten. This makes the maximum more like 48.5V for all uTracer3’s.

Increase Grid Voltage Range to -57V

With some simple changes you can increase the grid voltage from -50V to -57V. The drawing below shows the changes. There are four resistors changed and one capacitor added. This changes the gain of that stage from 10 ( 5V in 50V out) to 12 to give a possible 60V out. To allow some margin the practical limit is -57V. Don’t forget to tell uTmax that the range is 60V.

Idea for a -80V Grid Supply

It seemed that one way to get an even higher voltage from the single negative boost converter would be to split the boost inductor into two. This would create two supplies. The lower at about 20V would feed the -15V negative supply regulator. The higher, about 70V, would be the new grid supply. This a schematic of the changes, but I’ve yet to try it out.

A Pin Switch Matrix Board Proposal

Sniffs the comms to automatically configure the pin to function mapping.

This is a four layer SMD version board 186 x 144mm. Fairly big but the relays are not small and the traces for the high heater currents have to be quite wide, even using 2oz copper. Also the high voltage pins need a respectable clearance. .

I’m have ten made and wondered if there is any other interest in a bare board so you can make your own. I could supply a programmed controller if need be.

If so, ping me by using email icon at the top and I’ll add you to the list.

Pin switch SMT version 186 x 144mm Top
Pin switch SMT version, bottom.

Change History

     * grid control overflow fixed
     * grid control PWM underflow issue fixed
     * 64 bit version
     *  Change: During plotting the power limit on the controls tab is used.
     *  Fixed: When using Vg on the x-axis, legend entires were duplicated.
     *  Change: The power limit checkbox is now implemented when Vg is on the x-axis
     * Fixed incorrect text items on plot legend
     *  First release with utracer6 support
     *  Fixed legend has y2 axis values even when not using y2 axis
     *  Dual diode quick test LCD display for (b) section currents
     *  plot not being updated while sweeping
     *  Changed "heater"=  option behavior:
     *       If "heater"=0 heater, comms is for the uTracer.
     *       If "heater">0 an Ext Heater check box appears on the options dialog 
     *       and the heater code is linear. It also has the top byte set to "e"
     *       is scaled 1023 * (requested heater voltage)/ "heater"
     * ExtHtr check box is hidden if "heater=0"
* 2.21g
     *  Tube sort order combo box was not updated when opening the option dialog
     *  Added test for nan in KVB estimate
     *  data.csv was being written with an invaled value for Va=Vs check box state.
     * 2.21f
     *  Added Va=Vs column to data.csv
     * 2.21e
     *  Modified way the last segment of a plot line it handled to avoid truncating plots on over current
* 2.21d
     *  Cosmetic tweaks to options dialog
     *  Added a checkbox to plot tabs to allow the points over the power limit to be hidden
     *  Added a column to the results data file to hold the current and power limit status
     * 2.21c
     *  Fixed crash when loading a second tube data file which is different first data file's tube model
     *  Fixed crash in b-spline
     *  Added knots to start and end of b-spline range
     *  Add ignore flag to data pool for over current and over power
     * 2.21b
     *  Option "heater=" is now saved to cal file
     *  For uTracer3 compatibility, if Firmware=100 (or =1) in cal file then the chip is not interrogated for the firmware version
     * 2.21a
     *  User can add heater=n to cal file.
     *   If n=0 (or line is missing) then it utmax or ut3 heater firmware compatible. Otherwise the
     *   10 bit heater field is scaled by n.
     *   e.g. n =10 means that 0x3ff is output when a 10V heater is specified.
* 2.21
     *  uTracer 6 checkbox was not being updated on options dialog
     *  Fixed bug in grid voltage calculation introduced with uTracer6 changes
     *  Invalidate model status when creating optimizer.
     *  Added positive grid voltage handling for uTracer6
     * 2.20g1
     *  Added tests for invalid tube model index to prevent crash
     * 2.20g
     *  Added support for uTracer6
     *  Changed interpolation from cubic spline to B-spline (cubic) smoothing
     * 2.20f
     *  Removed firmware update command for fw 2.99 or lower
     *  Fixed QMessageBox styles as they  were not inheriting the parent style
     *  Changed interpolation from polynomial to cubic spline
     *  Removed firmware update command for fw 2.99 or lower
     *  Fixed QMessageBox styles as they  were not inheriting the parent style
     *  Changed interpolation from polynomial to cubic spline
     * 2.20e
     *  Changed main timer to 250mS to make measurements faster.
     *  Fixed bug in Vs value calculation
     *  Fixed divide by zero in Ra calculation
     *  Added polynomial based curve fitter
     *  Added polynomial order spinbox to plot tabs
     *  Modified labels and layout of plot tab control to make room for the new 'order' spinbox
     *  Modified options dialog layout for polymomial order value to be added (at a later date)
     * 2.20d
     *  Added yaxis2 mouse drag and zoom
     *  Changed LCD overflow from "-" to "OL"
     * 2.20c
     *  Fixed range check issue with Vsupp in cal wiz
     *  Fixed range check issue with Vs in cal wiz
     *  Set focus to measurement entry box in cal wiz
     * 2.20b
     *  Put next step flag for cal wiz into RxData() to avoid heatbeat ping conflict causing wiz lockout.
     * 2.20a
     *  Fixed: on dual triode quick test, gm(b) was shown incorrectly
     *  Changed low screen and anode voltage during cal wiz
     * 2.20
     *  12 bit grid for 2.03+: puts the two LSBs at top of 16 bit command so that new 12 bit firmware
     *  is still compatible with 10 bit commands.
     *  Heater not reset during ping
     *  LCDs increased to four digits
     * 2.19j
     *  Changes order of LCDs for dual triodes
     * 2.19i
     *  Changed: If a port could not be opened on start than processing would go no further.
     *  Made COM status label wide 2.19h
     *  Fixed: LCD current color always red
     *  Cal Dialog: Changed calibration range to 1
     *  Cal Dialog: Changed non-grid cal sliders to have 1/10th range.
     *  Cal wizard: Widened valid range for Va and Vs on the low end
     *  Cal wizard: Fixed failure to retry if Va out of bounds
     *  At end of sweep an Apply command is used to lower the HV voltage. This removes the need for
     *  the HV discharge timeout.
     *  All calibration parameters now use floats
     *  Chip cal parameters are integer analogs of the cal parameters x1000
     *  Changed grid calibration to use offset and slope: A re-calibration is required for this version
     *  Numerous enhancements to COM port handling to detect port closure and auto reopen.
     *  Added port status to front page
     *  Added port rediscovery to debug dialog
     * 2.19g
     *  Cal wizard: fixed bug in Vn and Vsupp
     *  Debug logging now ignores received "<" when expecting calibration data from chip
     * 2.19f
     * 2.19e
     *  Cal wizard: reset all cal corrections after prev or error
     *  Calibration now using round() rather than truncation
     * 2.19d
     *  Fixed missing "next" button after current cal fail
     *  Fixed reset grid corrections after fail
     * 2.19c
     *  Calibration range changed from 0.3 to 0.4.  This means a re-calibration is required for this version
     *  Changed to 10K calibration resistor
     *  Changed valid ranges for calibration.
     *  Used timer for final discharge wait in cal wiz
     * 2.19
     *  Fixed: marker text position wrong when zooming and scrolling axes
     *  Fixed: marker text position wrong when frozen and curve is changed
     *  Tidied options dialog layout
     *  Fixed Cal wiz Va, Vs and sanity checking
     *  Fixed Cal wiz Ia, &  Is calibration
     *  Added Cal wiz previous button
     *  Changed debug enable/disable to suit new firmware
     *  Added firmware version to options dialog
     * 2.17a
     *  Added chip cal data erase
     *  Added outline calibration wizard
     *  Added axis scroll and zoom
     *  Fixed: missing Rx data from debug dialog
     *  Added calibration wizard
     *  Made all dialogs delete on close
     * 2.16a
     *  Fixed incorrect length when sending cal data
     *  Add checksum and checking on chip cal data r/w
     *  Changed scale on IaRsense and IsRsense from x 10 to x100
     * 2.15a
     * 2.14a
     *  Addressed visibly of markers when starting a new plot
     * 2.13a
     *  Added right click to freeze marker
     *  Reverted y axis range to an integer of max current
     *  Fixed tube type and model not updated when reading saved data file
     *  Fixed infinite loop in UpdateTitle()
     * 2.12a
     *  Va X axis range is a multiple of 10
     *  Ia & Is Y axis range is a multiple of 5
     *  Validity checking added to LCDs to prevent "A" and "F" being displayed
     *  Fixed incorrect label on marker text when y2 axis in use
     *  Added limit to curve number spinbox
     * 2.11a
     *  Fixed issue in modelling TriodeInit() where Ia=0 was not handled
     *  Changed marker text position offset to be fixed rather than proportional
     *  Changed Ra(a), Ra(b) and gm axis labels to place units first
     *  Fixed marker text position wrong after a plot setting change e.g. curve number
     * 2.10a
     *  Fixed when clicking "start" the wrong in the tube list was replaced do leading to a missing entry and a duplicate.
     *  Fixed incorrect sort order displayed on startup
     *  Fixed missing entries in legend
     *  Fixed plot not being marked invalid when hitting start after a completed sweep
     *  Fixed markers were still visible when plot changed from valid to invalid.
     * 2.09a
     *  Fixed auto file name on startup
     *  Fixed flickering doubling of length of legend while plotting
     *  Fixed no markers if no model is selected
     * 2.08a
     * Disabled markers if a plot is incomplete
     * Fixed tube list display synchronization with internal database and data.csv file
     * Fixed tube delete of first item in selector
     * 2.07a
     *  Fixed: issues with LCD not displaying when number would not fit specified number of digits
     *  Fixed: missing / incorrect labels on LCDs
     *  Increase discharge time to 45 to reduce timeout messages
     *  Change timeout message to give a better hint for resolution
     *  Added: pre fill tube name for file save for data or spice model
     *  Fixed: tube list sort order reverts to alpha after adding a tube
     *  Removed Vg2 on x axis plot as not very useful
     *  Tube list sort order on startup now matches setting cal.txt
     *  Smooth model lines when Vg on x axis
     *  Fixed: Heater voltage set to max if a positive grid voltage specified
     *  Added: OFF option to left yaxis
     *  Fixed Vg on x axis range
     *  Fixed incorrect marker position when VG on xaxis
     * 2.06a
     *  fixed model results show for pentode section when triode plot selected
     *  fixed crash when model changed to none and yaxis showing model values
     *  fixed incorrect SPICE file output
     *  added auto path for SPICE file save dialog.
     *  crashes when plotting without full dataset
     *  enable all controls after a timeout
     * 2.05a
     *  Changed linearized parameters display for pentodes to show Va, Vs, Vg, gm and Ia.
     *  fixed infinite loop on adding a tube
     *  moved marker to upper layer
     *  tweaked positioning of marker text
     *  on plots with Vg on x-axis fixed limit of 16 colors
     *  on plots with Vg on x-axis fixed legend display show Yaxis2 info
     *  on plots with Vg on x-axis fixed marker text position TBD: y scale is slighly incorrect
     *  Fix crash when switch xaxis type ( Va/Vg2/Vg) and then back again due to invalid showIndexValue
     *  estimates of alpha_s and beta incorrect: reduced size for convergenace and added overrides for DERK_E alpha_a and beta
     *  Data file not saved when editing parameters for existing type
     *  When attaching marker text to lines using yAaxis2, the y axis was scaled incorrectly
     *  X left limit margin for marker text changed to -0.05 from -0.1.
     *  Fixed flickering of legend when loading a theme.
     *  Added smooth curves for model
     *  Fixed incorrect marker text for y2axis
     *  Fixed yaxis2 missing color
     * 2.04a
     *  plotLineWidth added to qss
     *  added group by color feature
     *  LCD digits set to 3
     *  Quick test file format changed to prevent error when trying to load it.
     *  Add auto mu KV/V scale option for pentodes
     * 2.03a
     *  Vg display gets two decimal places
     *  Fix plot line 0 marker not working
     *  Added debug/ pretty print (Off hopefully) to debug log off checkbox
     * 2.02a
     *  fixed greying for dual triode and dual diodes
     *  crash when mouseover on empty plot
     *  I limit setting out by /100
     * 2.01a
     *  Modeller: Fixed typos in TriodeInit() math
     *  Modeller: Handle case where Is=0 for KG2 estimate
     *  moved plot value markers to an overlay layer
     * 2.00a 12 bit Vg?,
     *  calibration data on chip,
     *  plot line colors from qss file:
     *      plotLegendTextColor=#ccc
     *      plotSHowValColor=#ff0
     *      plotLineColor0=#00f up to plotLineColor49
     *  calibration reset,
     *  hardware settings now in gui
     *  MRU, LU, Alpha tube sort options
     *  Read data file auto path
     *  More status messages

32 bit version source code: download You will need to install QT5.

64 bit version source code download. Needs QT6

In the uTma folder, delete the file (if it exists). In QT creator you will need to define your project builds this is what I use:

QT Creator project settings ( release ).