diff --git a/boards/beaglebone/ai-64/edge_ai_apps/getting_started.rst b/boards/beaglebone/ai-64/edge_ai_apps/getting_started.rst
index 72363710f8a6fb3fb4a6c57e3de04bbe726acbcb..0240021e1c59922bd613e5c941edf677d78daed3 100644
--- a/boards/beaglebone/ai-64/edge_ai_apps/getting_started.rst
+++ b/boards/beaglebone/ai-64/edge_ai_apps/getting_started.rst
@@ -134,7 +134,7 @@ flash it to SD card using `Balena etcher <https://www.balena.io/etcher/>`_ tool.
 
 .. todo: Images should be on https://files.debian.cc and linked from https://www.beagleboard.org/distros
 
-- To use via SD card: `bbai64-debian-11.4-xfce-edgeai-arm64-2022-08-02-10gb.img.xz <https://rcn-ee.net/rootfs/bb.org/testing/2022-08-02/bullseye-xfce-edgeai-arm64/bbai64-debian-11.4-xfce-edgeai-arm64-2022-08-02-10gb.img.xz>`_
+- To use via SD card: `TDA4VM Debian 11.5 2022-11-01 10GB SD XFCE EDGEAI <https://www.beagleboard.org/distros/tda4vm-debian-11-5-2022-11-01-10gb-sd-xfce-edgeai>`_
 - To flash on eMMC: `bbai64-emmc-flasher-debian-11.4-xfce-edgeai-arm64-2022-08-02-10gb.img.xz <https://rcn-ee.net/rootfs/bb.org/testing/2022-08-02/bullseye-xfce-edgeai-arm64/bbai64-emmc-flasher-debian-11.4-xfce-edgeai-arm64-2022-08-02-10gb.img.xz>`_
 
 
diff --git a/boards/beagleplay/demos-and-tutorials/play-kernel-development.rst b/boards/beagleplay/demos-and-tutorials/play-kernel-development.rst
index 2595cab047ab37260ca615adff0ec41985e3998b..545fc2a0cdc15b0a236480db422cfb1fd2a19bb9 100644
--- a/boards/beagleplay/demos-and-tutorials/play-kernel-development.rst
+++ b/boards/beagleplay/demos-and-tutorials/play-kernel-development.rst
@@ -1,10 +1,5 @@
 .. _play-kernel-development:
 
-.. toctree::
- :numbered:
-
-   Introduction
-
 Introduction
 #############
 
diff --git a/boards/beagleplay/demos-and-tutorials/using-serial-console.rst b/boards/beagleplay/demos-and-tutorials/using-serial-console.rst
index 12957bdfe2408ed3453905c1929a443b2548d286..3900b2525eb6df04df0f6f36b4b7a7ba38be35ad 100644
--- a/boards/beagleplay/demos-and-tutorials/using-serial-console.rst
+++ b/boards/beagleplay/demos-and-tutorials/using-serial-console.rst
@@ -4,7 +4,7 @@ Using Serial Console
 ####################
 
 To see the board boot log and access your BeaglePlay's console you can connect a USB-UART  
-cable as dipicted in image below and use application like ``tio`` to access the conole.
+cable as depicted in the image below and use applications like ``tio`` to access the console.
 
 .. figure:: images/serial-debug-connection.jpg
     :width: 1400
@@ -13,7 +13,7 @@ cable as dipicted in image below and use application like ``tio`` to access the
     Serial debug (USB-UART) cable connection.
 
 If you are using Linux your USB to UART converter may appear as ``/dev/ttyUSB``. 
-It will be different for Mac and Windows operatig systems.
+It will be different for Mac and Windows operating systems.
 
 .. code-block:: shell
 
diff --git a/boards/beagleplay/demos-and-tutorials/zephyr-cc1352-development.rst b/boards/beagleplay/demos-and-tutorials/zephyr-cc1352-development.rst
index 17ad45ff0be22a81e0bfc86ae443cf37a7c34d7f..b94d050fc23fcf047b54ad1f2228e1c4b1799159 100644
--- a/boards/beagleplay/demos-and-tutorials/zephyr-cc1352-development.rst
+++ b/boards/beagleplay/demos-and-tutorials/zephyr-cc1352-development.rst
@@ -69,6 +69,8 @@ into the Visual Studio Code IDE environment.
     A big part of what is missing here is to put your BeaglePlay on the Internet such
     that we can download things in later steps. That has been initially brushed over.
 
+.. _zephyr_flash_radio :
+
 Flash existing IEEE 802.15.4 radio bridge (WPANUSB) firmware
 ************************************************************
 
@@ -111,13 +113,23 @@ Steps
 
 #. Download and flash the `WPANUSB` Zephyr application firmware onto the CC1352P7 on BeaglePlay from the `releases on git.beagleboard.org <https://git.beagleboard.org/beagleconnect/zephyr/zephyr/-/releases>`_ or `distros on www.beagleboard.org/distros <https://www.beagleboard.org/distros>`_.
 
-    .. code-block:: bash
+    .. code-block:: shell-session
 
         cd
         wget https://files.beagle.cc/file/beagleboard-public-2021/images/download
         unzip download
         build/play/cc2538-bsl.py build/play/wpanusb
 
+    .. note:: 
+        I got a `File Not Found` error on the ``wget`` command above. If it doesn't 
+        work for you try: 
+
+    .. code-block:: shell-session
+
+            bone:~$ wget https://files.beagle.cc/file/beagleboard-public-2021/images/zephyr-beagle-cc1352-0.2.2.zip
+            bone:~$ unzip zephyr-beagle-cc1352-0.2.2.zip  
+            bone:~$ build/play/cc2538-bsl.py build/play/wpanusb
+
 #. Ensure the `bcfserial` driver is set to load.
 
     .. code-block:: bash
diff --git a/boards/beaglev/ahead/02-quick-start.rst b/boards/beaglev/ahead/02-quick-start.rst
index a2fd7b395117c920cdfd2c3cbfe4a32542b7ad14..282d7bdae643fbed18eb33c9005ce8f76752d230 100644
--- a/boards/beaglev/ahead/02-quick-start.rst
+++ b/boards/beaglev/ahead/02-quick-start.rst
@@ -119,6 +119,8 @@ or a USB 3.0 super-speed micro-B cable. Connection guide for both are shown belo
 
           high-speed micro-B (USB 2.0) connection guide BeagleV Ahead.
 
+.. _beaglev-ahead-flashing-emmc:
+
 Flashing eMMC
 **************
 
@@ -261,7 +263,100 @@ When you do this, you'll be required to power the board via Barrel jack.
 
     USB OTG to connect USB gadgets to BeagleV Ahead board
 
+Connect to WiFi
+****************
+
+.. tabs:: 
+
+    .. group-tab:: Yocto
+
+        After getting access to the UART debug console you will be prompted with,
+
+        .. code-block:: bash
+
+            THEAD C910 Release Distro 1.1.2 BeagleV ttyS0
+
+            BeagleV login:
+
+        Here you have to simply type ``root`` and press enter to start uisng your 
+        BeagleV Head board. Once you are in, to connect to any WiFi access point 
+        you have to edit the ``/etc/wpa_supplicant.conf``
+        
+        .. code-block:: bash
+
+            root@BeagleV:~# nano /etc/wpa_supplicant.conf
+
+        In the ``wpa_supplicant.conf`` file you have to provide ``ssid`` and ``psk``. 
+        Here ``ssid`` is your WiFi access point name and ``psk`` is the passoword. It 
+        should look as shown below:
+
+        .. callout:: 
+            
+            .. code-block:: bash
+
+               ctrl_interface=/var/run/wpa_supplicant
+               ctrl_interface_group=0
+               ap_scan=1
+               update_config=1
+
+               network={
+                       ssid="My WiFi" <1>
+                       psk="passoword" <2>
+                       key_mgmt=WPA-PSK
+               }
+        
+            .. annotations:: 
+
+                <1> WiFi access point name
+
+                <2> WiFi passoword
+
+        Once you are done with editing the file you can save the file with 
+        ``CTRL+O`` and exit the nano editor with ``CTRL+X``. Once you are 
+        back to terminal reconfigure the ``wlan0`` wireless interface which 
+        will trigger it to connect to the access point with the credentials 
+        you have added to ``wpa_supplicant.conf``. Execute the command below to 
+        reconfigure ``wlan0`` wireless interface.
+
+        .. code-block:: bash
+
+            root@BeagleV:~# wpa_cli -i wlan0 reconfigure
+            OK
+
+        After executing this you can check if internet is working by 
+        executing ``ping 8.8.8.8`` as shown below:
+
+        .. code-block:: bash
+
+            root@BeagleV:~# ping 8.8.8.8
+            PING 8.8.8.8 (8.8.8.8): 56 data bytes
+            64 bytes from 8.8.8.8: seq=0 ttl=118 time=13.676 ms
+            64 bytes from 8.8.8.8: seq=1 ttl=118 time=17.050 ms
+            64 bytes from 8.8.8.8: seq=2 ttl=118 time=14.367 ms
+            64 bytes from 8.8.8.8: seq=3 ttl=118 time=19.320 ms
+            64 bytes from 8.8.8.8: seq=4 ttl=118 time=14.796 ms
+            ^C
+            --- 8.8.8.8 ping statistics ---
+            5 packets transmitted, 5 packets received, 0% packet loss
+            round-trip min/avg/max = 13.676/15.841/19.320 ms
+
+
+        .. important:: 
+
+            Due to a software issue Yocto might now assign any ip address to wlan0 wireless interface 
+            thus even if you are connected successfully to the access point of your choice you will still not 
+            be able to connect to the internet. Particularly If you are not getting any pings back when you execute 
+            ``ping 8.8.8.8`` you must execute the commands below:
+
+            1. ``root@BeagleV:~# cp /lib/systemd/network/80-wifi-station.network.example /lib/systemd/network/80-wifi-station.network``
+            2. ``root@BeagleV:~# networkctl reload``
+
+            this should fix the no internet issue on your BeagleV Ahead board!
+
+
+
 Demos and Tutorials
 *******************
 
+* :ref:`beaglev-ahead-csi`
 
diff --git a/boards/beaglev/ahead/05-demos.rst b/boards/beaglev/ahead/05-demos.rst
index 4daed5456cb53241f742172d7494eb40e37c3ff1..e496c2fa7b029987a27eb54d734907e5daf8f3db 100644
--- a/boards/beaglev/ahead/05-demos.rst
+++ b/boards/beaglev/ahead/05-demos.rst
@@ -3,6 +3,7 @@
 Demos
 #####
 
+
 .. todo::
 
     We need a CSI capture and DSI display demos
@@ -10,3 +11,8 @@ Demos
 .. todo::
 
     We need a cape compatibility layer demo
+
+.. toctree:: 
+    :maxdepth: 1
+    
+    demos-and-tutorials/using-csi
diff --git a/boards/beaglev/ahead/demos-and-tutorials/using-csi.rst b/boards/beaglev/ahead/demos-and-tutorials/using-csi.rst
new file mode 100644
index 0000000000000000000000000000000000000000..1f2a68bac71a607d3326c0c0fc9bfbd82508f363
--- /dev/null
+++ b/boards/beaglev/ahead/demos-and-tutorials/using-csi.rst
@@ -0,0 +1,67 @@
+.. _beaglev-ahead-csi:
+
+.. important:: 
+    This document is a work on progress.
+
+Using CSI Cameras
+#################
+
+.. note:: 
+    CSI support is only available in Yocto image for BeagleV Ahead, 
+    to flash latest Yoctor image on your BeagleV Ahead you can checkout 
+    :ref:`beaglev-ahead-flashing-emmc` section.
+
+
+Hardware
+*********
+
+IMX219 camera modules has been tested to work well with BeagleV Ahead, some of them are listed below:
+
+1. `Raspberry Pi Camera Board v2 - 8 Megapixels (Adafruit) <https://www.adafruit.com/product/3099>`_
+2. `Raspberry Pi NoIR Camera Board v2 - 8 Megapixels (Adafuit) <https://www.adafruit.com/product/3100>`_
+3. `Arducam IMX219 (Robu.in) <https://robu.in/product/arducam-imx219-visible-light-fixed-focus-camera-module-for-raspberry-pi/>`_
+
+In addition to the camer you'll need a 15pin to 22pin cable as well:
+
+1. `Raspberry Pi Zero FPC Camera Cable (Adafruit) <https://www.adafruit.com/product/5211>`_
+2. `Raspberry Pi Zero v1.3 Camera Cable (Adafuit) <https://www.adafruit.com/product/3157>`_
+3. `Raspberry Pi Zero V1.3 Camera Cable (Robu.in) <https://robu.in/product/raspberry-pi-zero-v1-3-camera-cable/>`_
+
+Software
+*********
+
+There are several demo applications available for testing CSI, execute commands 
+below to test your IMX219 camera on CSI0 & CSI1 ports:
+
+1. Change directory to demo application location using: ``cd /usr/share/vi/isp/test``
+2. Set environment variable ``export ISP_LOG_LEVEL=3``
+3. To test CSI0 execute: ``./camera_demo1 2 0 1 0 1920 1080 1 30 7``
+4. To test CSI1 execute: ``./camera_demo1 0 0 1 0 1920 1080 1 30 7``
+
+When you execure `camera_demo1` then you should see something like this on your console:
+
+.. code-block:: bash
+
+    ...
+    ...
+    IMX219: IMX219_IsiExposureControlIss: g=168.960999, Ti=0.050000
+    CAMERIC-MI-IRQ: isp mi frame out (59)  fps[0]: 19.74
+    IMX219: IMX219_IsiExposureControlIss: g=168.960999, Ti=0.050000
+    CAMERIC-MI-IRQ: isp mi frame out (60)  fps[0]: 19.73
+    IMX219: IMX219_IsiExposureControlIss: g=168.960999, Ti=0.050000
+    CAMERIC-MI-IRQ: isp mi frame out (61)  fps[0]: 19.72
+    IMX219: IMX219_IsiExposureControlIss: g=168.960999, Ti=0.050000
+    CAMERIC-MI-IRQ: isp mi frame out (62)  fps[0]: 19.72
+    IMX219: IMX219_IsiExposureControlIss: g=168.960999, Ti=0.050000
+    CAMERIC-MI-IRQ: isp mi frame out (63)  fps[0]: 19.71
+    ...
+    ...
+
+The output above indicates your CSI camera is working well. 
+
+.. important::
+    Usage of other demo applications will be added to this page as well.
+
+Source for these demo application can be found 
+`here <https://github.com/thead-yocto-mirror/csi_hal/tree/master/examples/camera>`_
+
diff --git a/boards/pocketbeagle/original/ch02.rst b/boards/pocketbeagle/original/ch02.rst
index 1c7904f961b0310b62d4364f753c77283a048904..6a8db253b8ba104554daecc92b4ec78ae5d99d93 100644
--- a/boards/pocketbeagle/original/ch02.rst
+++ b/boards/pocketbeagle/original/ch02.rst
@@ -29,15 +29,21 @@ Board Changes
 
 .. table:: Board History  
 
-    +---------+-----------------------+----------------------+--------+
-    | **Rev** | **Changes**           | **Date**             | **By** |
-    +=========+=======================+======================+========+
-    | A1      | Preliminary           | *February 14, 2017*  | JK     |
-    +---------+-----------------------+----------------------+--------+
-    | A2      | Production. Fixed     | *September 22, 2017* | JK     |
-    |         | mikroBUS Click reset  |                      |        |
-    |         | pins (made GPIO).     |                      |        |
-    +---------+-----------------------+----------------------+--------+
+    +---------+-----------------------------------------------------------------------------------------+----------------------+--------+
+    | **Rev** | **Changes**                                                                             | **Date**             | **By** |
+    +=========+=========================================================================================+======================+========+
+    | A1      | Preliminary                                                                             | *February 14, 2017*  | JK     |
+    +---------+-----------------------------------------------------------------------------------------+----------------------+--------+
+    | A2      | Production. Fixed                                                                       | *September 22, 2017* | JK     |
+    |         | mikroBUS Click reset                                                                    |                      |        |
+    |         | pins (made GPIO).                                                                       |                      |        |
+    +---------+-----------------------------------------------------------------------------------------+----------------------+--------+
+    | A2B     | Because there are 2 TI parts which have long LT,                                        | *June 15, 2021*      | JK     |
+    |         | we propose to have the following changes:                                               |                      |        |
+    |         |                                                                                         |                      |        |
+    |         | 1. Use ESD discrete devices instead of integrated TVS TI: TPD4S012DRYR.                 |                      |        |
+    |         | 2. Change Logic IC TI SN74LVC1G07DCKR to Nexperia 74LVC1G07GV                           |                      |        |
+    +---------+-----------------------------------------------------------------------------------------+----------------------+--------+
 
 PocketBone
 ^^^^^^^^^^^^^^^^
diff --git a/books/beaglebone-cookbook/07kernel/kernel.rst b/books/beaglebone-cookbook/07kernel/kernel.rst
index 5f76ac16d2a82384fca51cc1f9e35e049938144f..25f4a90d9142713863ac5c8d5d0fcf2498d39825 100644
--- a/books/beaglebone-cookbook/07kernel/kernel.rst
+++ b/books/beaglebone-cookbook/07kernel/kernel.rst
@@ -173,6 +173,22 @@ Headers for the version of the kernel you're running:
 This took a little more than three minutes on my Bone. The ``uname -r`` part of the command 
 looks up what version of the kernel you are running and loads the headers for it. 
 
+.. note:: 
+    If you don't have a network connection you can get the headers from the running kernel with 
+    the following.
+
+    .. code-block:: 
+
+        sudo modprobe kheaders
+        rm -rf $HOME/headers
+        mkdir -p $HOME/headers
+        tar -xvf /sys/kernel/kheaders.tar.xz -C $HOME/headers > /dev/null
+        cd my-kernel-module
+        make -C $HOME/headers M=$(pwd) modules
+        sudo rmmod kheaders
+
+    The ``modprobe kheaders`` makes the ``/sys/kernel/kheaders.tar.xz`` appear.
+
 Next, add the code in :ref:`kernel_Makefle` to a file called ``Makefile``.
 
 .. _kernel_Makefle:
diff --git a/books/beaglebone-cookbook/11misc/figures/wireshark_ping.png b/books/beaglebone-cookbook/11misc/figures/wireshark_ping.png
new file mode 100644
index 0000000000000000000000000000000000000000..f4e6e3c58076dbf092de9055edcc69cd1f66c4fa
Binary files /dev/null and b/books/beaglebone-cookbook/11misc/figures/wireshark_ping.png differ
diff --git a/books/beaglebone-cookbook/11misc/misc.rst b/books/beaglebone-cookbook/11misc/misc.rst
index f777c3e96078bc4f9db7d44f7d9798ab3dddf0ce..db5c6c06a9433068b2b425b6a64c3bad396cb76c 100644
--- a/books/beaglebone-cookbook/11misc/misc.rst
+++ b/books/beaglebone-cookbook/11misc/misc.rst
@@ -13,7 +13,7 @@ BeagleConnect Freedom
 Here are some notes on how to setup and use the Connect.
 
 First get the flasher image from:
-https://rcn-ee.net/rootfs/debian-arm64-11-bullseye-home-assistant-v5.10-ti/2023-07-20/
+https://www.beagleboard.org/distros/beagleplay-home-assistant-webinar-demo-image
 
 Flash the eMMC (which also loads the cc1352 with 
 the correct firmware)
@@ -353,11 +353,41 @@ packets to the named pipe:
 
 .. code-block:: 
 
-    host$ ssh root@bone "tcpdump -s 0 -U -n -w - -i eth0 not port 22" > /tmp/remote
+    host$ ssh root@192.168.7.2 "tcpdump -s 0 -U -n -w - -i any not port 22" > /tmp/remote
 
 .. tip:: 
     For this to work you will need to follow in instructions in :ref:`root_login`.
 
+Sharking the wpan radio
+-----------------------
+
+Now that you have Wireshark set up, you can view traffice from the Play's 
+wpan radio. First, set up the network by running:
+
+.. code-block:: shell-session
+
+    bone:~$ beagleconnect-start-gateway
+
+Go to Wireshark and in the field that says `Apply a display filter...` enter, 
+``wpan || 6lowpan || ipv6``.  This will dispaly three types of packets.  
+Be sure to hit Enter.
+
+Now generate some traffic:
+
+.. code-block:: shell-session
+
+    bone:~$ ping6 -I lowpan0 2001:db8::1 -c 5 -p ca11ab1ebeef
+
+.. _wireshark_ping:
+
+.. figure:: figures/wireshark_ping.png
+    :align: center
+    :alt: Wireshark ping6 -I lowpan0 2001:db8::1 -c 5 -p ca11ab1ebeef
+
+    Wireshark ping6 -I lowpan0 2001:db8::1 -c 5 -p ca11ab1ebeef
+
+You can see the pattern ``ca11ab1ebeef`` appears in the packets.
+
 Converting a tmp117 to a tmp114
 ================================
 
@@ -985,15 +1015,27 @@ The Play's Boot Sequence
 ==========================
 
 The BeagleBoard Play is based on the Texas Instrument's AM625 Sitara
-processor which supports many boot modes.  Here we'll look at
-booting from the user's view and from the developer's view.
+processor which supports many boot modes.  
+
+.. note:: 
+    bootlin (https://bootlin.com/) has many great Linux
+    training materials for free on their site. Their embedded Linux workshop
+    (https://bootlin.com/training/embedded-linux/) 
+    gives a detailed presentation of the Play's boot sequence 
+    (https://bootlin.com/doc/training/embedded-linux-beagleplay/embedded-linux-beagleplay-labs.pdf,
+    starting at page 9).
+    Check it out for details on building the boot sequence 
+    from scratch.
+
+Here we'll take a high-level look at
+booting from both the user's view and the developer's view.
 
 Booting for the User
 --------------------
 
 The most common way for the Play to boot is the power up the board,
 if the micro SD card is present, it will boot from it, if it isn't 
-present it will boot from the bultin eMMC.
+present it will boot from the built in eMMC.
 
 You can override the boot sequence by using the **USR** button 
 (located near the micro SD cage). If the **USR** button is pressed 
@@ -1007,6 +1049,11 @@ the Play will boot from the micro SD card.
 Booting for the Developer
 -------------------------
 
+.. tip:: 
+
+    These diagrams might help: 
+    https://github.com/u-boot/u-boot/blob/6e8fa0611f19824e200fe4725f18bce7e2000071/doc/board/ti/k3.rst
+
 If you are developing firmware for the Play you may need to have
 access to the processor early in the booting sequence. Much can 
 happen before the Linux kernel starts its boot process.
@@ -1042,7 +1089,7 @@ The table on page 2465 shows the BOOTMODE pins.
     BOOTMODE Pin Mapping 
 
 
-Page 14 of of the Plays schematic 
+Page 14 of of the Play's schematic 
 (https://git.beagleboard.org/beagleplay/beagleplay/-/blob/main/BeaglePlay_sch.pdf)
 shows how the BOOTMODE pins are set during boot.
 
@@ -1088,8 +1135,8 @@ are **tiboot3.bin** and **tispl.bin** runnng on the *R5* and **u-boot.img** runn
 on the *A53*.  These binary files are found on the Play in ``/boot/firmware``.
 
 .. note:: 
-    The files on the CD card and the eMMC are in ``ext4`` format.  The files used for booting 
-    must be in ``vfat`` format.  There for ``/boot/firmware`` is mounted in ``vfat`` as 
+    The files on the SD card and the eMMC are in ``ext4`` format.  The files used for booting 
+    must be in ``vfat`` format.  Therefore ``/boot/firmware`` is mounted in ``vfat`` as 
     seen in ``/etc/fstab``. 
 
     .. code-block:: 
@@ -1111,7 +1158,7 @@ Home Assistant
 ==============
 
 #. Get an image here:
-    https://rcn-ee.net/rootfs/debian-arm64-11-bullseye-home-assistant-v5.10-ti/2023-07-18/
+    https://www.beagleboard.org/distros/beagleplay-home-assistant-webinar-demo-image
     I chose the boot from SD image.
 #. Boot the Play from the SD card 
 #. Log into the Play
diff --git a/index-tex.rst b/index-tex.rst
index 0f359fc099ef12be697169c9acac963a155d9a89..e9f35092f5eabc83f9816e50197cbc5fbcf8a4d0 100644
--- a/index-tex.rst
+++ b/index-tex.rst
@@ -10,6 +10,7 @@ BeagleBoard Docs
 
 .. toctree::
 
+   intro/blinkLED
    intro/index.rst
    boards/beagleplay/index
    boards/beaglebone/ai-64/index
diff --git a/index.rst b/index.rst
index f7645c7ae0b6bc0c3e65a5db43b132d67e83f1bf..2696bea737efbe0756043f5a3eabfc465943c4a8 100644
--- a/index.rst
+++ b/index.rst
@@ -30,6 +30,7 @@ Get started engaging the BeagleBoard.org developer community by reading our :ref
    :hidden:
    :caption: Introduction
 
+   /intro/blinkLED
    /intro/support/index
    /intro/beagle101/index
    /intro/contribution/index
diff --git a/intro/blinkLED.rst b/intro/blinkLED.rst
new file mode 100644
index 0000000000000000000000000000000000000000..1cd993f0b4a17f74ab9ed47b0a433ff2d3782987
--- /dev/null
+++ b/intro/blinkLED.rst
@@ -0,0 +1,276 @@
+..
+    BeagleBoard projects Blink LED demo
+
+.. _blinkLED:
+
+Blink LED
+#########
+
+The "Hello World!" of the embedded world is to blink an LED. 
+Here we'll show you how to do just that in three simple steps. 
+
+#. Plug in the Beagle
+#. Log into the Beagle
+#. Blink the LED
+
+These steps will work for any of the Beagles.
+
+Plug in the Beagle
+------------------
+
+For this step you need to get a USB cable and attach your Beagle 
+to your host computer with it.
+Once attached you will see some LEDs blinking.
+Wait a bit and the blinking will settle down to a steady
+heart beat.
+
+The Beagle is now up and running, but you didn't have to 
+load up Linux.  This is because all Beagles 
+(except PocketBeagle, see :ref:`flash-latest-image` 
+to install an image on the Pocket) have built-in flash memory 
+that has the Debian distribution of Linux preinstalled.
+
+Login
+-----
+
+Next you login to the Beagle from your host computer. 
+Here you have a choice.  If you want a graphical approach, 
+choose the ``VS Code`` tab.  If you want a command line 
+and are running Linux on your host, 
+take the ``ssh (Linux/Mac)`` tab.  Finally take the 
+``Windown (Putty)`` tab for command line from windows.
+
+.. tabs::
+
+    .. group-tab:: VS Code
+
+        Recent Beagles come with the IDE Visual Studio Code 
+        (https://code.visualstudio.com/) installed and 
+        running. To access it, open a web browse on 
+        your host computer and browse to: ``192.168.7.2:3000`` 
+        and you will see something like:
+
+        .. figure::  figures/vscode1.png
+
+        Use the file navigator on the left to naviagte to 
+        ``examples/BeagleBone/Black/blinkInternalLED.sh`` 
+        and you will see:
+
+        .. figure:: figures/vscode2.png
+
+        This code blinks one of the USR LEDs built into the board. 
+        Click on the ``RUN Code`` triangle on the upper right of 
+        the screen to run the code.  (You could also enter ``Ctrl+Alt+N``) 
+        The USR3 LED should now be blinking.  
+
+        Click on the ``Stop Code Run`` (``Ctrl+Alt+M``) square to the right of the 
+        ``Run Code`` button.
+
+        Time to play!  Try changing the LED number (on line 10) from 
+        3 to something else.  Click the ``Run Code`` button (no 
+        need to save the file, autosave is on by default).
+
+        Try running ``seqLEDs.py``.
+
+    .. group-tab:: Command line
+
+        This is command line.
+
+        .. tabs::
+
+            .. group-tab:: ssh (Linux/Mac)
+
+                If you are running a Linux host, open a terminal widow and run 
+
+                .. code-block:: shell-session
+
+                    host:~$ ssh debian@192.168.7.2
+
+                Use password ``temppwd``.
+
+            .. group-tab:: Windows (Putty)
+
+                If you are running Window you need to run an ``ssh`` client 
+                to connect to the Beagle. I suggest you use ``putty``. 
+                You can download it here: https://www.putty.org/. 
+                Once installed, launch it and connect to your Beagle 
+                by sshing to ``192.168.7.2``. 
+
+                .. figure::  figures/putty.png
+
+                Login with user ``debian`` 
+                and password ``temppwd``.  
+
+        Blink an LED
+
+        Once logged in the rest is easy.  First:
+
+        .. code-block:: shell-session
+
+            bone:~$ cd ~/examples/BeagleBone/Black
+            bone:~$ ls        
+            README.md              blinkInternalLED.sh  blinkLED2.py    input2.js
+            analogIn.py            blinkLED.bs.js       blinkLEDold.py  seqLEDs.py
+            analogInCallback.js    blinkLED.c           fadeLED.js      swipeLED.js
+            analogInContinuous.py  blinkLED.js          fadeLED.py
+            analogInOut.js         blinkLED.py          gpiod
+            analogInSync.js        blinkLED.sh          input.js
+
+        Here you see a list of many scripts that demo simple 
+        input/output on the Beagle. Try one that works on the 
+        internal LEDs.
+
+        .. code-block:: shell-session
+
+            bone:~$ cat blinkInternalLED.py
+            LED="3"
+            
+            LEDPATH='/sys/class/leds/beaglebone:green:usr'
+            
+            while true ; do
+                echo "1" > ${LEDPATH}${LED}/brightness
+                sleep 0.5
+                echo "0" > ${LEDPATH}${LED}/brightness
+                sleep 0.5
+            done
+            bone:~$ ./blinkInternalLED.py
+            ^c
+
+        Here you see a simple bash script that turns an LED 
+        on and off.  Enter control-c to stop the script.
+
+        Blinking via Python
+
+        Here's a script that sequences the LEDs on and off.
+
+        .. code-block:: shell-session
+
+            bone:~$ cat seqLEDs.py
+            import time
+            import os
+
+            LEDs=4
+            LEDPATH='/sys/class/leds/beaglebone:green:usr'
+
+            # Open a file for each LED
+            f = []
+            for i in range(LEDs):
+                f.append(open(LEDPATH+str(i)+"/brightness", "w"))
+
+            # Sequence
+            while True:
+                for i in range(LEDs):
+                    f[i].seek(0)
+                    f[i].write("1")
+                    time.sleep(0.25)
+                for i in range(LEDs):
+                    f[i].seek(0)
+                    f[i].write("0")
+                    time.sleep(0.25)
+            bone:~$ ./seqLEDs.py       
+            ^c
+            
+        Again, hit control-C to stop the script.
+
+        Blinking from Command Line
+
+        .. code-block:: shell-session
+
+            bone:~$ cd /sys/class/leds
+            bone:~$ ls
+            beaglebone:green:usr0  beaglebone:green:usr2  mmc0::
+            beaglebone:green:usr1  beaglebone:green:usr3  mmc1::
+        
+        Here you see a list of LEDs. Your list may be slightly 
+        different depending on which Beagle you are running. 
+        You can blink any of them.  Let's try ``usr1``.
+
+        .. code-block:: shell-session
+            
+            bone:~$ cd beaglebone\:green\:usr1/
+            bone:~$ ls
+            brightness  device  max_brightness  power  subsystem  trigger  uevent
+            bone:~$ echo 1 > brightness
+            bone:~$ echo 0 > brightness
+
+        When you echo 1 into ``brightness`` the LED turns on. 
+        Echoing a 0 turns it off.  Congratulations, you've blinked 
+        your first LED!
+
+        Blinking other LEDs
+
+        You can blink the other LEDs by changing in to thier 
+        directories and doing the same.
+
+        .. code-block:: shell-session
+            
+            bone:~$ cd ../beaglebone\:green\:usr0/
+            bone:~$ echo 1 > brightness
+            bone:~$ echo 0 > brightness
+
+        Did you notice that LED ``usr0`` blinks on it's own in a 
+        heartbeat pattern? You can set an LED trigger.  Here's 
+        what triggers you can set:
+
+        .. code-block:: shell-session
+
+            bone:~$ cat trigger 
+            none usb-gadget usb-host rfkill-any rfkill-none 
+            kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock 
+            kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock 
+            kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock 
+            timer oneshot disk-activity disk-read disk-write i
+            de-disk mtd nand-disk [heartbeat] backlight gpio c
+            pu cpu0 cpu1 cpu2 cpu3 activity default-on panic 
+            netdev mmc0 mmc1 mmc2 phy0rx phy0tx phy0assoc phy0radio 
+            rfkill0 gpio-0:00:link gpio-0:00:1Gbps gpio-0:00:100Mbps 
+            gpio-0:00:10Mbps gpio-0:01:link gpio-0:01:10Mbps
+            bone:~$ echo none > trigger
+
+        Notice ``[heartbeat]`` is in brackets.  This shows it's the 
+        current trigger.  The echo changes the trigger to ``none``.
+
+        Try experimenting with some of the other triggers and see if you 
+        can figure them out.
+
+        Another way to Blink an LED
+
+        An interesting thing about Linux is there are often many ways 
+        to do the same thing.  For example, I can think of at least five ways to blink 
+        an LED.  Here's another way using the ``gpiod`` system.
+
+        .. code-block:: shell-session
+
+            bone:~$ gpioinfo | grep -e chip -ie  usr
+            gpiochip0 - 32 lines:
+            gpiochip1 - 32 lines:
+                line  21: "[usr0 led]" "beaglebone:green:usr0" output active-high [used]
+                line  22: "[usr1 led]" "beaglebone:green:usr1" output active-high [used]
+                line  23: "[usr2 led]" "beaglebone:green:usr2" output active-high [used]
+                line  24: "[usr3 led]" "beaglebone:green:usr3" output active-high [used]
+            gpiochip2 - 32 lines:
+            gpiochip3 - 32 lines:
+
+        Here we asked how the LEDs are attached to the General Purpose 
+        IO (gpio) system.  The answer is, (yours will be different for a 
+        different Beagle)
+        there are four interface chips and the LEDs are attached to 
+        chip 1.  You can control the gpios (and thus the LEDs) using
+        the ``gpioset`` command.
+
+        .. code-block:: shell-session
+
+            bone:~$ gpioset --mode=time --sec=2 1 22=1
+            bone:~$ gpioset --mode=time --sec=2 1 22=0
+
+        The first command sets chip 1, line 22 (the usr1 led) to 1 (on) for 
+        2 seconds.  The second command turns it off for 2 seconds.
+
+        Try it for the other LEDs.
+
+        .. note:: 
+
+            This may not work on all Beagles since it depends on which 
+            version of Debian you are running.
+
+
diff --git a/intro/contribution/rst-cheat-sheet.rst b/intro/contribution/rst-cheat-sheet.rst
index 2da33b155f78afcb5671e3b6813ef187560f5309..080aef0dd75bf673594c87c1403bf678f0ab7348 100644
--- a/intro/contribution/rst-cheat-sheet.rst
+++ b/intro/contribution/rst-cheat-sheet.rst
@@ -3,17 +3,30 @@
 ReStructuredText Cheat Sheet
 ############################
 
-BeagleBoard.org docs site uses ReStructuredText (rst) which is a file format [#]_ for textual data used primarily 
-in the Python programming language community for technical documentation. It is part of the Docutils 
-project of the Python Doc-SIG, aimed at creating a set of tools for Python similar to Javadoc for Java 
-or Plain Old Documentation for Perl. If you are new with rst you may go through this rst cheat sheet [#]_ [#]_ [#]_
-chapter to gain enough skills to edit and update any page on the BeagleBoard.org docs site. some things 
+`BeagleBoard.org docs site <https://docs.beagleboard.org>`_ uses ReStructuredText (rst) which is a 
+file format [#]_ for textual data used primarily in the Python programming language community 
+for technical documentation. It is part of the Docutils project of the Python Doc-SIG, aimed at 
+creating a set of tools for Python similar to Javadoc for Java or Plain Old Documentation for 
+Perl. If you are new with rst you may go through this rst cheat sheet [#]_ [#]_ [#]_ chapter 
+to gain enough skills to edit and update any page on the BeagleBoard.org docs site. some things 
 you should keep in mind while working with rst,
 
-
 1. like Python, RST syntax is sensitive to indentation !
 2. RST requires blank lines between paragraphs
 
+.. tip:: 
+
+    Why not use Markdown for documentation? because reST stands out against Markdown as,
+    
+    1. It's more fully-featured.
+    2. It's much more standardized and uniform.
+    3. It has built-in support for extensions.
+
+    For more detailed comparison you can checkout `this article on 
+    reStructuredText vs. Markdown for technical documentation 
+    <https://eli.thegreenplace.net/2017/restructuredtext-vs-markdown-for-technical-documentation/>`_ 
+
+
 Text formatting
 ****************
 
diff --git a/intro/figures/putty.png b/intro/figures/putty.png
new file mode 100644
index 0000000000000000000000000000000000000000..47a442d11de5075ba8f411afde47dc98e60f65ec
Binary files /dev/null and b/intro/figures/putty.png differ
diff --git a/intro/figures/vscode1.png b/intro/figures/vscode1.png
new file mode 100644
index 0000000000000000000000000000000000000000..1c27052b72cf2bfe2cc4e303a87659447de7ee13
Binary files /dev/null and b/intro/figures/vscode1.png differ
diff --git a/intro/figures/vscode2.png b/intro/figures/vscode2.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b08183f0353ccae88322e4d07913958b072e8af
Binary files /dev/null and b/intro/figures/vscode2.png differ