Properly offsetting relocated (Arm Cortex-M4) code in STM32CubeIDE GDB

In my previous post I was showing a very elementary but outright inefficient way to debug tricky (Arm Cortex-M4) code which was relocated. The full case was/is: There is a bootloader which loads actual firmware binary. Bootloader is at 0x8000000, firmware at 0x8005000. We used a method to load debug values to registers we were monitoring. It worked but was complex and did not address the root cause of mismatched symbols. There is however a way to make the relocated firmware binary to correspond 100% to the debug symbols and debugger screen. Read below to know more.

Continue reading “Properly offsetting relocated (Arm Cortex-M4) code in STM32CubeIDE GDB”

Debugging tricky (Arm Cortex-M4) code with register values

Sometimes you may run into problems when debugging tricky code. This is the case especially with microcontroller code if you are implementing a bootloader+firmware image solution. Debugger started in bootloader goes haywire and displays garbage or nothing at all when jumping to firmware.

Normally one should invest some time in getting debugger symbols aligned properly with source code, but if there are for example some barring deficiencies in environment or debugger UI, one can still figure out a bit more what is going on by using spare register values. Following shows a somewhat obvious, but still possibly helpful technique in brief for aforementioned debugging situations.

UPDATE 2021-08-16:
To get the job actually done, see my follow-up post

But in any case, the rest of the earlier post is here for posterity.

Continue reading “Debugging tricky (Arm Cortex-M4) code with register values”

Fixing snapped Turtle Beach X12 headset with a secret weapon – a metal ruler!

Turtle Beach headphones are notoriously easy to break and so was the case with my Turtle Beach X12 headset also. They snapped apart:

Actually this was probably my 3rd pair to get busted. I got very angry at Turtle Beach because they designed such a weak point in the product, and angry at myself for buying the same product after every breakage.

With local retail store valuing new set some 100 USD and me wanting to save a bit of environment, I decided to try fixing them.

Continue reading “Fixing snapped Turtle Beach X12 headset with a secret weapon – a metal ruler!”

PC Engines APU2E0 – a tiny fanless server with Intel NICs

My earlier gateway box, the Lanner NCA-1010B decided to stop working, leaving everything as a messy chaos. I gobbled up my retired Zotac Zbox and hastily built a makeshift router.

A long term solution was however needed. I had heard good things from this no-bullshit-geeky Swiss company called PC Engines GmbH. They make a board called APU2E0, among other things. It is a AMD GX-412TC-based SOC product with 2 Intel i211AT NICs. And it does not have regular monitor connections. Instead, there is a DB9 serial port for installation purposes.

The board’s sister version is pictured below for reference.

Continue reading “PC Engines APU2E0 – a tiny fanless server with Intel NICs”

Complicatedly authorizing WhatsApp Web clients for VMware ESXi (6.7) Android x86 7.1

UPDATE 2023-07-20: I wrote earlier that WhatsApp might have broken this functionality. But actually my installation has been working just fine after I emptied my 70GB Firefox profile.

We have arrived to the last part of our ESXi WhatsApp saga. This blog post will tell a very cumbersome way of authorizing WhatsApp Web clients so you can enjoy the benefits of the application with you preferred computer and browser. Follow on!

This post is the last part (so far) in the 3-part series:

Installing Android x86 7.1 on VMware ESXi 6.7

Installing WhatsApp on VMware ESXi (6.7) Android x86 7.1

Complicatedly Authorizing WhatsApp Web clients for VMware ESXi (6.7) Android x86 7.1

Continue reading “Complicatedly authorizing WhatsApp Web clients for VMware ESXi (6.7) Android x86 7.1”

Installing WhatsApp on VMware ESXi (6.7) Android x86 7.1

The journey continues. In this blog post we learn how to get WhatsApp installed on our freshly installed Android x86 7.1 . This article exists for 2 reasons:

  1. To offer completeness in our efforts to get virtualized WhatsApp instances to authorize regular WhatsApp web clients
  2. To show the minor differences there are involved in the process compared to normal WhatsApp install

This is the second article in our 3 article series:

Installing Android x86 7.1 on VMware ESXi 6.7

Installing WhatsApp on VMware ESXi (6.7) Android x86 7.1

Complicatedly authorizing WhatsApp Web clients for VMware ESXi (6.7) Android x86 7.1

Again, as always, lets get started.

Continue reading “Installing WhatsApp on VMware ESXi (6.7) Android x86 7.1”

Installing Android x86 7.1 on VMware ESXi 6.7

I am one of those people who are perfectly fine with old style dumb 3G phones. But unfortunately some people are reluctant to communicate nowadays with regular phone calls, SMS or IRC, so I basically need to keep Android at hand for running WhatsApp.

Recently I found a way to run Android x86 7.1 on VMware ESXi 6.7. After a lot of teeth grinding, I was able to get WhatsApp running inside it. And after enormous test and debug efforts, I was even able to authorize WhatsApp Web clients. But with a lot of hoop-running. Extremely lot.

I chose Android x86 7.1 because it seems to be working completely for my desired purposes without (much) graphical glitches. For example 8.1 has horrible glitches which actually make many parts of initial setup widgets invisible 😀 . I chose VMware ESXi 6.7 as host because it is of the most stable main branch of the hypervisor. Host hardware is Intel NUC8i7HVK with 32GB RAM.

This is the list of articles of the whole operation (split due to big amount of screenshots):

Installing Android x86 7.1 on VMware ESXi 6.7

Installing WhatsApp on VMware ESXi (6.7) Android x86 7.1

Complicatedly authorizing WhatsApp Web clients for VMware ESXi (6.7) Android x86 7.1

Props to this external blog post for guiding me to the right direction. But now lets get started with our own stuff.

Continue reading “Installing Android x86 7.1 on VMware ESXi 6.7”

Disabling annoying Bluetooth dongle LED the hard way

I recently bought a Bluetooth dongle for my wireless keyboard. After lots of measurements, I ended up fixing it to ceiling for optimal signal quality. There was a problem though; the LED. The pulsating blue LED was just too much for me. Or judge yourself, imagine this:

pulsating wildly every night on the ceiling. Not my thing. I could not find anything with google about disabling programmatically the LED, so I went the hard way and removed the entire LED from the dongle myself with soldering iron. Continue reading “Disabling annoying Bluetooth dongle LED the hard way”