diff --git a/boards/beaglebone/ai/03-design-and-specifications.rst b/boards/beaglebone/ai/03-design-and-specifications.rst
index 0d98e6e233bf90e9b4cd9cc41b8e3fb108fd2f20..22c15dbbe4fa31884425b2060e8777b562884b2e 100644
--- a/boards/beaglebone/ai/03-design-and-specifications.rst
+++ b/boards/beaglebone/ai/03-design-and-specifications.rst
@@ -370,7 +370,7 @@ USB-C Power
 
 Below image shows how the USB-C power input is connected to the **TPS6590379**.
 
-.. TODO: (Schematic screenshot)
+.. todo:: (Schematic screenshot)
 
 Power Button
 =============
@@ -501,7 +501,7 @@ The HDMI interface is aligned with the HDMI TMDS single stream standard
 v1.4a (720p @60Hz to 1080p @24Hz) and the HDMI v1.3 (1080p @60Hz): 3
 data channels, plus 1 clock channel is supported (differential).
 
-TODO: Verify it isn’t better than this. Doesn’t seem right.
+.. todo:: Verify it isn’t better than this. Doesn’t seem right.
 
 PRU-ICSS
 *********
diff --git a/boards/beaglebone/ai/04-expansion.rst b/boards/beaglebone/ai/04-expansion.rst
index 47b15d7c92e77dfcce9232085c20306f36295d0d..a5c52060da05294231e86bdcefaf0192c542cda7 100644
--- a/boards/beaglebone/ai/04-expansion.rst
+++ b/boards/beaglebone/ai/04-expansion.rst
@@ -921,7 +921,7 @@ for this second processor pin.
     +-----------------+--------------------+--------------------+
 
 
-TODO: Notes regarding the resistors on muxed pins.
+.. todo:: Notes regarding the resistors on muxed pins.
 
 Connector P9
 ==============
@@ -963,13 +963,13 @@ In the table are the following notations:
 **PWR_BUT** is a 5V level as pulled up internally by the TPS6590379. It
 is activated by pulling the signal to GND.
 
-TODO: (Actually, on BeagleBone AI, I believe PWR_BUT is pulled to 3.3V,
+.. todo:: (Actually, on BeagleBone AI, I believe PWR_BUT is pulled to 3.3V,
 but activation is still done by pulling the signal to GND. Also, a quick
 grounding of PWR_BUT will trigger a system event where shutdown can
 occur, but there is no hardware power-off function like on BeagleBone
 Black via this signal. It does, however, act as a hardware power-on.)
 
-TODO: (On BeagleBone Black, SYS_RESET was a bi-directional signal, but
+.. todo:: (On BeagleBone Black, SYS_RESET was a bi-directional signal, but
 it is only an output from BeagleBone AI to capes on BeagleBone AI.)
 
 .. table:: P9.01-P9.05
@@ -1792,7 +1792,7 @@ TODO
 Expansion Connector Headers
 ******************************
 
-TODO: discuss header options for working with the expansion connectors per 
+.. todo:: discuss header options for working with the expansion connectors per 
 https://git.beagleboard.org/beagleboard/beaglebone-black/-/wikis/System-Reference-Manual#section-7-1
 
 Signal Usage
diff --git a/boards/beagleconnect/freedom/demos-and-tutorials/using-greybus.rst b/boards/beagleconnect/freedom/demos-and-tutorials/using-greybus.rst
index be3f1bfe806151c4e7a7073d370e8a4efa94475c..6336ea469cfb56ad831ae61003356e7e56dd2771 100644
--- a/boards/beagleconnect/freedom/demos-and-tutorials/using-greybus.rst
+++ b/boards/beagleconnect/freedom/demos-and-tutorials/using-greybus.rst
@@ -113,9 +113,7 @@ BeagleConnectâ„¢ node device designs.
 Greybus
 -------
 
-TODO
-
-#TODO: Find a place for the following notes:
+.. todo:: Find a place for the following notes:
 
 * The device interfaces get exposed to the host via Greybus BRIDGED_PHY
   protocol
diff --git a/boards/beagleconnect/freedom/demos-and-tutorials/using-zephyr.rst b/boards/beagleconnect/freedom/demos-and-tutorials/using-zephyr.rst
index 30c774af47f270a958d2b6c61da955adb21f86f5..f2286bd11606051b5a9c7a21c0ce1d668522f95d 100644
--- a/boards/beagleconnect/freedom/demos-and-tutorials/using-zephyr.rst
+++ b/boards/beagleconnect/freedom/demos-and-tutorials/using-zephyr.rst
@@ -37,13 +37,9 @@ Install the SDK on BeaglePlay
 
 See :ref:`beagleplay-zephyr-development-setup`.
 
-.. important::
-
-   TODO: note the tested version of software for BeaglePlay
+.. todo:: note the tested version of software for BeaglePlay
    
-.. important::
-
-   TODO: describe how to know it is working
+.. todo:: describe how to know it is working
 
 Change default board
 ====================
diff --git a/boards/beagleconnect/index.rst b/boards/beagleconnect/index.rst
index 8f08420c67cec5fc8647ee3a3119cf3fba408493..934194c9b96446b50c4a3af94204ac69af0905d8 100644
--- a/boards/beagleconnect/index.rst
+++ b/boards/beagleconnect/index.rst
@@ -72,7 +72,7 @@ microcontroller firmware. The Linux environment provides opportunities for
 high-level remote management using tools like Balena with applications deployed
 in Docker containers.
 
-#TODO: provide image illustrating remote management
+.. todo:: provide image illustrating remote management
 
 The hardware and software are fully open source, providing for scalability and a lack of vendor lock-in.
 
diff --git a/books/beaglebone-cookbook/02sensors/sensors.rst b/books/beaglebone-cookbook/02sensors/sensors.rst
index 87515f78c7312c5fec7f4deb82d18a6f3e24b20b..87700d59ed44992442fd9a4a76bda1c44a085856 100644
--- a/books/beaglebone-cookbook/02sensors/sensors.rst
+++ b/books/beaglebone-cookbook/02sensors/sensors.rst
@@ -1131,7 +1131,7 @@ Each temperature sensor has a unique serial number, so you can have several all
 Playing and Recording Audio
 ============================
 
-.. TODO
+.. todo::
   Remove?
 
 Problem
diff --git a/books/beaglebone-cookbook/05tips/tips.rst b/books/beaglebone-cookbook/05tips/tips.rst
index 29175c1621647125f71adbb364a5882e7b33e5be..30c4d831a7f25d6266815bd5c64293bc3feb01f6 100644
--- a/books/beaglebone-cookbook/05tips/tips.rst
+++ b/books/beaglebone-cookbook/05tips/tips.rst
@@ -729,7 +729,7 @@ The instructions here are based on using **networkctl**.
 
    Instructions for setting up your network.
 
-.. TODO 
+.. todo:: 
    is this up to date?
 
 Several WiFi adapters work with the Bone. Check `WiFi Adapters <http://bit.ly/1EbEwUo>`_ for the latest list.
@@ -762,7 +762,7 @@ Then run *lsusb* to ensure that your Bone found the adapter:
    being discovered when hot-plugged, which is why you should reboot. Newer kernels should address this issue.
 
 
-.. TODO
+.. todo::
    update
 
 Next, run *networkctl* to find your adapter's name. Mine is 
@@ -851,7 +851,7 @@ Change the *ssid* and *psk* entries for your network. Save your file, then run:
 Sharing the Host's Internet Connection over USB
 =================================================
 
-.. TODO
+.. todo::
    Test this
 
 Problem
@@ -937,7 +937,7 @@ what if you have a web server on your Bone that you want to access from the worl
 The solution is to use port forwarding from your host. 
 Web servers typically listen to port *80*. First, look up the IP address of your host:
 
-.. TODO
+.. todo::
    switch to ip address
 
 .. code-block:: bash
@@ -964,7 +964,7 @@ It's the number following *inet*, which in my case is *172.31.43.210*.
 
 Then run the following, using your host's IP address:
 
-.. TODO 
+.. todo:: 
    check this iptables, convert to ufw
 
 .. code-block:: bash
@@ -1195,7 +1195,7 @@ The second partition (*p2*) is the root of the file system.
 The *ls* command shows what devices are available to mount. Because *mmcblk0* is already mounted, 
 */dev/mmcblk1p1* must be the other media that we need to mount. Run the following commands to mount it:
 
-.. TODO 
+.. todo:: 
    update
 
 .. code-block:: bash
diff --git a/books/beaglebone-cookbook/06iot/iot.rst b/books/beaglebone-cookbook/06iot/iot.rst
index fdf32cfa9f5da13fd68427541c5ef482a06d35b9..9b67d707b49dcac88930b50a3dddde2407cb2129 100644
--- a/books/beaglebone-cookbook/06iot/iot.rst
+++ b/books/beaglebone-cookbook/06iot/iot.rst
@@ -499,7 +499,7 @@ Run it:
   bone$ ./analogInContinuous.py
   Hit ^C to stop
 
-.. TODO 
+.. todo:: 
   verify this works. fonts are taking too long to load
 
 :ref:`analog_sine_fig` is the output of a 1KHz sine wave.
@@ -591,7 +591,7 @@ A number of files get installed, including the ADC file. Now try rerunning.
 
 Here's the output of a 10KHz triangle wave. 
 
-.. TODO  
+.. todo::  
   Is this true: (The plot is wrong, but eLinux won't let me fix it.)
 
 .. _analog_tri_fig:
@@ -662,7 +662,7 @@ See https://realpython.com/python-send-email/ for an example that sends an attac
 Sending an SMS Message
 =======================
 
-.. TODO  
+.. todo::  
   My twilio account is suspended, using yoder@rose-hulman.edu.
 
 Problem
@@ -863,7 +863,7 @@ Around line 15 is the *id* number.  Paste in the value returned above.
 
 :download:`twitter_delete_tweet.py <../code/06iot/twitter_delete_tweet.py>`
 
-.. TODO
+.. todo::
   Start Here.  Update for python.
 
 The code in :ref:`networking_pushbutton_code` sends a tweet whenever a button is pushed.
diff --git a/books/pru-cookbook/01case/case.rst b/books/pru-cookbook/01case/case.rst
index a0984eea2104da1830d9903dd1acd0c5496afd98..26b1de71326d00b72e8e9ce206a4819bd40b47a0 100644
--- a/books/pru-cookbook/01case/case.rst
+++ b/books/pru-cookbook/01case/case.rst
@@ -33,7 +33,7 @@ chapters you will see the details of how they work.
 
 Here we present:
 
-.. TODO Switch from LEDscape to FPP
+.. todo:: Switch from LEDscape to FPP
 
 * `Robotics Control Library <https://beagleboard.org/librobotcontrol>`_
 * `BeagleLogic <https://github.com/abhishek-kakkar/BeagleLogic/wiki>`_
@@ -108,8 +108,7 @@ via the PRU that can be used out of the box.
    :ref:`details_configure_servos` 
    to configure the pins for the Black and the Pocket.
 
-
-.. * TODO - verify these commands
+.. todo:: verify these commands
 
 Just run:
 
@@ -339,7 +338,7 @@ It points to an older image (beaglelogic-stretch-2017-07-13-4gb.img.xz) but shou
 
 If you want to be running a newer image, there are instructions on the site for `installing BeagleLogic <https://beaglelogic.readthedocs.io/en/latest/install.html>`_, but I had to do the additional steps in :ref:`case_installing_beaglelogic`.
 
-.. TODO - Recheck
+.. todo:: - Recheck
 
 .. _case_installing_beaglelogic:
 
@@ -429,167 +428,166 @@ BeagleLogic uses the two PRUs to sample at 100Msps.  Getting a PRU running at 20
 explaining how the PRUs get this type of performance.   
 
 
-..
-  TODO This is currently broken with the latest version of Falcon Christmas (no F8-B-20.json file)
+.. todo:: This is currently broken with the latest version of Falcon Christmas (no F8-B-20.json file)
 
-  NeoPixels -- 5050 RGB LEDs with Integrated Drivers (Falcon Christmas)
-  ***********************************************************************
+NeoPixels -- 5050 RGB LEDs with Integrated Drivers (Falcon Christmas)
+***********************************************************************
 
-  Problem
-  --------
+Problem
+--------
 
-  You have an `Adafruit NeoPixel LED string <http://www.adafruit.com/products/1138>`_,
-  `Adafruit NeoPixel LED matrix <http://www.adafruit.com/products/1487>`_ or
-  any other type of 
-  `WS2812 LED <https://cdn-shop.adafruit.com/datasheets/WS2812.pdf>`_
-  and want to light it up.
+You have an `Adafruit NeoPixel LED string <http://www.adafruit.com/products/1138>`_,
+`Adafruit NeoPixel LED matrix <http://www.adafruit.com/products/1487>`_ or
+any other type of 
+`WS2812 LED <https://cdn-shop.adafruit.com/datasheets/WS2812.pdf>`_
+and want to light it up.
 
-  .. TODO Show how to drive ws2812's with FPP.
+.. todo:: Show how to drive ws2812's with FPP.
 
-  Solution
-  ---------
+Solution
+---------
 
-  If you are driving just one string you can write your own code 
-  (See :ref:`blocks_ws2812`)
-  If you plan to drive multiple strings, then consider
-  Falcon Christmas (`FPP <https://falconchristmas.com/>`_). 
-  FPP can be used to drive both LEDs with an integrated
-  driver (neopixels) or without an integrated driver.  Here we'll show you how to
-  set up for the integrated drive and in the next section the no driver LEDs will be 
-  show.
+If you are driving just one string you can write your own code 
+(See :ref:`blocks_ws2812`)
+If you plan to drive multiple strings, then consider
+Falcon Christmas (`FPP <https://falconchristmas.com/>`_). 
+FPP can be used to drive both LEDs with an integrated
+driver (neopixels) or without an integrated driver.  Here we'll show you how to
+set up for the integrated drive and in the next section the no driver LEDs will be 
+show.
 
-  Hardware
-  ----------
+Hardware
+----------
 
-  For this setup we'll wire a single string of NeoPixels to the Beagle.  
-  I've attached the black wire on the string to ground on the Beagle 
-  and the red wire to a 3.3V pin on the Beagle.
-  The yellow data in line is attached to P1.31 (I'm using a PocketBeagle.).
+For this setup we'll wire a single string of NeoPixels to the Beagle.  
+I've attached the black wire on the string to ground on the Beagle 
+and the red wire to a 3.3V pin on the Beagle.
+The yellow data in line is attached to P1.31 (I'm using a PocketBeagle.).
 
-  How did I know to attach to P1.31?  The FalconChristmas git repo
-  (https://github.com/FalconChristmas/fpp) has files that tell which pins
-  attach to which port.  https://github.com/FalconChristmas/fpp/blob/master/capes/pb/strings/F8-B-20.json
-  has a list of 20 ports and where they are connected.  Pin P1.31 appears on
-  line 27.  It's the 20th entry in the list.  You could pick any of the others
-  if you'd rather.
+How did I know to attach to P1.31?  The FalconChristmas git repo
+(https://github.com/FalconChristmas/fpp) has files that tell which pins
+attach to which port.  https://github.com/FalconChristmas/fpp/blob/master/capes/pb/strings/F8-B-20.json
+has a list of 20 ports and where they are connected.  Pin P1.31 appears on
+line 27.  It's the 20th entry in the list.  You could pick any of the others
+if you'd rather.
 
-  Software Setup
-  ---------------
+Software Setup
+---------------
 
-  Assuming the PocketBeagle is attached via the USB cable, 
-  on your host computer browse to <http://192.168.7.2/> and you will see 
-  :ref:`case_fpp_program_control2`.
+Assuming the PocketBeagle is attached via the USB cable, 
+on your host computer browse to <http://192.168.7.2/> and you will see 
+:ref:`case_fpp_program_control2`.
 
-  .. _case_fpp_program_control2:
+.. _case_fpp_program_control2:
 
-  .. figure:: figures/fpp_program_control.png
-     :align: center
-     :alt: Falcon Play Program Control
+.. figure:: figures/fpp_program_control.png
+   :align: center
+   :alt: Falcon Play Program Control
 
-     Falcon Play Program Control
+   Falcon Play Program Control
 
-  You can test the display by first setting up the Channel Outputs and then 
-  going to *Display Testing*.  :ref:`case_channel_outputs_menu2` shows where to 
-  select Channel Outputs and :ref:`case_channel_outputs2` shows which settings to use.
+You can test the display by first setting up the Channel Outputs and then 
+going to *Display Testing*.  :ref:`case_channel_outputs_menu2` shows where to 
+select Channel Outputs and :ref:`case_channel_outputs2` shows which settings to use.
 
-  .. _case_channel_outputs_menu2:
+.. _case_channel_outputs_menu2:
 
-  .. figure:: figures/fpp_channel_outputs_menu.png
-     :align: center
-     :alt: Selecting Channel Outputs
+.. figure:: figures/fpp_channel_outputs_menu.png
+   :align: center
+   :alt: Selecting Channel Outputs
 
-     Selecting Channel Outputs
+   Selecting Channel Outputs
 
-  .. _case_channel_outputs2:
+.. _case_channel_outputs2:
 
-  .. figure:: figures/fpp_channel_outputs_strings.png
-     :align: center
-     :alt: Channel Outputs Settings
+.. figure:: figures/fpp_channel_outputs_strings.png
+   :align: center
+   :alt: Channel Outputs Settings
 
-     Channel Outputs Settings
+   Channel Outputs Settings
 
-  Click on the *Pixel Strings* tab.  Earlier we noted that *P1.31* is attached
-  to port 20.  Note that at the bottom of the screen, port 20 has a PIXEL COUNT
-  of 24.  We're telling FPP our string has 24 NeoPixels and they are attached
-  to port 2 which in *P1.31*.  
+Click on the *Pixel Strings* tab.  Earlier we noted that *P1.31* is attached
+to port 20.  Note that at the bottom of the screen, port 20 has a PIXEL COUNT
+of 24.  We're telling FPP our string has 24 NeoPixels and they are attached
+to port 2 which in *P1.31*.  
 
-  Be sure to check the *Enable String Cape*.
+Be sure to check the *Enable String Cape*.
 
-  Next we need to test the display.  Select **Display Testing** shown in
-  :ref:`case_display_testing_menu2`.
+Next we need to test the display.  Select **Display Testing** shown in
+:ref:`case_display_testing_menu2`.
 
-  .. _case_display_testing_menu2:
+.. _case_display_testing_menu2:
 
-  .. figure:: figures/fpp_display_testing_menu2.png
-     :align: center
-     :alt: Selecting Display Testing
+.. figure:: figures/fpp_display_testing_menu2.png
+   :align: center
+   :alt: Selecting Display Testing
 
-     Selecting Display Testing
+   Selecting Display Testing
 
-  Set the *End Channel* to *72*. (72 is 3*24)  
-  Click *Enable Test Mode* and your matrix should light up.  Try the different 
-  testing patterns shown in :ref:`case_display_testing2`.
+Set the *End Channel* to *72*. (72 is 3*24)  
+Click *Enable Test Mode* and your matrix should light up.  Try the different 
+testing patterns shown in :ref:`case_display_testing2`.
 
-  .. note::
+.. note::
 
-     Clicking on the *-3* will subtract three from the End Channel, which should
-     then display three fewer LEDs which is one NeoPixel.  The last of your NeoPixels
-     should go black.  This is an easy way to make sure you have the correct pixel
-     count.
+   Clicking on the *-3* will subtract three from the End Channel, which should
+   then display three fewer LEDs which is one NeoPixel.  The last of your NeoPixels
+   should go black.  This is an easy way to make sure you have the correct pixel
+   count.
 
-  .. _case_display_testing2:
+.. _case_display_testing2:
 
-  .. figure:: figures/fpp_display_testing2.png
-     :align: center
-     :alt: Display Testing Options
+.. figure:: figures/fpp_display_testing2.png
+   :align: center
+   :alt: Display Testing Options
 
-     Display Testing Options
+   Display Testing Options
 
-  You can control the LED string using the E1.31 protocol. 
-  (https://www.doityourselfchristmas.com/wiki/index.php?title=E1.31_(Streaming-ACN)_Protocol)
-  First configure the input channels by going to Channel Inputs as shown in
-  :ref:`case_channel_inputs`.
+You can control the LED string using the E1.31 protocol. 
+(https://www.doityourselfchristmas.com/wiki/index.php?title=E1.31_(Streaming-ACN)_Protocol)
+First configure the input channels by going to Channel Inputs as shown in
+:ref:`case_channel_inputs`.
 
-  .. _case_channel_inputs:
+.. _case_channel_inputs:
 
-  .. figure:: figures/fpp_channel_inputs.png
-     :align: center
-     :alt: Going to Channel Inputs
+.. figure:: figures/fpp_channel_inputs.png
+   :align: center
+   :alt: Going to Channel Inputs
 
-     Going to Channel Inputs
+   Going to Channel Inputs
 
-  Tell it you have 72 LEDs and enable the input as shown in :ref:`case_set_inputs`.
+Tell it you have 72 LEDs and enable the input as shown in :ref:`case_set_inputs`.
 
-  .. _case_set_inputs:
+.. _case_set_inputs:
 
-  .. figure:: figures/fpp_inputs_setup2.png
-     :align: center
-     :alt: Setting Channel Inputs
+.. figure:: figures/fpp_inputs_setup2.png
+   :align: center
+   :alt: Setting Channel Inputs
 
-     Setting Channel Inputs
+   Setting Channel Inputs
 
-  Finally go to the Status Page as shown in :ref:`case_status`.
+Finally go to the Status Page as shown in :ref:`case_status`.
 
-  .. _case_status:
+.. _case_status:
 
-  .. figure:: figures/fpp_status.png
-     :align: center
-     :alt: Watching Status
+.. figure:: figures/fpp_status.png
+   :align: center
+   :alt: Watching Status
 
-     Watching the status
+   Watching the status
 
-  Now run a program on another computer that generated E1.31 packets.
-  :ref:`case_e1.31_example` is an example python program.
+Now run a program on another computer that generated E1.31 packets.
+:ref:`case_e1.31_example` is an example python program.
 
-  .. _case_e1.31_example:
+.. _case_e1.31_example:
 
-  .. literalinclude:: ../code/02start/e1.31-test.py
-     :caption: e1.31-test.py -Example of generating packets to control the NeoPixels
-     :linenos:
+.. literalinclude:: ../code/02start/e1.31-test.py
+   :caption: e1.31-test.py -Example of generating packets to control the NeoPixels
+   :linenos:
 
-  :download:`e1.31-test.py <../code/02start/e1.31-test.py>`
+:download:`e1.31-test.py <../code/02start/e1.31-test.py>`
 
-  .. TODO document the code
+.. todo:: document the code
 
 .. _case_rgb_matrix:
 
@@ -753,7 +751,7 @@ Run xLights and you'll see :ref:`case_xlights_setup`.
    host$ chmod +x xLights-2021.18-x86_64.AppImage
    host$ ./xLights-2021.18-x86_64.AppImage
 
-.. TODO update the figures.
+.. todo:: update the figures.
 
 .. _case_xlights_setup:
 
@@ -857,7 +855,7 @@ Click on the **Save** button above the table.
 
 Then go to the **Status/Control** menu and select **Status Page**.  
 
-.. TODO  update this
+.. todo::  update this
 
 .. _case_mode_bridge:
 
diff --git a/books/pru-cookbook/02start/start.rst b/books/pru-cookbook/02start/start.rst
index dc5f3c450c6d9ee8f6e428a81ab304c9c6ff662d..aaa3f78175035176fd05c63ec229e2d98335beca 100644
--- a/books/pru-cookbook/02start/start.rst
+++ b/books/pru-cookbook/02start/start.rst
@@ -175,7 +175,7 @@ Solution
 On your host computer open a browser and go to
 http://www.beagleboard.org/distros.
 
-.. TODO  Update links
+.. todo::  Update links
 
 This shows you two current choices of recent Debian images,
 one for the BeagleBone AI 
@@ -330,7 +330,7 @@ Solution
 The 'hello, world' of the embedded world is to flash an LED. :ref:`start_hello` 
 is some code that blinks the ``USR3`` LED ten times using the PRU.
 
-.. TODO The *'s and _'s in the code are messing with the formatting.
+.. todo:: The *'s and _'s in the code are messing with the formatting.
 
 .. _start_hello:
 
diff --git a/books/pru-cookbook/03details/details.rst b/books/pru-cookbook/03details/details.rst
index a8152dcc6f941265b7c459c80b64b9b2384d2c17..9b04b71b6aa526b8b4ded647e58884f5a961a26d 100644
--- a/books/pru-cookbook/03details/details.rst
+++ b/books/pru-cookbook/03details/details.rst
@@ -38,11 +38,10 @@ It's all on a GitHub repository.
     bone$ git clone https://git.beagleboard.org/beagleboard/pru-cookbook-code
     bone$ cd pru-cookbook-code
     bone$ sudo ./install.sh
-.. note::
-   #TODO#: The version of code used needs to be noted in the documentation.
 
-.. note::
-   #TODO#: Why is this documented in multiple places?
+.. todo:: The version of code used needs to be noted in the documentation.
+
+.. todo:: Why is this documented in multiple places?
 
 .. _compiling_with_clpru_and_lnkpru:
 
@@ -344,7 +343,7 @@ Both files can be found in ``/opt/source/pru-cookbook-code/common``.
 
 :download:`am335x_pru.cmd <../code/03details/am335x_pru.cmd>`
 
-.. TODO does  this need updating?
+.. todo:: does  this need updating?
 
 The cmd file for the AI is about the same, with appropriate addresses for the AI.
 
diff --git a/books/pru-cookbook/04debug/debug.rst b/books/pru-cookbook/04debug/debug.rst
index 711adfe65034170270f50c131f6a52da0cf4b4b3..498b427cc1fa4aee914557fff2652c9734ebb2e4 100644
--- a/books/pru-cookbook/04debug/debug.rst
+++ b/books/pru-cookbook/04debug/debug.rst
@@ -110,7 +110,7 @@ Once ``prudebug`` is installed is rather easy to use.
 
   ``prudebug`` has now been ported to the AI.
 
-.. TODO  Isn't working on Pocket at this time.
+.. todo::  Isn't working on Pocket at this time.
 
 .. code-block:: bash
 
@@ -280,7 +280,7 @@ Problem
 
 I'd like to use something like ``printf()`` to debug my code.
 
-.. TODO Check these on the Black and Pocket without grove
+.. todo:: Check these on the Black and Pocket without grove
 
 Solution
 ---------
@@ -389,7 +389,7 @@ For example
 
   DRA7XX_CORE_IOPAD(0x3610, *PIN_INPUT* | MUX_MODE10) // C6: P8.33a:
 
-.. * TODO - Add code for Blue.
+.. todo:: Add code for Blue.
 
 .. literalinclude:: ../code/04debug/uart1.pru1_0.c
    :caption: uart1.pru1_0.c
diff --git a/books/pru-cookbook/05blocks/blocks.rst b/books/pru-cookbook/05blocks/blocks.rst
index d36ed15b75e4ca9ee327dc8cfb8787c422edbe1f..3c267ceaff85f83ed4e1ba1dfadc58e0bf509936 100644
--- a/books/pru-cookbook/05blocks/blocks.rst
+++ b/books/pru-cookbook/05blocks/blocks.rst
@@ -28,7 +28,7 @@ Problem
 
 I want to control where my variables are stored in memory.
 
-.. TODO Include a section on accessing DDR.
+.. todo:: Include a section on accessing DDR.
 
 Solution
 ---------
@@ -480,7 +480,7 @@ Here's what's in ``resource_table_empty.h``
 
 Bit 0 is the LSB.
 
-.. TODO fill in Blue
+.. todo:: fill in Blue
 
 .. _blocks_mapping_bits:
 
@@ -1581,7 +1581,7 @@ Run the code as usual.
   bone$ echo -1 > /dev/rpmsg_pru30
 
 
-.. TODO get this working on the 5.10 kernel
+.. todo:: get this working on the 5.10 kernel
 
 ``/dev/rpmsg_pru30`` is a device driver that lets the ARM talk to the PRU.
 The first ``echo`` says to set the 0^th^ LED to RGB value 0xff 0 127. (Note: you can
@@ -1720,7 +1720,7 @@ That gives a good overview, but there are a few details missing.
 :ref:`blocks_rgb_python` is a functioning python program that gives a nice
 high-level view of how to drive the display. 
 
-.. TODO Test this
+.. todo:: Test this
 
 .. _blocks_rgb_python:
 
diff --git a/projects/beagleconnect/index.rst b/projects/beagleconnect/index.rst
index 31f72fbaa94a0f9718ae04eadc0e68ee30a4cb02..5da423616cb7498eb662f1c337cb9d6fc20815ff 100644
--- a/projects/beagleconnect/index.rst
+++ b/projects/beagleconnect/index.rst
@@ -227,7 +227,7 @@ the relative humidity and after "4t:" is the temperature in Celsius.
 Flash BeagleConnectâ„¢ Freedom node device with Greybus firmware
 --------------------------------------------------------------
 
-#TODO: How can we add a step in here to show the network is connected without needing gbridge to be fully functional?
+.. todo:: How can we add a step in here to show the network is connected without needing gbridge to be fully functional?
 
 Do this from the BeagleBone® Green Gateway board that was previously used to 
 program the BeagleConnectâ„¢ Freedom gateway device:
@@ -348,17 +348,17 @@ program the BeagleConnectâ„¢ Freedom gateway device:
     debian@beaglebone:~$
 
 
-#TODO: update the below for the built-in sensors
+.. todo:: update the below for the built-in sensors
 
-#TODO: can we also handle the case where these sensors are included and recommend them? Same firmware?
+.. todo:: can we also handle the case where these sensors are included and recommend them? Same firmware?
 
-#TODO: the current demo is for the built-in sensors, not the Click boards mentioned below
+.. todo:: the current demo is for the built-in sensors, not the Click boards mentioned below
 
 Currently only a limited number of add-on boards have been tested to work over Greybus, simple add-on boards without interrupt requirement are the ones that work currently. The example is for Air Quality 2 Click and Weather Click attached to the mikroBUS ports on the device side.
 
 /var/log/gbridge will have the gbridge log, and if the mikroBUS port has been instantiated successfully the kernel log will show the devices probe messages:
 
-#TODO: this log needs to be updated
+.. todo:: this log needs to be updated
 
 .. code-block::
 
@@ -377,7 +377,7 @@ Currently only a limited number of add-on boards have been tested to work over G
     mikrobus mikrobus-0: registering device : ams-iaq-core
 
 
-#TODO: bring in the GPIO toggle and I2C explorations for greater understanding
+.. todo:: bring in the GPIO toggle and I2C explorations for greater understanding
 
 Flashing via a Linux Host
 -------------------------
@@ -622,7 +622,7 @@ While the statically configured IPv6 address is useful, it isn't 100% necessary.
 Rebuilding from source
 ----------------------
 
-#TODO: revisit everything below here
+.. todo:: revisit everything below here
 
 Prerequisites
 ^^^^^^^^^^^^^
@@ -743,7 +743,7 @@ For this demo, I used the 5.8.4 stable kernel. Also, I've applied the
 Note: The parent directory :code:`~` is simply used as a placeholder for testing. 
 Please use whatever parent directory you see fit. 
 
-TODO: The patches for gb-netlink will eventually be applied here until pushed into mainline.
+.. todo:: The patches for gb-netlink will eventually be applied here until pushed into mainline.
 
 .. code-block:: bash