New section: Στα Ελληνικά..

No, it is not a Greek version of my blog (sorry..).

Even though I am Greek, I chose to publish this blog in English. I made that choice because I believed that its target audience would be better served this way.

Since then I have realized that I would need to occasionally post some information in Greek, and thus came to be the Greek section.

Its first page is a guide to installing the Arduino IDE for novices: Εγκατάσταση Περιβάλλοντος Arduino Για Αρχάριους

Universal USB to I2S Interface Indicator PCB

Over at we designed a custom PCB to ease the implementation of the Universal USB to I2S Interface Indicator. It was a joint effort between myself and Manolis (a.k.a. lemon at I did the circuit design and Manolis did the PCB design work.

This is the schematic of the final version of the circuit:

USB2I2S schematic 0.8b

When the PCB design was finalized, a GB was organized. When the GB was finished we placed an order on’s Fusion PCB service. About 3 weeks later the PCBs had arrived:


PCB_from_fabThe production quality was truly excellent.

From top to bottom we have:

  • H1: Header for power. It may be either 5VDC (regulated) or 7-12VDC (non-regulated). Pin 1 is 7-12VDC, Pin 2 is GND, Pin 3 is 5VDC.
  • H2: OLED display connector. Pin 1 is 3.3V to the display, Pin 2 is GND, Pin 3 is SCL, Pin 4 is SDA.
  • H3: Header for future expansion. It exposes the unused I/O of the Nano in case it may be of use in the future. The last two pins are buffered by transistors so that they can supply enough current to engage small relays (5VDC, up to 100mA per pin). Pin A7 is connected to JP1_IR as well (see below).

Next up is the socket for the Arduino Nano. You will notice that the USB port should be on the right.

At the bottom of the board we have:

  • JP1_IR: This is a connector for an IR Receiver module. Software support for this is currently in beta. Pin 1 is signal out, Pin 2 is GND, Pin 3 is power (5V). Note that R4 and C5 provide filtering for the power and should be installed. R5 is an optional pull-up resistor. It should not be installed for normal use.
  • H4: This is the “dirty” side of the U1 isolator. Pin 1 is Vdd (usually 3.3V or whatever your USB Interface module uses for its logic levels). Pins 2 through 7 are inputs and Pin 8 is GND.
  • H5: This is the “dirty” side of the U2 isolator. Pin 1 is Vdd (usually 3.3V or whatever your USB Interface module uses for its logic levels). Pins 2 through 5 are inputs and Pin 8 is GND.

Note that in the future a Si8642BA may be used in place of U2. With proper support from the code that will turn 2 of the 4 inputs into outputs, so that they may be used to control a DAC board (for example to select an input).

This is the full BoM:

Part Description
FB1, FB2, FB3 Ferrite Bead 0805
R1 2.7K 0805
R2, R3 8.75K 0805
R4 100R 0805
R5 10K 0805 (optional)
C1, C2, C3, C4 100n X7R 0805
C5 10uF 10V X7R 0805
Q1, Q2 BC808 or equivalent SOT-23
U1 Si8065AA-B-IU
U2 Si8045AA-B-IU (optionally Si8642BA-B-IU)

In case you want to have your own PCBs made, these are the Gerber files: Universal USB to I2S Interface Indicator PCB Gerbers (5723 downloads )

You will also need an Arduino Nano, a suitable OLED display and some cables, connectors, etc. (see project page).

As soon as I received the boards, I built a prototype with whatever components I had lying around (thus the wrong size of most of the resistors & capacitors).

Prototype PCB

And proceeded to test it out with an Amanero Combo384 board:

Everything worked as it was expected. 🙂

At the moment this board (and relevant Arduino code) has been tested with the following USB to I2S interfaces:

Amanero Combo384
hookup_amanero_v2Note that R1 should be installed for proper operation.


JLSounds I2SoverUSB

Luckit WaveIO
You will notice that there is no Vcc pin on J9. In order to power the isolator, we will have to “steal” power from elsewhere on the board. A good place to tap is the power pin of the on-board I2S isolator, just to the left of the I2S LRCK U.FL:

Amiga 600 recapping

The Commodore Amiga 600 was a force to be reckoned with when it was released back in 1992. It was a low-cost but very capable gaming machine. That is why it still has a loyal following.

A friend of mine belongs to the vintage gaming crowd and as such is the proud owner of an A600. Unfortunately for him, eventually his A600 gave out. After some googling he came across a number of A600 owners who have had the same problem with their units. Most of them were able to bring their machines back to life by replacing the electrolytic capacitors of the mainboard. A “re-capping kit” is relatively low-cost so my friend went ahead and ordered one. When it came he took his machine and paid me a visit.

The re-capping process ended up taking a lot longer than I had expected, but that was due to my inexperience with the specific machine. In the process I gathered a lot of information that may be of use to others, so here goes.

The first step is opening up the case. You do that by removing the screws on the underside of the machine and then carefully popping it open. There are a number of plastic clips on the inside of the case that need to be pried open with care. You can see a few of them in this picture (top part):


Looking at this picture you will also notice that my friend has put in a 1MB RAM upgrade as well as an HDD emulator (the 4GB flash drive).

After you have opened up the case you need to remove the mainboard. To do that you have to remove the one screw visible on the lower edge of the mainboard. After that you must lift the mainboard along with its metal shield from the right side, clearing the two ports. You will need to use a little force. Be careful – these plastics are over 20 years old and thus do break easily. When you have cleared the right side you pull the board towards the front of the case and then up so as to clear the rear connectors. Now you have removed the board from the plastic case.

Now you need to separate the mainboard from its metal shielding. To do that you take out this pesky little screw:


Then you have to unscrew the hex screws on the rear connectors. There are 8 of them in total. I haven’t taken a pic of them but they are pretty easy to spot.
Now all you have to do is bend out of the way the little pieces of metal that are situated around the shield, like this one:

metal lug

Assuming all has gone well, you should have the mainboard out and be ready to start the procedure.

There is a number of caps that need to be changed. There are 4 through-hole components and a number of SMD parts.

I have circled the offending caps in this pic:


Some people choose to also change the two caps located on the back of the audio out ports. These caps are just DC blocking caps, they are not to blame for the death of the machine. Plus, they are located in a very tight spot, making replacing them too risky of a procedure.

So, first I took out the through-hole parts. That was relatively easy. Just bear in mind that you will need a relatively powerful soldering iron since the (-) sides are soldered to the ground plane which is extremely efficient at sinking heat.

Next up were the SMD parts. I had desoldered SMD caps in the past with no difficulty using a regular soldering iron but these ones proved to be particularly nasty. My first attempt ended in me pulling out one of the solder pads. I said to myself “bad luck.. whatever..” and moved on to the next cap. You guessed it – the next one also had the same luck. At that point I decided to change strategy and go with the hot air rework station. It proved to be much better at desoldering the old caps. For some reason even with the hot air I managed to pull off one SMD pad.


So now I had 3 caps missing pads. That is considered bad. I decided to go to the schematics and see if I could get away with not replacing the specific caps. It turns out that I was lucky. The rightmost cap (C214) is a DC blocking cap that sends the summed L+R audio to the RF encoder IC. Since my friend does not (and will never) use the RF modulator, it was OK to not care about this cap.

I was not so lucky with the next one, C460. This cap is used to bypass the U12 IC, which I’m afraid is actually necessary for proper operation of the board. So I had to get creative. The missing pad corresponds to the GND connection, so I thought I would just solder some wire from the bottom of the cap to a nearby GND point. It turned to be much easier than that. I scraped the green lacquer from the remaining trace and managed to solder the capacitor to that by turning it a bit. In other words, I got lucky.

With the third cap (C235) I did what I did with the second one – scraping off the lacquer and soldering at a small angle. After I had done the procedure I remembered to look at the schematic to see what it was for – it turned out that I could have gotten away with not installing it since it was also a DC blocking capacitor, this time from the encoder IC to the RF modulator module. Oh, well..

When I was done the board looked like this:


This was the moment of truth. We hooked up the board to its power supply and my (very bare) test display.


We plugged in the power and voila! The Amiga 600 lives! 🙂


We then proceeded to put the machine back together and do another test, this time with the HDD installed. As was expected, everything was working just fine:


So, there you have it. An (almost) fully re-capped Amiga 600. My friend is in for some serious gaming. 🙂

Universal USB to I2S Interface Indicator feature upgrade

Following up on a number of feature requests made over at I made a few rather interesting additions to the code:

1) The OLED display will show the type of signal (PCM or DSD) for 3 seconds if a change in signal type occurs. Only supported on USB interfaces that support it (obviously).

2) IR remote control support via the well-known IRremote Library. Support for power on/off and source selection (S/PDIF or USB).

3) The OLED display will display the name of the selected source, permanently if it is S/PDIF or for 3 seconds if it is USB.

More details on the new features will be added to the project’s home page, as will the new version of the code.

Here is a short video of the prototype in action: