I came across the “Black Magic Probe” (code on GitHub), a while ago, and recently found out (and here) that it should be supported on these Chinese STLink-V2 clones that you can find on eBay and Aliexpress for really cheap ($2-$5).

I had already bought one a few months back, so I ordered another one to use one as a programmer to load the Black Magic Probe code into the second STLink clone.

Continue reading

Documenting this mainly for my own benefit, on rare occasions my laptop will not go to sleep (suspend nor hibernate) on Linux (Ubuntu). I hate rebooting, but before I hadn’t dug deep enough to see what the issue was.

This happened again the other day, so I did not reboot, just kept it running on my way home from work. Later I needed to use my USB printer, but nothing happened, not even lsusb showed the device (All I saw were the built-in USB hubs and root device).

The following fixed my issue:

(from http://askubuntu.com/questions/645/how-do-you-reset-a-usb-device-from-the-command-line )

My Brother DCP-7020 printer/scanner combo device is several years old, and, while supported on Linux, the drivers provided by Brother are 5+ years old, so while they install fine it always requires some manual fiddling to make the scanner part work.

After getting the udev rules installed (manually or via provided .deb package), the driver libraries appeared to be in the wrong directory, they lived in /usr/lib64 instead of /usr/lib/x86_64-linux-gnu

It works:

Well, actually, while it detected the scanner and allowed xsane and simple-scan to run, both programs reported errors when trying to initiate a scan. :(
(I will update if/when I figure out how to make this work)


After over a decade of running my own servers (well, mostly virtual servers), I finally decided to look into uptime and service monitoring and alerting.

My servers host Wikis, Forums, Projects, and other personal stuff, none of which makes me any money, so I try to keep costs down.
One of the cheapest way to run your own personal servers is on an VPS (Virtual Private Server), usually that ends up being OpenVZ/Virtuozzo, KVM or Xen based.
While OpenVZ is typically the cheapest, it is not a good option when you want to run all services inside Docker containers, as it is basically a container itself. That leaves Virtual Machine based solutions like KVM or Xen (or VMs on any other hypervisor).

Back in the day, when Nagios was the go-to tool, monitoring and alerting (and often even stats) were part of the same tool.
Today, in the days of cloud, docker, and microservices, these are more and more split into smaller units, where one tool just does the monitoring while another excels at managing alerts.


Any server can go down for various reasons, thus it is important to monitor our server, and more importantly, our services.
Some services are as simple as a ping to an IP address, though most support http/https and support checking for certain content. Yet others allow for rendering HTML in a variety of actual browsers.


Monitoring is good to have, but we also need to be notified if monitoring detected services that are down. An email from the monitoring service might be enough, that is, if your mobile phone is setup to check email regularly and any alerts don’t drown in the mass of emails you already receive.
Then there’s also apps for your smartphone that receive push notifications and pop up and possibly even have their own alert tone.

Redunant Monitoring and Alerting Setup

By combining (the free tiers of) two or more monitoring services and two or more alerting services, we can create a (free) redundant setup. I like the redundancy for multiple reasons:

  • free may stop: free tiers may go away at any time (maybe because the company running it folds, gets bought, … or just plain does no longer offer free services)
  • service redundancy: problems with the monitoring or alerting service itself
  • geographic redundancy: different services run from different locations
  • timing: free monitoring is often limited in frequency, eg. at most every 5min, so by having two services, the frequency might be 2.5min <= x <= 5min


Redundant Monitoring and Alerting Setup

Redundant Monitoring and Alerting Setup


At the time of this writing I use these services:

I needed a cheap STM32F407 development board for my robot lawn mower project.

The ‘407 was chosen over other members of the 4xx due to the # of timers (for motor control, RPM measurement, ultrasonic distance measurement, RC PPM, etc). The F4xx family was chosen over the other STM32 families due to some timer features only available on the Cortex M4 family. Since I needed also a lot of I/O pins to map the different peripherals of the ARM microcontroller, it had to be at least a 100pin version of the chip.

This left pretty much only the STM32 Discovery line of boards. These boards are really nice, and the on-board peripherals can be disabled via solder-bridges, these boards are designed to run at 3V instead of the more common 3.3V.

Two STM32F407 development boards

Two STM32F407 development boards

That is, until I found a vendor on AliExpress selling exactly what I needed: A cheap (~ US$15 shipped), no-frills, 100pin STM32F407 based development board. The board is very similar to the very common STM32F103 based development boards that can be had for as low as $4. I bought mine here:

Board on AliExpress (sold by “Yu Yue Technology” link to store)

So far I’ve only found this one vendor for this board and that vendor apparently does not have any documentation (schematics, pinouts, etc.) on this board. Since the board is relatively simple, this is not a big downside, and I will attempt to document on this blog what I find out.

STLink/V2 Clone

STLink/V2 Clone

STLink/V2 clone talking to STM32F407

STLink/V2 clone talking to STM32F407

As of now, I’ve only used Texane’s stlink to ensure I can successfully talk to the development board. The programmer is a cheap Chinese clone of the STLink v2:

To be continued …