Category: hardware

I’m back and so is my PC

I’m back and so is my PC

H60 PC TemperatureI’m not the greatest with hardware, preferring to deal with software but sometimes you have to get your hands dirty, so here is the saga of my broken PC cooler and how I fixed it.

Three weeks ago my PC broke. I’d had it five and a half years and the cooler (it had a five years warranty! ) broke. It was a liquid cooler and following the advice of the supplier I bought a Corsair H60 cooler which was the same brand but slightly different cooler to mine. So I carefully photographed the orientation of the broken cooler and the connectors before removing it. I was determined to do things right so I bought earthing straps, to prevent static electricity from frying anything it shouldn’t.

So I took out the old cooler, removed the dregs of the thermal paste from the base plate (using Q-tips- works very well!)  and carefully put the new cooler in, and also swapped the fan which cools the radiator. It looks like a car radiator and has the same function. Two thick pipes run from the cooler which sits on top of the CPU and run to the radiator. It’s a closed system so you never see the cooling liquid.

I hooked up the fan connector – no problem. I hooked up the cooler connector and found a 15 pin connector there as well. That wasn’t in the old cooler!  It was a 15 pin SATA power connector. Following more advice from the supplier I bought a 15 pin SATA to Molex lead. Molex are those four pin power connectors that you plug into external hard disks. My PSU (a Corsair CS750M) came with a bunch of cables and one of them was a PSU SATA to Molex connector. One side of the PSU is full of connector sockets- apparently it can power up to 8 SATA devices. So that was the cooler wired up.

So I switched it on, it started booting and then wham- CPU fan error beep beep beep. Now the H60 cooler fan connector only had one wire going into it compared to the three wires on the older cooler. On that older cooler the power came through those wires but the H60 was powered by the SATA cable. So I wondered if maybe this connector belonged elsewhere and studied the motherboard diagram. The Motherboard was an ASUS X99-S.

It turned out that there were several connectors. I had been plugging into CPU FAN1 which was able to drive a fan with over 1 Amp of power. There was another connector CPU FAN which couldn’t supply that much power, so that’s why the old cooler was plugged into CPU FAN1 as that powered it. I plugged my cooler into CPU FAN and it worked. Time wise my PC was out of action for three weeks given delays from emails plus buying the cooler (£64) and the 15 pin-to Molex cable. (£7.00 for three).

I’ve had my PC running for the last half hour and it’s showing the temperature figures shown in the screenshot. It helped that the cooler could use the same plate and screws as the old cooler and came with thermal paste already applied. Until I did this, I hadn’t even realised that my PC was liquid cooled. I’m always nervous as hell when doing things with hardware but feeling quite chuffed that it worked.

The free temperature utility came from here and is very good.



A look at a Raspberry Pi Pico

A look at a Raspberry Pi Pico

Raspberry Pi Pico

As you probably know I do like my Raspberry Pi. But the RPi Pico is a different kettle of fish. I’m only mentioning it here because it is programmable in C/C++ and some may find it a less say overwhelming place to learn C than say a traditional Raspberry Pi.

What’s different between a Pico and a Pi 4B? A Pico uses a microcontroller- basically a CPU with built in RAM, bit of flash RAM, real time clock. RAM is tiny compared to any Pi. Just 264 KB (That’s still much more RAM than my CBM Vic-20 in 1981 with 3.5 KB of RAM!) and 2MB of Flash RAM. The CPU, an ARM CPU designed in the UK runs at clock speeds up to 133 MHZ. A Pi 4B runs at 1.5 GB, over 11x faster.

The biggest difference is that a Raspberry Pi runs any operating system you want. Microcontrollers are different. To run a program on a Pico you have to program it into Flash RAM first. You can do this with drag and drop. See here for C/C++. The Pico is an embedded system. RAM is used for data, stack etc but not the program which runs out of Flash RAM.

But if you like hardware then this is an excellent place to get started. You get all these (see here for Specifications).

  • 26 × multi-function GPIO pins
  • 2 × SPI, 2 × I2C, 2 × UART, 3 × 12-bit ADC, 16 × controllable PWM channels (PWM I’m guessing is pulse-width modulation).
  • Accurate clock and timer on-chip
  • Temperature sensor
  • Accelerated floating-point libraries on-chip
  • 8 × Programmable I/O (PIO) state machines for custom peripheral support

So what about games? Not really. Or at best very simple games using the single LED. No, this is about learning C (or C++ or even- shock – Python) and interfacing hardware.  You might for example put one of these inside a drone to provide control software.

When Raspberry Pi Goes wrong

When Raspberry Pi Goes wrong

Raspberry Pi TuxIt happened to me today, not once but twice.  First the Hyper-V version of Raspberry PI OS I have installed (handy for screenshots) didn’t update properly.  Apt got itself in a right state and attempts to fix broken packages on APT just made things worse. In the end, I fetched another copy from this page and installed that in Hyper-V and deleted the first one. I wonder if Raspberry PI OS will ever make it into the Microsoft Store as one of their WSL Linuxes?

At the same time I had forgotten to write down a login password for a real PI and burnt myself a new Pi SD CArd. After it did the initial update and reboot, it came up with BCM2835 Exception stack errors and hung. I burnt it again, went through the update palaver and it did the same. A quick Google and I found a suggestion that my SD Card was failing although it had burnt without error twice and switching to a different card fixed it.

Out of curiosity, I fired up Win32DiskImager and ran a verify against it and got this error message below. If you can’t read it says Verification failed at sector 8192. Well at least I now know and the SD Card was about to be binned and I took a last look at it.  4GB! I’d been burning a 7GB image onto it; no wonder it crashed.. I’m amazed it ever burnt and worked… I’d used it in the past for the DietPI distro which is much smaller.  Most of my spare SD Cards are 8 GB; that’ll teach me for not checking…

SD Card failed verification in Win32dioskimager


Interesting looking Game Handheld device- Odroid-Go

Interesting looking Game Handheld device- Odroid-Go

Odroid-GoThe Odroid-go Game kit looks like a gameboy. It has a LCD, game controllers and the case. It has a CPU that runs between 80 and 240 MHZ, 4MB RAM, WiFi, Bluetooh, a Micro-SD slot, a rechargeable battery – charged through a Micro USB, a built-in speaker and a 320 x 240 LCD. That may not sound very much but all the CBM-64 games ran on that size of screen and it only had 64 KB of RAM.

There’s more information on the manufacturers website (it’s in English though it is Chinese made) and all the useful information is on a Wiki with info on emulators, downloadable games and how to write programs for it using the Arduino programming language which is very much like C/C++. You have to install Arduino for ESP32 first on a Pc (Windows, Linux or Mac) then can you write programs and run them on your Odroid-Go.

There’s a bit of assembling but the website includes instructions with photos. A quick search on Youtube found a video showing how to assemble it.

This is an example of Arduino code, taken from their online reference manual. The Ardunio has been around for several years so there is a lot of code around for it.

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
Sometimes it’s not software to blame

Sometimes it’s not software to blame

Never Assume banner
Image by Gordon Johnson from Pixabay

This last week has been a bad one for me technically speaking. First there was the Sky Q Minibox problem. I was away when it was originally setup. It would have saved me a couple of wasted days without Sky when it went wrong had I been present at the setup.

We had a power outage that lasted twenty minutes. When it came back everything powered up except the Sky Q Minibox. It displayed a couple of screens which said “when the screen goes blank, press the Home button on the Sky Q remote”. Nothing happened. Eventually (after a couple of days) I figured, it was a bit like an old BoomBox (cassette player) of mine that was never the same after a power outage. Something had blown perhaps. Time to contact technical support for a replacement?

But I did a last search and came across an interesting message on a forum. “Make sure your Sky Q Remote is paired with the Minibox”. This is one of those things that makes you sit it up and says “What?”. It’s just a remote, isn’t it , like the other ones. Except when I looked a bit closer I noticed it had no bulb or transparent plastic screen at the end. To cut a long story short, when it was paired (is it Bluetooth?) the Sky Q Minibox worked fine. D’oh… My first encounter with a non-Infra red TV remote.

It gets worse…

Yesterday I struggled trying to run a program on my two Android phones. The same phones that had worked fine with MonoGame. This was a different software dev system (Android Studio) and a different programming language (Flutter). The trouble was sometimes it would recognise one of the phones (but not the other one) and when I started copying the program it failed with ADB Error 1. I was scratching my head over this.  I’d tried configuring, all sorts, in Android Studio, in the phones. But nothing made a difference.

I did a Google and a StackOverflow answer showed up. Maybe the problem is your cable? Well I have a few Android cables lying around so I swapped it and sure enough. It worked, and now recognised both phones, the program copied and ran ok on both phones. So with the Sky remote, it was the old adage Assume= Makes an Ass of U and Me. and with the phones, I’d assumed it was the software. configuration that was wrong.

A large collection of ARM links

A large collection of ARM links

Circit board
From Pixabay

ARM being the CPU brand inside Raspberry Pis. This is a collection of talks and links to articles about the ARM architecture, concurrency, performance and way too much other stuff to list. There’s a lot in there and I defy anyone with the vaguest interest not to find something of interest.

I’m not a hardware person myself, but dipping into stuff like this can yield benefits. Remember the CPU in the Pi 4B has four cores. If you are writing software that just runs one one thread then it’s like driving a car with a four cylinder engine but its only firing on one. And if you manage to write software to use all four cores, do you know how to avoid false sharing? (Yes it’s a thing!)




More on Raspberry Pi Gamepad

More on Raspberry Pi Gamepad

jstest-gtkUnfortunately there’s no gamepad-tool for the PI, but there is a program called jstest and in particular a visual one called jstest-gtk. That’s it on the left. You install it on any Linux system, including Raspbian on the Pi with the command

sudo apt install jstest-gtk

Then run it with a jstest-gtk command from a terminal.

It then detects your game pad and responds to button presses and joystick movements.

The weird thing is although my gamepad identifies it as a NEXT SNES but so far attempts to load that have not been successful in the Asteroids game. It loads but doesn’t seem to work and its not recognising the right shoulder button and has A and B buttons muddled up. Yet in jstest, it is clearly able to identify them.

Time I think to create a mapping under Linux with gamepadtool. Unfortunately it doesn’t work on the Hyper-V Ubuntu so it’s time to fetch my Linux laptop and try it on that.