Best way to manage your SSH environment in WSL

The best way I’ve found of managing my ssh environment in WSL is to skip SSH inside WSL altogether. Instead we defer everything to Windows’ own ssh system. The benefit of which is that we have an ssh-agent which persists across WSL instances, and is automatically started on boot. This depends on two things that aren’t well known: Windows has its own SSH client & agent. WSL can execute Windows binaries.
Read more →

Prometheus node_exporter missing an uptime counter

Prometheus node_exporter doesn’t export an actual “uptime” counter. Instead the offical advice is to execute node_time_seconds - node_boot_time_seconds. The method works, but seems unnecessarily convoluted for such a fundamental counter.
Read more →

Adding PoE to a Century Link GPON ONT

Century Link provide a Calix 716GE-I ONT to their consumer gigabit (GPON) customers. This device has a weird 9-pin DIN connector providing standard 12V 2A power. The extra pins are likely used for communication between an external UPS and the ONT, so the device can take actions when the power drops (e.g. prioritize telephone traffic over internet traffic). However we don’t have or want a dedicated UPS for the ONT. We wanted to provide power over the existing ethernet connection.
Read more →

Arduino OTA uploads across networks & through firewalls

Arduino OTA support is great for updating devices over wifi. However the Arduino IDE only detects devices on the same broadcast network. If you run your IoT devices in their own vlan, this can be a a problem. However you can manually envoke an upload from the cli tools. Preparation This process is not exactly refined, so do a little research first. Build your project, taking note of the configured output location.
Read more →

Stories from a new Synology user – DSM Cloud Sync: error connecting to Backblaze B2 with encryption

Cloudsync does a shit job of communicating helpful errors. When setting up a new Backblaze configuration with encryption enabled, this was the error: Nothing in UI tools gave me more information, so I ssh’ed in and blindly searched for logs. Turns out the problem is really obvious when you find the actual error. In /var/log/messages this appeared: 2020-04-30T15:15:54-07:00 disko synoscgi_SYNO.CloudSync_1_create_link[29776]: [ERROR] b2-protocol.cpp(1656): B2Protocol: Failed to download file (https://f001.backblazeb2.com/file/my-backups/%40SynologyCloudSync/cloudsync_encrypt.info), error(403), msg({ "code": "download_cap_exceeded", "message": "Cannot download file, download bandwidth or transaction (Class B) cap exceeded.
Read more →