#Amiga

CD32 Refurbishment, Part 2

In the first part I successfully repaired an Amiga CD32 that got broken due to leaking capacitors and a botched restauration attempt. In this part I replace the laser pickup and calibrate the CD drive.

The old laser pickup of the CD32 might be worn out due to age and use. A common symptom is that the CD32 is unable to play CD-R media, or it is only capable of playing music CDs. There is no way to make the CD32 accept CD-RW media though, since they use a dye instead of pits that reflect too little light.

But before we start, read this:

CAUTION: The laser pickup is very sensitive to ESD. Use protective measures (such as an antistatic wrist band).

Make sure that the laser is always covered when the machine is turned on. Do not look into the laser beam.

I should also mention that I am not a trained technician. I have read manuals about how to calibrate CD drives, and it has worked for me. However, I don't claim that this is the best or most professional way to do a calibration.

You will need a soldering iron for the pickup replacement, and you will definitely need a scope for calibration. The drive might work without calibration after replacing the pickup, but the result will not be optimal.

Pickup Replacement

I started with disassembling the CD drive. I removed it from the case. Then I carefully disconnected the pickup and the motor unit, and removed the four screws that hold the pickup frame. There is a metal shield covering the pickup that needs to be removed as well.

The frame with the laser pickup, spindle motor, and tracking mechanics.

The laser pickup unit is a Sony KSS210A. It is long out of production, but replicas are sold at online marketplaces for a few bucks. To remove the old pickup, I first removed the white cog wheel, then I pulled out the metal rod (it is secured by a plastic clip that can be pushed to the side). Since I was on it, I cleaned the old grease from rod and the cog wheels, and applied a bit of fresh silicone grease. After that, I mounted the new pickup and reassembled the CD drive just in the opposite order of disassembly.

After the new pickup unit has been connected to the controller, a solder blob on the pickup unit must be removed! It protects the laser from ESD, but will damage the drive controller if it is still there when powering on the drive.

Closeup of the pickup module, with the solder blob on the top right.

If you want to keep the old pickup module as a backup, you can also apply a solder blob there before disconnecting it.

Preparation

For calibration, I opened the metal shield of the drive controller, and found a surprise underneath. There was a tiny board glued to the main PCB, and connected to some points with seven wires:

A tiny modification board is glued and connected to the PCB.

I first thought this could be some kind of mod to circumvent copy protection measures, but then again, the CD32 does not have a sophisticated copy protection scheme. Later I found the answer in a YouTube video: This modification immediately cuts the power from the laser and the spindle motor when the lid of the CD drive is opened. I could find many photos of the controller board without the modification, so I guess that it was a product safety requirement for selling the CD32 on the German or European market.

Okay, let's get back to the calibration. As a preparation, I first soldered wires to the VF, RFO, TEO-1, and FEO-1 test points. I recommend to use wires of different colors, it makes the calibration much easier. Unfortunately I only had red wire at hand, so I had to check each time which wire went where.

Wires are soldered to the VF, RFO, TEO-1, and FEO-1 test points.

After that, I noted down the current settings of the four pots on the controller board, and of the pot on the laser module, using an ohmmeter. If I should mess up the calibration for some reason, I could always go back to these settings. (A photo of the pot positions is not sufficient, as very tiny changes can already make a huge difference.)

The four pots for calibration are on the side of the controller. See the silkscreen for which pot does what.

For the calibration, the drive needs to be connected to the mainboard again. The case top (with the LEDs, reset button etc) needs to be connected as well, since the CD32 won't attempt to read the CD unless the drive lid is closed. The laser pickup is moving during operation, and should have sufficient room for that.

To fix the CD to the spindle, I removed the spindle clamp from the inside of the lid, and used a bit of tape to keep the loose part fixed in the center of it. It is held to the spindle with a magnet, and ensures that the CD won't slip on the spindle.

Calibration

The calibration process is explained in this blog article by TSB. My attempts to explain it would be far worse. 😉

However, it turned out that on my drive, the process didn't work like that. After doing the first steps of the calibration, my drive was suddenly unable to spin up the CD for reading. I was lucky that I noted the pot positions (like recommended above), so I could revert to the original settings and start anew.

Then I first calibrated the TEB pot until there was approximately 0 mV between TEO-1 and VF. The drive was still working after that. However, after I calibrated FEB like documented, the drive stopped working, so I reverted that change again and moved on with calibrating the laser power.

CAUTION: Be very careful with the pot on the laser module and only turn it in very small increments. Otherwise the laser may be permanently damaged.

There is a drop of varnish on the pot from production that may require some force to break, so it might be a good idea to first turn the pot while the device is powered off, and then use an ohmmeter to return it to the factory setting that you previously noted.

To calibrate the laser power, I connected my scope to RFO and ground. Then I put a music CD on the spindle and started playing track 1. The scope should now show a so-called "eye pattern":

The tricky part is to turn the pot on the pickup module carefully while the CD is playing. I turned it very carefully until I reached a peak-to-peak voltage of about 900 mV. Take care never to exceed 1200 mV!

After that, I adjusted the FEB pot on the controller board until I reached a maximum amplitude on the eye pattern.

The last two pots, FEG and TEG, are calibrated by scoping the FEO-1 and TEO-1 test points against ground, respectively. The drive should play track 1 of an audio CD and should be in pause mode while calibrating.

I tried to find the sweet spot where the signal on the scope was as smooth as possible, and the correction noise from the optics was as silent as possible. There is a trade-off between these goals, and I found that the best results came from listening to the pickup noise and using my intuition.

The calibration is complete after that, and the CD32 can be assembled again.

One final tip: burn CD-Rs for your CD32 at the lowest speed supported by your recorder. This will increase the contrast of the data on the CD. Also, prefer CD-Rs that are not transparent when held up to the light.

CD32 Refurbishment, Part 1

An Amiga CD³² Game Console in good condition. I found this CD32 for a fair price, and bought it. The optical condition of the case is quite okay. It has some visible scratchmarks. The previous owner tried to fix them, but made it even worse. At that time, I wasn't aware yet that this would be the main theme of the whole restauration.

Together with the console, I got a PSU and an edutainment CD for learning math. The PSU wasn't the original one, but a simple power brick with a CD32 connector soldered on. The gamepad was missing, unfortunately, but I found a Honey Bee joypad as replacement a bit later.

Let's have a look inside the machine.

The State

The seller sold it as broken because it showed no picture. When I opened the case, the machine told me a completely different story. There was an attempt to recap the machine. It was abandoned after replacing the TH and the 100µF SMD caps, probably because the picture was gone after that.

I also found blotches of green varnish, presumably simple nail varnish. It was under the replaced SMD caps, but also on solder joints and some vias. The varnish made no sense at all, except of maybe cosmetical reasons.

And I found this:

Closeup of a Sony CXA1145 Video Encoder chip. The first pin is cut off, and the PCB underneath is damaged.

I assume that when the picture was gone, the guy who tried the refurbishment assumed that the video encoder chip got damaged, but had no equipment at hand to unsolder an SMD chip, and attempted to cut it from the board pin by pin instead.

I found no further traces of mistreatment of the poor board. It's going to be enough of work to fix the current mess already.

To be honest, I am pretty upset about that. There is a difference between if the machine shows no picture after decades of storage, or because of a botched refurbishment attempt. The seller should have pointed out that fact.

Fixing the Mainboard

First I attempted to restore the picture by replacing the obviously broken video encoder chip. I also replaced an electrolyic cap next to it that looked suspicious. Unfortunately that did not bring back the video signal.

The question was now whether I was getting no picture because of further errors in the video area, or because the machine is not starting at all. To find out, I inserted a DiagROM and connected the CD32 to my PC. The DiagROM started and logged no errors to the console. So the good news was that the machine is basically working.

I then decided to remove everything from the previous restauration attempt, so I could start anew with a known state of the mainboard. I removed all the electrolytic caps, even those that had already been replaced, and cleaned off the green varnish with acetone and IPA.

There was a strange solder blob on the bottom side, covered with a layer of varnish. When I tried to clean it up, I smelled that revealing fishy smell of old electrolyte. I generously removed the SMD parts on both sides in that area, cleaned the board and checked the tracks and vias.

The bottom side of the audio area, as I found it. There is a strange solder blob covered in varnish. I generously removed all components around the affected area, and cleaned it. Fresh components soldered in. A track was damaged and needed to be fixed with a wire.

Unfortunately, I ripped off a few pads on the 100µF capacitors while doing so. I guess the leaked electrolyte and the thermal stress of two recappings was just too much for them.

Then I soldered in new components in that area, and fixed the broken pads with bodge wire. For two SMD capacitors, the board offered an alternative use of TH caps, which I thankfully accepted. The area is now looking quite ugly, but at least it should work again.

The top side of the audio area after removing the SMD caps. Two 100µF caps lost a pad due to thermal and mechanical stress. The same area, with fresh SMD components. Two of the SMD caps are replaced with TH ones. A broken track is fixed with a wire.

When I checked the tracks and vias at the other 100µF SMD caps, I found broken connections at C236 and C237. They are used for the luma or composite video signal, so the broken connections caused a black image.

The connection between the left pad and the via was broken, presumably while scraping off the solder mask. The only way was to fix it with a piece of wire. The connection between pin 20 and the right pad of C237 was broken as well, and disconnected the composite signal from the outputs.

I also found a broken via near C409, which carries the CSYNC signal. The missing connection causes a missing video sync signal at the outputs. I fixed it by opening the via and exposing the connected tracks on both sides, then soldering a thin wire to the tracks.

The broken via, before I fixed it with wire.

So there were more than enough reasons for this board to show no video picture.

The TH capacitors on the board are a bit special. For C408 and C811, the silk screen shows the positive end at the wrong side. Even Commodore soldered in the capacitors in the wrong orientation, and you will find many CD32 out there with bloated caps at that position. I decided to solder in SMD caps there instead, which can be soldered in like shown on the silkscreen.

After that, I checked the machine, and to my amazement, it was working again:

So the mainboard was repaired and refurbished. I checked all the video and audio connectors, and found a signal everywhere. The machine was also running stable.

The refurbished mainboard.

I'm glad that the machine turned out to be repairable.

In the next part, I will replace the laser module and calibrate the CD drive.

Amiga Debugging with Linux

A "zero modem" adapter between the serial-to-USB and DB9-to-DB25 adapters The AmigaOS offers a debug console as a simple way for debugging. Log data can be written via the linkable Debug.lib, which is also used by all kind of tools like MuForce, Mungwall, or PatchWork. AmigaOS provides a simple internal debugger called ROMWack (which has been replaced by the even simpler SAD in later versions). But also DiagROM is writing diagnostics data via the serial port, which comes in handy when a RAM chip or something in the video area is broken.

The log output is sent to the serial port and can be read by a terminal connected to it. Back in the good old days, not so many hobbyists could afford an actual terminal or a second computer for that, so we used tools like Sushi or Sashimi to redirect the debug output into a Shell window, which worked fine unless the system has crashed too hard.

Today, I assume that almost all of the Amiga owners also have a second computer at home, and if it's just a second Amiga. 😉 This blog article is about how to connect your Amiga to your Linux PC, and get the debug output.

On the hardware side, you will need a construction with a DB25 female port on the one end, and an USB connector on the other end. I use one of those USB-to-Serial converters that can be found on hardware shops for little money. They are often equipped with a DB9 male connector, and are supposed to be connected to peripheral devices (like modems). To connect them to a computer, a so-called zero modem (or null modem) is required, which is just a small adapter that enables to connect two computers directly together by crossing the transmit and receive lines. Finally, we need a DB9-to-DB25 connector with the correct genders, to connect the other end of the zero modem to the Amiga.

This hardware stack is connected to the Amiga's serial port on the one end, and to a USB port of the PC on the other end. Remember to turn off the Amiga before connecting something to the serial port. Unlike USB, the ports of old computers are not designed for connecting or disconnecting devices while the system is powered. It could actually damage the system to do so!

On the software side, we don't need to install drivers on the Amiga. The debug or diagnostics output is just sent to the serial port. On Linux, we can use any terminal emulator. The most prominent is certainly minicom.

The default serial port settings are 9600-8N1 (9,600 bps, 8 bits per character, no parity, 1 stop bit). However, the debug output is just directly sent to the serial port. If you changed the serial parameters on Amiga side, and used the serial.device for something else, the debug output will use the current settings. Handshake must be turned off in any case, though.

Maybe the easiest way is to create a file called ~/.minirc.amiga with the following content (change the pu port value to your actual TTY USB device):

pu port             /dev/ttyUSB0
pu baudrate         9600
pu bits             8
pu parity           N
pu stopbits         1
pu rtscts           No
pu xonxoff          No

On many Linux distributions, the user also needs to be added to the dialout group in order to access a serial device:

sudo usermod -aG dialout $(whoami)

After that, just start minicom with the amiga profile:

minicom amiga

Now you should see all the debug output generated by AmigaOS on your minicom screen. For interactive debuggers like ROMWack, you can also type commands into the console.

To leave minicom, press CTRL-A and then Q. 😉

Amiga CD32

A TTL-to-DB9 converter board and a PS/2 cable connected to it Unlike other Amiga models, the CD32 has no dedicated RS-232 port. Instead of that, it provides a simple serial interface at the Aux port that is connected to Paula's UART pins internally.

To build an adapter, you need a PS/2 cable (e.g. from an extension cord or an old PS/2 input device) and a MAX3232 based TTL-to-DB9 level converter. These converters can be found at online marketplaces for a few Euro.

Cut one end of the cable and connect the wires to the converter like that:

  • Pin 2: TXD
  • Pin 3 (and the shield): GND
  • Pin 4: VCC
  • Pin 6: RXD

Leave the remaining two wires unconnected, and check for correct polarity before connecting the wires to the converter!

The CD32 does not provide any control and handshake signals, but fortunately they are not needed for debugging and diagnostics purposes.

Amiga 1200 Black Edition

When I found this Amiga 1200, I felt pity for it. The case and keyboard was very yellowed, but what was even worse was the screwed up attempt to fit a Gotek drive into the case. The previous owner obviously tried to open the floppy disk area with some kind of cutter pincers, essentially ruining the case.

The Amiga 1200 was very yellowed. The floppy drive was coarsely cut out, to make room for a Gotek drive.

My initial plan was to whiten the case and keyboard, clean the botched cut at the floppy drive with a rotary tool, and nicely close it again with a 3D-printed part. But then I got a better idea. 😁

The Mainboard

Let's have a look inside first. There is a Rev 1D.4 board in good optical condition. I replaced the electrolytic capacitors, and upgraded the ROMs to AmigaOS 3.2.1.

 The recapped mainboard.

On the bottom of the PCB, I found a copper wire for a so-called "floppy fix". When Escom was producing the final batch of Amiga 1200 systems, Amiga floppy drives were not available any more, and Escom had to find a way to use regular PC floppy drives instead. However, many games and demos with own trackloaders fail to load on machines with this modification.

The original floppy drive of this machine was not existing anymore, and Gotek drives can perfectly emulate Amiga floppy drives, so I decided to undo the floppy fix by removing the botch wire. To restore the original RDY signal, I instead put a wire from pin 34 of the internal floppy connector to pin 1 of the external connector.

The "floppy fix" cuts pin 34 from the original RDY line (not visible here), and instead connects it to the CHNG signal at pin 2. To undo the fix, remove the wire, and then connect pin 34 of the internal port with pin 1 of the external port, to restore the original RDY signal.

Since I was working on the bottom side of the PCB, I should also remove E123C and E125C, to enhance the stability of accelerator boards. However, on this machine these capacitors were not populated, so there was nothing to do.

It was finally time for a first thorough test run. Everything went fine, but then I noticed that the right mouse button was not working on both ports. I wrote a separate blog article about the cause and the fix, but to make a long story short, all I had to do was to replace four resistors with ferrites.

My work on the board was completed after that, and it passed all tests.

The Extras

As with my other refurbishments, I'm not only cleaning the machine, but I also futureproof it with some extras.

First of all: The yellowed case with the ugly cut. I was sure that even with a skillful repair attempt, the case would never look really beautiful again. Also I always wanted to have a black Amiga, so I decided to rehouse the machine into a brand new, black a1200.net replica case instead.

The floppy drive was missing, but instead of the Gotek drive that was there as replacement, I decided to use a Centuriontech GoEX drive. It uses an SD card instead of an USB stick, and comes with a dial encoder, which makes selection of a floppy image much easier. There is also a matching OLED display for it, but for my new Amiga I preferred to use a tiny display that is not that noticeable.

The display itself is one of those 0.91" OLEDs one can find in virtually every maker shop. However it is important to swap pin 1 and 2 when soldering wires to it, as the power pins are swapped on this display type compared to the original GoEX display module.

I then printed an A600 display module case, which luckily also fits on an A1200. I used hot glue to assemble the module, but in retrospect I should have used standard glue instead, since the hot glue softened the PLA of the print. The module is then just clipped into the cooling vents of the Amiga, no need for gluing.

The OLED display with new wiring. Pin 1 and 2 need to be swapped. The backside of the display module, before closing it. The display module put on the Amiga case.

To use this kind of OLED, a file called FF/FF.CFG needs to be created on the SD card, which contains this line:

display-type = oled-128x32

I also added an Indivision AGA MK3 for a pixel-perfect picture on modern TVs via HDMI. While doing so, I found out that the a1200.net replica case seems to have different measures than the original case, so I created a modified trapdoor and holder for this kind of case.

A black trapdoor for the HDMI connector. A holder keeps the HDMI board in place and prohibits that it pivots around the screw.

The computer came with a Marpet Developments M1207 RAM expansion in the expansion port. It got a fresh button cell, and now provides the machine with 4MB of additional Fast RAM, a 68882 FPU, and a RTC.

Assembling

What's missing? The black keycaps that are matching the black case! After many years of waiting they were finally available, and I got a set delivered right in time before Christmas.

The black replica keycaps look awesome! It took a while to replace the original caps with the new ones.

The black case does not include badges, but I found a nice black one from Badgeman.

After that, the Amiga was finally ready for the final assembly.

Everything is in place.

If Commodore had given the choice of the case color back in the 1990's, I would have chosen a black Amiga. And now here it is, an all black Amiga 1200 with a completely new outerior, and modernized interior.

The completed Amiga 1200 Black Edition. Power, floppy, and harddrive LEDs in custom colors. Of course the Amiga 1200 badge is black, too.

Amiga 1000 Restauration, Part 3

In the previous part, I refurbished the keyboard of the Amiga 1000. It was in a bad state, and truly deserved to get its own part. Now I will replace the floppy drive with a Centuriontech GOEX on pills floppy simulator, and then put everything back together.

Floppy LED

The floppy LED of the Amiga 1000 is not connected to the mainboard, but to the floppy drive. The GOEX drive does not provide a similar connector, so I had to come up with a solution. Fortunately, the Amiga made it faily easy.

On all Amiga models, the floppy LED represents the state of the drive motor. It lights up as long as the motor is powered. On the Amiga 1000, the motor of the internal drive is controlled by a /MTR0 signal on pin 16 of the floppy connector. If it is LOW, the motor is powered, and the floppy LED is supposed to light up. The 7438 buffer inside the Amiga has a maximum output current of 48mA, while the LED has a forward current of 30mA, so in theory the LED (and a 120Ω series resistor) could be connected directly to the /MTR0 line and +5V. But I wanted to be on the safe side, so I added an inverting switch using a standard PNP transistor and two resistors.

SVG Picture created as drive-led.svg date 2022/10/31 09:06:35Picture generated by Eeschema-SVG+5V+5V10K10K1M1MBC557BC557Drive LEDDrive LED120R120R~{MTR0}~{MTR0}161610K10KBC557BC557Drive LEDDrive LED120R120RSVG Picture created as drive-led.svg date 2022/10/31 09:06:35

I used a BC557, but any other standard switching PNP transistor will do as well. For the LED, I preferred to have a green floppy LED instead of the original red one. I used a Dialight 521-9266, which has the same dimensions as the original LED. There should be a pullup resistor on the /MTR0 line, but it's also working without, so on my system I left it out for space reasons.

On the GOEX board, +5V can be found on an unused pad next to the voltage regulator. GND can be found at an unused header for an optional encoder.

The base resistor is connected straight to pin 16 of the header. +5V can be taken from a pad next to the voltage regulator. GND is available at the unused encoder header. A bit of hot glue fixes the wires to the board. I replaced the original red floppy LED with a green one, just because I like it better. 😉

On Screen Display

The GOEX drive needs some kind of display, to show the floppy disk file that is currently selected, and other options. My first plan was to glue a tiny OLED display to the front of the case.

However, the "GOEX on pills" model comes with an OSD connector. It reads the CSYNC signal from the Amiga, and generates a pixel signal that is overlaid to the Amiga RGB signal. Depending on the color component the pixel signal is connected to, the OSD text is either red, green, or blue (with the corresponding complementary color as background).

The CSYNC signal can be taken from pin 12 of U6A. The pixel signal is connected to one of the 75Ω resistors: R25 (red), R24 (green), or R23 (blue). The wire must be soldered to that end of the resistor that is closer to the monitor connector, otherwise the OSD overlay will not be visible on white screens.

The CSYNC signal is taken from U6A pin 12. The RGB signal is connected to R24 for a green OSD color.

The other end of the two wires are connected to the respective CSYNC and RGB pins of the OSD header of the GOEX drive. It is also possible to control the GOEX drive with the Amiga keyboard, but I didn't want to do more hardware modifications, especially if it involves soldering wires directly to one of the CIAs. I prefer that I still have to touch the floppy slot for changing floppy disks, even if it's just virtually.

Reassembly

A trained technician should definitely overhaul the PSU, to avoid damage to the hardware or spectacular explosions of safety capacitors. @DingensCGN of the a1k.org forum did an excellent job there. He replaced all electrolytic capacitors, and did a full load test including checking the temperatures of the components with a thermographic camera. A big shout-out to him!

The PSU was overhauled by @DingensCGN at a1k.org. Result of the thermographic camera check: The load resistors are getting rather hot, but that's normal. The other components stay cool.

This Amiga has a separate piggyback board, which I had removed for cleaning and re-capping. It is connected to the mainboard by some headers at different places, which makes reseating it a bit tricky. It is crucial that all headers are properly connected.

The piggyback board must be carefully reconnected.

For the GOEX drive, I designed a 3D printed frame for the Amiga 1000. It holds the drive in its correct position, and also holds the original eject button so the hole in the front is closed. My intention is that the GOEX drive should be as invisible as possible, so the original look of the Amiga 1000 is maintained. I guess I managed that.

GOEX drive on the Amiga 1000 mounting frame. The best place I could find for the grounding. The GOEX drive inside the Amiga floppy frame.

And that's it. The system is fully assembled now.

The fully reassembled system.

I mounted the top shield, attached the front plate, closed the case, and connected the 256KB memory expansion to the front slot.

And then came the moment of truth. I flipped the power switch. The system started up. I expected the 230V PSU fan to be rather noisy, and was very surprised that it is almost inaudible, and could easily compete with modern ultra-silent 12V fans of the same size.

Then the famous Kickstart screen appeared, together with the FlashFloppy OSD.

The famous Kickstart screen, with the magenta OSD from the GOEX drive.

I loaded the Kickstart ADB file from the GOEX drive, and after that I changed to the first disk of the famous Red Sector Megademo. The Amiga just dutifully loaded it.

Red Sector Megademo is loading, here with green OSD because of the dark background.

Everything ran smoothly! The green color of the OSD certainly adds a lot to the 1980s retro feeling of that machine. It looks quite like those OSDs on old TVs or VCRs. 😆

Configuring FlashFloppy

There were two things that were bugging me. The first was that I'd like to run a cold start of the machine as simple as possible, so the GOEX drive should always select the Kickstart ADF first when the system is powered up. The second was that the OSD was shown on the screen for much too long. It should disappear a few seconds after disk inactivity.

Both is easily configured. First, a directory called FF needs to be created on the SD card. Then a FF/FF.CFG file needs to be created, having this content:

image-on-startup = static
display-off-secs = 5

A second file called FF/IMAGE_A.CFG contains the file name of the Kickstart ADF file on the SD card.

Welcome!

And that's it! I am, and have always been, a big fan of the Amiga. I learned a lot on my Amigas, and they were the foundation of my career as professional software developer.

The fully restaured Amiga 1000.

I always considered the Amiga 1000 to be the pearl of my Amiga collection, and I am happy and proud that I got the chance to own such a beautiful machine now.