206 IX: Hash Totals using md5_IX & RPi 5 (206.html)

Keywords

ICH180RR Python ICH180 Raspberry "Pi Zero W" Python MicroPython MD5 md5-console snapcraft md5_IX md5_IX.py md5 SHA1 SHA-1 grep xxxxxxxxx_MD5_IX"Needs 5 amps" BookWorm "OS: BookWorm" "PEP 668" RP1 southbridge "PCIe 2.0 x1" "Python 3.11" SDR104 "MIPI camera/display" ThingSpeak DHT11 photoresistor MyFirstIOT.py "Windows 10" MD5_IX woR1 wR1 Bookworm "PCIe Interface" "NVMe SSD support" IOZone UAS "USB Attached SCSI" "faster microSD card support" meld differences DA9091 PMIC FPC "FPC connectors" CSI-2 DSI T-Zero M.2 "M.2 HAT" "Wayfire Wayland" PIO cooling PCIe "Cryptography Benchmark" encryption HPL Linpack Bitcoin Mining "Sabrent 2242 512GB SSD" SB-1342-512 2242 "Sabrent Rocket 512GB SSD" "#&| &hashMD5_IX|= " "RPi 5" "RPi 4B" "RPi 4" Pi-400 "Application Binary Interface" ABI libgpiod gpiod SPI gpiodetect LSM9DS1 "UART Between RPi and Arduino" UART "Cooked Mode" "Raw Mode" termio rp1-peripherals.pdf rp1-peripherals serial0 termios "PCIe FFC" HAT+ "M.2 M Key HAT+" "PCIe Peripheral" PIP "Power Pogo Pins" VILROS 270081139

"Raspberry Pi 5"


/KeywordsEnd

(To enlarge .....Click it)
thumb: IXimage.jpg
IX or (IX by DC) or "|><"


This article is a part of the IX family of software.

Introduction

NEWS FLASH: Raspberry Pi 5 Announcement (at the bottom of this article)

This article contains numerous references to sources of information about the Raspberry Pi 5 (RPi 5).

md5_IX provides Hash Totals

This article describes the use of a "hash total" to ensure that a program or a text file (called the "subject file") has not been changed since it was last used. Web Source 01 is the first written description of the concept by the author of this article. The name of this program is md5_IX.py (formerly hash_IX.py). The usual procedure checking of a hash total can be called the "normal 2-file hash compare method". Normally the "old hash total" of a subject file is stored external to the file, perhaps in a file with a similar name stored in the same folder as the subject file or somewhere on the web. Then the "current hash total" of the subject file is calculated. The "old hash total" is then compared to the "current hash total". If they are identical, the subject file is said to be "unchanged". If they differ, the subject file is said to be different, not identical or changed. All three are indicated when the md5_IX.py program displays "md5_IX Error: hash totals disagree".

Note that a simple "grep xxxxxxxxx_MD5_IX fileName" will display its MD5 hash total but only if fileName has already been processed by md5_IX. This is because md5_IX stores the file's hash total within the file as a comment line without changing the fileName.

Python exists on Windows 10. Therefore md5_IX can be run under Windows 10. See an example of this later in this article. This Windows 10 example is located just before the heading: Summary.

improved normal 1-file hash compare method

The problem with the "normal 2-file" method is that the external file containing the "old hash total" may get lost or may be stored in an unknown folder. The "improved normal 1-file hash compare method" (used by the md5_IX program) saves the "old hash total" as the first record of the file itself. This way the "hash total" never gets lost. The disadvantage is that there is a "redundant" or extraneous record at the beginning of the file. Hash totals are usually used to check if the source code (or file) of a program (eg a Python source file) has been changed. In the case of any Python source file, the first record can be a comment line containing a "special prefix" followed by the "old MD5 hash total". An example of a Python "first-line" containing a hash total is shown below:
#########_MD5_IX 7f9f3e0a256c07b876b6d31dc295f1ab
As on any Linux computer, such as the Raspberry Pi, it is a simple matter to use grep to display this "old MD5 hash total". If the subject file is "PiR2F.txt", grep can be used in the Terminal Command Line as follows:
            > $ grep "#########_MD5_IX " PiR2F.txt
            > #########_MD5_IX 7f9f3e0a256c07b876b6d31dc295f1ab
	
grep will display record one containing the hash total as shown above. Unfortunately, grep is not easily usable under Windows 10.

The contents of PiR2F.txt (without a hash total in record 1) can be seen in Web Source 02 below. If PiR2F.txt already has its hash total embedded in record 1, the original PiR2F.txt (without the special record 1) will have been saved in PiR2F_woR1.txt . A brief "early" definition of the md5_IX.py program appears in Web Source 01 below.

Example usage of hashTwice_v01.py

In order to prove that the correct md5 hash total is being calculated, the author has installed the md5-console program written by Jintao Yang(joker2770) at snapcraft in Web Source 06 below. However none of the md5-console code is used in any of the IX software.

The source of the program hashTwice_v01.py is in Web Source 03. After being installed, it is invoked on the command line in Web Source 03. It quickly displays the md5 output of PiR2F.txt which is "7f9f3e0a256c07b876b6d31dc295f1ab".

Version 1.0 of the hashTwice_v01.py program has recently been written by the author. When run from the Command Line in Terminal mode, it accepts two parameters: the name of the "subject file" and the "old hash total". Note that the "old hash total" is the md5 hash total of the "subject file" as produced by md5-console. The program "hashTwice_v01" then calculates two new hash totals of the subject file. The first "new hash total" that is calculated uses the MD5 method, the second "new hash total" that is calculated uses the SHA1 (aka SHA-1) method. The program "hashTwice" then compares the "old hash total" with the "new hash total" using MD5. Then both md5 hash totals are displayed. If they agree, "md5 agrees" is printed. Then the "hashTwice_v01" program displays the SHA1 hash total. There is nothing to compare it with. That is all that the "hashTwice" program does. The source code for hashTwice_v01.py can be found in Web Source 04. It makes use of existing Python functions (imported from hashlib) to calculate the two hash totals. As can be seen, very little original code is used in hashTwice_v01.py.

the actual md5_IX.py program output

The first version of the md5_IX.py python program has been written (Source 14) as of 2023ISep29.

It's initial definition is described in Web Source 01 below. An example of its use on the Raspberry Pi Terminal command line is:
	$ > python md5_IX_v01o1.py -r PiR2F.txt 7f9f3e0a256c07b876b6d31dc295f1ab

	progName: md5_IX_v01o1.py
	  Note: Must be run in Terminal
	  e.g. python md5_IX_v01o1.py -r filename hashTotal
	try grep "#########_MD5_IX " fileName(s)
	UnixEpochTime: 1696099237
	subjectFile: PiR2F.txt
	controlString: r
	controlString is valid
	  7f9f3e0a256c07b876b6d31dc295f1ab :md5 (parm3)
	  7f9f3e0a256c07b876b6d31dc295f1ab :r1h
	  7f9f3e0a256c07b876b6d31dc295f1ab :MD5
	This is a valid md5_IX file. The 3 md5 agree.
	Name of hashed file (any MD5_IX record 1 was excluded):
	   PiR2F_woR1.txt

	
After PiR2F.txt has been processed using md5_IX.py with the "-f" control, a hash-total will already be included as the first record of PiR2F.txt as shown above. If "-f" has not been previously run on PiR2F.txt , the command above will produce a different hash total from that shown above. The middle hash total line will display "no R1". Whenever md5_IX is used, a copy of the original subject file will have been saved in PiR2F_woR1.txt without the "hash total" record embedded in it. Running "python md5_IX.py -r etc" on PiR2F_woR1.txt (as shown below) will show the original hash total:
	$ > python md5_IX_v01o1.py -r PiR2F_woR1.txt 7f9f3e0a256c07b876b6d31dc295f1ab

	progName: md5_IX_v01o1.py
	  Note: Must be run in Terminal
	  e.g. python md5_IX_v01o1.py -r filename hashTotal
	try grep "#########_MD5_IX " fileName(s)
	UnixEpochTime: 1696099237
	subjectFile: PiR2F_woR1.txt
	controlString: r
	controlString is valid
	  7f9f3e0a256c07b876b6d31dc295f1ab :md5 (parm3)
	  no R1
	  7f9f3e0a256c07b876b6d31dc295f1ab :MD5
	This is NOT a valid md5_IX file. The 3 md5 values differ.
	Name of hashed file (any MD5_IX record 1 was excluded):
         PiR2F_woR1_woR1.txt
	

Main Uses of the md5_IX program

To view (or read) the "md5 Hash Total" of any subject file, the "-r" control is used. This "-r" action is "read-only" and does not change the subject file at all.

To embed the "md5 Hash Total" in a subject file, the "-f" control is used. The "-f" action places a copy of the current "md5 Hash Total" in record 1 of the subject file, replacing the "md5 Hash Total" if any exists. If the correct "md5 Hash Total" already exists, the subject file is not changed. If the subject file is changed, a backup copy is saved with the current UnixEpochTime time-stamp as a suffix in the file name. The original subject file saved with a revised filename serves as a time-stamped exact copy of the subject file. Another copy of the original subject file is also saved in PiR2F_woR1.txt without any time-stamp but with "_woR1" suffixed to the original file name.

As shown below, a simple "grep" can display the "md5 Hash Total" (from record 1) without recalculating, if the "-f" control has already been run on the subject file. This article describes all the uses of the md5_IX program. This article also shows that the "md5-console" command can be used to calculate the "md5 Hash Total" for any file.

All control codes

As can be seen, md5_IX should be passed three parameters: control-string, subject-file-name and oldHashTotal. The control-string determines exactly what the md5_IX.py program will do. The control-string must be one the following possible values: "-a", "-e", "-f", "-n", "-r" or "-u"
control-string: -r

     -r means "read-only".  No files are changed when this parameter is used
           In this case the subject file is examined.  If the first line begins with the prefix "#########_MD5_IX",
            the hash total from that record is stored in variable recordOneHashTotal.  If the first line does not
            begin with the prefix "#########_MD5_IX", a null string is stored in variable recordOneHashTotal. The
            md5_IX.py program will perform exactly as hashTwice_v01.py except that the SHA1 hash total will NOT 
            be calculated. Three hash totals will be displayed: 
                oldHashTotal which is the third parameter provided to md5_IX.
                recordOneHashTotal which is the hash total in the first record  
                        (if present) of the subject file
                newHashTotal which is the calculated hash total of the whole 
                        subject file (not including any first line containing a hash 
                        total) as shown below.
	
python md5_IX.py -r PiR2F.txt 7f9f3e0a256c07b876b6d31dc295f1ab 7f9f3e0a256c07b876b6d31dc295f1ab : md5 (parm3-oldHashTotal)) 7f9f3e0a256c07b876b6d31dc295f1ab : MD5 (in recOne of subject file) 7f9f3e0a256c07b876b6d31dc295f1ab : md5 (hashed body of subject file) The md5 HashTotals all agree.
The 3 lines displayed tell the whole story. The conclusion of "The md5 HashTotals all agree." is the expected result. If the 3 HashTotals do not agree, the program displays: "The md5 HashTotals do NOT all agree.". This is all that -r will do, no more, no less. control-string: "-n", "-e", "-u" All of the controls "-n", "-e", "-u" and "-a" start by doing the exact same job as "-r". But after that, all 4 controls do another job as well. The control "-u" means "any Unix epoch time". "e" means "same file extension" and "-n" means "same fileName", while "-a" means "all except -f". No files are changed when these parameters are used. The control parameter of "-n" first does everything that "-r" does. Then "-n" searches the current folder for all file names that begin with the same string as the subject fileName followed by "_" and any Unix time epoch. It then lists each such filename that was found, preceeded by part of the first line of each file found (which contains that file's hash total). The control "u" searches for all fileNames (in the current folder) that end with any "Unix time epoch" string such as "_1695694085". Some of these files will have firstNames that differ from the subject fileName. They are listed in the same manner as for control string "-n". The control "-e" searches for all fileNames that end with the same file extension as the subject file. They are listed in the same manner as for control string "-n". Many of them will not have a first line containing a hash total, but some probably will. Example of output for control string "-u"
> $ python md5_IX.py -u PiR2F.txt 7f9f3e0a256c07b876b6d31dc295f1ab 7f9f3e0a256c07b876b6d31dc295f1ab : md5 (parm3-oldHashTotal)) 7f9f3e0a256c07b876b6d31dc295f1ab : MD5 (in recOne of subject file) 7f9f3e0a256c07b876b6d31dc295f1ab : md5 (hashed body of subject file) The above md5 HashTotals all agree. 6f987e567d66a7654c345a45adf987cd : PiR2F_1695698564.txt 7f9f3e0a256c07b876b6d31dc295f1ab : PiR3A_1695694085.txt
Note that only PiR3A....... and PiR2F........ above have the same hash totals. This would indicate the PiR2F was probably renamed to PiR3A (or vice-versa) at some time. The "meld" program in Source 18 can be used to compare two similar files on a character-by-character basis. It clearly shows all the differences using multiply colored characters. This GUI program does not very work well on a tiny black & white display. This source shows how to install "meld" on a Raspberry Pi and compares it to using the "diff" command in Terminal mode. See Article 187 for more information about using "meld" to compare files. It is a simple job to install "meld" on the Raspberry Pi using the "Add / Remove Software" Tool. control-string "-a" Control string "-a" means "all". This control string does the combined jobs of "-n", "-e", "-u" . It starts by doing the same thing as "-r", then it lists all the files that would be listed by control strings "-n", "-e", "-u" . If the user is looking for any files in the folder that are identical to the subject file (ie have the same hash totals), then control string "-a" should be used. After completing the above actions, all other control strings except "-f" are complete. The next paragraphs describe the actions performed when "-f" is the control string. backing up files that will be changed. When mda5_IX.py is sent a control string of "-f", often it will decide to make changes to the subject file. Before changing a subject file, it saves an exact copy of the subject file and renames it. The new name is the old name with a suffix that is the Unix epoch time preceded by a "_". The Unix epoch time serves as a suitable time-stamp. The file extension of this copy of the subject file will remain unchanged. An example of a backup of file "PiR2F.txt" would be named "PiR2F_1695694085.txt". The simple renaming of a file leaves the contents of the file completely unchanged. Eventually many different backup copies of the subject file will accumulate in the current folder. But the latest version of the subject file will retain the original name. It will have the same name but will have an updated records 1 containing its current hash total. control-string "-f" The first step of the "-f" control is to check if the subject file contains a first record containing a hash total preceded by "#########_MD5_IX ". If the first record is NOT a hash total, then a backup copy of the file is created with a new name including the Unix epoch time as a suffix. Then the hash total of the subject file is calculated and inserted as the first line of the subject file. If the first line of the "subject file" contains a hash total, it is saved in variable recordOneHashTotal. Then a temporary copy of the "subject file" is made that does not include the first line, (ie excluding any record containing a hash total). The "hash total" of this temporary copy of the "subject file " without the first record is calculated and saved in variable newHashTotal. -f Case a) If the two hash totals (recordOneHashTotal and newHashTotal) agree, then mda5_IX is satisfied with the integrity of the "subject file". It displays the result: "The hash code of the subject file is valid." and exits. The subject file is not changed and no new backup copy of the subject file is kept. The temporary copy of the subject file is then deleted. -f Case b) But consider the case when the hash total in the first line of the temporary file does NOT agree with the hash total of the remainder of the subject file. In this case only, the subject file is saved as-is and renamed as a backup of the current subject file. When this occurs, the md5_IX.py program will display: "The hash code in the first record of the subject file is invalid or missing" "The unchanged subject file will be renamed and saved as a back-up named PiR2F_1695694085.txt (but with a current time-stamp). Then the first line of the subject file (containing the hash total) is removed from the subject file. The result is then written to a temporary file. Then the variable newHashTotal is suffixed to the key of "#########_MD5_IX ". This string is then inserted as the first line of the temporary file. The temporary file will be given the same name as the subject file in the Terminal command line. The md5_IX program will then display: "The following valid first record (shown below) containing the hash total of the subject file has been included in the subject file." "#########_MD5_IX 7f9f3e0a256c07b876b6d31dc295f1ab" Note that the subject file will now have a valid hash total record followed by the temporary file. Furthermore an exact backup copy of the current subject file will exist in the current folder. But the name of this backup copy will contain a suffix that is the current Unix epoch time. This suffix serves as a time-stamp. Repeated use of md5_IX.py with the "-f" control will ONLY cause a backup copy to be created each time, IF the non-hash-total portion of the subject file has been changed. The user can verify that the revised subject file contains a valid hash total by running md5_IX again with an "-r" control. When doing this, if the hash total is unknown, the hash total on the command line can be merely 0 or anything else except spaces.

Results of running md5_IX on PiR2F.txt

The output from md5_IX_v01o1.py is shown below. First, grep is run to display all the files that contain a hash total in record 1. This is a simple way to quickly view the embedded hash totals (in record 1) of the different files in the current directory.

This is followed by a run of md5_IX_v01o1.py on subject file PiR2F.txt. The user should not be surprised that the hash total is stored in record1. This output shows the normal results when the embedded hash total of a file is requested by passing the control string of "-r" to an early version of md5_IX.py . Note that the hash total of PiR2F_woR1.txt (the copy of the original PiR2F_woR1.txt) is not listed because it does NOT contain a hash total.

This is followed by a run of md5-console on file PiR2F_woR1.txt (PiR2F.txt without any hashtag in record 1). As can be seen, both md5_IX.py and md5-console display exactly the same hash total, even though only PiR2F.txt has its hash total embedded in it as record 1.

PiR2F Output


	> $ pi@raspberrypi:~/Desktop/Hashing $ grep "#########_MD5_IX " *.*

	hashTwice_v02.py:        if prefix=="#########_MD5_IX ":
	md5_IX_v01.py:        if prefix=="#########_MD5_IX ":
	PiR2F_1696036772.txt:#########_MD5_IX efe2f96b2a7ed70da16d86d0c2459c7b
	PiR2F.txt:#########_MD5_IX efe2f96b2a7ed70da16d86d0c2459c7b
	test01.txt:#########_MD5_IX 82b592856826780add9ef74a858a5f4e

	> $ pi@raspberrypi:~/Desktop/Hashing $ python md5_IX_v01o1.py -r PiR2F.txt efe2f96b2a7ed70da16d86d0c2459c7b

	progName: md5_IX_v01o1.py
	  Note: Must be run in Terminal
	  e.g. python md5_IX_v01o1.py -r filename hashTotal
	try grep "#########_MD5_IX " fileName(s)
	UnixEpochTime: 1696060994
	subjectFile: PiR2F.txt
	controlString: r
	controlString is valid
	  efe2f96b2a7ed70da16d86d0c2459c7b :md5 (parm3)
	  efe2f96b2a7ed70da16d86d0c2459c7b :r1h
	  efe2f96b2a7ed70da16d86d0c2459c7b :MD5
	This is a valid md5_IX file. The 3 md5 agree.
	Name of hashed file (any MD5_IX record 1 was excluded):
	   PiR2F_woR1.txt
	
	> $ pi@raspberrypi:~/Desktop/Hashing $ md5-console -f PiR2F_woR1.txt

	file size: 243 bytes
	[TIME USED =   0.00 MINUTES] [100%]
	md5: efe2f96b2a7ed70da16d86d0c2459c7b
	pi@raspberrypi:~/Desktop/Hashing $ 
	

Running md5_IX under Windows 10

Note that PiR2F_wR1.txt already has the Hash Total in record 1 (See Source 16).
To run md5_IX under Windows 10, do the following:

In the bottom left corner of the screen, where it says "Type here to search", type

 Ter

It will reply "Command Prompt", accept this action and a new window will appear.
to change the current drive to E:, type:

  E: 

to change the current folder, type:

   cd E\2022\DevE\MyPagesE\Globat\ePhotoCaption.com\a\206

to run the md%_IX... source code through Python with 3 parameters, type

   python md5_IX_v01o1_py.txt -r PiR2F_wR1.txt 92fe77214600fa7ac4b605228d6c7522

this will produce the desired output shown below):

Output when running md5_IX_v01o1.py on PiR2F_wR1.txt on Windows 10

E:\E\2022\DevE\MyPagesE\Globat\ePhotoCaption.com\a\206>python md5_IX_v01o1_py.txt -r PiR2F_wR1.txt 92fe77214600fa7ac4b605228d6c7522

progName: md5_IX_v01o1.py
  Note: Must be run in Terminal
  e.g. python md5_IX_v01o1.py -r filename hashTotal
try grep "#########_MD5_IX " fileName(s)
UnixEpochTime: 1696099237
subjectFile: PiR2F_wR1.txt
controlString: r
controlString is valid
  92fe77214600fa7ac4b605228d6c7522 :md5 (parm3)
  92fe77214600fa7ac4b605228d6c7522 :r1h
  92fe77214600fa7ac4b605228d6c7522 :MD5
This is a valid md5_IX file. The 3 md5 agree.
Name of hashed file (any MD5_IX record 1 was excluded):
   PiR2F_wR1_woR1.txt

Summary

The md5_IX.py program is used to verify and/or correct the hash total of a subject file. A control command of "-r" simply verifies the hash total without changing the subject file. A control command of "-f" ensures that the first record of the subject file contains a valid hash total of the subject file. The actual hash total of the remainder of the file will be stored in the first record of the subject file. This is done unless the hash total in the first record of the subject file is already valid.

Whenever the subject file is changed, a copy of the original subject file is ALWAYS saved (as a backup) with a revised name. The revised name for this copy of the subject file will contain a suffix which is the Unix Epoch Time. Control strings "-n", "-e", "-u" or "-a" also search for (and list the names of) other similar files that might contain the exact same hash total.

Control strings "-n", "-e", "-u" and "-a" differ from "-r" in that these commands list additional files (and their hash totals) without actually calculating (a time-consuming job) the hash total of each file. The hash total shown for each file listed merely lists the hash total stored in the first record of the file. Sometimes the user forgets that a file has been renamed. Hopefully one or more of these control strings might display any identical files (that are in the same folder) that have the EXACT same hash total.

Future IX prefix for Record 1

Article 183 describes the IX Macro Preprocessor. It has been designed to make use of the MD5 hash total in Record 1 of IX macro files. In record 1, it will use a prefix of "#&| &hashMD5_IX|= ". This article and the md5_IX.py program will eventually make use of this prefix to make these two modules of the IX system compatible. The md5_IX.py program will use variants of this prefix for files of other types (with other file extensions). This will be necessary in order for these other file types to treat this first record as a comment. By defining the hash total as an IX macro entity, any program will be able to make use of its actual hash total within any program that makes use of IX macros.

The IX Request Preprocessor (prep_IX.py in Article 196 in Source 38) will eventually be synchronized with the IX Macro Preprocessor and the IX hash system. The IX Request Preprocess is the IX equivalent of the normal Python "include" mechanism to concatenate Python functions with any Python program.

Future Actions by md5_IX

One future action by md5_IX will be to permit use of the control string of "-t". This action will actually recalculate the hash total of every file in the user (pi) folder, comparing each of them to the fileName and "oldHashTotal" on the command line. It will also do this for every file in every folder that is in the user (pi) folder on the Raspberry Pi. This is a very time consuming process but is intended to discover the previous name of a file that might previously have had its name changed. This command string is intended to be used to identify duplicates of identical files (with or without identical names) that are in ANY folder owned by the user. Removal of such truly duplicate files can often recover valuable space, without losing any information. This command string can be used to discover download errors or microSD card storage errors that might have occured when inferior microSD cards are being used. Sloppy edits of a file can lead to no differences that might only be discovered using the "-t" control string with md5_IX.

It is intended that md5_IX will be very efficient and will only perform the control string "-t" on files of identical sizes (byte counts).

Rollout of md5_IX.py

v01.1 control string -r only (for .py type subject files) (see Source 14)
v01.2 control string -f included
v01.3 control strings -n, -e, -u included
v01.4 tested using .py and .txt
v02.0 control string -a included
v03.0 help included as -h
v04.0 control string -t included

Related Thoughts

Raspberry Pi 5

                              THE RPi 5: OVER TWICE AS FAST AS AN RPi 4

(To enlarge .....Click it)
thumb: RaspberryPi5.jpg
Raspberry Pi 5


(To enlarge .....Click it)
thumb: RPi5_InterfaceDiagramC.jpg
RPi 5 Interface Diagram

Image from Source 21. The black IC (between the Processor and the GPIO pins) is the RAM memory IC.

Upton and Adams describe the evolution of the Raspberry Pi 5 in Source 24.

The Raspberry Pi 5 was announced on 2023ISep28 (see Source 05 by creator Eben Upton). The huge number of Questions & Answers that follow Source 05 are amazing. A full set of RPi 5 documentation can be found at Source 53. The Raspberry Pi 5 will cost a little more than the Raspberry Pi 4 (both with 4 GB of RAM.) It is also available with 8 GB of RAM at CAD $128.95 from PiShop. In the US, the price is $89 for a Raspberry Pi 5 with 8 GB. First shipments are scheduled for Oct 31, 2023. For more information, see the Video Source 02. Overall, the Raspberry Pi 5 is 2.5 times the speed of the Raspberry Pi 4. It even has an ON/OFF power switch and a Real Time Clock (RTC) with a battery connector. The CPU clock on the RPi 5 is 2.4 GHz compared to the 1.5 GHz clock on the RPi 4. A remote ON/OFF switch can be connected to the jumper holes marked J2 (below left) even though there is an on/off switch on board. The audio jack has disappeared but some solder pads for composite video remain!!

(To enlarge .....Click it)
thumb: J2.jpg
RPi5 J2


(To enlarge .....Click it)
thumb: RPi5_J7B.jpg
RPi5 J7


cstanton says "On the Raspberry Pi 5, the composite video has moved to J7 (above right) to the right of "HDMI 1", this is an unpopulated through-hole 'socket' pair on the board where a jumper or connection can be soldered to for composite video."

The Raspberry Pi 5 will work better if you supply it with more power, up to 25-27 watts (5 amps) from a new stronger power supply. There is a new connector to connect an external UART (but I am curious what it will be used for). They say it can be used with the Pi Pico Debug kit. Most users will need to use a heat sink or fan for the Raspberry Pi 5. The connector for the fan is located beside the GPIO pins (near pin 40). For more information about this UART connector see Article 179.

The battery for the RTC in the Raspberry 5 costs just $5.

Source 10 contains various images of the RPi 5. One pair of images shows both the top and bottom of the RPi 5.

The many hardware changes and the recommended use of the (recently released) 64-bit Debian OS (codenamed "Bookworm" released in July 2023) have introduced many software glitches, but the delay between announcement date and first shipment date provides time for many corrections. (See Source 65 for the revised RPi 5 OS dated 2023-12-05 and a few other related web links.) Another issue is that Python 3.11 (not Python 3.9) accompanies the Raspberry Pi 5. This much newer Python version introduces the requirement to use PEP 668 when installing modules. Perhaps users who don't need the increased speed immediately should wait a few months before buying the Raspberry Pi 5.

(To enlarge .....Click it)
thumb: Rasp-berry-Pi-performance-figures.jpg
Raspberry Pi 5 performance figures


The Benchmark comparison of RPi 4 and RPi 5 (above) is from techpp.com (source 35)

"Encryption Performance" on the Raspberry Pi 5 really impressed me. Search Source 28 for "Cryptography Benchmark" or "encryption" to see a graph showing that the Raspberry Pi 5 performs some encryption tasks over 10 times faster than the Raspberry Pi 4. This article also contains results of many different benchmarks. Source 21 also has a cryptography benchmark showing the impressive cryptography speed of the Raspberry Pi 5. Jeff Geerling also has a second interesting article about clocking the RPi 5 in Source 36. He also includes Linpack benchmark results of the RPi 5.

Adam at PiCockpit has published an article describing the Raspberry Pi 5 from the following Points of View:
	Raspberry Pi 4 vs. Raspberry Pi 5
	A First Look at Raspberry Pi 5
	Keeping Raspberry Pi 5 Cool
	Gaming: DOOM on a Raspberry Pi 5
	Win a FREE Raspberry Pi 5
	5 Surprising Features of Raspberry Pi 5
	Raspberry Pi 5 Micro SD Card Speed
	4 Frequently Asked Questions about Raspberry Pi 5!
	
If you are going to read only one article about the Raspberry Pi 5, read Adam's article(s) at Source 20.

Avram Piltch of Tom's Hardware provides a very detailled description of the Raspberry Pi 5 in Source 07 below. He mentions the new third interface, the PCIe device interface describing it as follows:

  PCIe device interface

The third interface (a totally new feature not on previous RPi computers) is for PCIe devices. This is a PCIe 2.0 x1 interface for fast peripherals, and yes that means NVMe SSDs. We asked Upton about this interface and he confirmed that it will take all sizes of NVMe drives, but in order to do so, we need to use a specially designed M.2 HAT which was not ready for release at the time of this review. An image of a prototype of this M.2 HAT can be seen near the end of this article. See Source 62 for the M.2 HAT specifications ("PCIe FFC" and HAT+) released on 2023LDec08.]


In Source 58, Julian Horsey provides perhaps the first reverse-engineered view of the RPi 5 PCIe. His article refers to a detailed video (by George Smart) providing more information. (I certainly didn't understand much of the video.) In Video Source 05,George Smart describes his reverse-engineering of the PCIe connector on the RPi 5B. Raspberry Pi has not yet released the specifications for the FPC "cable" that is required by the RPi 5B PCIe connector.

A 6 page Raspberry Pi 5 Datasheet (containing very little information other than dimensions) is available in Web Source 08.

SeeedStudio has published its own description of the Raspberry Pi 5 at Source 09.

Patrick Fromaget, of RaspberryTips has provided an excellent review of the Raspberry Pi 5 in Source 17.

The new RP1 Chip

The review at Source 07 describes the new RP1 chip (first used on the RPi 5), designed and built by Raspberry, as follows:

The Raspberry Pi has a new "Pi Silicon" chip on its board, the RP1 (See the RP1 Datasheet in Source 33). Looking remarkably like an RP2040, Raspberry Pi's first foray into custom silicon, the RP1 is there to provide the bulk of I/O for the Raspberry Pi 5.

According to the product brief we received, the RP1 provides more than double the USB bandwidth of previous models, providing faster transfer speeds for USB drives using UAS (USB Attached SCSI). The RP1 also provides a dedicated four-lane 1.5 Gbps MIPI camera and display interface. This triples the total bandwidth for a combination of cameras and displays. Keep in mind, though, that the USB 3.0 ports top out at the same 5 Gbps theoretical maximum as on the RPi 4 so we're counting on increased processing power to drive increased throughput.

To find out just how much faster the USB 3 connections are on the Pi 5, we conducted storage benchmarks on both the built-in microSD card reader and on a PCIe 3.0 SSD that was in an enclosure and connected via USB. With Sysbench's file IO test, the Raspberry Pi 5 was able to read at 12.75MB/s from a Kingston Canvas Go Plus microSD card and write at 8.5 MB/s. Meanwhile, the SSD managed to read at 31.33 MB/s and write at 20.89 MB/s.

How does that compare to the Raspberry Pi 4? Well the Kingston Canvas Go Plus managed to read at 8.78 MB/s and write at 5.85 MB/s. The SSD read at 12.96 MB/s and had write speeds of 8.64 MB/s. So that's more than double the speed on both the USB 3.0 and microSD reader interfaces.

Speaking of microSD, the Pi 5's card reader now supports higher-speed microSD cards that use the SDR104 standard. SDR104 is a subset of the popular UHS-I card standard and can theoretically transfer at up to 104 MBps. Though few cards are actually labeled as supporting SDR104, you can find UHS-I cards that claim transfer speeds over 100 MBps. The Pi 4's card reader had a theoretical maximum of about 50 MBps, but in practice, we never saw a card go much above 40 MBps.

We tried a few different microSD cards with both the Pi 5 and the Pi 4. Using IOZone, a storage benchmark, we found that the Kingston Canvas Go Plus, which is rated for 170 MBps, hit a sequential read and write speeds in the 86 and 55 MBps ranges The same card was in the 37 to 41 MBps range for sequential writes on the Pi 4.

In Video Source 03, Christopher Barnatt introduces the new Raspberry Pi 5. In Video Source 04, leepsvideo uses dual monitors to demonstrate fast gaming on the RPi.

The active cooler for the Raspberry Pi 5 including a fan (ie a blower) only costs $5.00 .

The new DA9091 PM (Power Management) chip (a PM IC developed by the Raspberry Pi team) on the Raspberry Pi 5 provides 8 separate switch-mode power supplies and a quad-phase core supply, capable of providing 20 amps of current to power the Raspberry Pi 5.

Apparently PIO hardware exists in the RP1. But we will have to wait for software support before we can use it.

Jeff Geerling has provided a video about the Raspberry Pi 5 (Video 02) and an article (Source 21) about the PCIe on the Raspberry Pi 5. He has tested many different drives (such as SSDs) on the PCIe which will permit many high-speed devices to be used with the Raspberry Pi 5.

Source 27 by Alasdair Allan is an article measuring the effects of cooling alternatives for the Raspberry Pi 5.

In Web Source 22 and Web Source 23, Cytron describes both the Raspberry Pi 5 (using many high resolution images) and its new UART connector which will facilitate the use of the Raspberry Pi Debug Probe ($14.40), shown below. This probe uses the RP2040 to diagnose the Raspberry Pico H (using the Raspberry Pi 5 or other computers). This probe ships with many useful cables (shown below). In Source 23, Cytron has pulled together many links to various resources describing how to use this probe.

(To enlarge .....Click it)
thumb: RPi_DebugProbeForRP2040.jpg
RPi Debug Probe Using the RP2040

Image from Source 23
(To enlarge .....Click it)
thumb: ProbeInUse.jpg
RPi Debug Probe In Use

Image from Source 23
(To enlarge .....Click it)
thumb: X876_Hat.jpg
Sabrent X876 Hat

Image from Source 23


Giovanni Di Mario at EEWeb (Source 35) has provided an image (left below) of the 5 accessories that are needed/useful to run the Raspberry Pi 5. Raspberry Pi has provided an image (center below) of a prototype of the upcoming M.2 HAT for the PCIe. Notice the short orange/gold ribbon cable curling down to the PCIe connector (on the left side of the RPi 5). This M.2 HAT (silk-screened as 0575R) extends the GPIO pins up to the top of this M.2 HAT prototype. This M.2 HAT prototype hides many of the connectors on the RPi 5 but illustrates (center below) how the tiny Rocket 512GB 2230 SSD drive (right below)[Also see Source 37 US$49.99 by Sabrent.] can be mounted on the RPi 5.

(To enlarge .....Click it)
thumb: figure-03-accessories-20231003.jpg
Raspberry Pi 5 Accessories (case, cooler, power block, dual ribbon cables, RTC battery)

Image from Source 35
(To enlarge .....Click it)
thumb: IMG_8155-1536x1152.jpg
prototype of M.2 HAT

Image from Source 27
(To enlarge .....Click it)
thumb: Sabrent_Rocket-512GB
Sabrent Rocket 512

Image from Source 27


The author has recently purchased a 512GB Sabrent SSD drive from Amazon. This model purchased was SB-2230-512; it measures 2.2cm x 2.7cm, a little bigger than the average postage stamp. It is even smaller than the SSD shown on the right above. The Geekworm X786 HAT (shown high above right and also just above right) in Source 39 works well with the Sabrent 2230 SSD drive using a RPi 4B USB-3 connector. To install an SSD on an RPi-4B, see Source 40 by PiHut. Using RPi OS "Bookworm", the RPi-4B and Pi-400 can be booted from either a uSD card or the SSD drive when both are attached and powered up. In fact, files can be read and written on both (the uSD and SSD) drives after booting. There were issues doing this with the previous RPi OS named "Bullseye". One of the issues was that wifi wouldn't work at all but Ethernet did work in the 2-boot-drive scenario. The recent RPi OS "Bookworm" resolved the issues. Another minor issue is that no hardware (no nut & bolt) was provided to "lock down" the SSD to the HAT.

The author succeeded in installing and booting a RPi 4B from an SSD (on the X876 using a USB-A cable) . As of 2024BFeb18, he is attempting to install and boot a RPi 5B from an SSD (on the X876 using a USB-A cable) . He needed to refer to Source 40.

A more recent image of the prototype of the upcoming Raspberry M.2 M Key HAT+ is shown below. It will connect to the RPi 5 via a flexible cable called a "flexible Printed Circuit Board" cable shown above (but not shown below). This future HAT+ is shown below mounted to a RPi 5. Raspberry has coined a new acronym PIP standing for a "PcIe Peripheral" that connects to the RPi 5 PCIe connector.

(To enlarge .....Click it)
thumb: 40e82000-af31-4f9a-9fa4-3dc1ebfed2c3-1536x1024.jpg
M.2 M Key HAT+

Image from Raspberry Pi


For Raspberry Pi-4B, X876 V1.1 NVME M.2 SSD Storage Expansion Board Support Key-M 2280 SSD



(To enlarge .....Click it)
thumb: 1024px-X876-V1.1-IMG_4635-Interface-Schematic.jpg
1024px-X876-V1.1-IMG_4635-Interface-Schematic.jpg

Image from Geekworm (Source 48)

A User Manual for the Geekworm X876 can be seen at Source 48.

The Geekworm HAT has a very interesting feature which is 2 spring-loaded "metal posts" in the middle area of the HAT. Geekworm documentation names them "Power Pogo Pins". Each "metal post" is designed to make contact with the RPi-4B above it (if the RPi-4B is firmly attached to the Geekworm HAT using small nuts & bolts). These posts supply 5 volt connections between the RPi-4B and the HAT, even if there is no other connection between the two devices. I was concerned when I connected the HAT to a Pi-400 via a USB cable. I noticed that the unused RPi-4B still mounted to the HAT was receiving power even though no USB-C power connector was attached to the RPi-4B. I was concerned that the RPi-4B might be drawing too much power from the Pi-400. So I insulated the top of a "metal post" from the RPi-4B using a piece of cardboard. After doing this, the RPi-4B "power on" led was NOT lit. I'm sure that the uninsulated "metal posts" will provide power to the HAT (and the SSD) even if there is no USB cable joining the USB-3 connectors on the RPi-4B and the HAT. The exact need for the "metal posts" is not clear. Perhaps they provide extra power if the power from the USB-3 connector is inadequate. A related Geekworm product named the X732 provides power and a cooling fan for the RPi-4B. The X732 has a USB-C power connector, an on/off switch and a 6-pin female connector that plugs into the GPIO pins on the RPi-4B for fan control. All in all, I am very pleased with the X876 HAT and the Sabrent SSD. They function well with either the Pi-400 or the RPi-4B (but not at the same time, of course.)

WARNING: The Geekworm X876 might destroy a Raspberry Pi 5B ( RPi 5B ). The X876 is ONLY designed for the RPi 4B. To use the X876 with the RPi 5B, the pogo sticks must be insulated to NOT touch the bottom of the RPi 5B. Furthermore the bottom USB-3 connector does NOT line up with that of the RPi 5B, so a short USB-A cable must be used to connect the X876 to the RPi 5B.

Source 49 in "MakeUseOf" by IAN BUCKLEY contains a list of Raspberry Pi Commands to control motors and cameras.

Source 50 describes many useful commands and websites for controlling the Raspberry Pi from the Terminal Command Line. Many of these actions are also possible using the GUI Raspbian Operating System instead of the Terminal CLI commands.

Source 60 is an article by Les Pounder of Tom's Hardware that describes a Pi 500 Maker Build: Raspberry Pi 5 Keyboard Computer (shown below). In this article, Christopher Barnatt of Explaining Computers presents videos that describe how you can make this project:

(To enlarge .....Click it)
thumb: Maker_Pi_500.jpg
Maker Pi 500 by C. Barnatt

Image from Tom's Hardware

The Python 3 software has changed slightly on the RPi 5. Les Pounder of Tom's Hardware, describes some of the changes in Source 54. He writes:
	With the Raspberry Pi 5, we are unable to use RPi.GPIO due to how the GPIO 
	pins are memory mapped. This forces us to use an alternative,
	and libgpiod (Source 55 probably by jeromebrunet) is the focus of this 
	"how to" [being written here].
	
	Libgpiod, specifically python3-gpiod is a pure Python module for interacting with 
	the GPIO. It feels similar to RPI.GPIO in that we have to explicitly 
	set the GPIO pins before we use them. We see gpiod as more of an intermediate 
	module for Python and the GPIO. If you are new to this, use GPIO Zero which also 
	works with the Raspberry Pi 5.  [Then he goes on to describe gpiod using 2 projects.]
	
Tom's Python 3 code to blink a LED (using gpiod) is:
	#Project 1: Complete Code Listing

	import gpiod
	import time
	LED_PIN = 17       #phys pin 17 to long lead of LED 
	#                   (short lead) through 200R to GND
	chip = gpiod.Chip('gpiochip4')
	led_line = chip.get_line(LED_PIN)
	led_line.request(consumer="LED", type=gpiod.LINE_REQ_DIR_OUT)
	try:
	    while True:
	        led_line.set_value(1)
	        time.sleep(1)
	        led_line.set_value(0)'
	        time.sleep(1)  # Sleep for one second
	finally:                   #ctrl-c to end
	   led_line.release()
	#/blinky.py
	
	
Tom's Python 3 code (using gpiod to read a pushbutton (or a CD) to control a LED is:
	#Project 2: Complete Code Listing

	import gpiod
	LED_PIN = 17
	BUTTON_PIN = 27
	chip = gpiod.Chip('gpiochip4')
	led_line = chip.get_line(LED_PIN)
	button_line = chip.get_line(BUTTON_PIN)
	led_line.request(consumer="LED", type=gpiod.LINE_REQ_DIR_OUT)
	button_line.request(consumer="Button", type=gpiod.LINE_REQ_DIR_IN)
	try:
	   while True:
	       button_state = button_line.get_value()
	       if button_state == 1:
	           led_line.set_value(1)
	       else:
	           led_line.set_value(0)
	finally:
	   led_line.release()
	button_line.release()
	#/button-press.py
	
There is no known "man" or "help" file yet for gpiod using Python. However Lloyd Rochester (in Source 56) describes the new Application Binary Interface (ABI), calling it "libgpiod" and even shows how to wait for an event on an input line. He uses the C++ programming language, but provides many details about "libgpiod". His describes the following gpiod CLI commands, tools and routines:
>$ sudo apt install gpiod
>$ apt show gpiod
>$ sudo apt install libgpiod-dev
>$ sudo apt info libgpiod-dev
>$ gpioinfo --help
>$ gpiodetect --help
>$ gpiofind --help
>$ gpiomon --help 
>$ gpioset --help
>$ gpioget --help
>$ gpioinfo
 C code to blink the LED
The articles by Lloyd Rochester are real gems to read. Unfortunately most of his code examples are in C++, not Python. He describes SPI etc. in Source 57. Be sure to click on "remove filter" in his Geek Blog, you will see his explanation of many related terms. In Source 57, he provides more raspberry-pi information about:
2021-05-10 GPIO Input with libgpiod
2021-05-03 Blinking an LED with libgpiod
2021-04-21 Raspberry Pi SPI Explained
2021-04-10 Audio Clip Capture by Threshold
2020-06-03 LSM9DS1 Command Line Tool for Raspberry Pi
2020-03-18 UART Between Raspberry Pi and Arduino
The last item. [UART . . . RPi & Arduino], describes the use of termios (type "man termios" for more details). The termios software drives an RPi uart via /dev/ttyAMA0. He distinguishes between "Cooked Mode" and "Raw Mode". Perhaps the new UART on the RPi 5 will simplify this communication. It appears that Jan Raasch (janraasch / hugo-bearblog) and Lloyd Robertson often work together.

In Source 59, PhilE provides much information about the 3-pin stand-alone UART connector (known as the "serial0" alias) on the new RPi 5. Apparently, as of 2023KNov07, his comments need version "rpi-6.1.y" to function correctly.

Linpack Benchmarking

The author uses the Aikon Benchmark software to compare speeds of various RPi configurations. It illustrates that computers transfer data faster after booting from an SSD compared to booting from a uSD card. Strangely, they seem to compute more slowly when using an SSD (Doh?). The Linpack benchmark (below) is very useful when comparing RPi computers with non-RPi computers.

Source 29 describes the High Performance Linpack ( HPL ) benchmark. Source 36 has Linpack (HPL) benchmarks of the Raspberry Pi 5. Source 36 by Jeff Geerling does provide HPL benchmark results, comparing the RPi 5 to the RPi 4, the Orange Pi 5 and the Rock 5 B. Also see links to the 6-page Phoronix review at the bottom of Source 30. Magpi Issue 134 (Source 42) has an article describing the RPi 5. But the official Raspberry Documentation Site (Source 43) does not yet include the RPi 5.

Source 41 indicates that Ubuntu may soon become very popular on the RPi 5 . . . . and probably on the RPi 4 also. The RPi 5 UART cable (F-F) can be ordered from Digikey (Source 44) for US$2.01 .

Source 45 (from hackster) states:
We've been treated to a limited data sheet (described in Source 46) which has revealed a few new capabilities such as an analog-to-digital converter, and there are hints of a few more revelations to come. If we had a wishlist, it would be for an RP1 with some of those RP2040-style PIOs.
An article at The Register (Source 47) talks about the RPi 5 with and without any cooling. At the end of this article, I have links to a great many sources extolling the virtues of the Raspberry Pi 5 from many points of view.

Source 61 by the Raspberry Pi Foundation is the best manual for the Raspberry Pi 5 seen to date.

At Source 64 VILROS offers a Vilros Basic Starter Kit for the RPi 5 for only US $119.99 on a first come first served basis. Vilros describes all of the RPi 5 pinouts at Source 63. They also mention a PDF ( 270081139 ) of the RPi 5 pinouts (Source 73 $ charge). It is probably more comprehensive than the GPIO pinouts shown below.

(To enlarge .....Click it)
thumb: RPi5_Pinouts_by_Vilros.jpg
RPi 5 Pinouts by Vilros

Image from Vilros

Raspberry 5 UART

Source 68 provides some good documentation about the Raspberrry 5 UART connector. Source 68 might take you to the top of the article. If so, refer to the image below of the Table of Contents (on the left), scroll down to (and click on) "UART Connector (underlined)" to see the relevant information.

(To enlarge .....Click it)
thumb: Pi5_UART_connector.jpg
Pi5_UART_connector.jpg

Image from RPi../documentation

A subsequent Source 68 heading of "Creating a serial console" then finishes by saying:

Unlike previous Raspberry Pi models, where you could enable a serial console on GPIO14 and 15, enabling a serial console from raspi-config will enable a serial console on the new UART connector on /dev/ttyAMA0 on Raspberry Pi 5.


WARNING The novice user should take care and ensure that any peripheral connected to the Pi 5 UART (or any GPIO pins) uses HC logic of 0v/+3.3v, not 5v nor the RS232 much higher and much lower voltages. A voltage converter is absolutely necessary. Such higher voltages will destroy (fry) the Raspberry Pi 5.

A novice user might also not know that UART signals are very different from USB signals. A USB port is a shared port and will usually have multiple traffic and control information "threads", unlike a UART which usually only communicates with one serial asynchronous device. The main USB connector on a Raspberry Pico will NOT communicate directly with a UART. The inexpensive (US$ 12.00) Raspberry Pi Debug Probe (Source 69) is designed to connect a UART to a USB port. This Debug Probe has the matching connector for the UART Connector (J6) on the Raspberry Pi 5.

Source 70 by Macoy Madson describes how to use the RPi 5 UART for debugging the RPi 5. He refers to Source 71, which is the official Raspberry Specification for the RPi 5 UART connector. Unfortunately Madson's code is not Python code for the RPi 5, but something much deeper.

The author googles 'Python for "Raspberry Pi 5" UART' in vain. He is hoping to find some Python code that will let him use the UART with simple Rx or Tx Python functions. Is it possible to connect the minicom software to the Pi 5B UART?   Probably yes!   Source 67 explains how to configure the Pi 5B UART as ttyAMA3. In Source 67, PhilE, a Raspberry Pi Engineer/Forum moderator, helps Tim correctly configure the Pi 5B UART as ttyAMA3 on an early release of the "Bookworm" OS for the Raspberry Pi 5.

Source 66 contains some information about the UART on the Raspberry 5. But instead, Source 66 says what the UART doesn't do.

In Source 72, on October 1, 2021, Jeff Geerling describes how to drive the UART on a RPi 4 using minicom. Hopefully Jeff will soon document a similar approach that will work on a RPi 5.

Other Related Thoughts

GEDexplore

The author has many GEDCOM files containing genealogy family trees. He felt a need to explore some of these files. Sometimes the need was to view a summary of such a file. Other times it was to compare two similar GEDCOM files. He is currently creating a Python program called GEDexplore.py . It is developing into a very interesting program. One of the issues that he has is that his main GEDCOM file contains words that have random spaces and strange symbols (instead of accents) embedded in them. This is due to his former use of Family Tree Maker software that caused the issue. He began a BASIC program to eliminate these mis-spellings, but never finished the job. He hopes to correct this "spelling" issue within the next few years.

Internet of Things (IOT)

Source 11 is a simple Internet of Things (IOT) project that measures the temperature, humidity and lighting in your basement. It uses Python on a tiny Raspberry Pi computer. The Python code can be downloaded from Source 12. It will be downloaded as a text (".txt") file whose extension can be renamed to ".py" . It appears that two identical copies of the code exist in Source 12. The data is uploaded using urllib2 to "Thingspeak" at Source 13. Of course, each user must set up his/her own account at Thingspeak. The author has created a Thingspeak account, uploaded samples and downloaded them to see if they could be retrieved successfully (with positive results). See the author's "Thingspeak Notes" at Source 34.

The ultra-simple electronic circuitry to measure the parameters can be seen in the article at Source 11. The devices used for the measurements are the DHT11 and a photoresistor (a cheap photo-cell). Due to the absence of an AtoD converter on the RPi, ambient light is only measured as On/Off. The following four variables were measured and sent to Thingspeak:

	TW     Temperature  (C')
	TWF    Temperature  (F')
	RHW    Rel.Humidity (%)
	LT     ambLight     (0:dark, 1:light)
	

Bitcoin Mining

See Source 31 for a simplified explanation of the Bitcoin Mining Process. . . but one still ponders "Why is bit-coin mining valuable?".

Sources

Video Sources

Video Source V206:01: Introducing Raspberry Pi 5 (0:55m) by Raspberry Pi on 2023 I Sep 28
Video Source V206:02: Raspberry Pi 5: EVERYTHING you need to know (20:31m) by Jeff Geerling on 2023 I Sep 28
Video Source V206:03: Raspberry Pi 5: (20:07m) by Christopher Barnatt of Explaining Computers on 2023 J Oct 01
Video Source V206:04: Raspberry Pi 5: Dual Monitors (12:47m) by leepsvideo on 2023 I Sep 28
Video Source V206:05: Raspberry Pi 5 - Unofficial PCIe Success - Hacking the Pi5's PCIe into life (21:17m) by George Smart (Ham M1GEO) on 2023 K Nov 06

Web Sources

Web Source S206:01:www md5_IX .txt by D@CC on 2023ISep25
Web Source S206:02:www PiR2F.txt by D@CC on 2023ISep25
Web Source S206:03:www hashTwice_v01.txt Output by D@CC on 2023ISep25
Web Source S206:04:www hashTwice_v01_py.txt Source Code by D@CC on 2023ISep25
Web Source S206:05:www Introducing: Raspberry Pi 5 by Eben Upton on 2023ISep28
Web Source S206:06:www md5-console by Jintao Yang (joker2770) on 2023DApr18
Web Source S206:07:www Raspberry Pi 5 Review: A New Standard. . .[ Ugh Ads] by Avram Piltch of Tom's Hardware on 2023ISep28
Web Source S206:08:www Raspberry Pi 5 Brief Datasheet (6 pp) by Raspberry Pi Ltd on 2023ISep28
Web Source S206:09:www Raspberry Pi 5 . . . . Amaze by Jenna Zhu on 2023ISep28
Web Source S206:10:www Raspberry Pi 5 : Next Level. . . by DFRobot on 2023ISep28
Web Source S206:11:www First Raspberry Pi IOT by Soldering Sunday in Circuits by 2023ISep28
Web Source S206:12:www MyFirstIOT code by Soldering Sunday in Circuits by 2023ISep28
Web Source S206:13:www https://thingspeak.com API by Thingspeak before 2023ISep29
Web Source S206:14:www md5_IX_v01_py.txt Python Source Code by D@CC on 2023ISep29
Web Source S206:15:www md5_IX_v01o1_py.txt Python Source Code by D@CC on 2023ISep30
Web Source S206:16:www PiR2F_wR1.txt by D@CC on 2023ISep25
Web Source S206:17:www Raspberry Pi 5: Inspiration [UglyAds] by Patrick Fromaget on 2023ISep30
Web Source S206:18:www GUI meld is better than CLI diff by Ben Nuttall in March 23, 2020
Web Source S206:19:www Raspberry Pi 5 for Tinkerers [UglyAds] by SOURAV RUDRA of itsfoss on 2023 I Sep 29
Web Source S206:20:www A Poem about Raspberry Pi 5 (and 8 Articles) by Adam of PiCockpit.com on 2023 J Oct 07
Web Source S206:21:www testing the PCIe on the Raspberry Pi 5 by Jeff Geerling on 2023 I Sep 28
Web Source S206:22:www The Raspberry Pi 5 SBC by Cytron on 2023 I Sep 28
Web Source S206:23:www The Raspberry Pi Debug Probe for the RP2040 by Cytron on 2023 I Sep 28
Web Source S206:24:www RPi Upton & Adams Transcript Re: RPi 5 by Raspberry Pi on 2023 J Oct 03
Web Source S206:25:www Over 100 Raspberry Pi, RPi 5 & CM4 Datasheets by Raspberry Pi on 2023 J Oct 03
Web Source S206:26:www Trusted Reviews: Raspberry Pi 5 [UglyAds] by David Ludlow on 2023 I Sep 28
Web Source S206:27:www Heating & Cooling the Raspberry Pi 5 by Alasdair Allan on 2023 J Oct 04
Web Source S206:28:www Raspberry Pi 5 Review (search: encryption) by Gareth Halfacree on 2023 I Sept 27
Web Source S206:29:www Linpack benchmark by HowtoForge before 2023 J Oct 04
Web Source S206:30:www Phoronix benchmarks of the RPi 5 (6 web pages) [UglyAds] by Michael Larabel on 2023 I Sep 28
Web Source S206:31:www Simple Bitcoin Mining Explanation? by PC Mag by 2023 I Sep 28
Web Source S206:32:www RPi 5: The sweetest Pi Yet ! [UglyAds] by Tanishk Misra on 2023 J Oct 03
Web Source S206:33:www draft RP1 Datasheet [rp1-peripherals] (90 pp) by Raspberry Pi Ltd on 2023JOct06
Web Source S206:34:www My ThingSpeak Notes by D@CC on 2023JOct08
Web Source S206:35:www RPi 5: A Game-Changer [UglyAds] by Giovanni Di Maria on 2023 J Oct 05
Web Source S206:36:www Overclocking and 'Underclocking' the Raspberry Pi 5 by Jeff Geerling on 2023 J Oct 04
Web Source S206:37:www 512GB Sabrent PCIe M.2 2242 SSD SB-1342-512 by Sabrent before 2023 J Oct 07
Web Source S206:38:www IT: prepIX (196.html) created by David KC Cole on 2023 E May 16
Web Source S206:39:www Geekworm HAT for RPi 4 NVE X876 NVME M.2 SSD at Amazon on 2023 J Oct 11
Web Source S206:40:www How to set up an SSD with the Raspberry Pi 4 by The PiHut on 2021 B Feb 08
Web Source S206:41:www . . . Ubuntu 23.10, Support for RPi 5 [UglyAds] by Les Pounder of Tom's Hardware on 2023JOct12
Web Source S206:42:www Documenting the RPi 5: MagPi Issue 134 pp 10 by #MagPi on 2023JOct16
Web Source S206:43:www Official Raspberry Pi Documentation (before RPi 5) by the Raspberry Pi Foundation before 2023JOct16
Web Source S206:44:www RPi 5 UART cable: Digikey 455-3703-ND US$2.01 from DigiKey c2023JOct16
Web Source S206:45:www Why is the RP1 . . . Most Important. . . by Jenny List of hackaday on 2023JOct16
Web Source S206:46:www Raspberry Pi Reveals . . RP1 . . . by Jenny List of hackaday on 2023JOct10
Web Source S206:47:www Raspberry Pi 5: Hot takes and cooler mistakes by Richard Speed at The Register on 2023JOct17
Web Source S206:48:www Geekworm X876 User Manual by Geekworm before 2023JOct20
Web Source S206:49:www Ultimate RPi Commands Cheat Sheet by IAN BUCKLEY on 2020GAug01
Web Source S206:50:www 19 Simple Raspberry Pi Terminal Commands for Beginners by Patrick on 2020DApr27
Web Source S206:51:www NVMe SSD boot with the Raspberry Pi 5 by Jeff Geerling on 2023 J Oct 21
Web Source S206:52:www Install Python Modules on RPi-5 (Bookworm) & Earlier by Les Pounder of Tom's Hardware on 2023JOct21
Web Source S206:53:www Official Raspberry Pi 5 Documentation by Raspberry Pi c 2023JOct25
Web Source S206:54:www Control the RPi 5 GPIO with Python 3 and gpiodby Les Pountder of Tom's Hardware on 2023JOct28
Web Source S206:55:www RPi 5 GPIO with Python 3 and gpiod by 12f3a2a at github on 2023HAug23
Web Source S206:56:www The new GPIO Interface (in C++) on the RPi: libgpiod by Lloyd Rochester by 2023JOct31
Web Source S206:57:www Filtering for "raspberry-piby Lloyd Rochester on 2021-05-10
Web Source S206:58:www Reverse engineering the Raspberry Pi 5 PCIeby Julian Horsey on 2023KNov13
Web Source S206:59:www Configurating the Pi 5 UARTs by PhilE c 2023KNov07
Web Source S206:60:www Maker's own Pi 500 by Les Pounder of Tom's Hardware on 2023 K Nov 20
Web Source S206:61:www Official Raspberry Pi 5 Documentation [dup of 53] by the Raspberry Pi Foundation on 2023KNov21
Web Source S206:62:www Double Standards - PCIe FFC and HAT+ by James Adams of Raspberry Pi on 2023LDec08
Web Source S206:63:www Raspberry Pi 5 Pinout by VILROS c 2023LDec01
Web Source S206:64:www Raspberry Pi 5 Basic Starter Kit by VILROS c 2023LDec01
Web Source S206:65:www Raspberry Pi 5 revised OS by Michael Larabel of Phoronix on 2023LDec07
Web Source S206:66:www UART Debugging Raspberry Pi 5 by Arav Jain on RPi forums on 2023KNOv03
Web Source S206:67:www Configuring Raspberry Pi 5 UART ttyAMA3 by Tim on RPi forums on 2023KNOv08
Web Source S206:68:www Official RPi 5 Documentation: UART Connector by the Raspberry Pi Foundation on 2023KNov21
Web Source S206:69:www Raspberry Pi Debug Probe by the Raspberry Pi Foundation on 2023KNov21
Web Source S206:70:www Debugging on Raspberry Pi 4 and 5 by Macoy Madson on 2024AJan15
Web Source S206:71:www Raspberry Pi 3-pin Debug Connector Specification (pdf) by the Raspberry Pi Foundation before 2024AJan15
Web Source S206:72:www Attaching to a Raspberry Pi [4]'s Serial Console (UART) for debugging by Jeff Geerling on October 1, 2021
Web Source S206:73:www Vilros-Raspberry-Pi-User-Guide-by-Vilros ($) by VILROS c 2023LDec01

/SourcesEnd

There is a way to "google" any of the part-numbers, words and phrases in all of the author's articles. This "google-like" search limits itself ONLY to his articles. Just go to the top of "ePC Articles by Old King Cole" and look for the "search" input box named "freefind".

Click here to return to Articles by Old King Cole

Date Written :2023 I Sep 25
Last Updated:2024 D Apr 04

All rights reserved 2024 by © ICH180RR

saved in E:\E\2022\DevE\MyPagesE\Globat\ePhotoCaption.com\a\206\206.html
backed up to ePhotoCaption.com\a\206\206_2023JOct25.html

Font: Courier New 10 (monospaced)
/206.html