This live screen grab is from one of my HamClocks. It updates automatically every minute after making a random tap. Click for an hour history.

Ham Clock

This page refers to my QST article in the October 2017 issue. All updates will be posted here.

Click on the tabs below for more information.

I would like to give a Big Shoutout to Adafruit for their great electronics, software and tutorials.

News highlights:

  • Now manufactured by Veritium Research and marketed by Gigaparts rebranded as HFClock.
  • Check the Download tab for the latest changes
  • Added desktop versions for linux (including Raspberry Pi) and macOS. See Desktop tab below.
  • Added display of Earth satellites including sky track of next pass. See Controls tab below.
  • If you are experiencing touch lockout, try turning off RSS or upgrade to latest release.

73, Elwood Downey, WBØOEW

Original QST Article proof


Download current stable release source code Version 1.94.

Revision history:

Version 1.94: Version 1.93: Version 1.92: Version 1.91: Version 1.90: Version 1.89: Version 1.88: Version 1.87: Version 1.86: Version 1.85: Version 1.84: Version 1.83: Version 1.82: Version 1.81: Version 1.80: Version 1.79: Version 1.78: Version 1.77: Version 1.76: Version 1.75: Version 1.74: Version 1.73: Version 1.72: Version 1.71: Version 1.70: Version 1.69: Version 1.68: Version 1.67: Version 1.66: Version 1.65: Version 1.64: Version 1.63: Version 1.62: Version 1.61: Version 1.60: Version 1.59: Version 1.58: Version 1.57: Version 1.56: Version 1.55: Version 1.54: Version 1.53: Version 1.52: Version 1.51: Version 1.50: Version 1.49: Version 1.48: Version 1.47: Version 1.46: Version 1.45: Version 1.44: Version 1.43: Version 1.42: Version 1.41: Version 1.40: Version 1.39: Version 1.38: Version 1.37: Version 1.36: Version 1.35: Version 1.34: Version 1.33: Version 1.32: Version 1.31: Version 1.30: Version 1.29: Version 1.28: Version 1.27: Version 1.26: Version 1.25: Version 1.24: Version 1.23: Version 1.22: Version 1.21: Version 1.20: Version 1.19: Version 1.18: Version 1.17: Version 1.16:

Here is a more detailed list of steps to prepare and load the software:

  1. Install the latest Arduino IDE with these these instructions. I am currently using version 1.8.5.
  2. Load up the ESP extension described here then Exit the Arduino IDE.
  3. Download and install the following Arduino libraries:

    If you need help with libraries in general try here

    • GFX
    • Sensor
    • BME280
    • TimeLib
    • RA8775

      This one has a bug you must fix. If you don't do this, your HamClock will draw graphics but no text. After installing this library:

      1. open the file Adafruit_RA8875.h with a text editor
      2. find the two places that contain virtual size_t write near line 133
      3. comment them both out so the result looks like this:

        /* Play nice with Arduino's Print class */
        /* comment out for HamClock ← add this line
        virtual size_t write(uint8_t b) {
        textWrite((const char *)&b, 1);
        return 1;
        virtual size_t write(const uint8_t *buffer, size_t size) {
        textWrite((const char *)buffer, size);
        return size;
        */ ← add this line

  4. Connect your computer to the Huzzah with a USB port
  5. Download current stable release Version 1.94, unzip it any place you wish.
  6. Start the Arduino IDE. Open the ESPHamClock.ino file you just unzipped. This will create a new project.
  7. In the IDE Tools menu make the following selections:
    If the options you see do not look exactly like mine do these steps:
    1. open Tools → Board → Boards Manager...
    2. In the search box type esp. Look for esp8266
    3. Click More Info
    4. Click Select version and select 2.4.0
    5. Click Update
    6. Click Close
  8. Run Sketch → Compile then Sketch → Upload
  9. Your HamClock should start running. Follow the touch screen and setup functions carefully.

To use a 9" ER-TFTM090-2 from

Select these options during purchase:

This is the wiring list:

    EP = ESP Huzzah
    BM = BME280 sensor
    PC = photo cell
    DP = display

    EP_SCL    BM_SCK
    EP_SDA    BM_SDI
    EP_3V     BM_VIN
    EP_GND    BM_GND

    EP_ADC    PC_1, 330k
    EP_GND    PC_2
    EP_3V     330k

    EP_SCK    DP_8
    EP_MO     DP_7
    EP_MI     DP_6
    EP_2      DP_5
    EP_16     DP_11
    EP_USB    DP_3, 4, 37, 38
    EP_GND    DP_1, 2, 13, 31, 39, 40



The display stand from Adafruit can be made to work with a little ingenuity but is not perfect for the LCD. Send suggestions for better ideas and I will post here.

If you find your display idea works better if the cable exits from the top, there is an option in the Setup screen that allows you to flip the display upside down.

Shack photo showing 7" version.

Rear of 7" version

Both the 7" and 9" versions.

Rear of 9" version

This is a guide to the touch controls and map symbols of HamClock. Click for a printable view in a separate window.

HamClock may now be built for linux, Raspberry Pi, macOS, BSD or any other UNIX-like system with the X11 Windows development library. Or, on the Raspberry Pi, HamClock may be configured to take over the entire HDMI display as a dedicated application. Use this version when you want to connect to your Pi using ssh and not use the linux desktop. Either HamClock configuration may be built in two different sizes: 800x400 or 1600x960 .

Operation of the HamClock on these platforms is exactly the same as the ESP8266 version with the following exceptions:

To give it a try on the desktop, follow these steps:

  1. open a terminal on the target system desktop to get a command line prompt
  2. run these commands:
    cd ESPHamClock
    make -j 3 hamclock
  3. If you get errors:
    • on linux try updating and loading more packages such as
      sudo apt-get update
      sudo apt-get -y install make g++ libx11-dev
    • on macOS install XQuartz and the command line tools from XCode.
  4. The above command will build HamClock at 800x480 pixels. If you want the larger size change the target to hamclock-big.

To try it on a Pi using a dedicated display, follow these steps:

  1. log in via ssh (or putty, etc)
  2. run sudo raspi-config one time and set the following options:
    1. Boot Options -> Desktop/CLI -> Console
    2. Network options -> Network Interface names -> enable predictable names? No
    3. Advanced options -> Resolution -> choose any 1600x960 or larger
  3. reboot
  4. connect to your Pi again with ssh and run HamClock on the HDMI fb0 display as follows:
    cd ESPHamClock
    make -j 3 hamclock-fb0
  5. The above command will build HamClock at 1600x960 pixels. If you want the smaller size 800x480, perfect for 7" touch panels, use hamclock-fb0-small.

If you want to use the Bosch BME280 environment sensor on RPi, follow these steps:

  1. connect the sensor to the Pi using the 40 pin connector as follows:
        Pi 1    BME Vin
        Pi 3    BME SDI
        Pi 5    BME SCK
        Pi 9    BME GND
  2. install i2c-tools:
        sudo apt-get install i2c-tools
  3. run sudo raspi-config and set the following options:
        Interface Options: I2C: enabled
  4. reboot
  5. Check the Bosch is connected correctly with these tests:
        sudo i2cdetect -y 1
    should see 77 in lower right corner of matrix
        sudo i2cdump -y 1 0x77 b
    should see a matrix of numbers, NOT XX
  6. Restart hamclock.
  7. Click in the lower half of SDO image pane to see environmental plots.