Category: hardware

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.