Our blog, or knowledge base, starts here!

I recently had to install an old piece of software on our (headless) Ubuntu 20.04 Linux system. Our first hurdle was binaries not executing properly — on attempting to run executables, the error No such file or directory would appear. This was corrected by installing lsb-core:

$ sudo apt install lsb-core

The software we wanted to use had copy protection, specifically Macrovision’s FLEXlm license manager (now with Flexera Software). Our FLEXlm-protected software was provided with a node-locked license and this was tied to a specific MAC address on our machine. It’s possible to ask FLEXlm what’s the HostID (MAC address(es)) that it sees by running:

$ lmutil lmhostid
lmutil - Copyright (c) 1989-2006 Macrovision Europe Ltd. and/or Macrovision Corporation. All Rights Reserved.
The FLEXlm host ID of this machine is ""

Unfortunately, the software was unable to “see” our Ethernet adapter due to older versions of the software looking for Ethernet adapters starting with eth. The reason? systemd uses an alternative naming convention, formally part of the predictable network interface names, that essentially means Ethernet devices will start with en instead of the “traditional” eth prefix. We therefore needed a way of getting FLEXlm to see the Ethernet adapter.

Continue reading...

If you’ve used a Windows virtual machine under VMware (Workstation or Fusion, depending on your host OS), then you’d have probably noticed that the host virtualisation software cleans up the virtual machine disk once the virtual machine is shutdown. The clean up activity detects any unused space and reduces the sizes of the virtual machine disk within the host OS without affecting the guest OS.

I have a number of Linux VMs but noticed that there was an increasing discrepency between the size of the used space form within the guest OS (via df -h) and the space consumed by the virtual machine disk. The reason? VMware doesn’t automatically run the clean up task once a virtual machine is shut down.

Continue reading...

The other day, I was using ssh as a SOCK5 proxy. To recap, I needed to access a resource that was only available from a remote Linux PC (i.e. my machine → remote Linux PC → network resource). One of the network resources was an embedded device with an SSH server. Hopping to the remote Linux PC over SSH was fine, but once there, I would then need to connect to my embedded device by calling SSH again (i.e. my machine → remote Linux PC (hop 1) → embedded device (hop2)). Fortunately, this step is, in fact, unnecessary and the process can be simplified.

Continue reading...

Wireshark is a really useful tool to record and analyse network traffic across any network interface. I use it when faulting embedded applications in order to conduct a sanity check that data is leaving or arriving correctly. I recently wanted to use Wireshark on a remote computer — a task that would normally be quite easy to do — but in this instance, there was no remote desktop as such and, instead, was purely CLI-based.

Continue reading...

I’ve been needing to use an embedded system that had network support but lacked many of the (useful) utilities that we’ve gotten used to. I needed this device to talk to an HTTP endpoint (an array of relays accessible via Ethernet) that was configured with basic authentication. With curl, this is a simple case of running:

curl username:password@10.0.3.20/outs.cgi?out0=0

curl happily understand this syntax and correctly negotiates basic auth. Without curl, this task gets a little more involved…

Continue reading...