diff --git a/Makefile b/Makefile
index 78a1646c16f02b4af5f3eae2b5d58f1e6c3e62e3..98e3ceab64e97fd89beba22ede84a6b6c4b35ef0 100644
--- a/Makefile
+++ b/Makefile
@@ -19,6 +19,9 @@ submodule:
 librobotcontrol:
 	cd projects/librobotcontrol/docs/ ; doxygen
 
+livehtml:
+	sphinx-autobuild "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
 .PHONY: help Makefile submodule librobotcontrol
 
 # Catch-all target: route all unknown targets to Sphinx using the new
diff --git a/accessories/cables.rst b/accessories/cables.rst
index 3b5158f0b2b065a59e7a4b2d028ebe4dc7fccb07..3c6f678ec20edd0ae0df378d54cc193e69500ce8 100644
--- a/accessories/cables.rst
+++ b/accessories/cables.rst
@@ -155,12 +155,49 @@ JTAG debug Cables
 TagConnect (JTAG)
 ==================
 
-Boards like :ref:`beagleconnect_freedom_home` and :ref:`beagleplay-home` use the TagConnect 
-interface which allows you to perform firmware updates and JTAG hardware debugging. To use the 
-interface, the the parts below from `tag-connect <https://www.tag-connect.com>`_  are required.
+Boards like :ref:`beagleconnect_freedom_home`, :ref:`beaglev-ahead-home`, :ref:`beaglev-fire-home`, and :ref:`beagleplay-home` use the TagConnect 
+interface which allows you to perform firmware updates and JTAG hardware debugging. To use the interface, the the parts below from 
+`tag-connect <https://www.tag-connect.com>`_  are required.
 
-1. `10pin TagConnect (no legs) ribbon cable. <https://www.tag-connect.com/product/tc2050-idc-nl-10-pin-no-legs-cable-with-ribbon-connector>`_
-2. `TagConnect retaining clip. <https://www.tag-connect.com/product/tc2050-clip-3pack-retaining-clip>`_
+.. note:: 
+    You need both the cable and the retaining clip to properly use/connect the cable with the boards. 
+    There is an option to 3D print protective cap and retaining cap which you can try.
+
+TC2050 debug cable
+-------------------
+
+.. image:: images/tc2050-idc-nl-10-pin-debug-cable.jpg
+    :align: center
+    :width: 420
+    :alt: TC2050 10pin debug cable
+ 
+1. `TC2050 cable (tag-connect.com) <https://www.tag-connect.com/product/tc2050-idc-nl-10-pin-no-legs-cable-with-ribbon-connector>`_
+2. `TC2050 cable (DigiKey) <https://www.digikey.com/en/products/detail/tag-connect-llc/TC2050-IDC-NL/2605367>`_
+
+
+
+TC2050 retaining clip
+----------------------
+
+.. image:: images/TC2050-CLIP.jpg
+    :align: center
+    :width: 420
+    :alt: TC2050 retaining clip
+
+1. `TC2050 retaining clip (tag-connect.com) <https://www.tag-connect.com/product/tc2050-clip-3pack-retaining-clip>`_
+2. `TC2050 retaining clip (DigiKey) <https://www.digikey.com/en/products/detail/tag-connect-llc/TC2050-CLIP-3PACK/12318009>`_
+
+3D printable cap & clip (Optional)
+-----------------------------------
+
+.. image:: images/TC2050-protective-cap.jpg
+    :align: center
+    :width: 420
+    :alt: 3D printable TC2050 protective cap
+
+
+1. `Protective cap (Thingiverse) <https://www.thingiverse.com/thing:3025584>`_
+2. `Retaining clip (Thingiverse) <https://www.thingiverse.com/thing:3035278>`_
 
 
 HDMI Cables
diff --git a/accessories/images/TC2050-CLIP.jpg b/accessories/images/TC2050-CLIP.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..361b838b853faf3fe0aa91e24d277d32f2d9e8e5
Binary files /dev/null and b/accessories/images/TC2050-CLIP.jpg differ
diff --git a/accessories/images/TC2050-protective-cap.jpg b/accessories/images/TC2050-protective-cap.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..78513c26d9b676965c9cf8d0dc873b7c93f5a08c
Binary files /dev/null and b/accessories/images/TC2050-protective-cap.jpg differ
diff --git a/accessories/images/tc2050-idc-nl-10-pin-debug-cable.jpg b/accessories/images/tc2050-idc-nl-10-pin-debug-cable.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c9dd86cb951fd0b048c4b56e6f4982b7a1ae6ceb
Binary files /dev/null and b/accessories/images/tc2050-idc-nl-10-pin-debug-cable.jpg differ
diff --git a/boards/beaglev/ahead/04-expansion.rst b/boards/beaglev/ahead/04-expansion.rst
index 009f0ab064a8717bc4957f9e773c375a7c20ea82..b7c04143e0dd63d042e8b7d8c585eb12a9948ae6 100644
--- a/boards/beaglev/ahead/04-expansion.rst
+++ b/boards/beaglev/ahead/04-expansion.rst
@@ -482,7 +482,7 @@ The **GPIO** row is the expected gpio identifier number in the Linux
 kernel.
 
 Each row includes the gpiochipX and pinY in the format of 
-`X Y`. You can use these values to direcly control the GPIO pins with the 
+`X Y`. You can use these values to directly control the GPIO pins with the 
 commands shown below.
 
 .. code:: bash
diff --git a/boards/beaglev/fire/05-demos.rst b/boards/beaglev/fire/05-demos.rst
index c318c38ca1cfd58905562383f2583d855daf2092..52a0c62c4094a140b6e5006c816742b27fcf7766 100644
--- a/boards/beaglev/fire/05-demos.rst
+++ b/boards/beaglev/fire/05-demos.rst
@@ -20,3 +20,4 @@ Demos
     demos-and-tutorials/gateware/how-to-find-out-whats-on-the-board
     demos-and-tutorials/gateware/gateware-full-flow
     demos-and-tutorials/gateware/gateware-tcl-scripts-structure
+    demos-and-tutorials/gateware/customize-cape-gateware-verilog
diff --git a/boards/beaglev/fire/demos-and-tutorials/gateware/customize-cape-gateware-verilog.rst b/boards/beaglev/fire/demos-and-tutorials/gateware/customize-cape-gateware-verilog.rst
new file mode 100644
index 0000000000000000000000000000000000000000..43554b4c4276f446c1b934f772894e00aa4213e0
--- /dev/null
+++ b/boards/beaglev/fire/demos-and-tutorials/gateware/customize-cape-gateware-verilog.rst
@@ -0,0 +1,411 @@
+.. _beaglev-fire-customize-cape-gateware-verilog:
+
+Customize BeagleV-Fire Cape Gateware Using Verilog
+###################################################
+
+This document describes how to customize gateware attached to BeagleV-Fire's cape interface using
+Verilog as primary language. The methodolgy described can also be applied when using other HDL
+languages.
+
+It will describe:
+
+- How to generate programming bitstreams without requiring the installation of the Libero FPGA toolchain on your development machine.
+- How to use the cape Verilog template
+- How to use the git.beagleboard.org CI infrastruture to generate programming bitstreams for your custom gateware
+
+
+Steps:
+
+1. Fork BeagleV-Fire gateware repository on git.beagleboard.org
+2. Create a custom gateware build option
+3. Rename a copy of the cape gateware Verilog template
+4. Customize the cape's Verilog source code
+5. Commit and push changes to your forked repository
+6. Retrieve the forked repositories artifacts
+7. Program BeagleV-Fire with your custom bitstream 
+
+
+Fork BeagleV-Fire Gateware Repository
+**************************************
+
+Navigate to BeagleV-Fire's `gateware source code repository <https://git.beagleboard.org/beaglev-fire/gateware>`_.
+
+Click on the ``Forks`` button on the top-right corner.
+
+.. figure:: media/gateware-beaglev-fire-fork.png
+    :align: center
+    :width: 1040
+    :alt: BeagleV-Fire gateware repo fork button 
+
+    BeagleV-Fire gateware repo fork button 
+
+
+On the Fork Project page, select your namespace and adjust the project name to help you manage multiple 
+custom gateware (e.g. ``my-lovely-gateware``). Click the ``Fork project`` button.
+
+.. figure:: media/verilog-gateware-fork.png
+    :align: center
+    :width: 1040
+    :alt: Create gateware fork
+
+    Create gateware fork
+
+Clone the forked repository
+===========================
+
+.. code-block:: shell
+
+    git clone git@git.beagleboard.org:<MY-NAMESPACE>/my-lovely-gateware.git
+
+Where ``<MY-NAMESPACE>`` is your Gitlab username or namespace.
+
+Create A Custom Gateware Build Option
+**************************************
+
+BeagleV-Fire's gateware build system uses "build configuration" YAML files to describe the combination
+of gateware components options that will be used to build the gateware programming bitstream. You need 
+to create one such file to describe to the gateware build system that you want your own custom gateware
+to be built. You need to have one such file describing your gateware in directory ``custom-fpga-design``.
+
+Let's modify the ``./custom-fpga-design/my_custom_fpga_design.yaml`` build configuration file to 
+specify that your custom cape gateware should be included in the gateware bitstream. In this instance will 
+call our custom cape gateware ``MY_LOVELY_CAPE``.
+
+.. callout::
+
+    .. code-block:: yaml
+
+        HSS:
+            type: git
+            link: https://git.beagleboard.org/beaglev-fire/hart-software-services.git
+            branch: develop-beaglev-fire
+            board: bvf
+        gateware:
+            type: sources
+            build-args: "M2_OPTION:NONE CAPE_OPTION:MY_LOVELY_CAPE" # <1>
+            unique-design-version: 9.0.2
+
+    .. annotations::
+
+        <1> On the gateware build-args line, replace VERILOG_TUTORIAL with MY_LOVELY_CAPE.
+
+.. note:: 
+        The **custom-fpga-design** directory has a special meaning for the Beagleboard Gitlab CI system.
+        Any build configuration found in this directory will be built by the CI system. This allows generating
+        FPGA programming bitstreams without the requirement for having the Microchip FPGA toolchain installed
+        on your computer.
+
+
+Rename A Copy Of The Cape Gateware Verilog Template
+****************************************************
+
+Move to the cape gateware source code
+=====================================
+
+.. code-block:: shell
+
+    cd my-lovely-gateware/sources/FPGA-design/script_support/components/CAPE
+
+Create a directory that will contain your custom cape gateware source code
+===========================================================================
+
+.. code-block:: shell
+
+    mkdir MY_LOVELY_CAPE
+
+Copy the cape Verilog template
+===============================
+
+.. code-block:: shell
+
+    cp -r VERILOG_TEMPLATE/* ./MY_LOVELY_CAPE/
+
+
+Customize The Cape's Verilog Source Code
+*****************************************
+
+Move to your custom gateware source directory
+=============================================
+
+.. code-block:: shell
+
+    cd MY_LOVELY_CAPE
+
+You will need to first edit the ``ADD_CAPE.tcl`` TCL script to use your source code within your custom
+gateware directory and not the Verilog template source code. In this example this means using source
+code within the ``MY_LOVELY_CAPE`` directory rather the VERILOG_TEMPLATE directory.
+
+Edit ADD_CAPE.tcl
+==================
+
+Replace ``VERILOG_TEMPLATE`` with ``MY_LOVELY_CAPE`` in file ``ADD_CAPE.tcl``.
+
+.. code-block:: tcl
+
+    #-------------------------------------------------------------------------------
+    # Import HDL source files
+    #-------------------------------------------------------------------------------
+    import_files -hdl_source {script_support/components/CAPE/MY_LOVELY_CAPE/HDL/apb_ctrl_status.v}
+    import_files -hdl_source {script_support/components/CAPE/MY_LOVELY_CAPE/HDL/P8_IOPADS.v}
+    import_files -hdl_source {script_support/components/CAPE/MY_LOVELY_CAPE/HDL/P9_11_18_IOPADS.v}
+    import_files -hdl_source {script_support/components/CAPE/MY_LOVELY_CAPE/HDL/P9_21_31_IOPADS.v}
+    import_files -hdl_source {script_support/components/CAPE/MY_LOVELY_CAPE/HDL/P9_41_42_IOPADS.v}
+    import_files -hdl_source {script_support/components/CAPE/MY_LOVELY_CAPE/HDL/CAPE.v}
+
+Add the path to your additional Verilog source code files.
+
+.. callout::
+    
+    .. code-block:: tcl
+
+        #-------------------------------------------------------------------------------
+        # Import HDL source files
+        #-------------------------------------------------------------------------------
+        import_files -hdl_source {script_support/components/CAPE/MY_LOVELY_CAPE/HDL/blinky.v} // <1>
+        import_files -hdl_source {script_support/components/CAPE/MY_LOVELY_CAPE/HDL/apb_ctrl_status.v}
+        import_files -hdl_source {script_support/components/CAPE/MY_LOVELY_CAPE/HDL/P8_IOPADS.v}
+        import_files -hdl_source {script_support/components/CAPE/MY_LOVELY_CAPE/HDL/P9_11_18_IOPADS.v}
+        import_files -hdl_source {script_support/components/CAPE/MY_LOVELY_CAPE/HDL/P9_21_31_IOPADS.v}
+        import_files -hdl_source {script_support/components/CAPE/MY_LOVELY_CAPE/HDL/P9_41_42_IOPADS.v}
+        import_files -hdl_source {script_support/components/CAPE/MY_LOVELY_CAPE/HDL/CAPE.v}
+
+    .. annotations::
+
+        <1> In our case we will be adding a new Verilog source file called blinky.v.
+
+You will only need to revisit the content of ``ADD_CAPE.tcl`` if you want to add more Verilog source files
+or want to modify how the cape interfaces with the rest of the gateware (RISC-V processor subsystem,
+clock and reset blocks).
+
+Customize The Cape's Verilog source code
+=========================================
+
+We will add a simple Verilog source file, ``blinky.v``, in the ``MY_LOVELY_CAPE`` directory. Code below:
+
+.. code-block:: verilog
+
+    `timescale 1ns/100ps
+    module blinky(
+    input    clk,
+    input    resetn,
+    output   blink
+    );
+
+    
+    reg [22:0] counter;
+    
+    assign blink = counter[22];
+
+    always@(posedge clk or negedge resetn)
+    begin
+        if(~resetn)
+            begin
+                counter <= 16'h0000;
+            end
+        else
+            begin
+                counter <= counter + 1;
+            end
+    end
+    endmodule
+
+Let's connect the blinky Verilog module within the cape by editing the ``CAPE.v`` file.
+
+Add the instantiation of the blinky module:
+
+.. callout::
+    
+    .. code-block:: devicetree
+
+        //--------P9_41_42_IOPADS
+        P9_41_42_IOPADS P9_41_42_IOPADS_0(
+                // Inputs
+                .GPIO_OE  ( GPIO_OE_const_net_3 ),
+                .GPIO_OUT ( GPIO_OUT_const_net_3 ),
+                // Outputs
+                .GPIO_IN  (  ),
+                // Inouts
+                .P9_41    ( P9_41 ),
+                .P9_42    ( P9_42 ) 
+                );
+
+        //--------blinky
+        blinky blinky_0(                // <1>
+                .clk     ( PCLK ),      // <2>
+                .resetn  ( PRESETN ),   // <3>
+                .blink   ( BLINK )      // <4>
+                );
+        
+        endmodule
+
+    .. annotations::
+
+        <1> Create a blinky module instance called blinky_0.
+
+        <2> Connect the clock using the existing PCLK wire.
+
+        <3> Connect the reset using the exisitng PRESETS wire.
+
+        <4> Connect the blinky's blink output using the BLINK wire. This BLINK wire needs to be declared.
+
+Add the BLINK wire:
+
+.. callout::
+    
+    .. code-block:: verilog
+
+        wire           PCLK;
+        wire           PRESETN;
+        wire           BLINK;                   // <1>
+        wire   [31:0]  APB_SLAVE_PRDATA_net_0;
+        wire   [27:0]  GPIO_IN_net_1;
+
+    .. annotations::
+
+        <1> Create a wire called BLINK.
+
+The BLINK wire will be used to connect the blinky module's output to a top level output connected
+to an LED. Do you see where this is going?
+
+Now for the complicated part. We are going to change the wiring of the bi-directional buffers
+controlling the cape I/Os including the user LEDs. 
+
+The original code populates two 43 bits wide wires for controlling the output-enable and output
+values of the P8 cape connector I/Os. The bottom 28 bits being controlled by the microprocessor
+subsystem's GPIO block.
+
+ .. code-block:: verilog
+
+     //--------------------------------------------------------------------
+     // Concatenation assignments
+     //--------------------------------------------------------------------
+     assign GPIO_OE_net_0  = { 16'h0000 , GPIO_OE };
+     assign GPIO_OUT_net_0 = { 16'h0000 , GPIO_OUT };
+
+We are going to hijack the 6th I/O with our blinky's output:
+
+.. callout::
+    
+    .. code-block:: verilog
+
+        //--------------------------------------------------------------------
+        // Concatenation assignments
+        //--------------------------------------------------------------------
+        assign GPIO_OE_net_0 = { 16'h0000, GPIO_OE[27:6], 1'b1, GPIO_OE[4:0] };         // <1>
+        assign GPIO_OUT_net_0 = { 16'h0000 , GPIO_OUT[27:6], BLINK, GPIO_OUT[4:0] };    // <2>
+
+    .. annotations::
+
+        <1> Tie high the output-enable of the 6th bit to constantly enable that output.
+
+        <2> Control the 6th output from the blink module through the WIRE wire.
+
+
+Edit The Cape's Device Tree Overlay
+=====================================
+
+You should always have a device tree overlay associated with your gateware even if there is limited
+control from Linux. The device tree overlay is very useful to identify which gateware is currently
+programmed on your BeagleV-Fire.
+
+.. callout::
+    
+    .. code-block:: devicetree
+
+        /dts-v1/;
+        /plugin/;
+
+        &{/chosen} {
+            overlays {
+                MY-LOVELY-CAPE-GATEWARE = "GATEWARE_GIT_VERSION";   // <1>
+            };
+        };
+
+    .. annotations::
+
+        <1> Replace VERILOG-CAPE-GATEWARE with MY-LOVELY-CAPE-GATEWARE.
+
+This change will result in ``MY-LOVELY-CAPE-GATEWARE`` being visible in ``/proc/device-tree/chosen/overlays``
+at run-time, allowing to check that my lovely gateware is successfully programmed on BeagleV-Fire.
+
+
+Commit And Push Changes To Your Forked Repository
+**************************************************
+
+Move back up to the root directory of your gateware project. This is the my-lovely-gateware directory in our current example.
+
+Add the ``my-lovely-gateware/sources/FPGA-design/script_support/components/CAPE/MY_LOVELY_CAPE`` directory content to your git repository.
+
+.. code:: shell
+
+    git add sources/FPGA-design/script_support/components/CAPE/MY_LOVELY_CAPE/
+
+Commit changes to ``my-lovely-gateware/custom-fpga-design/my_custom_fpga_design.yaml``
+
+.. code:: shell
+
+    git commit -m "Add my lovely gateware."
+
+Push changes to your beagleboard Gitlab repository:
+
+.. code:: shell
+
+    git push
+
+
+Retrieve The Forked Repositories Artifacts
+*******************************************
+
+Navigate to your forked repository. Click Pipelines in the left pane then the Download Artifacts
+button on the right handside. Select ``build-job:archive``. This will result in an ``artifacts.zip`` file
+being downloaded.
+
+.. figure:: media/gateware-pipeline.png
+    :align: center
+    :width: 1040
+    :alt: gateware pipeline 
+
+    gateware pipeline
+
+Program BeagleV-Fire With Your Custom Bitstream 
+************************************************
+
+Unzip the downloaded ``artifacts.zip`` file. Go to the ``gateware-builds-tester/artifacts/bitstreams`` directory:
+
+.. code:: shell
+
+    cd gateware-builds-tester/artifacts/bitstreams
+
+On your Linux host development computer, use the scp command to copy the bitstream to BeagleV-Fire
+home directory, replacing ``<IP_ADDRESS>`` with the IP address of your BeagleV-Fire.
+
+.. code:: shell
+
+    scp -r  ./my_custom_fpga_design beagle@<IP_ADDRESS>:/home/beagle/
+
+On BeagleV-Fire, initiate the reprogramming of the FPGA with your gateware bitstream:
+
+.. code:: shell
+
+    sudo /usr/share/beagleboard/gateware/changes-gateware.sh ./my_custom_fpga_design
+
+Wait for a couple of minutes for the BeagleV-Fire to reprogram itself.
+
+You will see the 6th user LED flash once the board is reprogrammed. That's the Verilog you added
+blinking the LED.
+
+On BeagleV-Fire, You can check that your gateware was loaded using the following command to see the
+device tree overlays:
+
+.. code:: shell
+
+    tree /proc/device-tree/chosen/overlays/
+
+.. figure:: media/gateware-lovely-overlay.png
+    :align: center
+    :width: 740
+    :alt: gateware lovely overlay
+
+    gateware lovely overlay
+
+
diff --git a/boards/beaglev/fire/demos-and-tutorials/gateware/media/gateware-beaglev-fire-fork.png b/boards/beaglev/fire/demos-and-tutorials/gateware/media/gateware-beaglev-fire-fork.png
new file mode 100644
index 0000000000000000000000000000000000000000..04829b7d72c69bd6e25de5cc9bf20703abfe0938
Binary files /dev/null and b/boards/beaglev/fire/demos-and-tutorials/gateware/media/gateware-beaglev-fire-fork.png differ
diff --git a/boards/beaglev/fire/demos-and-tutorials/gateware/media/gateware-lovely-overlay.png b/boards/beaglev/fire/demos-and-tutorials/gateware/media/gateware-lovely-overlay.png
new file mode 100644
index 0000000000000000000000000000000000000000..db841f5484d5de15f63621708d38a0dbde1e835c
Binary files /dev/null and b/boards/beaglev/fire/demos-and-tutorials/gateware/media/gateware-lovely-overlay.png differ
diff --git a/boards/beaglev/fire/demos-and-tutorials/gateware/media/gateware-pipeline.png b/boards/beaglev/fire/demos-and-tutorials/gateware/media/gateware-pipeline.png
new file mode 100644
index 0000000000000000000000000000000000000000..219510bcf63a65ddba57712e55e455d068be788e
Binary files /dev/null and b/boards/beaglev/fire/demos-and-tutorials/gateware/media/gateware-pipeline.png differ
diff --git a/boards/beaglev/fire/demos-and-tutorials/gateware/media/verilog-gateware-fork.png b/boards/beaglev/fire/demos-and-tutorials/gateware/media/verilog-gateware-fork.png
new file mode 100644
index 0000000000000000000000000000000000000000..5488a4dd28f324fefc9c2cbf8ce99752c316da5c
Binary files /dev/null and b/boards/beaglev/fire/demos-and-tutorials/gateware/media/verilog-gateware-fork.png differ
diff --git a/books/beaglebone-cookbook/01basics/basics.rst b/books/beaglebone-cookbook/01basics/basics.rst
index f96f0876f209c605136ae3d93dbac24f893a346a..d1bc345671159bd6f3c50bd7f3a1f528333d9ca4 100644
--- a/books/beaglebone-cookbook/01basics/basics.rst
+++ b/books/beaglebone-cookbook/01basics/basics.rst
@@ -428,7 +428,7 @@ in a way that you'd like to preserve or share.
 Solution
 ---------
 
-The `eLinux wiki <The http://elinux.org/Beagleboard>`_ page on `BeagleBone Black Extracting eMMC contents <http://bit.ly/1C57I0a>`_
+The `eLinux wiki <http://elinux.org/Beagleboard>`_ page on `BeagleBone Black Extracting eMMC contents <http://bit.ly/1C57I0a>`_
 provides some simple steps for copying the contents of the onboard flash to a file on a microSD card:
 
 - Get a 4 GB or larger microSD card that is FAT formatted.
@@ -448,7 +448,7 @@ provides some simple steps for copying the contents of the onboard flash to a fi
 
 .. tip:: 
 
-   The `eLinux wiki <The http://elinux.org/Beagleboard>`_ is the 
+   The `eLinux wiki <http://elinux.org/Beagleboard>`_ is the 
    definitive place for the BeagleBoard.org community to 
    share information about the Beagles. Spend some time 
    looking around for other helpful information.
diff --git a/books/beaglebone-cookbook/11misc/misc.rst b/books/beaglebone-cookbook/11misc/misc.rst
index 2fdb0b5b758ff8c5131cdb1883e6c29486894ace..8e0e5c6431f8335f4d608fe2a732db0b4b7cb486 100644
--- a/books/beaglebone-cookbook/11misc/misc.rst
+++ b/books/beaglebone-cookbook/11misc/misc.rst
@@ -811,6 +811,12 @@ To preview docs on your local machine:
 
     bone$ sphinx-serve
 
+For hot reload in development:
+
+.. code-block:: bash
+
+    bone$ make livehtml
+
 Then point your browser to localhost:8081.
 
 .. tip:: 
diff --git a/conf.py b/conf.py
index 2c0b4efdb786055b21436a0ddcb9c918b3915a27..0b60e726eeb13c3397d21ca61df1aead98cb9f0f 100644
--- a/conf.py
+++ b/conf.py
@@ -87,7 +87,7 @@ navigation_with_keys = True
 # List of patterns, relative to source directory, that match files and
 # directories to ignore when looking for source files.
 # This pattern also affects html_static_path and html_extra_path.
-exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'env']
+exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'env', ".venv"]
 
 html_theme = 'sphinx_rtd_theme'
 html_show_sphinx = False
diff --git a/requirements.txt b/requirements.txt
index 767efb557c21b578eddbd908547bc6c7696fe097..05dcb1eeaf8bc105cbd268cbf8ce9284a48f97e1 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,19 +3,23 @@ Babel==2.13.1
 breathe==4.35.0
 certifi==2023.11.17
 charset-normalizer==3.3.2
+colorama==0.4.6
 docutils==0.18.1
 graphviz==0.20.1
 idna==3.6
 imagesize==1.4.1
 Jinja2==3.1.2
+livereload==2.6.3
 MarkupSafe==2.1.3
 packaging==23.2
 Pillow==10.1.0
 Pygments==2.17.2
 requests==2.31.0
 setuptools==69.0.2
+six==1.16.0
 snowballstemmer==2.2.0
 Sphinx==7.2.6
+sphinx-autobuild==2021.3.14
 sphinx-copybutton==0.5.2
 sphinx-rtd-theme==2.0.0
 sphinx-serve==1.0.1
@@ -30,4 +34,5 @@ sphinxcontrib-jsmath==1.0.1
 sphinxcontrib-qthelp==1.0.6
 sphinxcontrib-serializinghtml==1.1.9
 sphinxcontrib-svg2pdfconverter==1.2.2
+tornado==6.4
 urllib3==2.1.0