Hardware

Manually Flashing a AsRock BIOS

At the start of 2022 I went about building a new desktop. The system came out well in the end, and I am still using it although it has always had one issue that I mentioned back then… When the system tries to reboot it shuts down Windows, then the fans spin up, and it never resets the CPU. I always assumed this was due to the fact: mistakes were made and when I needed a BIOS update to support the AMD Ryzen 5800X on that motherboard, I flashed the X570 Pro4, NOT X570M Pro4 BIOS. I decided the time had come to fix this and flash the board back to the proper BIOS.

Note: I will use BIOS and UEFI interchangeably here, I know they are technically different.

AsRock gives out the BIOS updates, and you are supposed to load them on a USB drive and select the “Instant Flash” utility in the UEFI menu. The issue is the system thinks it’s a X570 Pro4 (not M), and refuses to flash to the M variant. I saw some people on the internet mention you can use the “AMIBIOS and Aptio AMI Firmware Update Utility” utility to force a BIOS flash on the system and get around this. I did that, and then… the system never booted again… I don’t know what went wrong, or if the utility flashed everything correctly, but I couldn’t get the system to boot.

This led me to another rabbit hole, flashing your bios with an EEPROM writer. There are several to choose from, and of course I got both. The CH341A, and T48 TL866-3G programmers. I tried for a while to get the CH341A to work, and it may have in the end, but I had a better time with the TL866 software of XgPro.

I unplugged everything and took out the BIOS battery. At first, I tried to use some of the tools that came with the flashers to grab the chip on the motherboard. Here was the first hurtle, the chip was a surface mount part that made it very difficult to connect to and every time I tried to read the chip I got an error. Then I found this post, https://www.reddit.com/r/ASRock/comments/1cz1bcz/guide_asrock_spi_tpm_j1_bios_ph_pinout_for_ch341a/, which mentioned the SPI_TPM_J1 header on the motherboard actually hooked directly to all those pins and could be used to flash the chip much easier.

Pinout from Reddit

This diagram was the key to getting it working, which pins went to where on the motherboard.

Connecting to the pins proved to be a bit difficult because of how small they were. Turns out they are 2mm pitch instead of 2.54mm (more standard), so I had to order https://www.amazon.com/dp/B07FKLKM7L as one of the commenters suggested to be able to connect easily to the pins. Then I did some janky stuff with jumper wires to get it into the TL866 programmer.

The programmer also uses Windows-only software, and I was on my Linux laptop. I installed a Windows 11 VM and forwarded the USB device to use the software. The Reddit post mentioned that they had a similar motherboard and needing to use the 1.8V adapter for their Winbond W25Q256JW BIOS chip. I assumed the same but when I went to read the bad BIOS back, I was given “ID Check Failed 0xC2 25 39”. Which turns out to be a 3.3V Macronix MX25L256, with Claude assuming it’s a MX25L25673G. I pulled out the 1.8V adapter and hooked right to the chip. I still failed to get an ID with the built in tool, and when I forced the chip type, I was told one pin wasn’t connected right. I adjusted the pin and hit READ again and got a hit, the ID didn’t match the software’s record for that chip type. I ended up disabling ID Check and then doing a read. AND I GOT DATA! This showed my wiring was good enough.

From there I went and got a new BIOS from AsRocks site. Seeing the BIOS file was exactly 32MB, and the BIOS was 256 megabits = 32MB, I felt confident that I could write this whole image and it didn’t have a header or something that would break directly writing this image to the chip.

I hit program and crossed my fingers. After a minute of erasing, then a minute of programming and verifying it said it was done. I unplugged my laptop, and plugged power back in. The system came on when I hit power, but again no POST. Then I waited a minute, and it powered off, this time, when I powered it back on the system came to life with the AsRock UEFI screen! I had to re-enter UEFI settings but we are back!

The last and final irony… on the correct BIOS, up to date, the system still fails to restart…

The High Nibble Cromemco Z-1 Replica

The High Nibble is back with another fun retro computer kit. This one of the Cromemco Z-1. I reached out to the creator of the kit when it first went up, and he asked if I was sure I was interested. The kit is 99% the same as the IMSAI 8080, including most of the components except the acrylic panel and new firmware. The kits are so similar the PCB for the main board is the IMSAI 8080. I enjoyed the last one so much and wanted to support the creator (not to mention a new kit means more blinky lights on the shelf); thus, I ordered the new kit.

The kits are not cheap at $300, but come with everything you need, including a ready to go controller. The packaging is done well with individually slotted spots for each switch and IC in cardboard. The metal case is a nice touch. And just like before, the firmware is fantastic. You get a full web interface, external serial ports, the gorgeous front panel, and the system can update over the air update via Wi-Fi.

I won’t go too in-depth about the kit because it is so similar to the other one. The soldering is not too bad, the process starts with one small IC that has to be soldered in the front of the pcb, after that things like sockets and LEDs are easy, large, and straight forward.

I got a new soldering iron, the Pinecil from Pine64. This was my first project using it and I found it delightful. It’s smaller than my old iron, making it easier to handle. It’s advertised as a “smart” soldering iron which means when you put it down in a holder it quickly cools when not in use. A very nice safety feature.

The parts of the last build that were difficult are here too, having to put the system together as a sandwich of acrylic and circuit boards it’s a bit tricky, but once you get it in the right spot tightens up easily. Tape helped keep the build aligned during assembly.

The website for the project has a lot of good information, https://thehighnibble.com/cromemcoZ1/. There’s also a helpful YouTube video, same one as the IMSAI kit, that walks through the construction step-by-step.

The main step that gave me an issue was when you get to Testing, the LS2 light would not come on. After looking in the forums, https://github.com/orgs/thehighnibble/discussions/120, turns out that is a difference in the firmware, and it is not supposed to come on. With the video being for the other kit, it is not mentioned.

Overall, another great kit, and another fun system to add to the collection!

Dell 316SX (Intel 386) Restoration

I recently got around to restoring a Dell 316SX—my first childhood computer. It’s a 386SX that lived in my parents’ attic for decades, and reviving it was a journey full of debugging, power supply replacing, and data recovery.

Early Memories

This computer was the first computer I had growing up: a Dell 316SX, with a Intel 386SX. I remember being little and playing Sesame Street games on Prodigy on a parallel port dial up modem (I need to see if I can find that). Shout out to the people trying to bring Prodigy back, https://www.vintagecomputing.com/index.php/archives/1063/bringing-prodigy-back-from-the-dead. There is a photo of my mother pregnant with me, playing the original Sim City on this computer. I always knew I had this computer in my parents attic, and one day I would need to get it out to play with it. Now that I have a bit more space to work on these projects, I got that system (and an old 486DX2 that someone gave me well past its prime) to play with.

More will come of the 486 on here, but that one got going pretty easily and is my go to machine since it has 5.25″ floppy, 3.5″ floppy, a CD-ROM drive, and its hard drive died so I gave it an SD card reader. That makes the 486 very useful; it also has a ton of ISA slots and is easy to work in.

I found a catalog with this computer in it! A PC World from 1990, page 27! I think the monitor is long gone, being a big heavy thing to store. I know my parents got it through a program at one of their work that discounted computers so people could work at home.

I am guessing this was the 40MB VGA Color Plus system. This one also has 4MB of ram, which would have been added on later.

Powering On

Anyway, back to the Dell 316SX. I could do the right thing and check all the capacitors and everything in the system; that’s what I should have done… So I turn the system on, and I get the familiar fan noise, and the 1990s smell. But no beep, no post, no nothing. The floppy drives don’t even attempt to seek. I left it for some time hoping that the capacitors would reform on their own, and come back. No luck.

I took the case off for the first time in 30 years or so, and it all looks in good condition. No rust or corrosion from anything leaking. Below are some nice photos of the board and the system. It is a Dell 316SX (no math co-processor) Motherboard revision B03. (I had some glare on the board, so I uploaded several photos)

My first thought after chatting with ChatGPT was that this system was old, and had a Dallas clock chip. The Dallas DS1287 is a real-time clock with built-in battery — a common failure point in old PCs because the internal battery can’t be replaced easily. The internet said some 386 systems will fail to post if this chip is completely dead. I order a replacement (https://www.ebay.com/itm/134217827379) from the same vendor I got the PS2 Serial adapter from. Wait a few days, it comes, pop it in AND… nothing…

At this point I figure we are probably looking at a power problem. This system is 35 or so years old, its big capacitors failing would not be a shock.

Power Supply Restoration

I don’t love dealing with power, but here we are. I got the multimeter out and started probing the connections I could see. This is an older power supply than anyone today is used to, this is following the original IBM AT standard, minus the fact that is a seemingly proprietary Dell header on the motherboard. For anyone with the same system, the connector is a MOLEX 09-50-8121, more on that later.

Reading the motherboard pins +12V, +5V looked good, -5V, and -12V looked a tiny bit low, but within tolerance for a system like this. I popped in a ISA/PCI diagnostic card and see that the RESET line is holding high, and the CPU is never being released. Then I probed the last line on the motherboard PSU connector, POWER GOOD; this pin goes high once the power supply has all the lines at a good voltage, releasing the processor to start… processing… That line never came up for me, and thus never released the processor. I opened the power supply and saw it was 2 boards with many wires going in-between them. I may eventually repair this power supply, but I do not feel like tackling that whole thing right now. I put that power supply on the shelf, and started the task at building a new one to meet this computers needs.

A while ago I bookmarked this device, https://www.tindie.com/products/dekunukem/picopsu-adaptor-for-ibm-5155-ibm-pc-compatibles/, an ISA card that can replace a power supply in these old machines. Looking at that I thought it would be a good place to start. I didn’t want to use this exact thing here, because the Dell 316SX only has 3 ISA slots, and I didn’t want to lose one to power. That brought me to 3D printing a bracket to hold whatever parts I needed for this power supply. The original power supply was a 85 watt, Astec SA85-3407.

The low wattage supply was neat because there are tiny modern supplies that can do 200ish watts. They are a bit scary because they are an exposed power supply delivering 200 watts. They also deliver ATX power, not the AT power I need. These days there are cables to convert between the two standards. Yet, again, the Dell used a specific MOLEX 09-50-8121 header, which I found on Mouser for $0.92. I gathered up my adapter cable, and the new header, and a cable kit from Amazon for Molex connectors; and spent the evening rewiring a new header, very slowly and carefully. I checked every pin several times to not spell doom for the system.

Its also interesting to point out, with the PicoPSU, it takes 12V DC in. This helps it be smaller and cooler, since the AC-DC conversion is done with a brick outside the chassis.

Then I plugged in just the motherboard, and with the power supply held in a little soldering clip, hit the power. And the system came up! Well at least I got video with the BIOS showing up! Plugging in the diagnostic card I saw +12V, -12V, +5V were all good, but the card said 3.3V was failing. That’s odd, 3.3V is not a voltage I provide. Turns out the motherboard uses the -5V rail to create the 3.3V rail. Searching online shown that -5V wasn’t really needed for anything, but its part of the ISA spec and some Sound Blasters and network cards need it, which means I wanted to have it. It’s worth noting this rail is used in very little quantities, the original power supply had .30A for the -5V line max. While the ATX standard mentions -5V, its not longer used in modern PCs. Thus, no modern power supply tends to give out the -5V. I got a step down converter that can do negative voltages and stepped -12V to -5V. Wired that in line, and I suddenly had all the power rails I needed!

Now that we had our semi-sketchy power situation working, I wanted to design a bracket to drop in where the old power supply went and could hold all these pieces nicely in place. I ended up working on a cover to mostly protect myself from the open PicoPSU running at the heart of the system. I added a fan with a speed controller as well, since the original power supply fan in the system was the only airflow the whole computer has. Then I added another fan to the front of the chassis. The system originally only had the one power supply fan, and when I took thermal measurements some of the chips were getting toasty and I thought another fan couldn’t hurt.

One last fun fact about this old power situation. The old computers didn’t have “soft power” like we do today; where you hit on and it tells the BIOS to start booting. This system had a big ON/OFF switch in the front with mains voltage (120V for the US) going to it. In replacing the PSU, I swapped this for a ATX, low voltage on, switch.

Video

While the Dell 316SX does have standard VGA on the back, there is not a spot for pin 7; the second pin in the second row. If you lookup pinouts for VGA online, this pin is either called “green ground” or “not used”. These days even if not used we include a spot or pin for it and not connect it. This machine has no spot for a pin. I had to get a VGA cable, and cut the pin out; allowing the cable to plug in.

Data Recovery

Now we had power, and can POST. The Dell 316SX had a Seagate ST-157A-1 – 44MB IDE/ATA-1 HDD; and a Hardcard II XL – 100MB ISA card. The first thing I wanted to do was get a backup of each of these storage devices just in case after 35 years they suddenly died. The Hardcard was easy, I moved it over to the 486 I had, used an old copy of Norton Ghost, and captured the drive no issues.

The hard drive was a bit harder since the 486 is old enough it can only have 1 drive on its primary IDE channel; that left the secondary channel. In trying different setups I realized that the Dell 316SX did not have the correct hard drive parameters entered when it was in use. This means, when I tried to read it on a machine where I couldn’t set those settings, I wouldn’t get the correct data back. I HAD to have the disk read from the primary 486 IDE channel where I could edit the parameters to be incorrect on the 486 like it was on the 386. I got an ADAPTEC AHA-1542CP ISA SCSI CONTROLLER (from this seller), this allowed be to boot a DOS floppy, load Ghost, and image the drive to the new SCSI device, with the correct – incorrect hard drive parameters. This SCSI card has a full BIOS on it, allowing DOS to reference and even boot off of it without a driver.

The true savior here was Spinrite. I didn’t realize the hard drive parameters were causing my issues, and I thought the drive had just died. I figured I would give one last shot with Spinrite before calling the drive dead, and the data lost. Before I could start a scan, Spinrite popped up saying that the drive wasn’t recorded correctly and I should edit those settings!

After capturing images of both devices, I started cleaning the system, taking some photos, and putting it back together. One last test of powering it up, and the Hardcard died. It would no longer POST, freezing when the card tried to spin up. I am very glad I captured an image while I could! I copied that image into an image for the BlueSCSI device I had, and we were back in business! The Hardcard started giving “1703(K) — Hardcard IIXL Error at BIOS address C8000h.” which the internet said was the drive had died.

For those of us who haven’t done that much with MS-DOS in years, here is a reminder how partitions work (this is important because the old system had the Seagate drive as C and E, then the Hardcard as D); all Primary partitions that are accessible to the BIOS are added as the system boots, THEN all extended/logical partitions. This means, with the internal drive coming up as C: D:, then the Hardcard as E: I had to figure out how to switch them. In the end, it ended up being that the Hardcard was coming up as a extended partition, and it needed to be a primary one to force it earlier in the order. Turns out the Seagate drive had 1 primary, and one extended partition. After doing that change, and copying all the data back the system and all the links within Windows 3.1 came up correctly.

Cards

I got the Dell 316SX with a Hardcard II XL – 100MB ISA card and a Sound Blaster 16. I put some deoxit into the volume control knob of the Sound Blaster, it had the crackles when you moved it. That cleared it up.

I mentioned swapping the Hardcard for a SCSI controller. While I was in the system I also decided to get a 10MB Ethernet controller off ebay and put that into the system to have easier file transfers in the future.

Drives

This Dell 316SX has a 5.25″ drive bay, and a 3.5″ bay. Both are working happily, but I did give them some lubricating grease on their rails after cleaning them up.

Case Cleanup

I put some time into cleaning the case. For being ~35 years old, it was looking in good condition.

Conclusion

In the end, I am very excited to have my childhood Dell 316SX back up and happily running. It took some work, with non-stop issues along the way; but in the end, its working with most of its original hardware. Below are some other photos I have taken. While I was working on the system I ordered 4 more 1MB SIMMs to bring the total memory to 8MB. I figured I would max it out while I had the system open. The only downside is the POST checks all the memory and this slows it down a bit.

I uploaded this playlist of a few videos I took working on the computer; they are in a playlist below.

PS/2 to RS-232 Serial Mouse Converter

As part of my LAN Before Time rack project, I’m setting up classic PCs with a VGA and PS/2 KVM to manage them. However, one of my systems—a 486—lacks a PS/2 port for the mouse. A simple PS/2-to-serial adapter wasn’t enough; it required a proper signal conversion to work.

After some searching, I found this adapter kit on eBay: PS/2 to Serial Mouse Adapter. It’s based on an open-source project: necroware/ps2-serial-mouse-adapter. The kit didn’t include instructions, and the project assumes you already know how to assemble it; I decided to document my build process step by step.

A Quick Note on KVM Compatibility

This adapter worked flawlessly when I plugged a PS/2 HP Laser Mouse directly into the 486. However, when connected through my KVM, it worked for a few seconds before stopping. After some digging, I found a pull request from last year that mentioned a KVM fix. Flashing that updated firmware completely resolved my issue! Unfortunately, the main repository hasn’t been updated in two years, so hopefully, it gets some attention.

What’s Next?

Below, I’ll walk through assembling the adapter. After that, I’ll cover how to flash the updated firmware using a USB-to-TTL converter. These converters are cheap and easy to find—here’s the one I used: USB to TTL Adapter. Finally, I will show a case I designed and 3D printed for the device.

Steps

  • Put the serial connector through the top side of the board and solder it in place on the bottom, starting with the mounting legs and using plenty of solder. These take a lot of the strain of the connections. Then carefully do each of the data pins, making sure not to bridge any.
  • Insert the lower chip socket, and solder in place on the underside.
  • The Arduino Pro has 3 different parts we need to solder. The first is the head with the 90 degree pins at the end. This will allow us later to flash the controller if we want to move to other firmware. Put those through the top (the side with the chip) and then solder them in the underside.
  • Next, put the Arduino header pins in the bottom. I put them into the header connector to hold them in place. Do not put too much heat on each pin with the plastic part below. (Not my best soldering job)
  • Solder in the 10k resister, here I am soldering it on the bottom while it went in through the top. After it is in, cut of the excess legs.
  • Solder in the PS/2 port, use a good amount of solder on the mounting points so it doesn’t move when inserted, then solder the data pins.
  • Solder in the micro-usb port, careful of the tiny pins.
  • Add the jumper pins, solder them in.
  • Now time for the capacitors, these are polarized, note the right side of the silk screen is white that should line up with the white side of the cap. (the shorter leg side)
  • Finish up by soldering all the pin headers for the controller to sit on the board.

The board should now be complete! If you bought it from the seller I did, (who has been great, and I have bought other items from) then you have the main repos firmware on it. I won’t go too far in depth for this, but if you clone the fork down you can then use Platform.IO to flash the firmware. There are guides out there to do this on. Platform.IO is great when doing Arduino projects.

If you go the same kit I did, then it comes with a “pro16MHzatmega168” not the “pro16MHzatmega328” used in the Pull Request. Change the two lines where the 328 is mentioned to the 168-model string. If you do not, you will get a “timeout connecting to Arduino” when attempting to flash.

As mentioned, you need a TTL converter, then to flash the chip. The TTL converter (which I hadn’t used before) pins actually line up with the pins on the Arduino Pro. You need to hold it there for a total of 30 seconds while it flashes. You can just stick the header pins of the Arduino through the holes of the converter, then hit send via Platform.IO.

Flashing the new firmware on my messy desk, I did not need long cables like this…

3D Printed Case

This is a device I will keep behind my old PC, and I didn’t want it to be a raw circuit board. I didn’t see any cases to 3D print, so I put one together. This was the first time I made a case that used little feet to snap the top and bottom half together; no screws! I also put little towers in to hold down the PCB in place. It took a few revisions, but I think came out nicely. There is also a little window to hit the reset button if needed. The black case was the second revision, the white case is the first.

Model: https://thangs.com/mythangs/file/1301661

Shadow Box

I enjoy working on projects that can mix a bit of art with tech/electronics. I was playing around with the idea of doing something with a shadow box which could go up on the wall. Something to do with lighting and an ESP32 came to mind. The eventual goal was to get the ESP32 onto the Wi-Fi, allowing you to control the lights and mode of a device from your phone and perhaps HomeKit. I got part of the way there, adding a button to change modes; but then I got off on another project as I am to do. I wanted to document my progress, and state for later; as well as put the code and designs up online before I go off and work on a more ambitious project. 

General Design

I started playing around with 3D designs, so that a light could shine through; the designs were really 2D, but I used SolidWorks to do all the modeling, then adjusted the heights until the light came through well. I glanced around online at artwork people had, as well as periodically looking at Dribbble.com. I came around to the idea of a skyline; a city at night where the different buildings could light up, and blink. Then the idea added on; the buildings could blink to music, adding a microphone onto the controller would allow the lights to reflect the volume of audio. 

I at first tried to print out individual, large, buildings and this proved to be too much and take a very long time. If you look at some of the below early renders, you can see how complex those buildings are.

I decided on the New York city skyline and started modeling the buildings. I needed a mix of decent sized windows, so the 3D print did not take forever; and small enough that the light effect came across well. I modeled several buildings, a few different ways, and did test prints. A few times I printed them taller than the printer could go, and that made me split the buildings in half. I did not like how putting them back together looked and decided to shrink the buildings a bit. I currently have a Creality Ender 3 Pro, making my bed size roughly 200mmx200mm.

Electronics

The plan was always to use an ESP32; I had not used them before and for a few dollars getting the capability to use the Arduino IDE along with Wi-Fi and Bluetooth made me interested. I also had not done much with LED strips before either. I dabbled with both on my workbench, and decided for this purpose an LED grid would be easier than working with strips. Those can be had for a few dollars online. I also got a diffusion sheet, a thick sheet of plastic that softens the light from the LED. 

I worked on the Arduino code for a little while. I ended up writing a bit of code that averages the volume over time from the tiny microphone I hooked up to the ESP32, and then uses that to equate to a light level on the LED grid. The different columns in the grid matched different frequency ranges; this ended up giving a neat lighting effect with distinct types of music triggering different buildings. I need to calm it down a bit, but I didn’t put enough time into the code to get it exactly where I want it. Another code the box offers currently does a much much slower fade across the LED grid, but its sensitivity is too low, and the only way I got it to react was tapping the box; this can be seen in the video below.

I also used this as an opportunity to use KiCad for my wiring diagrams. The diagrams for this are not that complex, but I wanted to be able to quickly reference what went where. All these files are in the Github for the project. There is a button on the side of the box which cycles modes the system is in. There is an always on light, a mode to go to the music/audio in the room, slow light effects from audio (but not sensitive to the mic enough), and last was going to be a Wi-Fi mode (but I never got that working). I was going to mount an SD card for longer storage of assets for the Wi-Fi network; with the Wi-Fi not being implemented, this needed up not being needed, but a good learning experience.

Wiring diagram

There were small issues along the way, like how I wanted to make a power bus come in, and 3D printing little risers to hold everything off the back of the shadow box enough to get a good effect through the front window. Those were slowly overcome, mostly by trial and error, and I worked through the project. I fed the whole thing from a 5V wall plug. This would give power to the LED grid, and the ESP32. 

I ended up simplifying the building models to speed up prints, and it generally looked nicer. The bigger windows were easier to print, and the effect functioned better. I attempted to make a mount for the LED light grid, that would have a front snap onto it to lock in the grid. I at first made the mounts too small for this, then got lazy and used hot glue over pushing forward small snapping plastic pieces.

In the end, I think the project came out well. I thought I may make more of them, for different cities, and then have a wall of them; and get the controller to the point where you could Wi-Fi control it. Except I have another project idea that has taken me away. Perhaps I will one day return to this, until then here is a video of it running (actually 3 videos spliced together), and the files will be on Github. I don’t have a ton of photos from putting it together, but here are a few.

Github: https://github.com/daberkow/shadow-box

Parts Used (I am not including things like wire, or little common parts):

Button – https://www.amazon.com/dp/B07KX24WWS

Microphone – https://www.amazon.com/dp/B092HWW4RS

Mat – https://www.amazon.com/dp/B00BN1XIR2

Diffusion film – https://www.amazon.com/dp/B09XGZP71S

Shadow Box (8×10) – https://www.amazon.com/dp/B08V5RR6D5

LED Grid – https://www.amazon.com/dp/B09KB7WC75

ESP32 – https://www.amazon.com/dp/B0B3JD1K1T

Homelab HCI Storage Adventures

I have written before about storage for my homelab. I have a NAS; and then for the VMware cluster, I had USB 3.0 attached 3.5″ hard drive bays. The hard drive bays shared a single USB 3.0 5 gbps connection. And being that storage has come down in price, these were SATA SSDs. Having (at the time) 4 SATA SSDs sharing a single USB 3.0 connection was not ideal; not only because of the single pipe, but because of the overhead of USB. When the vSAN these disks hit any more than idling IOPS number, latency would go through the roof. That was the main item I was attempting to correct.

Having used “disk shelves” before at work, I thought I would try to make a compact version for my homelab. I figured, all I need is an away to connect the SSDs over external SAS, an eSAS HBA, and some power. This project ended up going on for far too long and ending with a much simpler solution.

I started where any good project does, finding the general parts I will use for the project. I came across this adapter. It allows you to put 6, 2.5″ drives into a single 5.25″ DVD bay. Each drive gets its own SATA connection, and it even has fans on the back to cool them. I started designing the case around that. Then I found this little adapter to go from 2 internal SAS cables to external SAS. My thought was externally I would have eSAS into my “server”, and then convert that SAS to 4 SATA connections each.

Now I needed to start creating a case to 3D print. Every other eSAS enclosure I found online was HUGE, I wanted something small that could fit the power supply, and the connections I needed. This went through many… many… iterations.

Some of the prints didn’t come out great; I spent some time getting the printer dialed in.

This was a bad path I went down; I was hoping to cut down the plastic and thought I could have levels and it stand on columns, this turned into much more of a mess (and hard to get to stay in the right position) than waiting for the bit prints to just finish.

Next I had to figure out power. Each drive I had can pull up to 1.5 amps at 5 volts. This means I need 9 amps on 5 volts. That is a good amount of power on one rail. I thought I could use a standard PC power supply, with a cable to turn it on with a switch. These PSUs were big and made the design a bit bulkier. The next idea was to just use a wall power supply, a 5 volt one with enough amps. Also, I planned to only use the 4 drives per unit I had, so at least at first, I could cut the amp requirement down.

Now I ran into a new problem. The fans for the drive holder ran on the 12 volt line of the SATA cable. The SATA cable only needed 5 volts for the drives but needed 12 volts for the fans. I got a voltage converted and wired it in. I added a switch so the whole unit could be turned off and on.

Finally, it is time to add the HBA (not raid controller) to the Dell Optiplex and bring the drives up. This is where everything fell apart. The Optiplexs REALLY didn’t want to start with the HBA controllers. I ordered MANY off ebay to try. Older gen, newer gen, different chipsets… Sometimes they would see SOME of the drives on start-up, sometimes if I bounced the container, then it would see the drives, but there was no consistency. One of the HBAs wouldn’t allow the desktop to boot at all when the card was in. Someone online mentioned, if you put tape over one of the pins on the front of the PCI express connector, the PC won’t be able to read the bus ID it doesn’t understand, and this will allow it to boot. I couldn’t believe when that worked! It still had issues seeing the drives, but interesting none the less.

After all of this, I decided it was too much hassle and I wanted something more reliable for the system. I did what I should have done from the start… Used the ports the system already had in the systems… I went from 4 SATA SSDs to 3 SATA SSDS, and 2 NVMe drives. One in the onboard NVMe slot, and another in the PCIe x4 slot that I had. I tried a PCIe card that allows 4 NVMe drives by PCI bifurcation. This is a newer feature which only a few systems support, and these Optiplexs don’t. In either PCIe port. I also want to flag, even though the chipset in these says it supports 128GB of ram, and I can put in 32GB DIMMs and they work fine. The max on the Optiplex 5050 and 5060 is 64GB. I also added a small Noctua fan to the front of the case for additional airflow.

In the end, each of the VMWare nodes has 3 roughly 1TB SSDs, then 2 NVMe drives, one for vSAN cache, one for normal storage. I am booting the nodes off a USB drive in the back, not the most supported config, but has been working well for me. The machines have a dual 10gb nic in the x16 slot, then the secondary NVMe in the x4 slot.

GameCube Mods

I have… many… older video game consoles. One thing I like to do to them after they have ended support and enter old age is add available mods to them. This offers updates after official support and features; such as downloading discs I own to a memory card or hard drive. Many times, older console CD/DVD drives will start to die, and with the way some systems (Xbox specially) cryptographically pair the motherboard and CD/DVD drive you can never replace the drive. Having a GameCube and recently seeing the amazing work of Maciej Kobus on PicoBoot, I had to give it a go. PicoBoot uses a Raspberry Pi Pico (an Arduino competitor) to jump into the boot process of the GameCube and load Swiss, the GameCube software manager.

The other piece of hardware that started me down this whole path was the LaserBear BlueRetro replacement controller board. This board replaces the board controllers plug into and allows you use to modern bluetooth controllers instead! You can pair any Xbox/PS3-5/Nintendo controller with bluetooth to the console, and when you do the controller port lights up blue!

This introduced me to the BlueRetro project, and awesome project which aims to allow you to use those modern controllers on classic consoles! There are many sellers using this open-source code to make products, many of them on Aliexpress and other stores. The most impressive thing is the adapters tend to be a reasonable price on Aliexpress from many vendors with good reviews!

The Laserbear mod is straight forward, and they include a great guide. It involves removing the old controller board, placing the new one’s ribbon into the slot, and then moving 2 power wires. Very straight forward, no soldering.

On the flip side is the PicoBoot install. I have not used a Raspberry Pi Pico before; I am more familiar with Arduinos and older microcontrollers. The code uploading method is very neat, you hold a button, then the device mounts as a drive on your computer. you copy the binary file onto the drive, and when you eject the device it writes the payload. The next part of the install involves soldering, and this soldering is a bit tiny. The install is only 5 wires, but you are working on a small board, with wiring that cannot be that long because of how the mod works with the boot process.

Luckily there are many guides on YouTube on how to do this. And on the first try I had it working, and in the end stuck it behind where the BlueRetro lives. For PicoBoot to load, you also need a SD card adapter for the GameCube. Those are available on eBay/Amazon/your local mod shop for cheap.

The PicoBoot in the end was a little too close to the controller board for my liking, I added electrical tape to the top of the Pico to make sure no contact was made between these lovers. This was a fun afternoon, and now I can get a longer life out of this little guy. I also got a HDMI cable for the GameCube, the model of GameCube I have allows for digital out, but those cables are expensive so I am using the analog out right now.

Optiplex 5050 Back view

Dell Optiplex 5050 Micro Windows Server Installation

Recently I was able to pick up some Dell Optiplex 5050 Micros for $60 on eBay. These are tiny machines, with an Intel i5-7500T (4 core/4 Thread) CPU, 8GB of ram, and a 256GB SSD. For $60 they needed a power supply, but those are easy to come by. My plan was to replace my aging Intel NUC that is the core domain services for the house (AD, Radius, CA) and perhaps the aging firewall, if I can figure out how to get a second NIC into the system, more on that later.

My philosophy when running a standalone network (even with internet access) is to have at least 1 of your Domain Controllers (DCs) be a physical box at all times. An alternative is a dedicated hypervisor with local disks, but anyone who has tried to start a VM manually on VMWare knows how painful it can be without any interface to the system other than the command line. In addition, these days it’s easy to make all the DCs virtual, but if you ever have to cold boot your environment; then you run into not having DNS. Following not having DNS, things like vCenter and vSAN can’t come up cleanly, and there are more and more chain on effects. Having a physical machine allows you to bring DNS and core services up first, then start all other services that rely on your domain.

The first task I had was to get one of the Optiplex 5050s ready for Windows Server. I started with upgrading the ram to 16GB, because I had it laying around. After that, since this is an eBay purchase, I updated the firmware/BIOS and ran diagnostics before it touched the home network. The seller was nice enough to install Windows 10 Pro on the machine, which has a license in the BIOS; but I formatted the drive before starting that instance. People are generally nice, but who knows what was in that image. After getting Windows Server 2022 installed I hit my first issue. Server 2022 does not have a driver for the Intel i219-V that is in this chassis.

I tried getting the drivers from the Dell site, but Windows refused to use them because they were for Windows 10, and not Server edition. My current fix for this was going to select the driver, telling it to “Browse my computer for drivers”, letting me pick, then manually selecting the “Intel” “Intel(R) Ethernet Connection (2) I219-V” driver. I had a USB ethernet dongle that worked for me to get online and at least be able to see that driver. Now the box is happily online. The main issue with this technique is that I keep getting an “Optional” Windows Update for an updated driver that seems to never install. I think that is because I installed the Dell driver, but it never runs correctly.

Another thing I try to do with most systems, especially the systems in charge of security is get Virtualization Based Security running. This is a newer Windows feature, where core elements that need to maintain secrets are run in tiny Hyper-V containers. The user never sees it, but this gives added protection to the system. If you run “msinfo32”, you can get an output of its status. Most of the time, you need to enable chipset virtualization support; then add the system feature of “Host Guardian Hyper-V Support”. On older systems (Windows Server 2019) and desktops, I think it’s just called “Hyper-V”, then you get these features enabled.

On paper this machine is 78% faster than the Intel i5-3427U, and that makes a world of difference. The old system took a while to boot, and a while to backup, which is what spurred me to upgrade. This system feels amazingly fast for a $60 system. Keep in mind that it cost less than the Raspberry Pi 4, has Intel, and didn’t have to wait the years Raspberry Pis take right now!

I have the main DC run domain services, DNS, Network Policy Service (RADIUS), and certificate services. For the first two, I just had to install Domain Services and DNS and the system started acting in that role. For NPS I exported the config from the old DC, and then installed the service and imported onto the new one. As a reminder, Domain Services has to be installed first, or if you have NPS/Certificate Services installed, then try to do Domain Services, it will tell you it can’t install. Certificate Services, I added a new CA, stopped the old one’s service, and removed it as an enrollment agent in ADSI. My 802.1x and other certs given out by GPO are short lived, around 90 days; I will wait for the old ones to expire and systems to naturally get newer certs.

The second system I got; I thought I would try to do some hardware hacking. My hope was to repurpose it as a firewall for my aging Dell Optiplex 990 from 2011. To do this I would want to add at least 1 more NIC to the system. I ordered a 1gb ethernet NIC that goes where the WLAN chip goes. At first it did not show up in Linux and I was worried. Turns out the system bios had “wlan” disabled, and by enabling that, it turned on that PCIe channel. Then the card would show up. Having mounted the ethernet port in the extra serial blank this system has did make it look very clean and easy. I had to tuck the wire away as it came from the front of the unit to the back and had the sata drive siting on it. After playing with it a good amount, removing the card, reseating, putting electrical tape under it, I was able to get the line up, but not reliably at 1gb/s, it tended to go down to 100mb/s a lot in coming up. While things like loosening the screw holding it down, and putting electrical tape under it helped, the system was not reliable enough for me to feel comfortable using it for homelab-production. I shaved down the connectors at the end of the card, with them being that large, the screw couldn’t easily get between them. That did not help that much.

In the end I am enjoying the one system as a new DC. And eventually will figure out what I want to do with the other one. With having a NVMe slot, and SATA internally, in addition to being able to go up to 32GB of ram on a low power budget they are very capable little machines.

THE µKENBAK-1

Back again with another retro computer kit from the same creator as THE ALTAIR-DUINO, a small quick kit in the µKENBAK-1. The µKENBAK-1 with the µ in front denotes one of the earlier versions of the kit. This is smaller than the original computer kit, compared to the full-sized replica or nanoKENBAK-1 now offered by the creator. This is a small, and simple kit. Running off an Atmel processor (same as Arduino), this little recreation offers a fun, simple front panel, and relatively quick assembly.

Compared to some of the other kits that have been posted here, this one is straight forward to put together. While you have the classic soldering, the kit is all through hole components and is a pleasant hour or so to put together. The most time for me in putting the kit together actually came down to getting the PCB with the stand-offs in the case and lined up with the back holes. This proved to be a difficult, and time-consuming process. You need to pre tighten them on the front panel, which then slides into the case, and line them up with the back holes. Between the standoffs being plastic and wanting to strip, and them wanting to wiggle all over, most of my time went into this instead of soldering. In the end, I got 5/6 in place and called it a day.

Evil Stand-Offs

The creator of this kit shows his experience in creating these kits, in little details, which make the kit a nice experience; one example is the usb extension cable which gives you an easy connection out the back is the perfect length to do the job but not be in your way. Another is the instruction booklet coming with a bunch of examples on how to use the computer, right after the assembly instructions. These instructions come in a nice spiral book included in the box.

The creators website, https://adwaterandstir.com/kenbak/ also goes into detail about the creator of this machine, (the original one in the 1970’s), and its history.

This is one of the easier kits I have done, but enjoyable in its ease to put together. I would recommend this kit to someone who is looking to get started with these kits.

Ruckus ICX 7150-C12P Switch Repair

A while ago I purchased a Ruckus ICX 7150-c12p off eBay to use at home. It gives 14x1gb/s ports, and 2 SFP+ ports. The SFP+ ports are limited to 1gb/s by default, and there is a honor system license for upgrading them to 10gb/s. These switches go for $600 – $1200 depending on where you get them and which license you get with it (1gb/s vs 10gb/s). The switch is also POE, and can do 4 POE+ (30 watt) ports. I had one of these switches and it worked great. I wanted to get a second one to replace the WiFi link I was using across my apartment with a fiber link.

Instead of paying ~$250, which was their going rate on eBay; I saw a forum post about replacing this models power supply, and thought I would give that a shot. I got a broken switch for $45, and then a PSU for $50. The PSU I used was a SL Power LB130S56K 56V 2.32 130W. Armed with someone’s photos of doing this repair it ended up going fine. The hardest part of the whole operation is that the pins going onto the main board are reversed from what the power supply comes with, so you need to flip them. I have been running the unit for almost 2 years now without issue.

This model of switch is great because of its features and is fanless. The fanless-ness part of it is nice for homelabs near your desk, because the switches are silent. Because they are fanless, they cant have anything put on top of them, and need some room to breath. I think a lot of the ones you see online dead are because someone didn’t give it enough air, and the PSU died. Note when looking for a similar dead switch on eBay, you really want the seller saying “when plugged in nothing happens”, not “it periodically blinks” because that could be bad ram and its in a boot loop.

Having run two of these switches for over a year, I can give some feedback. I really like them. I have the two I have in a stack, I login once and manage both. When it comes time for firmware updates you SCP the file to the management IP, and it downloads the file to both, and then flashes and reloads. I came from using Cisco gear usually, or sometimes Arista; the CLI is a bit different, and Ruckus handles VLAN setup a bit weird, but once you get used to it, it makes sense. They are solid switches, with POE, that you can set and forget for a while.