General Category > Lisa Troubleshooting and Repair

Two sick Widgets

(1/3) > >>

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