Tektronix MSO70404 SPC Failure - Page 1
Forum section: electronics / testgear

author: dxl
author_rank: Regular Contributor
timestamp: May 17, 2022, 06:30:01 pm
content: I got a MSO70404, unfortunately it's not working properly: The SPC fails with the following messages:Code:Scope.exe Version: 5.3.3 Build 3; 00:01:31:765 acqDiagPublicCmds.cpp:diagInitPLL(2386) U2031(LMX2306PLL) was detected successfully (re)locked 1 times after waiting 450.00ms.00:01:31:765 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=30CTest "111" - Processor-->Memory-->DRAMWalk1 startedTest execution time 5.406e-006 secTest "112" - Processor-->Memory-->DRAMCell startedTest execution time 0.0028105 secTest "113" - Processor-->Memory-->DRAMMarch startedTest execution time 0.00072254 secTest "114" - Processor-->Memory-->DRAMCal startedTest execution time 4.131e-006 secTest "211" - Registers-->PCI-->MIA startedTest execution time 0.002902 secTest "221" - Registers-->Acquisition-->ACL startedTest execution time 0.0026814 secTest "222" - Registers-->Acquisition-->PLL startedTest execution time 0.074171 secTest "223" - Registers-->Acquisition-->Preamp startedTest execution time 0.0068422 secTest "224" - Registers-->Acquisition-->TrkHld startedTest execution time 0.0074064 secTest "225" - Registers-->Acquisition-->ADC startedDataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0x1/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0xffe/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0x2/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0xffd/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0x4/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0xffb/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0x8/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0xff7/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0x10/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0xfef/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0x20/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0xfdf/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0x40/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0xfbf/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0x80/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0xf7f/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0x100/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0xeff/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0x200/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0xdff/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0x400/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0xbff/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0x800/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0x7ff/0x0DataLineTstStepFail- U300_A4(HFD204)/SPARE+0x000 exp/act 0xfff/0x0*** TEST FAILED ***Test execution time 0.021683 secdiagMgr:diagLogFailure: Tue Jan 01 00:01:31 2002 P Pu=79 T=30 "DataLineTstStepFail- U300_A4(HFD204)/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?

author: dxl
author_rank: Regular Contributor
timestamp: May 18, 2022, 02:42:51 pm
content: 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.Unfortunately, removing them didn't fix the problem, and i haven't found any places on the PCB where parts are missing.

author: tv84
author_rank: Super Contributor
timestamp: May 18, 2022, 06:48:18 pm
content: Quote from: dxl on May 18, 2022, 02:42:51 pmIs this a Tek??

author: EE-digger
author_rank: Frequent Contributor
timestamp: May 19, 2022, 02:25:17 am
content: 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.

author: dxl
author_rank: Regular Contributor
timestamp: May 19, 2022, 07:48:45 pm
content: Quote from: EE-digger on May 19, 2022, 02:25:17 amThere 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.

author: dxl
author_rank: Regular Contributor
timestamp: May 20, 2022, 05:31:24 pm
content: There's a console port on tcp/1072, with quite a lot of debug commands:Code: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 SHowCFDisplayFilter <sampleRateIndex> <idx> <channel> <vertIndex>CFFilter <Init|Reset|Load|Start>CFShow <Probe|Other|FullTable|Table|SIzeFilter|STructure>CFStorage <Save|Recall> <filename>FactoryIlvSrc :-1FrontEndReprogramIdcDmaRegDump <ON|OFF:token>MSOoverTempTest :0MSOpoweroffRdI2Chw <devAddr> < payload> < byteCount>SPCtest <ENABLE|DISABLE|SHOW|DEBUG|QUIET> <name>a2dGetRefLevela2dOutPhase <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))>acqDumpIVglobalsacqEnableMathMeasWhileRolling <enabled>acqEngShowWhichCTLProgramacqProcCmd <Command sequence in hex>acqProcFlashDump <Output file name>acqProcFlashLoad <Input file (Intel Hex format) name>acqProcFlashVerify <Input file name>acqProcQuery <Command sequence in hex>akIfBrdGetTchScrnakIfBrdLoadProgram <FileName>akIfBrdReadSeq <byteCnt>akIfBrdReadVoltsakIfBrdSetTchScrn <newState>akIfBrdSetUART <newState>akIfBrdStatusakIfBrdWriteSeq <seqNr>beamFind [A2D pipe]:-1bfAcqFlashTestbfMiaFlashTestbump <part> < quad> < phase>bumpOut <part> < quad> < phase>bumpPlock <count> <repeat>bweeFakeAllbweeOpenTable <ch> <index> :0bweeShowTable <ch> <index> :0bweeStatus <FREE|CALED|CURRENT:token>bweeTable <CLOSE|ERASE|SHOW|FAKE|BIGFAKE>calAcqGet <BALANCE|GAIN|PHASE|TRKHLD|DESKEW> <connectMode> :0calAdcDmx [Demux Index]:0calDebug <ON|OFF>calDebug nvZerocalDigProbecalDoFactory <INIT|NEXT|PREVIOUS|ABORT|SAVE|LOAD|SKIP:token> :0calIlvDebug <ON|OFF>calIlvModeDebug <Mode Mask>calIlvTracePasses <ON|OFF>calOffsetRef <long>calSignal <signal> [ chan]:0calSqmDumpDataToFile <off|on>calSqmGetTimerRegVal <sqmChId> <clkTmr|dataTmr> <dlyTime>calSqmReadTmr <sqmChId> <clkTmr|dataTmr>calSqmResetDValscalSqmSetAnalogDly <chId> <holdTime> <setuptTime>calSqmSetCalChannels :-1calSqmSetHoldDelay <sqmChId> <l> <d> <e> <digClTicks>calSqmShowDValscalSqmShowTmrSettings :-1calSqmWriteTmr <sqmChId> <clkTmr|dataTmr> <lVal> <dVal> <eVal>calSwitchRelay <chan> <1X|10X|OPEN|GND:token>calTestGainErrorcalilvcaldac <IlvCalDac>calilvcalfreq :0 [ f1]:0 [ f2]:0 [ f3]:0compareHexfiles <File1 name> <File2 name> <fileLength>cvrAS <LSB|OFFSET|SHOW:token> :0.000000cvrMv <millivolts>cvrMv OFFcvrPath <channel> <path> <millivolts>cvrVolts <volts>cvrVolts OFFdbPerfTestGetdbPerfTestSetdebugSteroids :1demuxSpeeddiagAcqFlashMem <Flash memory offset> <NumBytes to test> <Data pattern used for testing>diagAcqMemdiagAfeProcessordiagCtrlDma <writeMode> <readMode>diagCtrlPattern :-1 :-1 :-1diagDbgMsgOffdiagDbgMsgOndiagDgtlIdcHiSpeeddiagDgtlIdcLoSpeeddiagDgtlIdcLoSpeedSingleDmx <demux index> <direction - 1 left, 2 right>diagDigitalDataBusdiagDmaAbort [MiaDmaPath(1-6)]:1 [Acq Type (0 for analog, 1 for digital)]:0diagDmaStartVa <dmxIdx> <numBytes> [demux memory offset]:0 [DMA path(0-PA, 1-IdcAcq, 2-IdcDisp)]:0diagDmxDmxIdcAcqXfr <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>diagFrontPaneldiagIdcAcqDma [dmx mem offset]:0 [num bytes]:1024 :1 [Show data(1 - yes, 0 - no)]:0 [Acq Type (0 for analog, 1 for digital)]:0diagIdcDispDma [dmx mem offset]:0 [num bytes]:1024 :1 [Show data(1 - yes, 0 - no)]:0 [Acq Type (0 for analog, 1 for digital)]:0diagIdcHiSpeeddiagIdcLoSpeeddiagIdcLoSpeedSingleDmx <demux index> <direction - 1 left, 2 right>diagMemSpeed <dmxIdx> :1 :0 :5diagMiaFlashMem <Flash memory offset> <NumBytes to test> <Data pattern used for testing>diagPaDma [dmx mem offset]:0 [num bytes]:1024 :1 [Show data(1 - yes, 0 - no)]:0 [Acq Type (0 for analog, 1 for digital)]:0diagSingleIdcAcqDma <demux index> [dmx mem offset]:0 [num bytes]:1024 [Show data(1 - yes, 0 - no)]:0 [Acq Type (0 for analog, 1 for digital)]:0diagSingleIdcDispDma <demux index> [dmx mem offset]:0 [num bytes]:1024 [Show data(1 - yes, 0 - no)]:0 [Acq Type (0 for analog, 1 for digital)]:0diagSinglePaDma <demux index> [dmx mem offset]:0 [num bytes]:1024 [Show data(1 - yes, 0 - no)]:0 [Acq Type (0 for analog, 1 for digital)]:0diagT5AcqRamTestdiagT5Delete <file path>diagT5DevTestdiagT5DfeTestdiagT5Download <file path>diagT5HkRamTest <STOP|NOSTOP> [output pipe]:stdout [base addr]:0 [test span]:2097151 :1diagT5Load <file path>diagT5Run <addr>diagT5Upload <file path>diagTekLinkRefPathdiagTekLinkTopSignaldiagTekLinkTrigPathdigDelayCheck <chan>dipfifobmp <demux> [ bumps]:1 [ side]:3disableVertInterruptsdmxAbortProgram <demux index> <dsp instance>dmxAcquireWfmdmxAdtcInfodmxAdtcResetDmx <DmxID>dmxAdtcRun <Pattern> <XferMethodString> <DmxId> <ResetTypeString>dmxBitInvBitEnForCalGenHisto <BitInv1> <BitInv0> <BitEn1> <BitEn0>dmxCalCcEnable <dmx> <enableFlag>dmxCalCcGetFactModedmxCalCcInitdmxCalCcPrintdmxCalCcReadNv :32dmxCalCcSetFactMode <enableFlag>dmxCalCcWriteNv :32dmxCalDbgDumpRegs <dmxIdx>dmxCalDramHelpdmxCalDramRun <dmx> <stepId> <analogOrDigital>dmxCalGenHisto <dmx> <pattern> <selCedgeCsel1sel0mode1mode0edgeCh> <cnt> <analogOrDigital>dmxCalPllDll <dmx> <freq> <interactive>dmxCalTest <dmx> <freq> <analogOrDigital>dmxClkBlkRegCheck :10dmxClkBlkRegCheckDig :10dmxCrossTalkTest <dmxFirst> <dmxLast> <cnt> <analogOrDigital>dmxCtlRegs <demux index>dmxDbgDmaStatus [demux index]:32 [Acq Type (0 for analog, 1 for digital)]:0dmxDbgDumpAllDmxRegsToFile <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]:0dmxDbgDumpRegs <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]:0dmxDbgDumpRegsInstNamesdmxDbgDumpRegsToFile <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]:0dmxDbgFifoStatus <demux index>dmxDbgIdcStatus [demux index]:32 [Acq Type (0 for analog, 1 for digital)]:0dmxDbgStatus <demux index>dmxDbgXfrStatus [demux index]:32 [Acq Type (0 for analog, 1 for digital)]:0dmxDeciRunDiagnostics <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> :1 :33 :1 :65536 :0dmxDramRdClkEyeTest <dmx> :99 :2 :5dmxDramReadBinSelX <dmx>dmxDramReadModeReg <dmxFirst> <dmxLast> <modeRegNum>dmxDramSendCmd <dmx> <configCmd>dmxDramSetBinSelX <dmx> <byte> <riseBinSelX> <fallBinSelX>dmxDramSetDriveForCal <dmx> :10 :10 :4 :0dmxDramSetModeReg <dmxFirst> <dmxLast> <modeRegNum> <modeRegVal>dmxDramTest <dmx> <cnt> <fix> <analogOrDigital>dmxDramTestDqsOffsetOverride :350dmxDramUpTest <dmx> :1 :-218959118 :64 :0dmxDramVendorIdOff <dmx>dmxDramVendorIdOn <dmx>dmxDramVendorIdRead <dmx>dmxDramWrEyeTest <dmx> :1 :5 :0 :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)]:0dmxFirMathCalcAdd <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]:0dmxIdcAcqXfr <source demux index> <destination demux index> <numBytes> <absolute source address> <absolute destination address> [two byte data flag]:0dmxIdcDmaRead <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)]:0dmxIdcDmaWrite <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)]:0dmxMcaAccCntVals <dmx>dmxMcaCntRdAccs <dmx> :1 :1dmxMcaCntWrAccs <dmx> :1 :0dmxMcaDiagEventRead <dmx>dmxMcaDiagEventReset <dmx>dmxMcaDiagEventTimerInit <dmx>dmxMcaDiagSetEventCnt <dmx> :1048575dmxMcaDiagSetEventCondition <dmx> :1 :20 :25 :1 :0dmxMcaDiagSetHistoThresholds <dmx> <Threshold0> <Threshold1> <Threshold2> <Threshold3> <Threshold4>dmxMcaDigAccCntVals <dmx>dmxMcaDigCntRdAccs <dmx> :1 :1dmxMcaDigCntWrAccs <dmx> :1 :0dmxMcaDigDiagEventRead <dmx>dmxMcaDigDiagEventReset <dmx>dmxMcaDigDiagEventTimerInit <dmx>dmxMcaDigDiagSetEventCnt <dmx> :1048575dmxMcaDigDiagSetEventCondition <dmx> :1 :20 :25 :1 :0dmxMcaDigDiagSetHistoThresholds <dmx> <Threshold0> <Threshold1> <Threshold2> <Threshold3> <Threshold4>dmxMcaDigDramFifoConfig <dmx> :1 :5 :1 :16 :131074dmxMcaDramFifoConfig <dmx> :1 :5 :1 :16 :131074dmxMemoryLayout <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)]:0dmxPaDmaWrite <demux index> <num bytes to read> <destination acq mem address> <32 bit value to write> [Acq Type (0 for analog, 1 for digital)]:0dmxPauseProgram <demux index> <dsp instance>dmxProfile <log dmxIdx> <seconds> [dsp or ctl]:1dmxRecal <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>dmxRunStatusdmxSelectSignalSource <source>dmxSetAcqRecordLength <length>dmxSetDecimation <decimation>dmxStopDramTestdmxTestDspLoad <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]:0dmxUpClearMem <demux index> <Number of bytes to clear> <Acq mem address at which to start clearing> [Acq Type (0 for analog, 1 for digital)]:0dmxUpLoadFromFile <demux index> <filename> <acq mem address> [Acq Type (0 for analog, 1 for digital)]:0dmxUpRead <demux index> <num bytes to read> <source acq mem address> [Acq Type (0 for analog, 1 for digital)]:0dmxUpSetMem <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)]:0dmxUpStoreToFile <demux index> <filename> <number of bytes> <acq mem address> [Acq Type (0 for analog, 1 for digital)]:0dmxUpTestWriteByteStream <demux index> <destination acq mem address> [Acq Type (0 for analog, 1 for digital)]:0dmxUpTestWriteWord16Stream <demux index> <destination acq mem address> [Acq Type (0 for analog, 1 for digital)]:0dmxUpTestWriteWord32Stream <demux index> <destination acq mem address> [Acq Type (0 for analog, 1 for digital)]:0dmxUpTestWriteWord64Stream <demux index> <destination acq mem address> [Acq Type (0 for analog, 1 for digital)]:0dmxUpWrite <demux index> <32 bit value to write> <destination acq mem address> [Acq Type (0 for analog, 1 for digital)]:0dmxUpXfrTest <demux ID> <num bytes> <acq mem addr> [Acq Type (0 for analog, 1 for digital)]:0dmxbump <demux> [ bumps]:1dmxdmxDramCalStatusdrvDbgEnable <enable>dumpA2DPhase :-1 [ quad]:0dumpAKTempsdumpAKpath <aChannel>dumpDigitalProbe <Intel hex filename string>dumpFlash <flash> < addr> < numBytes>dumpFlashSector <flash> <sector> <file>dumpProcOsc :-1 :0dumpTHPhase :-1 [ quad]:0ebitsDebug <ebitsCount>enableClearStats <on/off>enableVertInterruptseraseFlash <flash> <addr>fanDumpfanLoadParamsFromFilefanMonitorfanMonitorOfffanSetPwm <integer value>fastAcqTPC <enable flag (0=disable, 1=enable)>fpPrintFpSwVersionfpReprogramFpfpSendDbg <enable-disable>fpStandbyftlSBinftlSetHeatSeconds <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 :100gwLoadClut <Clut path>gwSetVideoPathhelp <command name>hfd144speedhistoryhostMemStoreToFile <memory address> <size> <filename>hsCompensator <mode>hwExtReferenceStatehwLoadFtlImage <FTL Image Path>hwPrintConfigiCaptureChannel <digChannel> <iCaptureChannel>initA2Dstep :0.020000 [ start]:0.000000 [ part]:-1 [ quad]:0installProbeApp <Index of probe socket> <Name of intel hex image file>loadFlashSector <flash> <sector> <file>lsstCallsstFind <Channel>lsstMeasure <Channel>miaDbgIdcStatus [Acq Type (0 for analog, 1 for digital)]:0miaDbgStatus [Acq Type (0 for analog, 1 for digital)]:0mitlAbortmitlBitsPerChannel <2 for 2 Bit Data>mitlContinuemitlDMARead <Num words to read> [Source Tek5 mem address]:8192 [Show data (1 for yes, 0 for no)]:0mitlDigitalInputStatemitlEndDigitalTestModemitlFactorymitlFillMem <HK mem address> <num bytes to write> <8 bit data value to write>mitlGetDigitalTestResultsmitlMagniVu <1 for MagniVu or 0 for LRL>mitlReadMem <HK mem address> <num bytes to read>mitlReadWord <HK mem address>mitlRunStatusmitlSetDigitalTestModemitlSetPC <PC address>mitlSingleStepmitlStartAcq <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>msoCQThresholdmsoClockWatch <OFF|ON|SHOW:token>msoSpeed <Fast|Slow>msoTestmsoTest tracemsodipfifobmp <demux> [ bumps]:1 [ side]:3msodmxbump <demux> [ bumps]:1 [ side]:3nbrConsoleCmdsnextBeam [A2D pipe]:9999overloadClear :1patchDramNv <dmxId> <name> <value>piHistory <num>piLoadpiUnload <num>piVirtualHistory <num>plockOffset <mil> <add>poundDemux <demuxIdx> <startAddr> <Length> <Repeats>poweroffprintAllDiagsprintDigitalProbeprintTriggerStatusprobesFpStress <ON|OFF> [Seconds between resets]:15probesLedStress <ON|OFF>probesPowerOffprobesPowerOnprobesProgramProbeData <chanNum> <probe eerom data file name>probesPwrStress <ON|OFF> [Seconds between resets]:15probesResetprobesSendDbg <enable-disable>quitraxDbgContinueraxDbgControl <register name> <long> <long>raxDbgIncrement <register name> <value>raxDbgPrintRegsraxDbgRead <register name>raxDbgRegressionTestraxDbgSettings <register name>raxDbgWrite <register name> <value>raxInitializeDevicesraxRampDac <device/register name> <value>rdADCTBVolts :0 :0 :3rdADCTemperature [ADC Index]:0 [ADC RefAdj]:0rdAdt7476 :0rdI2CX <FanControl|RefAdjust|EEPROM|FrontPanelProc|Demux|Preamp|PS|SDIA|IfBoardProc> < command>rdPreampTBVolts :0 [PA Index]:0rdPreampTemperature [Preamp Index]:0 [Preamp RefAdj]:0rdTHTBVolts :0 :0 :3rdTHTemperature [TrkHld Index]:0 [TrkHld RefAdj]:0rdTemperatures :0readPciRegisters <ANALOG|DIGITAL> <Offset> <Bytes>refMonDebug <ON:OFF:token>reportError <Error number>returnConnectionModertlAbortAcqDebug <ON|OFF>rtlAcqDeciDoneEventrtlAcqEngineDoneEventrtlDsyDoneEventrtlDsyRastDoneEventrtlEnableAbortAcq <ON|OFF>rtlFastAcqRasterDoneEventrunAcqProcSpiResetrunDmxTests [Acq Type (0 for analog, 1 for digital)]:0runDmxXfrTests [Acq Type (0 for analog, 1 for digital)]:0 [Demux ID]:0runIdcAcqDmaStress <demux index> <number of bytes> <read from demux (1-yes,0-no)> <number of loops> [Acq Type (0 for analog, 1 for digital)]:0runIdcDispDmaStress <demux index> <number of bytes> <read from demux[1-yes,0-no]> <number of loops> [Acq Type (0 for analog, 1 for digital)]:0runPaDmaStress <demux index> <number of bytes> <read from demux[1-yes,0-no]> <number of loops> [Acq Type (0 for analog, 1 for digital)]:0runRandomDmaStress <number of loops> [number of bytes]:-1 [demux index]:32 [Acq Type (0 for analog, 1 for digital)]:0runRandomPaDmaStress <numLoops> [Acq Type (0 for analog, 1 for digital)]:0setDebugPipesMode <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]:100setHobeCount <count>setInit50DebugValue <OFF|ON>setIviewMode <channel> <OFF|ON:token>setPLock <event> <patLen> <mult>setPhdFlagValue <OFF|ON>setRefMonWait :3000setSerDesDebug <serDesDebugLevel>setUlong <symbol name> [symbol value (integer)]:0setVGvalue <channel> <gain>showEbitsError <ebitsCount> [ pipeMask]:0showEtHistogramshowFtlABTimeshowFtlMem <start> < length>showFtlMemNoFill <start> < length>showGainTargetshowIviewModesignalSafeCheckstartTekLinkstats <ON|OFF>statsDumpstatsWeight <long>statusFlash <flash>stepA2D :1stepGen <direction>stopTekLinksymPrint <symbole name>symSet <symbol name> [symbol value (integer)]:0tcpipConsoleDebug [debug level]:0tekLinkSendPulse <PulseCode>tekLinkStartTrigCal <CalOption> [# measurements]:10 [Enable debug print]:0tekLinkTriggerSetup <Trigger Type>testDmaTimeout <Enable(1) or Disable(0)> <DMA Timeout Timer counter> [Acq Type (0 for analog, 1 for digital)]:0testExpectedPasstestFlash <flash> < addr>testList <TestName>testMemLock <Size> <Smaller is OK> [Acq Type (0 for analog, 1 for digital)]:0testPaDmaReadAllDemuxes <num bytes to read> <destination dmx mem address>testPaDmaWriteAllDemuxes <num bytes to read> <destination dmx mem address> <32-bit data to write>testRun <TestName>testTestFrameworktestVcoCalthBump <part> < quad> < phase>thPhase <part> < quad> < phase>tiLookupTabletpcSetDebugLevel <debugLevel>trigCalGaintrigCalPostrigCalSetupHoldtrigCalThreadedtrigCalTimertrigDumpCaltrigFindTriggerLevelTimeout <microseconds>trigSerialDumptrigSerialI2cCommittrigSerialI2cCommon <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>trigSerialI2cDefaulttrigSerialI2cPrintConfigtrigSerialI2cTriggerOn <trigOn> :0 :0 :2 :0 :0trigSerialInittrigSerialRs232CommittrigSerialRs232Common <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> :8trigSerialRs232DefaulttrigSerialRs232PrintConfigtrigSerialRs232TriggerOnBreaktrigSerialRs232TriggerOnData <LT|GT|EQ|NE|LE|GE|IN|OUT> :8 :32trigSerialRs232TriggerOnFramingErrortrigSerialRs232TriggerOnParityErrortrigSerialRs232TriggerOnStarttrigSerialRs232TriggerOnStoptrigSerialSetDiag <selDiagnostic>trigSerialSetVerbosity <selDiagnostic>trigSerialSpiBusSetup <sclkPolarity> <endian> :1000trigSerialSpiBusSources <sclkSource> <ssSource> <misoSource> <mosiSource>trigSerialSpiCommittrigSerialSpiDefaulttrigSerialSpiPrintConfigtrigSerialSpiTriggerOn <trigOn> :0 :0 :0 :0trigSerialTesttrip <chan> :9999updateDigitalProbe <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>varCloseFilervarDumpvarFilerShowvarGpibCommand <TOTAL|COUNT|FIRST|NEXT|COLDStart>varMaxPrintFiler <name> :10varOpenFiler <name>varRead <name>varRevertFiler <name>varSaveAllvarShow <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>vertRealSignalPathwfmDataDump <WfmPtr>wfmDataFrames <WfmPtr> <Number of fastframe frames>wfmDataSlot <slotId>wfmSlotDump :1winMemorywritePciRegister <ANALOG|DIGITAL> <Offset> <Value>wrtAdt7476 :0 :0wrtI2C <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>> diagDbgMsgOnDiag debug messages enabled.

author: wasedadoc
author_rank: Super Contributor
timestamp: May 20, 2022, 05:50:53 pm
content: Quote from: dxl on May 18, 2022, 02:42:51 pmThere is a missing resistor, R302, near 7 o'clock of the top red circle.

author: dxl
author_rank: Regular Contributor
timestamp: May 20, 2022, 06:00:30 pm
content: Quote from: wasedadoc on May 20, 2022, 05:50:53 pmYes, 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...

author: dxl
author_rank: Regular Contributor
timestamp: May 25, 2022, 07:57:50 am
content: 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 scopeOf 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:import shutildef change_bytes(f, pos, old, new):if len(old) != len(new):print("old and new differ in size")returnf.seek(pos - 0x400c00)tmp = f.read(len(old))if tmp != old:print("doesnt match")print("addr ", hex(pos))print("old", old)print("tmp", tmp)returnf.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 datachange_bytes(f, 0x8aed6a, bytes([ 0x75, 0x1d ]), bytes([ 0x90, 0x90 ]))# ignore retry error in a2DPhaseCalchange_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 calibratePhaseCalchange_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 ignorechange_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 calibratePhaseCalchange_bytes(f, 0x8d910d, bytes([ 0x83, 0xc8, 0xff ]), bytes([ 0x33, 0xc0, 0x90 ]))# force interleavecalchange_bytes(f, 0x86a450, bytes([ 0x0f, 0x8f, 0x51, 0xf7, 0xff, 0xff ]), bytes([ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 ]))# force ret = 0change_bytes(f, 0x8d6b79, bytes([ 0x83, 0xc8, 0xff ]), bytes([ 0x33, 0xc0, 0x90 ]))# force ret = 0change_bytes(f, 0x8d71bf, bytes([ 0x83, 0xc8, 0xff ]), bytes([ 0x33, 0xc0, 0x90 ]))# ignore error in deskewChannelschange_bytes(f, 0x8d9f1e, bytes([ 0xff, 0xff, 0xff, 0xff ]), bytes([ 0x00, 0x00, 0x00, 0x00 ]))# ignore error in Hfd200Balancechange_bytes(f, 0x9ac15b, bytes([ 0x75, 0x2f ]), bytes([ 0xeb, 0x2f ])) # 10mVchange_bytes(f, 0x9ac241, bytes([ 0x75, 0x2f ]), bytes([ 0xeb, 0x2f ])) # 20mVchange_bytes(f, 0x9ac328, bytes([ 0x75, 0x2c ]), bytes([ 0xeb, 0x2c ])) # 50mV# force ret = 0 in calLinearitychange_bytes(f, 0x88c489, bytes([ 0x83, 0xc8, 0xff ]), bytes([ 0x33, 0xc0, 0x90 ]))# ignore error in calNullInputchange_bytes(f, 0x9cf803, bytes([ 0x7a, 0x40 ]), bytes([ 0xeb, 0x40 ]))change_bytes(f, 0x9cf879, bytes([ 0x75, 0x3d ]), bytes([ 0xeb, 0x3d ]))# ignore error in calVarigainHfd200change_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 calVarigainHfd200change_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 calA2Dchange_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 calA2Diseechange_bytes(f, 0x87ebc7, bytes([ 0x74, 0x19 ]), bytes([ 0xeb, 0x19 ]))change_bytes(f, 0x87e8ee, bytes([ 0x74, 0x0d ]), bytes([ 0xeb, 0x0d ]))# ignore error in calStepgainHFD200change_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 measureGainOffsetHFD200change_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 calDigPositionchange_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

author: dxl
author_rank: Regular Contributor
timestamp: May 25, 2022, 07:58:39 am
content: And another thing is of course enabling additional options or bandwithhaven't tried yet.

author: calibrationfixture
author_rank: Regular Contributor
timestamp: November 13, 2022, 06:44:35 am
content: Hi,Did you succeed with the Python Program to enable Options on this MSO?Thank you

author: voltsandjolts
author_rank: Unknown
timestamp: November 13, 2022, 09:51:20 am
content: Quote from: dxl on May 25, 2022, 07:57:50 amWow, impressive. How on earth did you find all the SPC routine locations that needed modified?