Author Topic: Tektronix MSO70404 SPC Failure  (Read 1906 times)

0 Members and 1 Guest are viewing this topic.

Offline dxlTopic starter

  • Regular Contributor
  • *
  • Posts: 189
  • Country: de
Tektronix MSO70404 SPC Failure
« on: May 17, 2022, 06:30:01 pm »
I got a MSO70404, unfortunately it's not working properly: The SPC fails with the following messages:

Code: [Select]
    Scope.exe Version: 5.3.3 Build 3; 00:01:31:765[3744] acqDiagPublicCmds.cpp:diagInitPLL(2386) U2031(LMX2306PLL) was detected successfully (re)locked 1 times after waiting 450.00ms.
00:01:31:765[3744] acqDiagPublicCmds.cpp:diagInitPLL(2389) U2031(LMX2306PLL) locked and unlocked within 3.83ms.
Tue Jan 01 00:01:31 2002: Executing Powerup diags ... Pu=79 T=30C
Test "111" - Processor-->Memory-->DRAMWalk1 started
     Test execution time 5.406e-006 sec
Test "112" - Processor-->Memory-->DRAMCell started
     Test execution time 0.0028105 sec
Test "113" - Processor-->Memory-->DRAMMarch  started
     Test execution time 0.00072254 sec
Test "114" - Processor-->Memory-->DRAMCal  started
     Test execution time 4.131e-006 sec
Test "211" - Registers-->PCI-->MIA started
     Test execution time 0.002902 sec
Test "221" - Registers-->Acquisition-->ACL started
     Test execution time 0.0026814 sec
Test "222" - Registers-->Acquisition-->PLL started
     Test execution time 0.074171 sec
Test "223" - Registers-->Acquisition-->Preamp started
     Test execution time 0.0068422 sec
Test "224" - Registers-->Acquisition-->TrkHld started
     Test execution time 0.0074064 sec
Test "225" - Registers-->Acquisition-->ADC started

                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0x1/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0xffe/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0x2/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0xffd/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0x4/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0xffb/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0x8/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0xff7/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0x10/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0xfef/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0x20/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0xfdf/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0x40/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0xfbf/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0x80/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0xf7f/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0x100/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0xeff/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0x200/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0xdff/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0x400/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0xbff/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0x800/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0x7ff/0x0
                DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0xfff/0x0
       *** TEST FAILED ***
     Test execution time 0.021683 sec
diagMgr:diagLogFailure: Tue Jan 01 00:01:31 2002 P Pu=79 T=30 "DataLineTstStepFail- U300_A4(HFD204[4])/SPARE+0x000 exp/act 0x1/0x0"

From the error messages it looks like the ADC isn't responding at all. The Acquisition board is basically a PCB with almost all BGA chips, so not easy to solder. Anyone familier with these units here? I would guess that this is game over?
« Last Edit: May 17, 2022, 07:45:55 pm by dxl »
 

Offline dxlTopic starter

  • Regular Contributor
  • *
  • Posts: 189
  • Country: de
Re: Tektronix MSO70404 SPC Failure
« Reply #1 on: May 18, 2022, 02:42:51 pm »
Interesting - directly beneath the failed ADC, pick and place was going wrong and seems to have spit a few smd capacitors... See the circled areas in the picture.  :o Unfortunately, removing them didn't fix the problem, and i haven't found any places on the PCB where parts are missing.
 

Offline tv84

  • Super Contributor
  • ***
  • Posts: 3217
  • Country: pt
Re: Tektronix MSO70404 SPC Failure
« Reply #2 on: May 18, 2022, 06:48:18 pm »
Interesting - directly beneath the failed ADC, pick and place was going wrong and seems to have spit a few smd capacitors... See the circled areas in the picture.  :o Unfortunately, removing them didn't fix the problem, and i haven't found any places on the PCB where parts are missing.

Is this a Tek??   :wtf:
 

Online EE-digger

  • Frequent Contributor
  • **
  • Posts: 343
  • Country: us
Re: Tektronix MSO70404 SPC Failure
« Reply #3 on: May 19, 2022, 02:25:17 am »
Those could be reworks but the photos do not give a good view of the solder joints.  If the parallel pair of parts look well attached to each other from your "live" view, my vote would be for a rework.
 

Offline dxlTopic starter

  • Regular Contributor
  • *
  • Posts: 189
  • Country: de
Re: Tektronix MSO70404 SPC Failure
« Reply #4 on: May 19, 2022, 07:48:45 pm »
Those could be reworks but the photos do not give a good view of the solder joints.  If the parallel pair of parts look well attached to each other from your "live" view, my vote would be for a rework.

There was no solder at the extra parts. I could move them away without much force. So somehow they sticked to the pcb, but it didn't look like they where supposed to be there.
 

Offline dxlTopic starter

  • Regular Contributor
  • *
  • Posts: 189
  • Country: de
Re: Tektronix MSO70404 SPC Failure
« Reply #5 on: May 20, 2022, 05:31:24 pm »
There's a console port on tcp/1072, with quite a lot of debug commands:

Code: [Select]
Trying 192.168.0.60...
Connected to 192.168.0.60.
Escape character is '^]'.
?
Commands available from the console are:
? <command name>
CFDebug <STart|Nominal|Filter|All> <Trace|Files|Both|Off>
CFDebug SHow
CFDisplayFilter <sampleRateIndex> <idx> <channel> <vertIndex>
CFFilter <Init|Reset|Load|Start>
CFShow <Probe|Other|FullTable|Table|SIzeFilter|STructure>
CFStorage <Save|Recall> <filename>
FactoryIlvSrc [source]:-1
FrontEndReprogram
IdcDmaRegDump <ON|OFF:token>
MSOoverTempTest [testFlag]:0
MSOpoweroff
RdI2Chw <devAddr> < payload> < byteCount>
SPCtest <ENABLE|DISABLE|SHOW|DEBUG|QUIET> <name>
a2dGetRefLevel
a2dOutPhase <part> < quad> < phase>
a2dPhase <part> < quad> < phase>
a2dPhaseAll <phase>
a2dSetRefLevel <Ref Level>
acqDMAstartAddrMask <mask>
acqDisplayOnePipe <enable (1=on, 0=off)> <pipe (1-16(SR) or 1-64(HH))>
acqDumpIVglobals
acqEnableMathMeasWhileRolling <enabled>
acqEngShowWhichCTLProgram
acqProcCmd <Command sequence in hex>
acqProcFlashDump <Output file name>
acqProcFlashLoad <Input file (Intel Hex format) name>
acqProcFlashVerify <Input file name>
acqProcQuery <Command sequence in hex>
akIfBrdGetTchScrn
akIfBrdLoadProgram <FileName>
akIfBrdReadSeq <byteCnt>
akIfBrdReadVolts
akIfBrdSetTchScrn <newState>
akIfBrdSetUART <newState>
akIfBrdStatus
akIfBrdWriteSeq <seqNr>
beamFind [A2D pipe]:-1
bfAcqFlashTest
bfMiaFlashTest
bump <part> < quad> < phase>
bumpOut <part> < quad> < phase>
bumpPlock <count> <repeat>
bweeFakeAll
bweeOpenTable <ch> <index> [srIndex]:0
bweeShowTable <ch> <index> [srIndex]:0
bweeStatus <FREE|CALED|CURRENT:token>
bweeTable <CLOSE|ERASE|SHOW|FAKE|BIGFAKE>
calAcqGet <BALANCE|GAIN|PHASE|TRKHLD|DESKEW> <connectMode> [pipe]:0
calAdcDmx [Demux Index]:0
calDebug <ON|OFF>
calDebug nvZero
calDigProbe
calDoFactory <INIT|NEXT|PREVIOUS|ABORT|SAVE|LOAD|SKIP:token> [precess]:0
calIlvDebug <ON|OFF>
calIlvModeDebug <Mode Mask>
calIlvTracePasses <ON|OFF>
calOffsetRef <long>
calSignal <signal> [ chan]:0
calSqmDumpDataToFile <off|on>
calSqmGetTimerRegVal <sqmChId> <clkTmr|dataTmr> <dlyTime>
calSqmReadTmr <sqmChId> <clkTmr|dataTmr>
calSqmResetDVals
calSqmSetAnalogDly <chId> <holdTime> <setuptTime>
calSqmSetCalChannels [chanMask]:-1
calSqmSetHoldDelay <sqmChId> <l> <d> <e> <digClTicks>
calSqmShowDVals
calSqmShowTmrSettings [chanMask]:-1
calSqmWriteTmr <sqmChId> <clkTmr|dataTmr> <lVal> <dVal> <eVal>
calSwitchRelay <chan> <1X|10X|OPEN|GND:token>
calTestGainError
calilvcaldac <IlvCalDac>
calilvcalfreq [f0]:0 [ f1]:0 [ f2]:0 [ f3]:0
compareHexfiles <File1 name> <File2 name> <fileLength>
cvrAS <LSB|OFFSET|SHOW:token> [factor]:0.000000
cvrMv <millivolts>
cvrMv OFF
cvrPath <channel> <path> <millivolts>
cvrVolts <volts>
cvrVolts OFF
dbPerfTestGet
dbPerfTestSet
debugSteroids [State]:1
demuxSpeed
diagAcqFlashMem <Flash memory offset> <NumBytes to test> <Data pattern used for testing>
diagAcqMem
diagAfeProcessor
diagCtrlDma <writeMode> <readMode>
diagCtrlPattern [patternOffset]:-1 [autoInc]:-1 [stopOnError]:-1
diagDbgMsgOff
diagDbgMsgOn
diagDgtlIdcHiSpeed
diagDgtlIdcLoSpeed
diagDgtlIdcLoSpeedSingleDmx <demux index> <direction - 1 left, 2 right>
diagDigitalDataBus
diagDmaAbort [MiaDmaPath(1-6)]:1 [Acq Type (0 for analog, 1 for digital)]:0
diagDmaStartVa <dmxIdx> <numBytes> [demux memory offset]:0 [DMA path(0-PA, 1-IdcAcq, 2-IdcDisp)]:0
diagDmxDmxIdcAcqXfr <ZERO|ONE:token> <ANALOG|DIGITAL:token>
diagDmxDmxIdcDispXfr <ZERO|ONE:token> <ANALOG|DIGITAL:token>
diagDmxMiaIdcAcqXfr <ZERO|ONE:token> <ANALOG|DIGITAL:token>
diagDmxMiaIdcDispXfr <ZERO|ONE:token> <ANALOG|DIGITAL:token>
diagFrontPanel
diagIdcAcqDma [dmx mem offset]:0 [num bytes]:1024 [retries]:1 [Show data(1 - yes, 0 - no)]:0 [Acq Type (0 for analog, 1 for digital)]:0
diagIdcDispDma [dmx mem offset]:0 [num bytes]:1024 [retries]:1 [Show data(1 - yes, 0 - no)]:0 [Acq Type (0 for analog, 1 for digital)]:0
diagIdcHiSpeed
diagIdcLoSpeed
diagIdcLoSpeedSingleDmx <demux index> <direction - 1 left, 2 right>
diagMemSpeed <dmxIdx> [cnt]:1 [useRamp]:0 [errLimit]:5
diagMiaFlashMem <Flash memory offset> <NumBytes to test> <Data pattern used for testing>
diagPaDma [dmx mem offset]:0 [num bytes]:1024 [retries]:1 [Show data(1 - yes, 0 - no)]:0 [Acq Type (0 for analog, 1 for digital)]:0
diagSingleIdcAcqDma <demux index> [dmx mem offset]:0 [num bytes]:1024 [Show data(1 - yes, 0 - no)]:0 [Acq Type (0 for analog, 1 for digital)]:0
diagSingleIdcDispDma <demux index> [dmx mem offset]:0 [num bytes]:1024 [Show data(1 - yes, 0 - no)]:0 [Acq Type (0 for analog, 1 for digital)]:0
diagSinglePaDma <demux index> [dmx mem offset]:0 [num bytes]:1024 [Show data(1 - yes, 0 - no)]:0 [Acq Type (0 for analog, 1 for digital)]:0
diagT5AcqRamTest
diagT5Delete <file path>
diagT5DevTest
diagT5DfeTest
diagT5Download <file path>
diagT5HkRamTest <STOP|NOSTOP> [output pipe]:stdout [base addr]:0 [test span]:2097151 [step]:1
diagT5Load <file path>
diagT5Run <addr>
diagT5Upload <file path>
diagTekLinkRefPath
diagTekLinkTopSignal
diagTekLinkTrigPath
digDelayCheck <chan>
dipfifobmp <demux> [ bumps]:1 [ side]:3
disableVertInterrupts
dmxAbortProgram <demux index> <dsp instance>
dmxAcquireWfm
dmxAdtcInfo
dmxAdtcResetDmx <DmxID>
dmxAdtcRun <Pattern> <XferMethodString> <DmxId> <ResetTypeString>
dmxBitInvBitEnForCalGenHisto <BitInv1> <BitInv0> <BitEn1> <BitEn0>
dmxCalCcEnable <dmx> <enableFlag>
dmxCalCcGetFactMode
dmxCalCcInit
dmxCalCcPrint
dmxCalCcReadNv [dmxIdx]:32
dmxCalCcSetFactMode <enableFlag>
dmxCalCcWriteNv [dmxIdx]:32
dmxCalDbgDumpRegs <dmxIdx>
dmxCalDramHelp
dmxCalDramRun <dmx> <stepId> <analogOrDigital>
dmxCalGenHisto <dmx> <pattern> <selCedgeCsel1sel0mode1mode0edgeCh> <cnt> <analogOrDigital>
dmxCalPllDll <dmx> <freq> <interactive>
dmxCalTest <dmx> <freq> <analogOrDigital>
dmxClkBlkRegCheck [seconds]:10
dmxClkBlkRegCheckDig [seconds]:10
dmxCrossTalkTest <dmxFirst> <dmxLast> <cnt> <analogOrDigital>
dmxCtlRegs <demux index>
dmxDbgDmaStatus [demux index]:32 [Acq Type (0 for analog, 1 for digital)]:0
dmxDbgDumpAllDmxRegsToFile <demux areas in format _Area_ or ALL for all registers (e.g. _Rast_)... use dmxDbgDumpRegsInstNames for a list> <filename> [print full 32 bit regs only]:0
dmxDbgDumpRegs <demux index> <demux areas in format _Area_ or ALL for all registers (e.g. _Rast_)... useall registers (e.g. _Rast_)... use dmxDbgDumpRegsInstNames for a list> [print full 32 bit regs only]:0
dmxDbgDumpRegsInstNames
dmxDbgDumpRegsToFile <demux index> <demux areas in format _Area_ or ALL for all registers (e.g. _Rast_)... use dmxDbgDumpRegsInstNames for a list> <filename> [print full 32 bit regs only]:0
dmxDbgFifoStatus <demux index>
dmxDbgIdcStatus [demux index]:32 [Acq Type (0 for analog, 1 for digital)]:0
dmxDbgStatus <demux index>
dmxDbgXfrStatus [demux index]:32 [Acq Type (0 for analog, 1 for digital)]:0
dmxDeciRunDiagnostics <demux index>
dmxDeciSetMode <demux index> <deciA=0 or deciB=1> <mode>
dmxDeciSetMode <demux index> <deciA=0 or deciB=1> <mode>
dmxDisableDqDll <dmx> <disable>
dmxDramFirTest <dmx> [loops]:1 [inOutBytes]:33 [round]:1 [points]:65536 [inAddr]:0
dmxDramRdClkEyeTest <dmx> [binSelX]:99 [freq]:2 [pattern]:5
dmxDramReadBinSelX <dmx>
dmxDramReadModeReg <dmxFirst> <dmxLast> <modeRegNum>
dmxDramSendCmd <dmx> <configCmd>
dmxDramSetBinSelX <dmx> <byte> <riseBinSelX> <fallBinSelX>
dmxDramSetDriveForCal <dmx> [pdrive]:10 [ndrive]:10 [pterm]:4 [nterm]:0
dmxDramSetModeReg <dmxFirst> <dmxLast> <modeRegNum> <modeRegVal>
dmxDramTest <dmx> <cnt> <fix> <analogOrDigital>
dmxDramTestDqsOffsetOverride [offset]:350
dmxDramUpTest <dmx> [cnt]:1 [data4Bytes]:-218959118 [numBytes]:64 [byteAddr]:0
dmxDramVendorIdOff <dmx>
dmxDramVendorIdOn <dmx>
dmxDramVendorIdRead <dmx>
dmxDramWrEyeTest <dmx> [freq]:1 [pattern]:5 [printErrors]:0 [fix]:0 <analogOrDigital>
dmxDramWrMask <dmx> <maskEH> <maskAD> <wrCnt> <fix> <analogOrDigital>
dmxDramWrTest <dmx> <wrCnt> <pattern> <fix> <analogOrDigital>
dmxEnableDramBypassHack <demux index> <enable> [Acq Type (0 for analog, 1 for digital)]:0
dmxFirMathCalcAdd <demux index>
dmxForceAdcData <type>
dmxGwSetChan <source>
dmxGwSetIdx <source>
dmxIdcAcqDigitalXfr <source demux index> <destination demux index> <numBytes> <absolute source address> <absolute destination address> [two byte data flag]:0
dmxIdcAcqXfr <source demux index> <destination demux index> <numBytes> <absolute source address> <absolute destination address> [two byte data flag]:0
dmxIdcDmaRead <demux index> <num bytes to read> <source acq mem address> <MIA IDC path(1 for acq, 0 for disp)> [Show data (1 for yes, 0 for no)]:0 [Acq Type (0 for analog, 1 for digital)]:0
dmxIdcDmaWrite <demux index> <num bytes to write> <destination acq mem address> <32 bit value to write> <MIA IDC path(1 for acq, 0 for disp)> [Acq Type (0 for analog, 1 for digital)]:0
dmxMcaAccCntVals <dmx>
dmxMcaCntRdAccs <dmx> [AccCounterNum]:1 [PopDev]:1
dmxMcaCntWrAccs <dmx> [AccCounterNum]:1 [PushDev]:0
dmxMcaDiagEventRead <dmx>
dmxMcaDiagEventReset <dmx>
dmxMcaDiagEventTimerInit <dmx>
dmxMcaDiagSetEventCnt <dmx> [NumEvents]:1048575
dmxMcaDiagSetEventCondition <dmx> [MemAccDev]:1 [EventBegin]:20 [EventEnd]:25 [EventOnWr]:1 [EventOnFifoAcc]:0
dmxMcaDiagSetHistoThresholds <dmx> <Threshold0> <Threshold1> <Threshold2> <Threshold3> <Threshold4>
dmxMcaDigAccCntVals <dmx>
dmxMcaDigCntRdAccs <dmx> [AccCounterNum]:1 [PopDev]:1
dmxMcaDigCntWrAccs <dmx> [AccCounterNum]:1 [PushDev]:0
dmxMcaDigDiagEventRead <dmx>
dmxMcaDigDiagEventReset <dmx>
dmxMcaDigDiagEventTimerInit <dmx>
dmxMcaDigDiagSetEventCnt <dmx> [NumEvents]:1048575
dmxMcaDigDiagSetEventCondition <dmx> [MemAccDev]:1 [EventBegin]:20 [EventEnd]:25 [EventOnWr]:1 [EventOnFifoAcc]:0
dmxMcaDigDiagSetHistoThresholds <dmx> <Threshold0> <Threshold1> <Threshold2> <Threshold3> <Threshold4>
dmxMcaDigDramFifoConfig <dmx> [AccCounterNum]:1 [PopDev]:5 [PushDev]:1 [TargetDepth]:16 [MaxBurstPopPush]:131074
dmxMcaDramFifoConfig <dmx> [AccCounterNum]:1 [PopDev]:5 [PushDev]:1 [TargetDepth]:16 [MaxBurstPopPush]:131074
dmxMemoryLayout <which layout (0=prepared, 1=committed)>
dmxPaDmaRead <demux index> <num bytes to read> <source acq mem address> [Show data (1 for yes, 0 for no)]:0 [Acq Type (0 for analog, 1 for digital)]:0
dmxPaDmaWrite <demux index> <num bytes to read> <destination acq mem address> <32 bit value to write> [Acq Type (0 for analog, 1 for digital)]:0
dmxPauseProgram <demux index> <dsp instance>
dmxProfile <log dmxIdx> <seconds> [dsp or ctl]:1
dmxRecal <dmxFirst> <dmxLast> <freq> <calTries> <keepOldPassedCals> <analogOrDigital>
dmxResumeProgram <demux index> <dsp instance>
dmxRunCache <demux index> <dsp instance> <entry>
dmxRunForcedAcquisition <demux index> <acq mem start address> <acq source, 0=input, 1=ramp, 2=random> <record length> <decimation factor>
dmxRunForcedAcquisition <demux index> <acq mem start address> <acq source, 0=input, 1=ramp, 2=random> <record length> <decimation factor>
dmxRunProgram <demux index> <dsp instance> <entry>
dmxRunStatus
dmxSelectSignalSource <source>
dmxSetAcqRecordLength <length>
dmxSetDecimation <decimation>
dmxStopDramTest
dmxTestDspLoad <demux index> <dsp instance> <verbose>
dmxTestPgmLoad <demux index> <verbose>
dmxToggleBump <demux index> [number of bumps]:1 [whichPath, 0 for both, 1 for A, 2 for B]:0
dmxUpClearMem <demux index> <Number of bytes to clear> <Acq mem address at which to start clearing> [Acq Type (0 for analog, 1 for digital)]:0
dmxUpLoadFromFile <demux index> <filename> <acq mem address> [Acq Type (0 for analog, 1 for digital)]:0
dmxUpRead <demux index> <num bytes to read> <source acq mem address> [Acq Type (0 for analog, 1 for digital)]:0
dmxUpSetMem <demux index> <Number of bytes to set> <Acq mem address at which to start setting> <8 bit value to set memory to> [Acq Type (0 for analog, 1 for digital)]:0
dmxUpStoreToFile <demux index> <filename> <number of bytes> <acq mem address> [Acq Type (0 for analog, 1 for digital)]:0
dmxUpTestWriteByteStream <demux index> <destination acq mem address> [Acq Type (0 for analog, 1 for digital)]:0
dmxUpTestWriteWord16Stream <demux index> <destination acq mem address> [Acq Type (0 for analog, 1 for digital)]:0
dmxUpTestWriteWord32Stream <demux index> <destination acq mem address> [Acq Type (0 for analog, 1 for digital)]:0
dmxUpTestWriteWord64Stream <demux index> <destination acq mem address> [Acq Type (0 for analog, 1 for digital)]:0
dmxUpWrite <demux index> <32 bit value to write> <destination acq mem address> [Acq Type (0 for analog, 1 for digital)]:0
dmxUpXfrTest <demux ID> <num bytes> <acq mem addr> [Acq Type (0 for analog, 1 for digital)]:0
dmxbump <demux> [ bumps]:1
dmxdmxDramCalStatus
drvDbgEnable <enable>
dumpA2DPhase [part]:-1 [ quad]:0
dumpAKTemps
dumpAKpath <aChannel>
dumpDigitalProbe <Intel hex filename string>
dumpFlash <flash> < addr> < numBytes>
dumpFlashSector <flash> <sector> <file>
dumpProcOsc [dmxId]:-1 [aord]:0
dumpTHPhase [part]:-1 [ quad]:0
ebitsDebug <ebitsCount>
enableClearStats <on/off>
enableVertInterrupts
eraseFlash <flash> <addr>
fanDump
fanLoadParamsFromFile
fanMonitor
fanMonitorOff
fanSetPwm <integer value>
fastAcqTPC <enable flag (0=disable, 1=enable)>
fpPrintFpSwVersion
fpReprogramFp
fpSendDbg <enable-disable>
fpStandby
ftlSBin
ftlSetHeatSeconds <start>
ftlSetLatchClockValue <OFF|ON>
ftlSetSkew <index> < picosec>
ftlSetTimer <whichTimer> < picoSeconds>
ftlShowSkew <index>
gainTarget <gain> <NORMAL|HIGH|LOW>
getUlong <symbol name>
getVGvalue <channel>
getVpiEvent <Index of probe socket>
guardband [percent]:100
gwLoadClut <Clut path>
gwSetVideoPath
help <command name>
hfd144speed
history
hostMemStoreToFile <memory address> <size> <filename>
hsCompensator <mode>
hwExtReferenceState
hwLoadFtlImage <FTL Image Path>
hwPrintConfig
iCaptureChannel <digChannel> <iCaptureChannel>
initA2Dstep [inc]:0.020000 [ start]:0.000000 [ part]:-1 [ quad]:0
installProbeApp <Index of probe socket> <Name of intel hex image file>
loadFlashSector <flash> <sector> <file>
lsstCal
lsstFind <Channel>
lsstMeasure <Channel>
miaDbgIdcStatus [Acq Type (0 for analog, 1 for digital)]:0
miaDbgStatus [Acq Type (0 for analog, 1 for digital)]:0
mitlAbort
mitlBitsPerChannel <2 for 2 Bit Data>
mitlContinue
mitlDMARead <Num words to read> [Source Tek5 mem address]:8192 [Show data (1 for yes, 0 for no)]:0
mitlDigitalInputState
mitlEndDigitalTestMode
mitlFactory
mitlFillMem <HK mem address> <num bytes to write> <8 bit data value to write>
mitlGetDigitalTestResults
mitlMagniVu <1 for MagniVu or 0 for LRL>
mitlReadMem <HK mem address> <num bytes to read>
mitlReadWord <HK mem address>
mitlRunStatus
mitlSetDigitalTestMode
mitlSetPC <PC address>
mitlSingleStep
mitlStartAcq <LRL number of samples (1-20000)> <LRL compression (1 and 2 output sample data)> <FISO decimation (1, 2, 4, 5, 8, 10, 20)>
mitlUseDMA <1 to enable DMA>
mitlWriteByte <HK mem address> <8 bit data value to write>
mitlWriteWord <HK mem address> <32 bit data value to write>
msoCQThreshold
msoClockWatch <OFF|ON|SHOW:token>
msoSpeed <Fast|Slow>
msoTest
msoTest trace
msodipfifobmp <demux> [ bumps]:1 [ side]:3
msodmxbump <demux> [ bumps]:1 [ side]:3
nbrConsoleCmds
nextBeam [A2D pipe]:9999
overloadClear [mode]:1
patchDramNv <dmxId> <name> <value>
piHistory <num>
piLoad
piUnload <num>
piVirtualHistory <num>
plockOffset <mil> <add>
poundDemux <demuxIdx> <startAddr> <Length> <Repeats>
poweroff
printAllDiags
printDigitalProbe
printTriggerStatus
probesFpStress <ON|OFF> [Seconds between resets]:15
probesLedStress <ON|OFF>
probesPowerOff
probesPowerOn
probesProgramProbeData <chanNum> <probe eerom data file name>
probesPwrStress <ON|OFF> [Seconds between resets]:15
probesReset
probesSendDbg <enable-disable>
quit
raxDbgContinue
raxDbgControl <register name> <long> <long>
raxDbgIncrement <register name> <value>
raxDbgPrintRegs
raxDbgRead <register name>
raxDbgRegressionTest
raxDbgSettings <register name>
raxDbgWrite <register name> <value>
raxInitializeDevices
raxRampDac <device/register name> <value>
rdADCTBVolts [TB_SEL]:0 [devIdx]:0 [Ctrl_Sel]:3
rdADCTemperature [ADC Index]:0 [ADC RefAdj]:0
rdAdt7476 [regNumber]:0
rdI2CX <FanControl|RefAdjust|EEPROM|FrontPanelProc|Demux|Preamp|PS|SDIA|IfBoardProc> < command>
rdPreampTBVolts [TB_SEL]:0 [PA Index]:0
rdPreampTemperature [Preamp Index]:0 [Preamp RefAdj]:0
rdTHTBVolts [TB_SEL]:0 [TH_Index]:0 [Ctrl_Sel]:3
rdTHTemperature [TrkHld Index]:0 [TrkHld RefAdj]:0
rdTemperatures [dbgTempEn]:0
readPciRegisters <ANALOG|DIGITAL> <Offset> <Bytes>
refMonDebug <ON:OFF:token>
reportError <Error number>
returnConnectionMode
rtlAbortAcqDebug <ON|OFF>
rtlAcqDeciDoneEvent
rtlAcqEngineDoneEvent
rtlDsyDoneEvent
rtlDsyRastDoneEvent
rtlEnableAbortAcq <ON|OFF>
rtlFastAcqRasterDoneEvent
runAcqProcSpiReset
runDmxTests [Acq Type (0 for analog, 1 for digital)]:0
runDmxXfrTests [Acq Type (0 for analog, 1 for digital)]:0 [Demux ID]:0
runIdcAcqDmaStress <demux index> <number of bytes> <read from demux (1-yes,0-no)> <number of loops> [Acq Type (0 for analog, 1 for digital)]:0
runIdcDispDmaStress <demux index> <number of bytes> <read from demux[1-yes,0-no]> <number of loops> [Acq Type (0 for analog, 1 for digital)]:0
runPaDmaStress <demux index> <number of bytes> <read from demux[1-yes,0-no]> <number of loops> [Acq Type (0 for analog, 1 for digital)]:0
runRandomDmaStress <number of loops> [number of bytes]:-1 [demux index]:32 [Acq Type (0 for analog, 1 for digital)]:0
runRandomPaDmaStress <numLoops> [Acq Type (0 for analog, 1 for digital)]:0
setDebugPipesMode <source>
setDoubleBitrateValue <OFF|ON>
setEtDebugValue <OFF|ON>
setFtlDBEValue <OFF|ON>
setFtlForCommValue <OFF|ON>
setFtlHighRangeValue <OFF|ON>
setFtlMainOnlyValue <OFF|ON>
setFtlPush <index> < picosec>
setFtlSerialValue <OFF|ON>
setFtlTimer <timerIndex> < numPicoSeconds>
setHistory [buffer size]:100
setHobeCount <count>
setInit50DebugValue <OFF|ON>
setIviewMode <channel> <OFF|ON:token>
setPLock <event> <patLen> <mult>
setPhdFlagValue <OFF|ON>
setRefMonWait [State]:3000
setSerDesDebug <serDesDebugLevel>
setUlong <symbol name> [symbol value (integer)]:0
setVGvalue <channel> <gain>
showEbitsError <ebitsCount> [ pipeMask]:0
showEtHistogram
showFtlABTime
showFtlMem <start> < length>
showFtlMemNoFill <start> < length>
showGainTarget
showIviewMode
signalSafeCheck
startTekLink
stats <ON|OFF>
statsDump
statsWeight <long>
statusFlash <flash>
stepA2D [steps]:1
stepGen <direction>
stopTekLink
symPrint <symbole name>
symSet <symbol name> [symbol value (integer)]:0
tcpipConsoleDebug [debug level]:0
tekLinkSendPulse <PulseCode>
tekLinkStartTrigCal <CalOption> [# measurements]:10 [Enable debug print]:0
tekLinkTriggerSetup <Trigger Type>
testDmaTimeout <Enable(1) or Disable(0)> <DMA Timeout Timer counter> [Acq Type (0 for analog, 1 for digital)]:0
testExpectedPass
testFlash <flash> < addr>
testList <TestName>
testMemLock <Size> <Smaller is OK> [Acq Type (0 for analog, 1 for digital)]:0
testPaDmaReadAllDemuxes <num bytes to read> <destination dmx mem address>
testPaDmaWriteAllDemuxes <num bytes to read> <destination dmx mem address> <32-bit data to write>
testRun <TestName>
testTestFramework
testVcoCal
thBump <part> < quad> < phase>
thPhase <part> < quad> < phase>
tiLookupTable
tpcSetDebugLevel <debugLevel>
trigCalGain
trigCalPos
trigCalSetupHold
trigCalThreaded
trigCalTimer
trigDumpCal
trigFindTriggerLevelTimeout <microseconds>
trigSerialDump
trigSerialI2cCommit
trigSerialI2cCommon <CH1|CH2|CH3|CH4|D0|D1|D2|D3|D4|D5|D6|D7|D8|D9|D10|D11|D12|D13|D14|D15> <CH1|CH2|CH3|CH4|D0|D1|D2|D3|D4|D5|D6|D7|D8|D9|D10|D11|D12|D13|D14|D15>
trigSerialI2cDefault
trigSerialI2cPrintConfig
trigSerialI2cTriggerOn <trigOn> [addressBits]:0 [address]:0 [direction]:2 [dataBits]:0 [data]:0
trigSerialInit
trigSerialRs232Commit
trigSerialRs232Common <CH1|CH2|CH3|CH4|D0|D1|D2|D3|D4|D5|D6|D7|D8|D9|D10|D11|D12|D13|D14|D15|NONE> <baudRate> <NONE|ODD|EVEN> [bits]:8
trigSerialRs232Default
trigSerialRs232PrintConfig
trigSerialRs232TriggerOnBreak
trigSerialRs232TriggerOnData <LT|GT|EQ|NE|LE|GE|IN|OUT> [dataBits]:8 [data]:32
trigSerialRs232TriggerOnFramingError
trigSerialRs232TriggerOnParityError
trigSerialRs232TriggerOnStart
trigSerialRs232TriggerOnStop
trigSerialSetDiag <selDiagnostic>
trigSerialSetVerbosity <selDiagnostic>
trigSerialSpiBusSetup <sclkPolarity> <endian> [clkTimeout]:1000
trigSerialSpiBusSources <sclkSource> <ssSource> <misoSource> <mosiSource>
trigSerialSpiCommit
trigSerialSpiDefault
trigSerialSpiPrintConfig
trigSerialSpiTriggerOn <trigOn> [misoBits]:0 [miso]:0 [mosiBits]:0 [mosi]:0
trigSerialTest
trip <chan> [offset]:9999
updateDigitalProbe <Filename of probe rom hex file> <SerialNumber string>
updateProbe <Index of probe socket> <Name of TekConnect object file>
updateProbeFirmware <Index of probe socket> <Name of intel hex image file>
varChange <file_var_Name> <data>
varCloseFiler
varDump
varFilerShow
varGpibCommand <TOTAL|COUNT|FIRST|NEXT|COLDStart>
varMaxPrintFiler <name> [maxPrint]:10
varOpenFiler <name>
varRead <name>
varRevertFiler <name>
varSaveAll
varShow <filerName> <varName>
varStore <name>
varWrite <name> <data>
vertFakeAnalogKid <bandwidth in Hz or GHz>
vertFakeHammerhead <bandwidth (Hz or GHz)>
vertFakeStingray <bandwidth in Hz or GHz>
vertImplantFakeProbe <Index of probe socket> <Name of TekConnect probe message file>
vertRealSignalPath
wfmDataDump <WfmPtr>
wfmDataFrames <WfmPtr> <Number of fastframe frames>
wfmDataSlot <slotId>
wfmSlotDump [SlotNumber]:1
winMemory
writePciRegister <ANALOG|DIGITAL> <Offset> <Value>
wrtAdt7476 [regNumber]:0 [regValue]:0
wrtI2C <FanControl|RefAdjust|EEPROM|FrontPanelProc|Demux|Preamp|PS|SDIA|IfBoardProc> < command> < dataByte>
wrtI2Cfp <devAddr> < byteCount> < dataByte>
wrtI2Chw <devAddr> < payload> < byteCount> < dataByte>
xferProbeByte <Index of probe socket> <Byte value to send>

> diagDbgMsgOn
Diag debug messages enabled.
 

Offline wasedadoc

  • Super Contributor
  • ***
  • Posts: 1356
  • Country: gb
Re: Tektronix MSO70404 SPC Failure
« Reply #6 on: May 20, 2022, 05:50:53 pm »
... i haven't found any places on the PCB where parts are missing.
There is a missing resistor, R302, near 7 o'clock of the top red circle.
 

Offline dxlTopic starter

  • Regular Contributor
  • *
  • Posts: 189
  • Country: de
Re: Tektronix MSO70404 SPC Failure
« Reply #7 on: May 20, 2022, 06:00:30 pm »
... i haven't found any places on the PCB where parts are missing.
There is a missing resistor, R302, near 7 o'clock of the top red circle.

Yes, that one is unpopulated for all ADCs. The good thing is that there are 8 identical layouted dac sections on this board, so i can compare them. :) Should have take a picture of the whole board...
 

Offline dxlTopic starter

  • Regular Contributor
  • *
  • Posts: 189
  • Country: de
Re: Tektronix MSO70404 SPC Failure
« Reply #8 on: May 25, 2022, 07:57:50 am »
As i'm not able to fix the ADC failure (neither have BGA soldering equipment nor a replacement chip), i decided to go a different way. The problem with the scope is that SPC fails and reverts all the SPC data to defaults. This renders the scope useless, because all the level/timing calibration data is gone. This is especially bad at the 12.5GS/s and 25GS/s sampling rates, because it uses more than one ADC. Without calibration you basically get 8 traces on the screen, because interleaving isn't calibrated.

So what i did now: I modified the Tek software so that it will just ignore errors during SPC. This makes CH1 + CH2 full usable, CH3 is still broken (of course), and CH4 works almost ok until you reach 12.5GS/s. So i have at least a working 4GHz dual channel scope 8)

Of course that's not suitable for production use, but who cares if it's just for hobby use.

I used a python script to patch all those SPC routines, because it were really a lot of changes...

Code: [Select]
import shutil

def change_bytes(f, pos, old, new):
    if len(old) != len(new):
        print("old and new differ in size")
        return
    f.seek(pos - 0x400c00)
    tmp = f.read(len(old))
    if tmp != old:
        print("doesnt match")
        print("addr ", hex(pos))
        print("old", old)
        print("tmp", tmp)
        return
    f.seek(pos - 0x400c00)
    f.write(new)

shutil.copyfile("scope.exe.ori", "scope.exe")

f = open("scope.exe", "rb+")
# change_bytes(f, 0x870301, bytes([ 0xff, 0xff, 0xff, 0xff ]), bytes([ 0x00, 0x00, 0x00, 0x00 ]))

# skip power up diags (doesn't work, crashes app)
# change_bytes(f, 0x917ffa, bytes([ 0x0f, 0x85, 0xba, 0x00, 0x00, 0x00 ]), bytes([ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 ]))
# change_bytes(f, 0x914a19, bytes([ 0xff, 0x55, 0xfc ]), bytes([ 0x33, 0xc0, 0x90 ]))
# ignore SPC errors and don't revert spc data
change_bytes(f, 0x8aed6a, bytes([ 0x75, 0x1d ]), bytes([ 0x90, 0x90 ]))
# ignore retry error in a2DPhaseCal
change_bytes(f, 0x9aac63, bytes([ 0x89, 0x45, 0xf8, 0x8b, 0x45, 0xf8 ]), bytes([ 0x33, 0xc0, 0x90, 0x90, 0x90, 0x90 ]))
# ignore 'failed to get good crossing'
change_bytes(f, 0x8d8a44, bytes([ 0x75, 0x27 ]), bytes([ 0x90, 0x90 ]))
# skip crossing checks in calibratePhaseCal
change_bytes(f, 0x8d90ab, bytes([ 0x3d, 0xe8, 0x03, 0x00, 0x00, 0x7f, 0x17, 0x3d, 0x18, 0xfc, 0xff, 0xff, 0x7c, 0x10 ]),
  bytes([ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 ]))
# addition cross checking ignore
change_bytes(f, 0x8d9217, bytes([ 0x81, 0xf9, 0xe8, 0x03, 0x00, 0x00, 0x0f, 0x8f, 0xa5, 0x02, 0x00, 0x00, 0x81, 0xf9, 0x18, 0xfc, 0xff, 0xff, 0x0f, 0x8c, 0x99, 0x02, 0x00, 0x00 ]),
  bytes([ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 ]))
# force ret = 0 in calibratePhaseCal
change_bytes(f, 0x8d910d, bytes([ 0x83, 0xc8, 0xff ]), bytes([ 0x33, 0xc0, 0x90 ]))
# force interleavecal
change_bytes(f, 0x86a450, bytes([ 0x0f, 0x8f, 0x51, 0xf7, 0xff, 0xff ]), bytes([ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 ]))
# force ret = 0
change_bytes(f, 0x8d6b79, bytes([ 0x83, 0xc8, 0xff ]), bytes([ 0x33, 0xc0, 0x90 ]))
# force ret = 0
change_bytes(f, 0x8d71bf, bytes([ 0x83, 0xc8, 0xff ]), bytes([ 0x33, 0xc0, 0x90 ]))
# ignore error in deskewChannels
change_bytes(f, 0x8d9f1e, bytes([ 0xff, 0xff, 0xff, 0xff ]), bytes([ 0x00, 0x00, 0x00, 0x00 ]))
# ignore error in Hfd200Balance
change_bytes(f, 0x9ac15b, bytes([ 0x75, 0x2f ]), bytes([ 0xeb, 0x2f ])) # 10mV
change_bytes(f, 0x9ac241, bytes([ 0x75, 0x2f ]), bytes([ 0xeb, 0x2f ])) # 20mV
change_bytes(f, 0x9ac328, bytes([ 0x75, 0x2c ]), bytes([ 0xeb, 0x2c ])) # 50mV
# force ret = 0 in calLinearity
change_bytes(f, 0x88c489, bytes([ 0x83, 0xc8, 0xff ]), bytes([ 0x33, 0xc0, 0x90 ]))
# ignore error in calNullInput
change_bytes(f, 0x9cf803, bytes([ 0x7a, 0x40 ]), bytes([ 0xeb, 0x40 ]))
change_bytes(f, 0x9cf879, bytes([ 0x75, 0x3d ]), bytes([ 0xeb, 0x3d ]))
# ignore error in calVarigainHfd200
change_bytes(f, 0x8811eb, bytes([ 0x7a, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x8812a5, bytes([ 0x74, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x88136c, bytes([ 0x74, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x88141f, bytes([ 0x7a, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x8814ec, bytes([ 0x74, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x8815b3, bytes([ 0x74, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x881720, bytes([ 0x7a, 0x5c ]), bytes([ 0xeb, 0x5c ]))
change_bytes(f, 0x8817d1, bytes([ 0x74, 0x5c ]), bytes([ 0xeb, 0x5c ]))
change_bytes(f, 0x8818d9, bytes([ 0x7a, 0x5c ]), bytes([ 0xeb, 0x5c ]))
change_bytes(f, 0x881a71, bytes([ 0x7a, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x881b2b, bytes([ 0x74, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x881bf2, bytes([ 0x74, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x881ca5, bytes([ 0x7a, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x881d72, bytes([ 0x74, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x881e39, bytes([ 0x74, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x881fa6, bytes([ 0x7a, 0x5c ]), bytes([ 0xeb, 0x5c ]))
change_bytes(f, 0x882057, bytes([ 0x74, 0x5c ]), bytes([ 0xeb, 0x5c ]))
change_bytes(f, 0x88215f, bytes([ 0x7a, 0x5c ]), bytes([ 0xeb, 0x5c ]))
change_bytes(f, 0x8822f7, bytes([ 0x7a, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x8823b1, bytes([ 0x74, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x882478, bytes([ 0x74, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x88252e, bytes([ 0x7a, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x8825fb, bytes([ 0x74, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x8826c2, bytes([ 0x74, 0x59 ]), bytes([ 0xeb, 0x59 ]))
change_bytes(f, 0x88282f, bytes([ 0x7a, 0x5c ]), bytes([ 0xeb, 0x5c ]))
change_bytes(f, 0x8828e0, bytes([ 0x74, 0x5c ]), bytes([ 0xeb, 0x5c ]))
change_bytes(f, 0x8829e8, bytes([ 0x7a, 0x59 ]), bytes([ 0xeb, 0x59 ]))
# ignore error in calVarigainHfd200
change_bytes(f, 0x8806d9, bytes([ 0x7a, 0x43 ]), bytes([ 0xeb, 0x43 ]))
change_bytes(f, 0x88074d, bytes([ 0x74, 0x43 ]), bytes([ 0xeb, 0x43 ]))
change_bytes(f, 0x8807d9, bytes([ 0x7a, 0x43 ]), bytes([ 0xeb, 0x43 ]))
change_bytes(f, 0x88084d, bytes([ 0x74, 0x43 ]), bytes([ 0xeb, 0x43 ]))
change_bytes(f, 0x8809a6, bytes([ 0x7a, 0x47 ]), bytes([ 0xeb, 0x47 ]))
change_bytes(f, 0x880a1a, bytes([ 0x74, 0x47 ]), bytes([ 0xeb, 0x47 ]))
# ignore error in calA2D
change_bytes(f, 0x87f740, bytes([ 0x7e, 0x18 ]), bytes([ 0x90, 0x90 ]))
change_bytes(f, 0x87f748, bytes([ 0x7e, 0x10 ]), bytes([ 0x90, 0x90 ]))
change_bytes(f, 0x87f750, bytes([ 0x7d, 0x08 ]), bytes([ 0x90, 0x90 ]))
change_bytes(f, 0x87f758, bytes([ 0x7c, 0x3d ]), bytes([ 0xeb, 0x3d ]))
# ignore error in calA2Disee
change_bytes(f, 0x87ebc7, bytes([ 0x74, 0x19 ]), bytes([ 0xeb, 0x19 ]))
change_bytes(f, 0x87e8ee, bytes([ 0x74, 0x0d ]), bytes([ 0xeb, 0x0d ]))
# ignore error in calStepgainHFD200
change_bytes(f, 0x883ac0, bytes([ 0x74, 0x2f ]), bytes([ 0xeb, 0x2f ]))
change_bytes(f, 0x883c1e, bytes([ 0x74, 0x2f ]), bytes([ 0xeb, 0x2f ]))
change_bytes(f, 0x883d7a, bytes([ 0x74, 0x2f ]), bytes([ 0xeb, 0x2f ]))
# ignore error in measureGainOffsetHFD200
change_bytes(f, 0x882d1a, bytes([ 0x74, 0x44 ]), bytes([ 0xeb, 0x44 ]))
change_bytes(f, 0x882f8b, bytes([ 0x74, 0x4d ]), bytes([ 0xeb, 0x4d ]))
change_bytes(f, 0x883360, bytes([ 0x74, 0x35 ]), bytes([ 0xeb, 0x35 ]))
change_bytes(f, 0x8832c7, bytes([ 0x74, 0x35 ]), bytes([ 0xeb, 0x35 ]))
change_bytes(f, 0x8835d9, bytes([ 0x74, 0x35 ]), bytes([ 0xeb, 0x35 ]))
change_bytes(f, 0x88353e, bytes([ 0x74, 0x35 ]), bytes([ 0xeb, 0x35 ]))
# ignore error in calDigPosition
change_bytes(f, 0x9a99ee, bytes([ 0x7a, 0x38 ]), bytes([ 0xeb, 0x38 ]))
change_bytes(f, 0x9a9a84, bytes([ 0x75, 0x38 ]), bytes([ 0xeb, 0x38 ]))

f.close()


Note that this will only work with Scope.exe Version: 5.3.5 Build 22, md5sum acd94445d1d886f2858de53be05c5e0b
 

Offline dxlTopic starter

  • Regular Contributor
  • *
  • Posts: 189
  • Country: de
Re: Tektronix MSO70404 SPC Failure
« Reply #9 on: May 25, 2022, 07:58:39 am »
And another thing is of course enabling additional options or bandwith  ;D haven't tried yet.
 

Offline calibrationfixture

  • Regular Contributor
  • *
  • Posts: 97
  • Country: nl
Re: Tektronix MSO70404 SPC Failure
« Reply #10 on: November 13, 2022, 06:44:35 am »
Hi,

Did you succeed with the Python Program to enable Options on this MSO?

Thank you
 

Offline voltsandjolts

  • Supporter
  • ****
  • Posts: 2299
  • Country: gb
Re: Tektronix MSO70404 SPC Failure
« Reply #11 on: November 13, 2022, 09:51:20 am »
I used a python script to patch all those SPC routines, because it were really a lot of changes...

Wow, impressive. How on earth did you find all the SPC routine locations that needed modified?
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf