Holy fuck man............ WIZARD!Update time!
3 weeks have passed since my last update and in this time, I went through engineering hell and back.
But the hard work was worth it, I am excited to announce that the first prototype of my custom PS2 mainboard finally boots! I literally managed to get it working 2h ago and the system was stable during a quick Okami session. Here it is:
View attachment 26347View attachment 26348
(BTW: my temporary “cooling solution” managed to keep the EE pretty cool, don’t make fun of it! Also please ignore all the flux residue on the board, I call it "battle scars" from 2 weeks of troubleshooting...)
View attachment 26349View attachment 26350
I assembled the board 2 weeks ago with components from my last 79004 mainboard. The reballing process was very smooth, maybe I can give some insight on how the process looked:
Reballing Process
The first step was to desolder the EE, GS, Mechacon, DSP, Ethernet PHY and System clock PLL and to clean them using solder wick. I did the desoldering using my IR preheater and hot air tool, that makes it a lot easier to melt the original lead-free solder. The temperature on the preheater was set to ~360°C and the hot air to 320°C, 90% airflow, that gave pe pretty good results without cooking the chips too much.
View attachment 26351View attachment 26352
I can recommend to clean the pads of the BGAs very thoroughly using solder wick, that way the solder balls stay in place much nicer later on. It is also important to apply as little force as possible on the pads while cleaning. When that was done, I cleaned the flux residue on the 3 BGAs using 99% isopropanol.
With that preparation done, I continued to mask the unused holes in the stencil. I’m using a 0,55mm universal stencil with 1mm pitch. In case anyone has the same reballing fixation, I applied some kapton tape in 2 diagonal corners to prevent the lid from moving around too much, as the sloppy tolerances made the alignment really tricky.
View attachment 26353View attachment 26354
The next step was to apply a thin layer of tacky flux on all pads of the BGA, I used my finger to spread it evenly. The BGA was mounted in the fixation and the stencil was aligned very carefully. The vertical alignment is also VERY important! If the distance between BGA and stencil is too big, the solder balls will not be aligned. If the distance is too small, the balls will not stay inside the holes and when they pop out, they will contaminate the top of the stencil and the other solder balls with flux. That causes the balls to get stuck in the stencil when lifting it off the BGA (which is a big pain, as those balls will have to be placed manually). Always clean the stencil after reballing!
When all balls are in place, I use the preheater and hot air again to melt them. I had good experiences with putting the BGA on an unused stencil and having it over the preheater (set to ~360°C). I usually set the hot air to 320°C, 10% airflow to not blow the balls away while heating. That way, I can slowly hover over all pads until all balls are soldered.
View attachment 26355View attachment 26356
That’s the reballing procedure I followed for the EE, GS and Mechacon. One thing that really annoyed me was the fact that I only have one stencil. That means I have to mask the holes 3 times to reball the 3 chips. Having 3 stencils would save a lot of time, so I ordered new ones from aliexpress.
Placement
Next was the component placement. There is this fancy KiCad plugin called “Interactive HTML BOM” which exports the BOM and a visual guidance where to place the components on the board. Man, I love that thing and I whish Altium had something similar, it makes the component placement SO MUCH easier.
The first side to be populated was the bottom layer. I ordered a solder paste stencil together with the PCBs, so that was very straight forward. When all components on the bottom were placed, I put the board on the preheater again and soldered everything using hot air on a first reflow run.
After that, I put copper tape on the ffc sockets, the mezzanine connectors and the LDOs to prevent them from falling off during the second (top side) reflow.
Then I turned the board around and populated everything on top, except the 3 BGAs. When the top side was done, I put the board back on the preheater at 360°C. I applied a thin layer of flux on all BGA pads of the PCB and placed the BGAs on the PCB. At work, our PCBA assembly house usually does it the other way around – they dip the BGA balls in a low viscosity flux before placing them.
The alignment of the BGAs was very easy, because I have the exact size of the package outlined on the silkscreen – I would highly recommend that for hand-assembly.
Then it was just a matter of heating the board up to solder all components. The BGAs are usually a bit more difficult to observe without the right equipment, so I always give them the -tiniest- push and when they “float” back into position, the connections are good.
After slowly cooling down the CBA, I measured the resistances on all supply rails and they seemed OK.
View attachment 26357View attachment 26358
View attachment 26359
Testing
That was the point where the fun started…
When powering the mainboard on for the first time, the red power LED turned on – so far so good. When pressing the reset button, the LED turned green, but the current consumption stayed at around 200mA. The board was completely dead, there was no video, no audio and not even bus activity on the EE-GS bus and the EE-DSP bus.
I compared most signals to a working board and saw that the EE was not even initializing when powering the board (with the red LED on).
On the good board, even before pushing the reset button, most signals between the EE, GS, DSP were initialized HIGH, the clocks for the EE, GS and ethernet PHY were present. The EE was outputting clocks for the DSP and for the GS. When pressing the reset button the console boots normally with bus activity everywhere.
On my board, a lot of the connections between the EE, GS and DSP were floating at around 0,3-0,6V. The respective clock signals for the EE, GS and ethernet PHY were present, so the system clock PLL was working. The EE did not output clock signals to the GS and the DSP. The CE and OE for the DSP/BIOS were floating at 0,3V, on the good board they were HIGH.
The GS did output a clock to the EE and the Mechacon also seemed to do its job – it tried to boot the system, tried to enable the supply rails and it was outputting a clock to the EE when pressing the reset button. What did not work, though, was turning the system off – it looked like the Mechacon was waiting for something.
These observations made me rule out the GS, clock PLL and Mechacon in my attempt to find the fault. The remaining suspects were the EE (highly sus), DSP and ethernet PHY. What made me rule out the DSP and ethernet PHY in the end was the fact that they were also doing nothing on the working mainboard, at least before pressing the power button. Everything that was supposed to come from the EE was missing on my mainboard and that led me to suspect three likely causes for my issues: wrong connections in my design, bad solder joints on the EE and a broken EE.
I decided to first compare my design to the original mainboard again to find the potential wiring issue. The second and more dangerous step was to replace the EE to solve the remaining 2 issues I suspected. I was a bit hesitant with replacing the EE, as there is a high risk of destroying the board in the process (and wasting a good chip while fixing nothing), so I continued with cross-checking the connectivity of the design. I had my design and the original mainboard next to each other and spent 2 weeks comparing every connection by hand using a multimeter. The conclusion from that was that there is no difference between the 2 boards that would prevent mine from booting. Dead end.
View attachment 26360
That forced me to replace the EE today. As I don’t have any more 79004 mainboards in stock, I had to salvage the new EE from a 90004 mainboard.
Side note: I decided to stop looking for 79004 mainboards, they are just impossible to find. Not a single reasonably priced one was available in the last 6 months and since the PS2 Ultra Slim was released, there are a lot of people actively searching for those mainboards. Importing 79001 consoles is not an option either, as the shipping is usually >50 bucks. Thankfully, nobody wants the 90004 and they are on sale for ~15 bucks quite regularly. I currently have 4 of them in stock and order new ones as soon as they are available.
After replacing the EE, my mainboard finally boots into FMCB. I still don't know whether the issue was a broken EE or bad solder joints, but knowing that I soldered the board at 2AM, I would expect the latter to be the case.
What is currently tested: memory cards, gamepads, loading games from USB. Muting the audio when resetting the console is not working currently, because it's not implemented in my video/audio relocation. You hear it when turning off the console while running a game – there is a loud buzzing sound for 1-2 seconds before the console turns off.
I also noticed something else: the new EE from my spare 90004 mainboard is different from most other EEs I’ve seen. That donor console also had a MUCH smaller cooling solution. During testing, I noticed that this new EE (subjectively) runs cooler that the one found on my reference mainboard. My custom mainboard also draws ~200mA less (currently at ~800mA@8,5V without anything plugged in) than my modified original mainboard.
Speaking of current consumption – I’m very happy with that. With a BlueRetro, a memory card and a USB stick plugged in, the console consumes ~8,9W.
Testing is still ongoing, of course!
View attachment 26361
Front IO Breakout
Here is a closer look on my front IO breakout board. It works great so far. I still have to design a custom fixture for the memory card locking mechanism.
View attachment 26362View attachment 26363
I’m tired and dizzy from all the flux fumes today, so I will end it there (Note to self: buy a proper fume extractor one day). Please excuse any mistakes I made in the update, I'm completely done for now. There will be another update on how I’m planning to continue soon, but this week I will probably take some time off from the PS2 project. I will also have to clean all evidence of 2 weeks of troubleshooting off my lab bench before continuing with anything…
View attachment 26364
I'm also thinking about that, maybe that's something to test in an upcoming revision. It will not be possible without moving the GS too, as the pinouts are very much optimized for the current placement. That would mean EE and GS on one side; DSP, Mechacon, Ethernet PHY and clock PLL on the other side. It would also be an option to split the mainboard in 2 modules and stack them, in case flipping the chips would require an HDI design (always thinking about keeping the cost down). The benefit of that would be that it requires no fancy soldering setup.Incredible work, can't wait to see what comes of this. Next thing to look at would be to see how doable mounting the EE on the other side of the board would be. That would significantly shrink the size of the board down. Might need a proper BGA soldering setup for that though :/
That's a good point, thanks! The MX4SIO was completely off my radar for game compatibility reasons, but it looks like they improved it recently!looking good! Really love this worklog.
If I can offer a suggestion, I would take a look at MX4SIO instead of SMB loading. Not sure if it works with 9K PS2 models, but don't see why it wouldn't. It will save you space and power since you can run the games off a Micro SD card wired directly to the memory card 2 port. I have tested 30+ games without issue with only 1 game having FMV stutters, which I believe was actually just an OPL compatibility problem. Those games gave me stutters with USB loading but not with MX4SIO. The loading speeds are faster than the slow usb speed. Wesk made a post about getting it working here if you are interested:
https://bitbuilt.net/forums/index.p...-ps2-portable-for-sd-loading-79k-models.4977/
Dude, that was an April's fool video lolI have two stuffs you will implement.
Search:
EEVblog 1384 - Halve Your Processor Power Consumption!
I don't think it would halve the power, but i think a 20+% reduction is pretty plausible in this old hardware, this was implemented in the PS3 generation directly on the chip, it would be VERY interesting to see what power reduction is possible on the PS2.
ALSO, forget your ethernet adaptor, you're searching for VOCORE, it runs OPENWRT, has ETH, SD, USB and WIFI and a few GPIOS to have some fun, can't beat it.
I appreciate the suggestion, the VoCore2 looks pretty cool actually. I've seen that people were able to get samba working on the Mediatek MT7628 (real shame that you can only get it on aliexpress), so it might be feasible to use it on a PS2. However, I have decided to ditch the SMB game loading entirely and focus on the MX4SIO after running a couple of tests.ALSO, forget your ethernet adaptor, you're searching for VOCORE, it runs OPENWRT, has ETH, SD, USB and WIFI and a few GPIOS to have some fun, can't beat it.
There are actually no plans to sell any boards. My time for all the hobby stuff is pretty limited and selling things would just take that time away from the things I enjoy doing. Sorry! But I will release the schematics, board layout and BOM for anyone to modify and reproduce, so when the time comes you will be able to recreate a board yourself. Just trying to find the right time to do the release.I am really enthusiastic about your project, when you finish it, will you make your PCBs to order? I would be delighted to buy one from you. Regards
Good point! It would be really interesting to try this!If CE1 and CE2 are used, and you need one output, why not use 74hc32 for merging?
Removing the DSP and MechaCon is way outside the scope of this project. It might be possible, but I’m not going to proceed in this direction. The goal was to make the mainboard equivalent to a trimmed one. If I start changing the scope of the project I will never have a portable in my hands.You can try to get rid of the CXD3098Q and CXR726080. First you need to try after initialization to disable the /CS_3098 signal from the CXD3098Q and pull up from the CXR726080. After check the launch of the games.
This was my biggest concern when designing the circuit. The datasheet mentions the Schmitt Trigger inputs, but they fail to specify the hysteresis (which they usually do for Schmitt Trigger gates). That was a bit suspicious to me and it’s the main reason for having R103 + C103 to set a timeout and for not including the circuit in my regulator board.The 74LVC1G74 is edge triggered and has schmitt trigger action on the clock input, so the slow rise time of the power button input should not affect it.
1.25V Line Regulation 3A Iout; Vin 5.5V to 8.4V; FCCM 1100kHz | ΔVout =0.5mV |
3.5V Line Regulation 1A Iout, Vin 5.5V to 8.4V; Auto PFM/PWM up to 2.5MHz | ΔVout =2.1mV |
5V Line Regulation 1A Iout, Vin 5.5V to 8.4V; Auto PFM/PWM up to 2.5MHz | ΔVout =3.9mV |
Output Ripple 1.25V; 3A load; 5.5Vin | 17.6mVpp |
Output Ripple 1.25V; 3A load; 8.4Vin | 22.2mVpp |
Output Ripple 5V; 1A load; 5.5Vin | 9.4mVpp |
Output Ripple 5V; 1A load; 8.4Vin | 9mVpp |
Output Ripple 3.5V; 1A load; 5.5Vin | 5mVpp |
Output Ripple 3.5V; 1A load; 8.4Vin | 4.8mVpp |
Output Ripple 5V; 0.1A load; 5.5Vin | 7mVpp |
Output Ripple 5V; 0.1A load; 8.4Vin | 11mVpp |
Output Ripple 3.5V; 0.1A load; 5.5Vin | 6mVpp |
Output Ripple 3.5V; 0.1A load; 8.4Vin | 10mVpp |
Iq of whole board at 8.4V EN LOW | 76uA |
Iq of whole board at 5.5V EN LOW | 19uA |
Idle current of whole board at 8.4V EN HIGH | 11.866mA |
Idle current of whole board at 5.5V EN HIGH | 11.548mA |
1.25V EN into 3A load 5.5V; startup time | 2.5ms |
5V EN into 1A load 5.5V; startup time | 300us |
3.5V EN into 1A load 5.5V; startup time | 1ms |
1V25 Disable from 3A load 8.4V | 40us |
5V Disable from 1A load 8.4V | 100us |
3.5V Disable from 1A load 8.4V | 100us |
Power supply | Korad KA3005D |
Vin measurement | Fluke 115 |
Iin measurement | Fluke 87 |
Vout measurement | HP 34401A |
Electronic load + Iout measurement | Maynuo M9711 |
Power consumption at 8.4Vin | [W] | Reduction [%] |
old regulators (with FMCB, MX4SIO, DS2, fan) 1,25Vout GTA SA | 9.59 | - |
new regulators (with FMCB, MX4SIO, DS2, fan) 1,25Vout GTA SA | 7.22 | -24.7 |
new regulators (with FMCB, MX4SIO, DS2, fan) 1Vout GTA SA | 5.52 | -42.44 |
Power consumption at 5.5Vin | [W] | Reduction [%] |
old regulators (with FMCB, MX4SIO, DS2, fan) 1,25Vout GTA SA | 9.44 | - |
new regulators (with FMCB, MX4SIO, DS2, fan) 1,25Vout GTA SA | 7.18 | -23.94 |
new regulators (with FMCB, MX4SIO, DS2, fan) 1Vout GTA SA | 5.56 | -41.1 |