30 July 2020

Let's Encrypt SSL Certificate for Dynamic DNS Host

As I was tired of having to add an exception when wanting to visit my personal website, I decided it was time to use Let's Encrypt to get a signed SSL certificate. Luckily it was easier than I thought. Here are the simple steps that I followed.
  1. Add the ppa repository
    • sudo add-apt-repository ppa:certbot/certbot
  2. Install the cli tool
    • sudo apt install python-certbot-apache
  3. Run the cli tool
    • sudo certbot --apache -d <dynamic dns host name>
  4. Answer the questions that included:
    • Email Address
    • Select which conf file to add to (For me it was /etc/apache2/sites-available/default-ssl.conf)
  5. Check that my SSL certificate was now signed

TODO: Automate the renewal

12 July 2020

Removing phantom tuner in MythTV

I had a tuner that did not appear on the tuner screen in setup, but would always throw an error about the default channel for it not being available when saving and exiting.

In order to resolve this, I followed the suggestion here: http://lists.mythtv.org/pipermail/mythtv-users/2010-March/284826.html

  1. manually login to the database
    1. mysql --user mythtv --password mythconverg
  2. find the phantom cards id
    1. select * from capturecard ; 
  3. delete it from the 'capturecard' table
    1. delete from capturecard where cardid = ;

02 July 2020

Refurbished Fossil Sport Review

As my Pebble Steel was beginning to annoy me with its inaccurate battery life and bad mms support, I recently purchased a refurbished Fossil Sport 43mm for $50 plus tax to replace it.


The included magnetic charger makes it easy to ensure proper alignment for charging. However, the puck itself is very light and prone to being pulled off the table by the weight of the cord. It would have been nice for it to have some sort of non-slip rubber bottom.

The silicone strap is extremely soft and very comfortable. There are 10 different holes for size adjustment and 2 loops to hold down the extra strap. On the downside, it is quite small. My wrists are not very big, and yet I have to use the 4th to last hole.

The watch case is the crown jewel. It is well constructed. The two tone design makes it look smaller than it actually is. The buttons have a satisfying feel to them. The rotating crown has a smooth rotation with no click.

The GPS works well and is pretty accurate on a Google Fit workout.

There is no speaker for interacting with the Google Assistant or taking calls on.

Initial Experience

The first two days the battery life was awful as it was seemingly constantly downloading updates (and of course I was messing with it more trying out different watch faces). The updates would pause when the battery dropped below 30%, so the watch was on the charger ... a lot.


I am disappointed by the seemingly lack of watchfaces on the Play Store. For any kind of variety, I had to install Facer. Facer has lots of options, but none of them were exactly what I wanted. Luckily, I was able to use their editor to create my own. However, Facer does have seemingly daily notification spam.


The watch does seem to lag when interacting with apps specifically. Interacting with notifications is generally good, but does occasionally lag. This would probably be fixed by moving to 1GB of RAM in the Gen 5.

Battery Life

I charge my watch while in the shower every morning and typically have 30-50% left when I take it off overnight. It will then lose another 7 or so percent overnight. The settings that I use are: always-on time, tilt to wake, tap to wake, background heart rate, "ok google" detection off, and Wi-Fi off.

26 June 2020

Adventures in a Graphics Card Upgrade

Decision Time

As my HIS IceQ Radeon HD 7850 2GB was getting on in age, I decided it was time for an upgrade. I was trying to stay around the 130W TDP of the current card so that my folding did not increase my electric bill. The main options that I was considering was:
  1. Used GTX 1060 ~$135-150
  2. GTX 1650 ~$159
  3. GTX 1650 Super ~$200
  4. GTX 1660 ~$215
  5. GTX 1660 Super ~$230
  6. RTX 2060 KO ~$300
  7. Used RX 470 4GB (avoid mining only) ~$75
  8. Used RX 480 4GB ~$90
  9. RX 570 4GB ~$120
  10. RX 580 ~$155
  11. RX 5500 XT 4GB ~$159.99
My first elimination was anything over $200 as that was just too expensive to pair with my old Core2 Quad Q6600. I then eliminated the RX 570 and GTX 1060 as it was just overpriced compared to the RX 480 and RX 5500 XT. The RX 580 and GTX 1650 were also overpriced compared to RX 5500 XT. This narrowed my choices to:
  1. Used RX 470
  2. Used RX 480 4GB
  3. RX 5500 XT

The Purchase

I then scoured ebay for the used graphics cards. I placed the following price guidelines (including shipping) RX 470 for $70, RX 480 4GB for $80, RX 480 8GB for $90. It seemed that the 8GB models were pulling a large premium and the 470 and 480 4GB models seemed to be about the same price. I also wanted a backplate on the GPU to try to avoid GPU sag.

I was able to score a MSI RX 480 Gaming X 4GB model for ~$81 with shipping. When it arrived, it was in great physical shape and looked clean. I gave it a blast of compressed air to ensure maximum airflow. I installed the GPU after having to remove a fan mount in my old Antec 900 to increase the room for it. It then booted up without any issue. When I went to run benchmarks is when the bad news came. Under any kind of load the GPU spiked to 90C under 100% fan.

The Fix

To try to resolve this I tried:
  1. Reducing the Core Voltage
  2. Checking for a firmware upgrade
  3. Tightening the 4 screws that maintained mounting pressure between the cooler on the card a quarter turn (be careful as over tightening can damage the chip)
However, none of those helped. It was finally time to try the last thing that I could think of, replacing the thermal paste. Here are the steps that I followed:

  1. Removed the back plate taking care to keep track of which screws came out of where
  2. Removed the two screws on the pcie bracket
  3. Removed the 4 spring loaded screws that maintain the mounting pressure
  4. Unplug one 4 pin connector between the PCB and cooler which allowed me to open it up like a book
  5. This gave me a good look at the largely dried and cracking gray thermal paste
  6. Carefully cleaned this off the GPU and the heatsink
  7. Applied some Silicone thermal paste that I had leftover from my Q6600 build
  8. Reattached the 4 pin connector
  9. Put the 4 spring loaded screws back in, in a X pattern slowly tightening each one to maintain even pressure
  10. Screwed the 2 screws on the pcie bracket back in
  11. Screwed the back plate back on
Then the for the test. I reinstalled the graphic card and booted up the system. Thankfully, the card now worked like new!


The card's defaults are 1303MHz at 1150mV. I turned this down to 1250MHz at 1065mV using MSI Afterburner. This cost me about 4% theoretical performance for a savings of ~15% power (because Voltage is squared), which put the max GPU core/memory power usage at about 105W. This should keep me in the ~130W total board power range that I was looking for. The card is now doing about 65C with 40% fan.

I am still verifying the stability in folding, but at 1060mV it was just barely coming across an occasional error. I am hoping that bumping to 1065mV will eliminate those errors.

Update 2020-07-01: The additional 5mV have resolved the occasional error. I have seen some work units spike to 110W and hit 67C with 50% fan.

Update 2020-07-12: I still saw an infrequent error. I pushed to 1070mV in state 7 and 1055mV in state 6.

Update 2020-09-11:
Here are the default clock speeds and voltages:
1303MHz @ 1150mV
1235MHz @ 1143mV
1191MHz @ 1087mV
1145MHz @ 1037mV
1077MHz @ 973mV
910MHz @ 850mV

Default Memory: 1750MHz @ 975mV

Here is what my final stable underclock is:
1250MHz @ 1077mV
1235MHz @ 1075mV
1191MHz @ 1075mV
1145MHz @ 1037mV
1077MHz @ 973mV
910MHz @ 850mV

Memory Clocks/Voltages unchanged

GPU power usage (not total board power) drops from ~120Watts to ~100Watts

17 May 2020

Installing Ubiquiti Unifi Security Gateway

I just received my new Ubiquiti Unifi Security Gateway and here are the steps that I used to go about installing it.

Update the USG

  1. Downloaded the latest firmware onto my laptop https://www.ui.com/download/unifi-switching-routing/usg
  2. Plugged the USG into power and waited for it to finish booting
  3. Performed a Factory Reset to ensure no hiccups
  4. Attached a Laptop to LAN1 (also disabled laptop wifi)
  5. Copied firmware over to USG (if on windows you can use WinSCP)
    • scp UGW3.v4.4.50.5272448.tar ubnt@
    • password: ubnt
  6. SSH into the USG and run the update
    • ssh ubnt@
    • password: ubnt
    • sudo syswrapper.sh upgrade UGW3.v4.4.50.5272448.tar
    • The system will the print some output and then reboot

Configure the USG

Warning 1: Despite the USG having 2 LAN ports, 1 is disabled out of the box, so you will not be able to have both a laptop and a Unifi controller plugged in at the same time without a switch or hub.

Warning 2: It seems that any change no matter how small seems to trigger a USG reboot. So you will want to have it completely configured before inserting it into your network.

Configuring Dynamic DNS for no-ip.com

  1. Settings Gear on bottom left navigation bar -> Services -> Dynamic DNS
    • Internet: WAN
    • Service: noip
    • Hostname:
    • Username:
    • Password:
    • Server: dynupdate.no-ip.com
  3. Got these settings from: https://www.noip.com/support/knowledgebase/how-to-setup-ddns-ubiquiti-edge-router/

Configuring Networks

You can change various settings for the LAN and WAN under Settings Gear -> Network

Inserting into the Network

Plug your modem into WAN1 and your switch into LAN1 and enjoy!


This allowed me to repurpose the ASUS router as a WiFi bridge to replace the Linksys E2000 which upgraded me from N300 to AC1300, which gave me a real world doubling of speed ~5MB/s to ~10MB/s.