I enabled the maths option on my TD510A. YMMV but all the research that I did on the 510A suggested that Tektronix employed the same mechanism and memory locations throughout many of their TDS5xx/6xx/7xx series.
Check this thread and the links it contains:
https://www.eevblog.com/forum/testgear/hackingupgrading-old-scope-%28tds754d%29/msg759588/#msg759588Here is the code that I used (as ever, I re-used code that I had written for other purposes - so ignore anything that does not apply!)
The important bits are sending the password and then setting the memory location.
/* Upgrade Tek TDS510A options via GPIB
*
* Software/firmware options are enabled by writing one to the
* NVRAM. The following locations are common to the TDS range:
* Address Option
* 327686 1M Memory expansion enable (130,000 record length)
* 327687 05 (Video trigger) Hardware required.
* 327688 13 (RS-232/Centronics Hardcopy Interface Ports). Hardware required
* 327689 2F (Advanced DSP math)
* 327690 1F (Floppy disk). Hardware required.
*
* 327692 2C (Communication Signal Analyzer)
* 327693 3C (P6701B with system calibration). Hardware required.
* 327694 4C (P6703B with system calibration). Hardware required.
* 327695 2M (8 M acquisition length). Hardware required.
*
* These NVRAM locations appear to be consistent across the TDS5xx, TDS6xx and
* TDS7xx ranges of oscilloscopes.
*
*/
/* How to drive IEEE card from N.I.s ni488m-320351b.pdf manual
on using TNT488 PCI driver software
compile with added library file -> gcc this_file.c -o thatfile -lgpib
*/
/* Installation
* Prior to first use, the NI driver has to be compiled and installed.
* As root ldconfig the library/driver
* Also modprobe tnt4882.
*
* In use
* The ports must have approriate read/write access privilleges
* chmod a+rw /dev/gpib*
*
* After each power-up the card needs to be configured with
* gpib_config (as root).
*/
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
//#include "ugpib.h"
#include "gpib/ib.h"
#define Istr_len 15L
/* IEEE primary address of HP1630 Logic Analyzer */
#define Osc_GPIB_Addr 8
/* File handle for GPIB interface */
int TekTDS;
int main(int argc, char *argp[])
{
int x,z;
char buffer[2048];
char sstr[100];
/* Initialise device and state
(also sends IFC - clear interface message) */
// dmm1 = ibdev (0, HPLA_address, 0, 11, 1, 0x40a);
TekTDS = ibdev (0, Osc_GPIB_Addr, 0, 13, 1, 0);
printf("\n The value returned is %i\n",TekTDS);
x = sprintf(sstr,"*IDN?"); // Ask for identification
ibwrt (TekTDS, sstr, x);
sleep(1);
z = ibrd(TekTDS, buffer, 1023);
z = ibcnt;
printf("\nReturned %i bytes, thus:\n",z);
for (z=0;z<64;z++) {
if ((buffer[z] == 10) || (buffer[z] == 13) || (buffer[z] == 0)) break;
printf("%c",buffer[z]);
}
printf(" ");
for (z=0;z<64;z++) {
printf(" %02x",buffer[z]);
if ((buffer[z] == 10) || (buffer[z] == 13) || (buffer[z] == 0)) break;
}
printf("\nAnd the value of z is %i\n",z);
x = sprintf(sstr,"PASSWORD PITBULL"); // Unlock the services
ibwrt (TekTDS, sstr, x);
sleep(1);
x = sprintf(sstr,"WORDCONSTANT:ATPUT 327689,1"); // Set the enable bit for option 2F - Maths
ibwrt (TekTDS, sstr, x);
sleep(1);
printf("\nDone\n");
exit(0);
}