| Electronics > Repair |
| Tektronix MSO4000B Front Panel Repair |
| (1/3) > >> |
| crhastre:
Hi all, I have an MSO4104B-L oscilloscope that's having an issue with the front panel and I'm looking for some ideas. The symptoms are that the scope boots up immediately when plugged in instead of waiting for the power button to be pushed, and once it boots it doesn't respond to any front panel commands. I started by extracting the boot log from the scope and it's showing an I/O error communicating to the front panel via the I2C bus. --- Code: ---U-Boot 2009.08 (Mar 03 2011 - 17:01:14) Tektronix, Inc. V1.01 CPU: AMCC PowerPC 460EX Rev. B at 600 MHz (PLB=200, OPB=100, EBC=50 MHz) No Security/Kasumi support Bootstrap Option F - Boot ROM Location I2C (Addr 0x54) Internal PCI arbiter disabled 32 kB I-Cache 32 kB D-Cache Board: Tektronix Route66B AMCC 460EX Main Board PVR 130218a4 VCO: 1200 MHz CPU: 600 MHz PLB: 200 MHz OPB: 100 MHz EBC: 50 MHz Programming SDIA...done I2C: ready DRAM: Auto calibration -\ \|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/ 512 MB FLASH: 128 MB PCI: Bus Dev VenId DevId Class Int 00 0d 1172 0004 ff00 18 In: serial Out: serial Err: serial Board version: 1 (Proto) 4 channel MSO I/O board version: 3 SDIA version: 0133 Calibrating VCO...done Net: ppc_4xx_eth0 Enter password - autobooting in 3 seconds ## Booting kernel from FIT Image at f8040000 ... Verifying Hash Integrity ... crc32+ sha1+ OK ## Loading init Ramdisk from FIT Image at f8040000 ... Verifying Hash Integrity ... crc32+ sha1+ OK ## Flattened Device Tree from FIT Image at f8040000 Verifying Hash Integrity ... crc32+ sha1+ OK Booting using the fdt blob at 0xf824a230 Uncompressing Kernel Image ... OK Loading Ramdisk to 1f130000, end 1f1ff5e6 ... OK Loading Device Tree to 00ffa000, end 00fff0d0 ... OK Checking for firmware update... No USB mass storage devices found to update from. Linux 2.6.31.4 V 1.11 Tektronix BK Mon Feb 13 10:06:16 PST 2012 Scope application starting (normal mode) ---------------------- startScopeApp() running Init code ---------------------- versionBuildFWVersionString(): TimestampString: 15-Nov-12 14:28 VersionFIRMWAREVERSIONversion: v2.90 Major ver num: 2 Minor ver num: 90 Initializing Sdia[0] Main Board HW Rev: 0x09 Initializing Tek0005[0] Initializing Ibm460[0] feReprogramFeProc: Platform Route66b fw 1028 filefw 1028 Front Panel Firmware update not needed Current firmware 1028 >= 1028 Initializing HFD204ADC[1] Initializing HFD204ADC[0] Main Board HW ID: 0x02 AFE Board SW ID: 0x02 Main Board SW ID: 0x05 Initializing Ad5668Dac[1] Initializing Ad5668Dac[0] Initializing Adt7476[0] HFD144[0] ID_REG = 0x00001440 HFD144[1] ID_REG = 0x00001440 HFD144[2] ID_REG = 0x00001440 HFD144[3] ID_REG = 0x00001440 Initializing Hfd144[0] Initializing Hfd144[1] Initializing Hfd144[2] Initializing Hfd144[3] Initializing Afe[0] Initializing MDO[0] Initializing Adf4350[0] Initializing Tek026[4] Initializing Tek026[3] Initializing Tek026[2] Initializing Tek026[1] Initializing Tek026[0] Initializing Dac5571[0] Initializing Tmp421[4] Initializing Tmp421[3] Initializing Tmp421[2] Initializing Tmp421[1] Initializing Tmp421[0] Init ADT7476. ialInit(): AFE id 0x2, rev 0x4, bI 1 4104B-L with bI 10 Factory Checksum: Stored: 39002, Calculated: 39002 - OK Spc CheckSum: stored: 31340 calculated: 31340 - OK Demux initialization Dram calibration Dram calibration complete Dram Calibration results: ------------------------- DramCal has PASSED on all Demuxs Demux initialization complete Starting POST diags Finished POST diags 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error ERROR in fpSharedPrivate.cpp at fpReadFpHwAndSwIdAndVersion: IIC requested 3 bytes - got -1 bytes. firmware version read: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error ERROR in fpSharedPrivate.cpp at fpReadFpHwAndSwIdAndVersion: IIC requested 3 bytes - got -1 bytes. platform version read: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error ERROR in fpSharedPrivate.cpp at fpReadFpHwAndSwIdAndVersion: IIC requested 2 bytes - got -1 bytes. common code version read: Remote I/O error Installing 44 in front panel. fpReprogramFrontPanelCpuPrivate(/usr/local/perm/route66_fp.s19) fpSRecCheckSum returning 0 fpSRecRaw: FP_UPDATE_CODE_START_CMD write failed - -1 bytes of 3 written Reprogram start: Remote I/O error Fp software update function reports failure. 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error 1st purge loop: Remote I/O error ERROR in fpSharedPrivate.cpp at fpReadFpHwAndSwIdAndVersion: IIC requested 3 bytes - got -1 bytes. firmware version read: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error 2nd purge loop: Remote I/O error ERROR in fpSharedPrivate.cpp at fpReadFpHwAndSwIdAndVersion: IIC requested 3 bytes - got -1 bytes. platform version read: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error 3rd purge loop: Remote I/O error ERROR in fpSharedPrivate.cpp at fpReadFpHwAndSwIdAndVersion: IIC requested 2 bytes - got -1 bytes. common code version read: Remote I/O error After Fp software update version is -1, expected 44. fpSendCmd: queued I2C write error on second attemp -1 fpSendCmd queue: Remote I/O error bytes 3 - 0x6 0x0 0x1 bytes in queue 0 ---------------------- startScopeApp() running Start code --------------------- ---------------------- startScopeApp() running Run code ----------------------- fpSendCmd: queued I2C write error on second attemp -1 fpSendCmd queue: Remote I/O error bytes 3 - 0x6 0x0 0x2 bytes in queue 1 fpSendCmd: queued I2C write error on second attemp -1 fpSendCmd queue: Remote I/O error bytes 3 - 0x6 0x1 0x2 bytes in queue 0 ----------------------------------------------------------------- startScopeApp() complete; duration = 24.305649 seconds ================================================================= PID to Task info written to /tmp/threads.txt Power Up Completed at 00:15:36 Enter 'ctrl-\' to quit scopeApp 00:15:36 fpSendCmd: queued I2C write error on second attemp -1 fpSendCmd queue: Remote I/O error 00:15:36 bytes 2 - 0x2f 0x1 bytes in queue 0 00:15:36 SocketServerService: Socket server daemon started on port 4000. Protocol: Raw 00:15:36 fpSendCmd: queued I2C write error on second attemp -1 fpSendCmd queue: Remote I/O error 00:15:36 bytes 2 - 0x2e 0x4b bytes in queue 0 00:15:37 fpSendCmd: queued I2C write error on second attemp -1 fpSendCmd queue: Remote I/O error 00:15:37 bytes 3 - 0x6 0x0 0x2 bytes in queue 0 Failed to kill daemon: No such file or directory 00:15:37.381.889 usbtmc488_enable_interface: USBTMC enabled; response buffer size = 261648 Failed to kill daemon: No such file or directory 00:15:37 SDIA version 0x133, non-Trinity, skip calSdiaRunClkSync() 00:15:41 Run Sync Cal - PASSED 00:15:41 +++++++++++++++++++++++++++++++++++++++++++ + adc Interleave cal - Powerup +++++++++++++++++++++++++++++++++++++++++++ 00:15:41 cfg 4, chMask 0x9 00:15:41 srcChId 0, adcMask 0x30, numPipes 2: 00:15:41 Loop 0, MeasuredFreq = 9.522944e+06 00:15:42 Loop 1, MeasuredFreq = 9.523233e+06 00:15:42 Loop 0, MeasuredFreq = 1.333326e+08 00:15:42 ++++ srcCh 1 adcMask 0x30 Interleave Results ++++ 00:15:42 + Final Phase Err: 00:15:42 + Adc_4 phaseErr: actual -4.79e+00ps, exp < +/- 2.00e+01ps 00:15:42 + totalPhaseAdjust[adc_4] = -1.085336e+03 ps 00:15:42 + Adc_5 phaseErr: actual 4.91e+00ps, exp < +/- 2.00e+01ps 00:15:42 + totalPhaseAdjust[adc_5] = 1.113485e+03 ps 00:15:42 +++++++++++++++++++++++++++++++++++++++++++++ 00:15:42 cfg 5, chMask 0x9 00:15:42 srcChId 3, adcMask 0xC0, numPipes 2: 00:15:43 Loop 0, MeasuredFreq = 9.523178e+06 00:15:43 Loop 1, MeasuredFreq = 9.524544e+06 00:15:43 Loop 0, MeasuredFreq = 1.333321e+08 00:15:43 ++++ srcCh 4 adcMask 0xC0 Interleave Results ++++ 00:15:43 + Final Phase Err: 00:15:43 + Adc_6 phaseErr: actual 7.26e-01ps, exp < +/- 2.00e+01ps 00:15:43 + totalPhaseAdjust[adc_6] = 4.981936e+02 ps 00:15:43 + Adc_7 phaseErr: actual -7.39e-01ps, exp < +/- 2.00e+01ps 00:15:43 + totalPhaseAdjust[adc_7] = -5.077606e+02 ps 00:15:43 +++++++++++++++++++++++++++++++++++++++++++++ 00:15:43 Power On Interleave Cal - PASSED 00:15:43 ******************** 00:15:43 * Power up Deskew * 00:15:43 ******************** 00:15:43 calPowerUpDeskew: sampleInterval = 4.000000e-10, sampleRate = 2.500000e+09 00:15:43 midCrossTweak = 0.00 00:15:47 tgDacLvl = 2310.2 00:15:49 adc4 skew -2.976953e-08 currentPhase -1.313717e+01 phaseFrac 8.628321e-01 00:15:49 adc5 skew -2.997363e-08 currentPhase -8.150372e+00 phaseFrac 8.496277e-01 00:15:49 adc6 skew -3.054785e-08 currentPhase -1.112415e+01 phaseFrac 8.758533e-01 00:15:49 adc7 skew -3.075996e-08 currentPhase -1.416930e+01 phaseFrac 8.306987e-01 00:15:52 avgMidCross[ch_0] = 5.000821e+03, skew = 3.285156e-10s, adcMask = 0x10 00:15:52 ChIdx_0 skew 3.285156e-10 refSkew -7.148437e-11 phaseBump 1.000000 00:15:52 avgMidCross[ch_1] = 5.000842e+03, skew = 3.369141e-10s, adcMask = 0x20 00:15:52 ChIdx_1 skew 3.369141e-10 refSkew -7.148437e-11 phaseBump 1.000000 00:15:52 avgMidCross[ch_2] = 5.000841e+03, skew = 3.365234e-10s, adcMask = 0x40 00:15:52 ChIdx_2 skew 3.365234e-10 refSkew -7.148437e-11 phaseBump 1.000000 00:15:52 avgMidCross[ch_3] = 5.000825e+03, skew = 3.300781e-10s, adcMask = 0x80 00:15:52 ChIdx_3 skew 3.300781e-10 refSkew -7.148437e-11 phaseBump 1.000000 00:15:52 Power Up Deskew Cal - PASSED 00:15:52 Power Up DeskewRf Cal - PASSED 00:15:52 calSetPowerupAdcPhaseValues chMask = 0xF 00:15:52 Mss Trigger Cal 00:15:52 Mss Trigger Cal - PASSED 00:15:52 Last Cal'd facVersion: 5, current facVersion 5 00:15:52 Last Cal'd SpcVersion: 3, current SpcVersion 3 00:15:53 fpSendCmd: queued I2C write error on second attemp -1 fpSendCmd queue: Remote I/O error 00:15:53 bytes 2 - 0x2e 0x4b bytes in queue 3 00:15:53 fpSendCmd: queued I2C write error on second attemp -1 fpSendCmd queue: Remote I/O error 00:15:53 bytes 2 - 0x2b 0x2 bytes in queue 2 00:15:53 fpSendCmd: queued I2C write error on second attemp -1 fpSendCmd queue: Remote I/O error 00:15:53 bytes 2 - 0x2a 0x2 bytes in queue 1 00:15:54 fpSendCmd: queued I2C write error on second attemp -1 fpSendCmd queue: Remote I/O error 00:15:54 bytes 2 - 0x2e 0x4b bytes in queue 0 00:15:54 fpSendCmd: queued I2C write error on second attemp -1 fpSendCmd queue: Remote I/O error 00:15:54 bytes 3 - 0x6 0x0 0x1 bytes in queue 1 00:15:54 fpSendCmd: queued I2C write error on second attemp -1 fpSendCmd queue: Remote I/O error 00:15:54 bytes 3 - 0x6 0x0 0x2 bytes in queue 0 --- End code --- If I unplug the J301 connector that connects the front panel assembly to the mainboard the scope boots more quickly but still shows the I2C errors in the boot log. In this state (with the front panel unplugged) the scope responds to SCPI commands via USB and appears to work correctly otherwise. Probing around U306 on the circuit board which is a PCA9515A acting as an I2C level shifter from 3.3 to 5V I found that the bus is latching up with both SCL and SDA held low starting at the "1st purge loop" error in the log. Based on insight from https://www.eevblog.com/forum/repair/tektronix-dpo4034b-stucked-at-tektronix-splash-screen/ I tried replacing this part but that didn't fix the problem. I substituted in a different bidirectional I2C coupler that gave me some additional insight into the direction of bus traffic and found that the message being sent at the time of failure is this: Master addresses 1110110 with a read (1) flag. This is acknowledged with (0) by the front panel. The front panel then responds with 11111111 and sends and ack (0). At this point the Front Panel is holding both SDA and SCL low and doesn't release them until power cycle. I've verified this by disconnecting both lines and seeing that the master side goes high on each and the front panel side is still held low. Has anyone else done front panel repair on this model and have insight into the I2C messages? Does anyone have a broken MSO4000B series scope with a front panel board they don't need? |
| mikehank:
Hello, It looks like the front panel microprocessor FW is corrupt and the mainboard is trying unsuccessfully to reprogram it or the microprocessor is bad. I have seen this before. It's the big square chip with a sticker on it(the part number on the chip is the Tek part number for the code programmed). I would try to load the scope FW 1st and see if that will helps. If that does not help a new front panel from somewhere else or a new programmed chip. |
| crhastre:
Does anyone have a broken MSO4000B or MSO5000B scope that they would be willing to part with the front panel assembly of? |
| dbator:
Hi all, I'm experiencing the same issue - what a coincidence. Well, maybe together we will solve the issue more efficiently. I hope you did not purchase a front panel board yet, since nothing is lost yet and they are not cheap. At least for my wallet they are too expensive. Anyway, I would suggest you to provide more information and also you might wanna read my topic which could give you a clue what else can be checked and probed. You may want to skip first part related to boot issue as it is not relevant in case of front panel issue. Second part of my topic is related to front panel issue and all the details I know and remember/was able to document about front panel issue are there. https://www.eevblog.com/forum/repair/tektronix-mso4054-no-boot-not-working-front-panel/ In your case the scope maybe is automatically booting because front panel microcontroller at U1 maybe reads pushed Power button which is not the case. Unless stucked button may cause I2C communications failure. Less possible I would say. Would be the firmware working that way? I assume you checked whether the Power button is not stucked. I don't know which level shifter you mean. There is no such IC on front panel board unless you mean the acquisition board. According to datasheet of PCA9515A it is a bus repeater and I don't read it can shift levels. But it's not important in this case, since I2C bus is working properly. If anyone could try readback that front panel microcontroller firmware, it would be great. You can spare your efforts asking Tektronix support because I already went that way without any success. Not that I thought they will make an exception. |
| joebot5:
I have a similar issue with my MDO4104-6 scope. https://www.eevblog.com/forum/repair/tektronix-mdo4104-6-front-panel-microcontroller-failure/ Tektronix wasn't able to help. Essentially like most of these posts, if the program can be made available, then issues like these might be able to be resolved. I found on ebay this front panel PCB available: https://www.ebay.com/itm/285380453970?itmmeta=01J48M63KEGK1975620XK1DSSG&hash=item4272002652:g:DLoAAOSwXsViedvr Maybe it would work with your scope? |
| Navigation |
| Message Index |
| Next page |