General Category > Lisa Troubleshooting and Repair
Two sick Widgets
stepleton:
A forum member who may choose to make themselves known has given me two sick Widgets. I'll try to see what I can do with them; I'll post about them here for the sake of sharing experience and attracting advice.
Both appear in reasonable physical shape; the two-layer controllers have the -D ROM revision and the Lizzy chip with the mask ROM (i.e. not the piggyback variety).
Widget #1 spins up readily, releases the brake, and attempts to move the heads. These attempts fail: the heads move, but I don't think they get to where the servo wants them to go. Here's what this sounds like: https://photos.app.goo.gl/pH4CwwTTKpvY7z1N8
Using the UsbWidEx servo debugger, you can put the servo into 57k6 bps mode, but it's never fully happy: you seldom see ServoRdy=1 and ServoErr=0. I'll have to do the work later to understand the servo status codes.
Widget 2 has stiff bearings and sounds awful, but it turns. No apparent attempts to move the heads after the brake releases. In the servo debugger, you can put the servo into 57k6 mode as usual, but now even the status command times out.
More updates as they come!
patrick:
Look at test points TP9 (POS_B) and TP8 (POS_A) on the servo board while moving the heads manually. You should see two sine waves with 90° phase shift. If your oscilloscope has an X-Y mode, use it and you will get a circle. It should have a more or less circular shape and a radius of about 5V. If it is not, the optical system needs to be aligned. http://john.ccac.rwth-aachen.de:8000/patrick/UsbWidExamples.htm#session4
Never move the heads if the spindle motor is not spinning! Without rotation, the airflow is missing and the heads will scratch on the magnetic surface.
A servo reset signal will release the HDA brake. This is the loud "clonk" after startup.
stepleton:
Thanks Patrick! I had a look at the servo for Widget 2, and I think it's fine now. Many of the chips were socketed, so I pulled each, burnished the legs, applied contact cleaner, and reseated them all. The servo now passes all of the oscilloscope tests on your website, more or less (there's room for some adjustment, but things seem more or less OK). Now Widget 2's problem is that it can only read from Head 0; diagnostic reads from Head 1 yield something like the following:
--- Code: ---> k101,101
160401010101E1 --> 00080000
> x
1209E4 --> 05090000
> s0,1
130100EB --> 00: 05090000
Standard Status:
No matching header found
Operation failed
Controller self test failed
Controller aborted last operation
130101EA --> 01: 05000000
Last logical block: 000000
130102E9 --> 02: 01010101
Last seek to cylinder 0101, head 01, sector 01
130103E8 --> 03: 01F90101
Current cylinder: 01F9
130104E7 --> 04: 81430102
Internal Status:
Auto recovery on
Controller LED on
Read a header after recal
Seek complete
Servo Auto-Offset is on
For the last system command,
* the current block is a Spare
130105E6 --> 05: 0001DBE0
Controller selftest failed:
* No spare table found
Z8 port 2:
* Disk R/W direction set to Read
* SIOrdy = 1
* MSel1 = 0
* MSel0 = 1
* /PBusy = 1
* /PCmd = 0
* ECC ok
* State machine is stopped
I/O control port 0x1F00:
* CRC ok
* Write valid
* ServoRdy = 1
* ServoErr = 0
State machine state 0
130106E5 --> 06: 88C09020
Last Read operation:
Read error occurred
CRC or ECC error occurred
ECC error detected
CRC error detected
Last Write operation:
Write error occurred
No matching header found
32 bad retries
130107E4 --> 07: 01010101
Last seek came from cylinder 0101, head 01, sector 01
--- End code ---
I'll set Widget 2 aside now and return to Widget 1 for the time being...
rayarachelian:
Tom, can you say a bit more about this:
--- Quote ---Using the UsbWidEx servo debugger, you can put the servo into 57k6 bps mode, but it's never fully happy: you seldom see ServoRdy=1 and ServoErr=0. I'll have to do the work later to understand the servo status codes.
--- End quote ---
Does this work through UsbWidEx, or do you need to attach a terminal to the widget, etc?
stepleton:
In the Widget, the controller and the servo communicate with each other through a serial link. When the Widget powers on, the data rate is 19200 bps, but part of the normal Widget startup procedure is to switch this link to 57600 bps. When you're talking directly to the servo with a UsbWidEx device, you have to tell the servo to switch to 57600 bps mode yourself (via the UsbWidEx servo debugger 'n' command), since the controller isn't there to do it for you.
At all times, it's the UsbWidEx that's talking to the servo, and it switches the data rate it's using automatically if you execute the 'n' command. There wouldn't be much use to attaching a terminal to any part of a Widget, so far as I know: the servo serial protocol in particular is just bytes and nothing ASCII.
Navigation
[0] Message Index
[#] Next page
Go to full version