Search This Blog

Wednesday, October 21, 2026

DIY Coaxial Power Connector

 Once in a while I come across some less common coaxial power connectors as the manufacturers just want something different to prevent user to plug in a wrong adaptor.


(Source: Wiki)

It becomes a problem for me as I picked up old electronics from the thrift store that might or might not have all the cables.  I could order them from aliexpress or I could make my own.

Sadly the few hobby stores in this city doesn't sell brass tubes. They are more interested in D&D or some other stuff.

I rolled the barrel out of 0.02" (0.5mm) thick cut transformer core on to a drill bit with the help of my usual piers.  I used a drill as a manual lathe and a file  to smooth out the unevenness at the seam and remove insulation coating.  The center contact from female DB connector.  I always try to use gold plated pins/sockets whenever possible for reliability.


I 3D Printed the remainder of the parts.  I used the outer jacket of a cable for strain relief.

The center contact fits inside the printed insulation tube which in turns fits inside the outer barrel.  The barrel fits into the mid sector and then the connector case. I glued everything together with super glue.

.

 and decided that I want a right angled one.


I decided to make the right angled one so that stay flushed.


It works!






Sunday, December 14, 2025

MounRiver Studio 2 impressions

One of the most hideous things that companies often do is to use Eclipse as the base of their own IDE.  Given the claim on their web site, there are 400+ IDE suffers from Java resource hogging, sluggish and horrible UI experiences.  Trying to edit multiple files at the same time seems to be an afterthought as they favored tab based editor.  I remember it took 7-8 years for them to add with an half ass option for it.

That was one the few reasons why I seek out PlatformIO in the first place. MRS (MounRiver Studio) started out that way, but they quickly turned to Visual Studio Code in their MRS2 release about a year ago. 

While searching for more info, I found this on google, but the actual link was broken. MRS might have fulfilled their GPL obligation, hence the deletion.  Not sure if that was the reasoning for MRS moving on, the end result is actually really good without headaches as Visual Studio Code is under the permissive MIT license.  

Eclipse Foundation

https://www.eclipse.org › forums › index.php

Jun 26, 2023 — WCH IDE MounRiver Studio is violating open-source rules and failing to comply with the GNU GCC Toolchain's GPL License.

Now to meat of the matter.  Unlike my PlatformIO article, I won't be doing a guided tour as everything is pretty much usable as is from installation.  Instead, I'll highlight the difference with a long complain list about CH32PIO: (PlatformIO for CH32V003) that MRS2 addresses:

  • CH32PIO: It is not officially supported by PlatformIO.  It is an enthusiasts maintained project within the confines of the plug-in.  i.e. not as integrated with rest of Visual Studio Code. Functionality is stitched together with scripts.
  • CH32PIO: There are no directory links to the actual library code they are linking to. Quite often I like to refer to the register header files, but have to search for it on explorer outside of the IDE.
  • CH32PIO: The framework options are limited to what they let you use.  So if you are using a framework that have a custom startup code, you are SOL.  ch32fun was a no-go until they added as a framework option.  I gave up fighting for it, but I might give it a try again one of these days.

    MRS2: As shown in the picture below, their project layout is much more transparent. All the files are easily accessible and not hidden away.

MRS2 make a local copy for everything into your project during project creation. Unlike MDK that adds bare minimal,  I am stuck manually deleting the dozens of peripheral files. I code in bare metal and have no use for most of them. I would like seeing bare metal as option for a framework, but I could write a 5 minutes batch file to delete the unused ones.  

CH32PIO hides away those, but they are still compiled along with the project. I ran into function collisions as my own peripheral functions are named similarly as there are only so many sensible naming combinations.

These files won't affect the actual linked firmware size unless they are used.  The compiled is inside the obj directory instead of .pio directory.  In linux world directories that start with a . are hidden away from casual views.

MRS2's local copies opens up a lot of possibilities. e.g. One can mess around with the linker link.ld file to reserve a large area of code FLASH for data storage.  The startup code or the library files can be modified or replaced per project without messing up for other ones.  You have the freedom of a command line compiler, but with a fully integrated IDE for debugging and not having to mess around with cmake/make files.

  • CH32PIO: There are all kinds of market place popups, sign-in requests and other stuff that distract me from coding.

    MRS2 gives you the curated view removing the plug-in market place among the other distractions and give it a more professional integrated feel. Their menu are fully integrated within Visual Studio Code.  I don't miss plug-ins at all and the editor just works the way I expect. MRS2 could use better graphics design though as their chunky pictures and coloring scheme reminds me of old video games of WinXP era.

  • WCH Single Wire SWDIO protocol isn't as robust as other vendors and happens quite a bit when I messed up my code. Quite often debugger has problem starting up.  CH32PIO show me the script file which isn't helpful as it is a an actual hardware/firmware issue. What I usually do is to pop open WCH-Link Utility outside of  the IDE to erase my part with the "Clear All Code Flash-By Pin NRST" as a last resort and that clear the problem.
  • CH32PIO: If you want to mess with something in the chip configuration, there are no way outside of hacking up the download script.  They have since added code protection options, but the options for /RST pin for I/O isn't one.  Not that I want to mess with /RST any more.

    In MRS2, every settings are available in nice popup menus. The Erase All option can be turned off to preserve previous data stored in code FLASH e.g. reserved by the link.ld script.  They even included the options to force wipe the code part of the FLASH chip once or at every download.  

    WCH-Link Utility along with their other utilities are available from the tools parts of the main menu.

MRS2 have slightly more intuitive GUI with the context menu for refresh, numeric bases right where you would expect. PlatformIO doesn't have the refresh option.  Often I had to change the base type just to force it to refresh while it opens another popup menu near the top of the screen not where you are looking at.


MRS2 is getting more and more appealing as they have implemented a polished professional IDE.  There are frequent updates. They fixed the syntax for the Defined Symbol to align with the GCC command line in the last update in the few days when I tried it and just now.

 I hope more chip vendors follow their move away from those Eclipse based IDE.

Update: I've just found out another vendor has migrated from Eclipse based IDE.



Monday, December 1, 2025

Fans & cooling mods


Here are some of my crazy cooling mods.  Some of the original versions were made before my 3D printer.  They were made with cardboard, FR4 and even injection molded plastic from food container or other materials.  I cleanup the mods as an exercise for my 3D modelling.

Exhaust fan for 28mm height clearance for USB drive enclosure

Even if you managed to find a 28mmx28mm fan, it won't work too well as there is very little space for the fan blades. I got around the height by mounting a 40mm fan at an angle. Good old Sine function is useful for something in real life.

I tried glued it down on the base at first but it interferes with the  replacement USB controller module. The new mount takes advantage of an existing standoff for easier removal.

 It require a lot more depth, but I managed to find some space by replacing the original USB controller PCB.


Here is my design in Sketchup.  There is a small piece of filament bridging the 2 upper fan mount that act as the only supports needed for the 2 overhanging mounting posts.

Low profile Sideways CPU fan cooler


There is a glued on heatsink on the Pentium that is designed for mounting a fan on top.  I have decided to mount the fan sideways instead to lower the height profile.  There is a temperature sensing fan speed controller in PVC heat shrink as the old Pentium doesn't need the fan at full speed.

One side of the fan housing was removed in an attempt of converting a regular fan into a make shift blower.  The fan is mounted into an enclosure that channels the air escaping the cut edge passing through the adjacent CPU heatsink.

It is important to have good mechanical support to the modified fan.  The fan is friction fitted to the cover.  There is a slot for the wires to escape.


Cooler fans recycled into Blower

Back in the day, Thermaltake made a tall Mini Super Orb that uses 2 blower type fans that have short deep blades.  The way the cooler mounted to the CPU socket was brutal.  I retired it for some more regular cooler.



I have designed a couple of shroud to turn them into blowers.  The fans are press-fitted to the shrouds.


I broke the blades in the left while I was trying to remove it from the prototype shroud.  I glue it back together with superglue and baking soda.  The new version has a cut out to expose the backside of the fan to make it much easier to remove.



Fan shroud for old mod

Previously I modded an oversized fan from my Ryzen cooler onto a FM1 cooler.  I made a shroud to redirect some of the exhaust towards the Northbridge.  

Horizontal slots on the side vents some of the exhausts to the DDR memory as the new shroud blocks the air flow.  The base is a few mm off the PCB for component clearance.

The shroud is mounted on the right hand side of the CPU fan.  The exhaust is vented to the aluminium heat spreader below.  The low profile spreader was supposed to rely on exhaust from an optional GPU in the PCIe slot but this is a motherboard for AMD's first APU with an integrated GPU.





Tuesday, September 9, 2025

Nostalgic computing weekend

 I got a bit nostalgic last weekend playing with old PC motherboards. Previously I made some metal frame for mounting HDD on standoffs.  I guess you could call that minimalistic open air PC with nothing other than a bare PSU on the side. . It gets tedious having to disassemble the frame to swap HDD. So I designed and 3D printed 2.5" HDD mounting hardware with HDD caddy.  

2.5" removable Caddy on old Dell P4 motherboard

The design is split into a few smaller pieces on top of a frame over the front right hand corner of an ATX motherboard.  As there are no standards other than the mounting holes, some adjustments to the frame might be needed.  

I opted to skip one of the standoffs to allow for long video cards. I even recycling my failed caddy design prototypes. I had to make some extra clearance for the thick power cable.

One of my old 2.5" to 3.5" adapters have no mounting holes and the other one has a flimsy plastic hood.  So  I printed PCB holders blocks for them. I glue them with 0.5mm thick double sided silicone adhesive tape.  

I had to do some cable origami to line up the correct orientations for both ends of the connectors.  This allows me to swap the caddy without having to mess around the cables and connectors.  I used the secondary IDE connector to free up the primary connector.  Thankfully that the PC BIOS is flexible to boot.

My initial design has 2 mounting screws that doubled as stops for the caddy.  I have made some latches with straighten paper clips for the pins.

I broke the fan blade in my DIY Dell Dimension 3000 heatsink fan. I had glue it back together with super glue and baking soda. To prevent future accidents, I printed a resized High-efficiency Noctua 120mm fan grill .  Sadly it has some mechanical interferences, so I had to trim off part of the fan grill to make the latch work.  There was no problems with my other motherboard or the same motherboard without the fan mod.

Sketchup and stl files are available in my github page. 

It is probably a good idea to use PETG for the frame and connector block as the PLA screw threads and fittings would loosen over time.  Threaded inserted could be an option for PLA if there are extra clearance on the motherboard for larger standoffs. There is no reasons why the rest of the pieces couldn't be glued together.

I've just found out that Amithlon runs perfectly on current revision of VirtualBox 7.1.4 r165100.  It was one of those things I kept trying for each of the VirtualBox major revs.  There was something funny about their SVGA driver.  

Amithlon has issues with more than 1GB RAM.  Probably the upper address bits were being used in the emulation for something else.  So that pretty much limited it to much older PC or running in a virtual machine.

It feels snappier than my Barton XP3000+ CPU.  This is nothing short of a miracle considering the emulated Picasson96 SVGA driver on the Amithlon MC68040 emulator on a linux kernel in a VM running its emulated (finally working) VGA driver.

My setting:


Monday, August 18, 2025

Corsair R100 Drive Caddy replacement

I broke the other ejector handle of the drive caddy yesterday.  Both of the handles broke off separate times at roughly the same spots where they narrow out for the stubs.


I have made some reliability changes to the ejector handles.  They are now separate and uniform so the bending stress is spread out over the entire length. The cut off part of the rail also acts as a stop for the levers.

I have very little reasons to mount a 2.5" drive on the same caddy as the SATA connectors do not line up with my Corsair 100R Hotswap style drive bay upgrade.

Files at my github project page