Skip to content
Durango Amateur Radio Club - DARC

Durango Amateur Radio Club K0EP

Connecting Durango and Beyond Through Ham Radio!

  • Home
  • Repeaters
    • Eagle Pass 146.670 (-) 100Hz
    • Missionary Ridge 146.700 (-) 100Hz
    • Missionary Ridge UHF 448.6250 5Mhz (-)131.8Hz
    • Parrot Peak
    • Repeaters-Local & Regional
    • Chirp Files
  • Resources
    • Silent Key’s
    • About Us
      • History
    • Become a Ham
      • Tutorials
    • VE Testing
    • Events
      • Ironhorse Bicycle Classic
      • Fox Hunt
    • Elmers ‘mentors’
    • Links
  • Contact Us/Membersip/Questions
  • Home
  • Ham Clock

Ham Clock

<center>


<table>
    <tbody>

        // draw hamlib_canvas
        function drawHamlib() {

            var cvs = document.getElementById('hamlib_canvas');
            var ctx = cvs.getContext('2d');
            var w = cvs.width;
            var h = cvs.height;

            ctx.font = "11pt Verdana";

            const gw = w/14;            // grid unit width
            const gh = h/9;             // grid unit height
            const bw = 2*gw;            // box width
            const bh = 2*gh;            // box height

            // boxes
            ctx.fillStyle = "#027ffe";
            ctx.strokeStyle = "#027ffe";
            ctx.fillRect (1*gw,  3*gh, bw, bh);
            ctx.fillRect (6*gw,  1*gh, bw, bh);
            ctx.fillRect (6*gw,  5*gh, bw, bh);
            ctx.fillRect (11*gw, 1*gh, bw, bh);
            ctx.fillRect (11*gw, 5*gh, bw, bh);

            // box names

            ctx.fillStyle = "white";
            ctx.textAlign = "center";
            ctx.textBaseline = "middle";
            ctx.fillText ("Client app", 2*gw, 4*gh);
            ctx.fillText ("rigctld", 7*gw, 2*gh);
            ctx.fillText ("radio", 12*gw, 2*gh);
            ctx.fillText ("rotctld", 7*gw, 6*gh);
            ctx.fillText ("rotator", 12*gw, 6*gh);

            // connectors
            ctx.lineWidth = 3;
            ctx.beginPath();
                ctx.moveTo (3*gw, 4*gh);
                ctx.lineTo (6*gw, 2*gh);
                ctx.moveTo (8*gw, 2*gh);
                ctx.lineTo (11*gw, 2*gh);
                ctx.moveTo (3*gw, 4*gh);
                ctx.lineTo (6*gw, 6*gh);
                ctx.moveTo (8*gw, 6*gh);
                ctx.lineTo (11*gw, 6*gh);
            ctx.stroke();

            ctx.fillStyle = "white";
            ctx.textAlign = "center";
            ctx.textBaseline = "top";
            ctx.fillText ("Device independent", 4.5*gw, 7*gh);
            ctx.fillText ("Network protocol", 4.5*gw, 8*gh);
            ctx.fillText ("Device dependent", 9.5*gw, 7*gh);
            ctx.fillText ("Serial protocol", 9.5*gw, 8*gh);

            ctx.font = "9pt Verdana";
            ctx.textAlign = "right";
            ctx.textBaseline = "bottom";
            ctx.fillText ("port 4532", 6*gw-10, 2*gh);
            ctx.textBaseline = "top";
            ctx.fillText ("port 4533", 6*gw-10, 6*gh);
        }

        // one-time load function
        $( function() {

            // init tabs
            $( "#tabs" ).tabs();

            // common accordion settings
            const acc_sets = {
                heightStyle: "content",
                collapsible: true,
                active: false,
            };

            // init accordions
            $( "#accordion-faq" ).accordion(acc_sets);
            $( "#accordion-faq" ).accordion({ activate: drawHamlib });
            $( "#accordion-contrib" ).accordion(acc_sets);
            $( "#accordion-desktop" ).accordion(acc_sets);
            $( "#accordion-esp" ).accordion(acc_sets);

            // number the accordion titles
            var ah3 = document.querySelectorAll(".accordion-h3");
            for (let i = 0; i &lt; ah3.length; i++) {
                ah3[i].innerHTML = ah3[i].innerHTML.replace ('&lt;/span&gt;', '&lt;/span&gt; &amp;nbsp;' + (i+1) + '.&amp;nbsp;');
            };

            // update screen shot and title forever
            function showScreenShot() {

                // display image
                var img = new Image();
                img.onload = function() {
                    var cvs = document.getElementById ('screen-shot');
                    cvs.getContext('2d').drawImage(img,0,0,cvs.width,cvs.height);
                };
                img.src = "rollup/WB0OEW-screen-shot-0.png?" + Date.now();        // avoid cache

                // repeat at *:*:15
                var d = new Date();
                var dt = ((75000-(d.getTime()%60000))%60000);
                setTimeout (showScreenShot, dt);
            }
            showScreenShot();

        });
    <tr>
        <td>
            <table class="pic-table">
                <tbody><tr> <td width="500px">
                    <p>
                    This live screen grab is from one of my HamClocks. It updates automatically every
                    minute after making a random change.
                    </p><p>

                    <canvas id="screen-shot" width="800" height="480"></canvas>

                </p></td></tr>
            </tbody></table>
        </td>
        <td>
            <p style="text-align:center">Ham Clock</p>
            <p>
            HamClock is a kiosk-style application that provides real time space weather, radio
            propagation models, operating events and other information particularly useful to the
            radio amateur. HamClock was introduced in my
            <a target="_blank" href="https://clearskyinstitute.com/ham/HamClock/QST-HamClock.pdf">QST article</a>
            in the October 2017 issue and has been actively developed and expanded ever since.

            </p><p>
            For quick start on Raspberry Pi or other UNIX-like operating systems see the Desktop tab below.
            The User Guide tab provides detailed operating instructions.
            Explore the additional tabs for further supporting information.

            </p><p>
            <i>
                <a target="_blank" href="https://ham.stackexchange.com/questions/345/why-do-hams-often-conclude-messages-with-73">73,</a>
            </i>
            <a target="_blank" href="mailto:ecdowney@clearskyinstitute.com?subject=HamClock">Elwood Downey</a>,
            <a target="_blank" href="/ham">WBØOEW</a>

            </p><div class="news">
            <div>
            <b>News highlights:</b> See the complete version history in the Download tab and
            details in the User Guide.
            </div>

            <ul>
                <li>
                    Live weather map style
                </li>
                <li>
                    Live POTA, SOTA, RBN, WSPR and PSKReporter maps
                </li>
                <li>
                    List upcoming weekend contests
                </li>
                <li>
                    Full set of SDO images
                </li>
                <li>
                    Now manufactured by
                    <a target="_blank" href="https://veritiumresearch.com/hf-clock/"> Veritium Research</a>
                    rebranded as HFClock.
                    Available direct or in Europe from
                    <a target="_blank" href="https://www.lutz-electronics.ch/stationaer/geraetezubehoer/hfclock/">Lutz Electronics</a>.
                </li>


            </ul>
            </div>

            <!--  real-time message
            <p class='blinking'>
            Be sure to update the DE timezone offset if your location uses Savings time.
            </p>
            -->

            <!-- load plot
            <p>
            <div style='text-align:center' >
                <img src='daylynid.png'>
            </div>
            -->



        </td>
    </tr>
</tbody></table>

<!-- -------------------------
<p class="annoyed">
READ THIS:

<p>
If you install HamClock using someone else's instructions and are having problems,
go back to them for help, don't come to me to fix it.
If you don't find success, completely undo everything they told you to do and start over
using my instructions here. <i>Then</i> if you have problems, I'm happy to help.
<p>
Please understand there are now over four <i>thousand</i> HamClocks the world over.
That's great, but more and more people are following bogus instructions on other
websites and the impact on my time to troubleshoot is getting to be too much.
So please, come here for all things HamClock.
<p>
Thank you.

---------------------------- -->

</center>
  • Home
  • Repeaters
  • Resources
  • Contact Us/Membersip/Questions
  • Home
  • Repeaters
  • Resources
  • Contact Us/Membersip/Questions

Copyright © 2025 Durango Amateur Radio Club K0EP.

Theme: Oceanly News Dark by ScriptsTown

Manage Consent
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
Manage options Manage services Manage {vendor_count} vendors Read more about these purposes
View preferences
{title} {title} {title}