<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://www.smithnet.org.uk/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=NickPGSmith</id>
	<title>Smithnet Wiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://www.smithnet.org.uk/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=NickPGSmith"/>
	<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Special:Contributions/NickPGSmith"/>
	<updated>2026-06-11T08:39:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Running&amp;diff=1764</id>
		<title>Running</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Running&amp;diff=1764"/>
		<updated>2026-06-11T06:59:51Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* 10 mile (16 km) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Distances ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.calculator.net/pace-calculator.html Pace Calculator].&lt;br /&gt;
&lt;br /&gt;
=== 5 km ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.parkrun.org.uk/parkrunner/6454631/all/ All Parkruns]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2023-08-12||[https://www.parkrun.org.uk/swanseabay/parkrunner/6454631/ Swansea Bay Parkrun]||19:27||3:53||&lt;br /&gt;
|-&lt;br /&gt;
|2024-05-11&amp;lt;/br&amp;gt;2026-04-27||[https://www.parkrun.org.uk/southnorwood/parkrunner/6454631/ South Norwood Parkrun]||19:55||3:59||&lt;br /&gt;
|-&lt;br /&gt;
|2024-06-29||[https://www.parkrun.org.uk/crystalpalace/parkrunner/6454631/ Crystal Palance Parkrun]||20:43||4:09||&lt;br /&gt;
|-&lt;br /&gt;
|2024-07-27||[https://www.parkrun.org.uk/bromley/parkrunner/6454631/ Bromley Parkrun]||20:27||4:05||&lt;br /&gt;
|-&lt;br /&gt;
|2025-03-01||[https://www.parkrun.org.uk/medina/parkrunner/6454631/ Medina IOW Parkrun]||22:04||4:25||&lt;br /&gt;
|-&lt;br /&gt;
|2025-08-17||[https://results.runthrough.co.uk/myresults.aspx?uid=16487-5495-2-25249 Dulwich Park]||19:58||4:00||13th Overall, 1st in V50 category&amp;lt;br/&amp;gt;Pacer V2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 20:00 (4:00 min/km)&lt;br /&gt;
&lt;br /&gt;
=== 10 km ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2025-01-19||Regent&#039;s Park||43:03||4:18||2 weeks off/with injury. Metaspeed, cool.&lt;br /&gt;
|-&lt;br /&gt;
|2025-06-18||[https://results.netiming.co.uk/results.aspx?CId=20008&amp;amp;RId=465 Norman Park]||44:18||4:26||32nd of 292 overall. Pacer V2, Very hot.&lt;br /&gt;
|-&lt;br /&gt;
|2025-08-24||[https://results.runthrough.co.uk/myresults.aspx?CId=16487&amp;amp;RId=5504&amp;amp;EId=1&amp;amp;AId=1103850 Regent&#039;s Park]||41:57||4:12||18th of 362 overall. Metaspeed, warmish.&lt;br /&gt;
|-&lt;br /&gt;
|2026-06-14||[https://www.orpingtonroadrunners.org.uk/high-elms-10k High Elms]|| || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 42:00 (4:12 min/km)&lt;br /&gt;
&lt;br /&gt;
=== 10 mile (16 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2026-06-07||[https://results.racetimingsolutions.co.uk/myresults.aspx?CId=16269&amp;amp;RId=24211&amp;amp;EId=2&amp;amp;AId=231951 Dorking]||1:08:30||4:15||Metaspeed, cool/slight wind, undulating.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 1:09:00 (4:17 min/km)&lt;br /&gt;
&lt;br /&gt;
=== Half (21.1 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2023-09-03||London [https://www.thebighalf.co.uk/ Big Half]||1:36:57||4:36||Hot&lt;br /&gt;
|-&lt;br /&gt;
|2024-09-01||London Big Half||1:32:20||4:23||Hot&lt;br /&gt;
|-&lt;br /&gt;
|2025-09-07||London Big Half||1:32:06||4:22||Warm. On 1:30 pace until halfway, legs tiring.&amp;lt;br/&amp;gt;Insufficient training at race pace?&lt;br /&gt;
|-&lt;br /&gt;
|2026-09-06||London Big Half|| || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 1:30:00 (4:16 min/km)&lt;br /&gt;
&lt;br /&gt;
Notes from BH:&lt;br /&gt;
* Pre-race warmup walk&lt;br /&gt;
* Fueling plan&lt;br /&gt;
* Plan point of sprint finish earlier&lt;br /&gt;
&lt;br /&gt;
=== Marathon (42.2 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2022-05-01||[https://mkmarathon.com/ Milton Keynes]||3:53:00||5:31||Cramp near end: no fueling plan.&lt;br /&gt;
|-&lt;br /&gt;
|2023-05-01||Milton Keynes||3:34:04||5:04||&lt;br /&gt;
|-&lt;br /&gt;
|2024-05-06||Milton Keynes||3:21:04||4:46||&lt;br /&gt;
|-&lt;br /&gt;
|2025-05-05||Milton Keynes||3:40:21||5:13||After injury: insufficient long runs.&amp;lt;br/&amp;gt;Cool, 5 Gells/tablets/2 caffine&amp;lt;br/&amp;gt;Severe cramp in last 6 km&lt;br /&gt;
|-&lt;br /&gt;
|2025-10-18||[https://results.runthrough.co.uk/myresults.aspx?uid=16487-5587-6-56342 Battersea Park]||3:19:58||4:44||Cool, flat. 4 Gells + Sweets.Achillies niggle, New Balance&amp;lt;br/&amp;gt;Bad blisters, cramp after finish&lt;br /&gt;
|-&lt;br /&gt;
|2026-04-12||Brighton||3:29:04||4:57||Superblast 2 (Sunny but not too hot, light wind). Only 2 weeks intensive (100+k) after Achilles recovery. Needed to walk at water stations with cups. Fueling: good gel use, 2 caffeine tabs, 2 electrolyte tabs. Steady heart rate. Started to get cramp in last 5 km, very bad (needed to run/walk) in last 2 km.&lt;br /&gt;
[https://www.londonmarathonevents.co.uk/sites/default/files/2025-03/BRTN_2025_Road_Closure_Map_v4%201.pdf Map]&lt;br /&gt;
|-&lt;br /&gt;
|2026-05-04||[https://results.resultsbase.net/myresults.aspx?CId=8&amp;amp;RId=21049&amp;amp;EId=1&amp;amp;AId=81587 Milton Keynes]||3:18:04||4:41||Cool, steady pace, Metaspeed Sky +, good gel/electrolytes, no cramp until a little crossing the finish.&lt;br /&gt;
[https://www.mapmyrun.com/routes/view/5974644058 Map]&lt;br /&gt;
|-&lt;br /&gt;
|2026-10-24||Battersea Park|| || ||&lt;br /&gt;
|-&lt;br /&gt;
|2027-04-18||Newport|| || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Targets:&lt;br /&gt;
* 3:30:00 (4:59 min/km) &lt;br /&gt;
* 3:20:00 (4:44 min/km)&lt;br /&gt;
* 3:15:00 (4:37 min/km)&lt;br /&gt;
&lt;br /&gt;
== Training ==&lt;br /&gt;
&lt;br /&gt;
* Polarised Training:&lt;br /&gt;
** Mostly consistent slow runs, high volume&lt;br /&gt;
** Speed work at Parkrun and track. &lt;br /&gt;
* Taper&lt;br /&gt;
** 2 - 3 weeks unnecessary if comfortable with prior volume, so used to recovering.&lt;br /&gt;
** Reduce volume but maintain intensity&lt;br /&gt;
* Sprints&lt;br /&gt;
** Hill sprints develop power; high cadence/look up not down&lt;br /&gt;
** Sprint training should be done not to exhaustion: multiple short bursts to engage fast twitch muscles&lt;br /&gt;
* Alternate:&lt;br /&gt;
** 2 weeks High Load (100+ km)&lt;br /&gt;
** 1 week De-load&lt;br /&gt;
** Vary according to feel, additional races&lt;br /&gt;
** Do not attempt full send Parkrun every week&lt;br /&gt;
* Be more specific closer to the race&lt;br /&gt;
* 2 Weeks from Marathon, peak with race-specific effort:&lt;br /&gt;
** 10 k easy / 15-20 km @ race pace (4:37 min/km)&lt;br /&gt;
** 4 x (5 km @ race pace + 1 km easy)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !!Mon!!Tue!!Wed!!Thu!!Fri!!Sat!!Sun&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|High Load&lt;br /&gt;
|18 km&lt;br /&gt;
|AM: 9 - 18 km;&amp;lt;br/&amp;gt;PM: Track, Max effort&lt;br /&gt;
|12 km&lt;br /&gt;
|18 km&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
|21 - 37 km&lt;br /&gt;
|Rest / 8.5 km depending on previous day&lt;br /&gt;
|-&lt;br /&gt;
|De-Load&lt;br /&gt;
|8 km hill&lt;br /&gt;
|AM: 5 km;&amp;lt;br/&amp;gt;PM: Track, Max effort&lt;br /&gt;
|9 km&lt;br /&gt;
|12 km&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
|&#039;&#039;Parkrun&#039;&#039; 2 - 3 km warmup; 5 km race&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Distances:&lt;br /&gt;
* ~ 6 km : 2 loops around SN Park&lt;br /&gt;
* 9 km : Beckenham J - Penge E&lt;br /&gt;
* 12 km : to BP Park&lt;br /&gt;
* ~ 12.5 km : CPalace - Sydenham - Beckenham J&lt;br /&gt;
* ~ 19 km : Elmers - Shirley - WWickham - Beckenham&lt;br /&gt;
* ~ 21.6 km : Grenwich observatory and back&lt;br /&gt;
* ~ 23 km : Elmers - Shirley - WWickham - Beckenham J with BP Park loop&lt;br /&gt;
* ~ 29.3 km : To SB, Grenwich observatory and back&lt;br /&gt;
* ~ 31.5 km : Elmers - Shirley - WWickham - Beckenham (and repeat with shortcut)&lt;br /&gt;
&lt;br /&gt;
S/C Excercises:&lt;br /&gt;
* Calf Raise&lt;br /&gt;
* Bench Lunge&lt;br /&gt;
* Plank&lt;br /&gt;
* Side Plank&lt;br /&gt;
* Toe Walk&lt;br /&gt;
* Heel Walk&lt;br /&gt;
&lt;br /&gt;
Form:&lt;br /&gt;
* Check, especially when tired&lt;br /&gt;
* Stop flapping arms about&lt;br /&gt;
* Don&#039;t slouch forward&lt;br /&gt;
&lt;br /&gt;
== Shoes ==&lt;br /&gt;
&lt;br /&gt;
Current:&lt;br /&gt;
* ASICS Metaspeed Sky+ (204 g) [2023-12]: Important Races: Half/Marathon. Carbon Plate.&lt;br /&gt;
* ASICS Novablast 5 (260 g) [2025-01]: Everyday, Easy, Parkrun.&lt;br /&gt;
* ASICS Nimbus 27 (300 g) [2025-04]: Extra cushioned, long runs.&lt;br /&gt;
* New Balance FuelCell SuperComp Pacer V2 (209 g) [2025-05]: Important Races: 5k/10k. Carbon Plate.&lt;br /&gt;
** Half size up, but still too tight for long runs.&lt;br /&gt;
* ASICS Gel Pulse 15 (260 g) [2025-09]: Walking, light runs.&lt;br /&gt;
* ASICS SuperBlast 2 (250 g) [2026-01]: Tempo, Track, more cushioned for Half/Marathon.&lt;br /&gt;
* Scott Supertrac RC 2 Trail (270 g) [2026-01]: Cross-Country.&lt;br /&gt;
** 1 size up&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
* ASICS Metaspeed Sky/Edge Tokyo (188 g, £240): Races/speed&lt;br /&gt;
* ASICS MegaBlast (230g, £210): Fast non-plate&lt;br /&gt;
* ASICS Metaspeed Ride (282 g, £180)&lt;br /&gt;
* ASICS Sonicblast Tokyo (256 g, *£170): Plate version of novablast? Tempo?&lt;br /&gt;
* ASICS Magic Speed 4 (242 g, £160 - 15%): Plate, tempo/speed work.&lt;br /&gt;
* ASICS Novablast 5 (260 g, *£135)&lt;br /&gt;
* ASICS Trabuco 14 (* £140): Trail&lt;br /&gt;
* Li-Ning Eedian 6 Elite (~200 g): Races&lt;br /&gt;
* Li-Ning Eedian 6 Challenger (~200 g): Propulsion and stability&lt;br /&gt;
&lt;br /&gt;
Retired:&lt;br /&gt;
* ASICS NovaBlast 3 (252 g) [2023-07]: Tempo/Track/Parkrun&lt;br /&gt;
* Saucony Mens Ride 17 (282 g) [2024-03]: Easy Run, Daily&lt;br /&gt;
* ASICS Cumulus&lt;br /&gt;
* ASICS Nimbus 22&lt;br /&gt;
* ASICS Nimbus 24 [2023-07]&lt;br /&gt;
&lt;br /&gt;
== Research ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.researchgate.net/profile/Malcolm-Collins/publication/49674432_Increased_running_speed_and_previous_cramps_rather_than_dehydration_or_serum_sodium_changes_predict_exercise-associated_muscle_cramping_A_prospective_cohort_study_in_210_Ironman_triathletes/links/0a85e53c93b820db45000000/Increased-running-speed-and-previous-cramps-rather-than-dehydration-or-serum-sodium-changes-predict-exercise-associated-muscle-cramping-A-prospective-cohort-study-in-210-Ironman-triathletes.pdf Increased running speed and previous cramps rather than dehydration or serum sodium]&lt;br /&gt;
&lt;br /&gt;
== YouTube ==&lt;br /&gt;
&lt;br /&gt;
Runners:&lt;br /&gt;
* [https://www.youtube.com/@BenParkes Ben Parkes]&lt;br /&gt;
* [https://www.youtube.com/@thisisjogon Jog On]&lt;br /&gt;
* [https://www.youtube.com/@kofuzi Kofuzi]&lt;br /&gt;
* [https://www.youtube.com/@justalilbester Nick Bester]&lt;br /&gt;
* [https://www.youtube.com/@PhilyBowden Phily Bowden]&lt;br /&gt;
* [https://www.youtube.com/@RanToJapan Ran To Japan]&lt;br /&gt;
* [https://www.youtube.com/@runningchannel The Running Channel]&lt;br /&gt;
&lt;br /&gt;
Physio/Coach:&lt;br /&gt;
* [https://www.youtube.com/@SpringSnabbare Fredrik Zillén]&lt;br /&gt;
* [https://www.youtube.com/@NicklasRossnerPT Nick Rossner]&lt;br /&gt;
* [https://www.youtube.com/@runelitecoach Run Elite]&lt;br /&gt;
* [https://www.youtube.com/@TheRunExperience The Run Experience]&lt;br /&gt;
* [https://www.youtube.com/@SteveMagness Steve Magness]&lt;br /&gt;
&lt;br /&gt;
== Diet &amp;amp; Supplements ==&lt;br /&gt;
&lt;br /&gt;
* Eat at least 2 hours before a race&lt;br /&gt;
* Marathon/Half:&lt;br /&gt;
** Start taking carbs 20 mins after the start of a race&lt;br /&gt;
** At least 60 g / hour&lt;br /&gt;
** SiS GO Isotonic: 22 g carbs (general training)&lt;br /&gt;
** SiS Beta: 40 g carbs (important long races)&lt;br /&gt;
* Reduce oil intake which reduces nitric oxide&lt;br /&gt;
* Nitric oxide rich foods: rhubarb, celery, lettuce, beetroot, watermelon&lt;br /&gt;
* Sodium&lt;br /&gt;
** Suggested 300 - 600 mg/hr; up to 1 g/hr on very hot days.&lt;br /&gt;
** 2 tablets: 200 mg&lt;br /&gt;
* Caffeine&lt;br /&gt;
** 3 - 6 mg/kg -&amp;gt; ~ 400 mg (2 tablets)&lt;br /&gt;
** ~ 30 - 60 mins prior to race&lt;br /&gt;
** ~ 6 hours half life&lt;br /&gt;
* Turmeric&lt;br /&gt;
** Taken after exercise, can help with DOMS/recovery/anti-inflammatory&lt;br /&gt;
** Eat with black pepper or fat to aid absorption&lt;br /&gt;
* Creatine Monohydrate&lt;br /&gt;
** 5 - 10 g daily&lt;br /&gt;
* Magnesium Glycinate&lt;br /&gt;
** 3 g daily&lt;br /&gt;
* Collagen&lt;br /&gt;
** 10 - 15 g of hydrolyzed collagen peptides&lt;br /&gt;
** Collagen synthesis is dependent on Vitamin C&lt;br /&gt;
** 30 – 60 mins before strength training&lt;br /&gt;
** Do not take caffeine beforehand&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Running&amp;diff=1763</id>
		<title>Running</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Running&amp;diff=1763"/>
		<updated>2026-06-11T06:57:47Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* 10 mile (16 km) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Distances ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.calculator.net/pace-calculator.html Pace Calculator].&lt;br /&gt;
&lt;br /&gt;
=== 5 km ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.parkrun.org.uk/parkrunner/6454631/all/ All Parkruns]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2023-08-12||[https://www.parkrun.org.uk/swanseabay/parkrunner/6454631/ Swansea Bay Parkrun]||19:27||3:53||&lt;br /&gt;
|-&lt;br /&gt;
|2024-05-11&amp;lt;/br&amp;gt;2026-04-27||[https://www.parkrun.org.uk/southnorwood/parkrunner/6454631/ South Norwood Parkrun]||19:55||3:59||&lt;br /&gt;
|-&lt;br /&gt;
|2024-06-29||[https://www.parkrun.org.uk/crystalpalace/parkrunner/6454631/ Crystal Palance Parkrun]||20:43||4:09||&lt;br /&gt;
|-&lt;br /&gt;
|2024-07-27||[https://www.parkrun.org.uk/bromley/parkrunner/6454631/ Bromley Parkrun]||20:27||4:05||&lt;br /&gt;
|-&lt;br /&gt;
|2025-03-01||[https://www.parkrun.org.uk/medina/parkrunner/6454631/ Medina IOW Parkrun]||22:04||4:25||&lt;br /&gt;
|-&lt;br /&gt;
|2025-08-17||[https://results.runthrough.co.uk/myresults.aspx?uid=16487-5495-2-25249 Dulwich Park]||19:58||4:00||13th Overall, 1st in V50 category&amp;lt;br/&amp;gt;Pacer V2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 20:00 (4:00 min/km)&lt;br /&gt;
&lt;br /&gt;
=== 10 km ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2025-01-19||Regent&#039;s Park||43:03||4:18||2 weeks off/with injury. Metaspeed, cool.&lt;br /&gt;
|-&lt;br /&gt;
|2025-06-18||[https://results.netiming.co.uk/results.aspx?CId=20008&amp;amp;RId=465 Norman Park]||44:18||4:26||32nd of 292 overall. Pacer V2, Very hot.&lt;br /&gt;
|-&lt;br /&gt;
|2025-08-24||[https://results.runthrough.co.uk/myresults.aspx?CId=16487&amp;amp;RId=5504&amp;amp;EId=1&amp;amp;AId=1103850 Regent&#039;s Park]||41:57||4:12||18th of 362 overall. Metaspeed, warmish.&lt;br /&gt;
|-&lt;br /&gt;
|2026-06-14||[https://www.orpingtonroadrunners.org.uk/high-elms-10k High Elms]|| || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 42:00 (4:12 min/km)&lt;br /&gt;
&lt;br /&gt;
=== 10 mile (16 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2026-06-07||[https://results.racetimingsolutions.co.uk/myresults.aspx?CId=16269&amp;amp;RId=24211&amp;amp;EId=2&amp;amp;AId=231951 Dorking]||1:08:30||4:15||Metaspped, cool/slight wind, undulating.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 1:09:00 (4:17 min/km)&lt;br /&gt;
&lt;br /&gt;
=== Half (21.1 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2023-09-03||London [https://www.thebighalf.co.uk/ Big Half]||1:36:57||4:36||Hot&lt;br /&gt;
|-&lt;br /&gt;
|2024-09-01||London Big Half||1:32:20||4:23||Hot&lt;br /&gt;
|-&lt;br /&gt;
|2025-09-07||London Big Half||1:32:06||4:22||Warm. On 1:30 pace until halfway, legs tiring.&amp;lt;br/&amp;gt;Insufficient training at race pace?&lt;br /&gt;
|-&lt;br /&gt;
|2026-09-06||London Big Half|| || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 1:30:00 (4:16 min/km)&lt;br /&gt;
&lt;br /&gt;
Notes from BH:&lt;br /&gt;
* Pre-race warmup walk&lt;br /&gt;
* Fueling plan&lt;br /&gt;
* Plan point of sprint finish earlier&lt;br /&gt;
&lt;br /&gt;
=== Marathon (42.2 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2022-05-01||[https://mkmarathon.com/ Milton Keynes]||3:53:00||5:31||Cramp near end: no fueling plan.&lt;br /&gt;
|-&lt;br /&gt;
|2023-05-01||Milton Keynes||3:34:04||5:04||&lt;br /&gt;
|-&lt;br /&gt;
|2024-05-06||Milton Keynes||3:21:04||4:46||&lt;br /&gt;
|-&lt;br /&gt;
|2025-05-05||Milton Keynes||3:40:21||5:13||After injury: insufficient long runs.&amp;lt;br/&amp;gt;Cool, 5 Gells/tablets/2 caffine&amp;lt;br/&amp;gt;Severe cramp in last 6 km&lt;br /&gt;
|-&lt;br /&gt;
|2025-10-18||[https://results.runthrough.co.uk/myresults.aspx?uid=16487-5587-6-56342 Battersea Park]||3:19:58||4:44||Cool, flat. 4 Gells + Sweets.Achillies niggle, New Balance&amp;lt;br/&amp;gt;Bad blisters, cramp after finish&lt;br /&gt;
|-&lt;br /&gt;
|2026-04-12||Brighton||3:29:04||4:57||Superblast 2 (Sunny but not too hot, light wind). Only 2 weeks intensive (100+k) after Achilles recovery. Needed to walk at water stations with cups. Fueling: good gel use, 2 caffeine tabs, 2 electrolyte tabs. Steady heart rate. Started to get cramp in last 5 km, very bad (needed to run/walk) in last 2 km.&lt;br /&gt;
[https://www.londonmarathonevents.co.uk/sites/default/files/2025-03/BRTN_2025_Road_Closure_Map_v4%201.pdf Map]&lt;br /&gt;
|-&lt;br /&gt;
|2026-05-04||[https://results.resultsbase.net/myresults.aspx?CId=8&amp;amp;RId=21049&amp;amp;EId=1&amp;amp;AId=81587 Milton Keynes]||3:18:04||4:41||Cool, steady pace, Metaspeed Sky +, good gel/electrolytes, no cramp until a little crossing the finish.&lt;br /&gt;
[https://www.mapmyrun.com/routes/view/5974644058 Map]&lt;br /&gt;
|-&lt;br /&gt;
|2026-10-24||Battersea Park|| || ||&lt;br /&gt;
|-&lt;br /&gt;
|2027-04-18||Newport|| || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Targets:&lt;br /&gt;
* 3:30:00 (4:59 min/km) &lt;br /&gt;
* 3:20:00 (4:44 min/km)&lt;br /&gt;
* 3:15:00 (4:37 min/km)&lt;br /&gt;
&lt;br /&gt;
== Training ==&lt;br /&gt;
&lt;br /&gt;
* Polarised Training:&lt;br /&gt;
** Mostly consistent slow runs, high volume&lt;br /&gt;
** Speed work at Parkrun and track. &lt;br /&gt;
* Taper&lt;br /&gt;
** 2 - 3 weeks unnecessary if comfortable with prior volume, so used to recovering.&lt;br /&gt;
** Reduce volume but maintain intensity&lt;br /&gt;
* Sprints&lt;br /&gt;
** Hill sprints develop power; high cadence/look up not down&lt;br /&gt;
** Sprint training should be done not to exhaustion: multiple short bursts to engage fast twitch muscles&lt;br /&gt;
* Alternate:&lt;br /&gt;
** 2 weeks High Load (100+ km)&lt;br /&gt;
** 1 week De-load&lt;br /&gt;
** Vary according to feel, additional races&lt;br /&gt;
** Do not attempt full send Parkrun every week&lt;br /&gt;
* Be more specific closer to the race&lt;br /&gt;
* 2 Weeks from Marathon, peak with race-specific effort:&lt;br /&gt;
** 10 k easy / 15-20 km @ race pace (4:37 min/km)&lt;br /&gt;
** 4 x (5 km @ race pace + 1 km easy)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !!Mon!!Tue!!Wed!!Thu!!Fri!!Sat!!Sun&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|High Load&lt;br /&gt;
|18 km&lt;br /&gt;
|AM: 9 - 18 km;&amp;lt;br/&amp;gt;PM: Track, Max effort&lt;br /&gt;
|12 km&lt;br /&gt;
|18 km&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
|21 - 37 km&lt;br /&gt;
|Rest / 8.5 km depending on previous day&lt;br /&gt;
|-&lt;br /&gt;
|De-Load&lt;br /&gt;
|8 km hill&lt;br /&gt;
|AM: 5 km;&amp;lt;br/&amp;gt;PM: Track, Max effort&lt;br /&gt;
|9 km&lt;br /&gt;
|12 km&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
|&#039;&#039;Parkrun&#039;&#039; 2 - 3 km warmup; 5 km race&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Distances:&lt;br /&gt;
* ~ 6 km : 2 loops around SN Park&lt;br /&gt;
* 9 km : Beckenham J - Penge E&lt;br /&gt;
* 12 km : to BP Park&lt;br /&gt;
* ~ 12.5 km : CPalace - Sydenham - Beckenham J&lt;br /&gt;
* ~ 19 km : Elmers - Shirley - WWickham - Beckenham&lt;br /&gt;
* ~ 21.6 km : Grenwich observatory and back&lt;br /&gt;
* ~ 23 km : Elmers - Shirley - WWickham - Beckenham J with BP Park loop&lt;br /&gt;
* ~ 29.3 km : To SB, Grenwich observatory and back&lt;br /&gt;
* ~ 31.5 km : Elmers - Shirley - WWickham - Beckenham (and repeat with shortcut)&lt;br /&gt;
&lt;br /&gt;
S/C Excercises:&lt;br /&gt;
* Calf Raise&lt;br /&gt;
* Bench Lunge&lt;br /&gt;
* Plank&lt;br /&gt;
* Side Plank&lt;br /&gt;
* Toe Walk&lt;br /&gt;
* Heel Walk&lt;br /&gt;
&lt;br /&gt;
Form:&lt;br /&gt;
* Check, especially when tired&lt;br /&gt;
* Stop flapping arms about&lt;br /&gt;
* Don&#039;t slouch forward&lt;br /&gt;
&lt;br /&gt;
== Shoes ==&lt;br /&gt;
&lt;br /&gt;
Current:&lt;br /&gt;
* ASICS Metaspeed Sky+ (204 g) [2023-12]: Important Races: Half/Marathon. Carbon Plate.&lt;br /&gt;
* ASICS Novablast 5 (260 g) [2025-01]: Everyday, Easy, Parkrun.&lt;br /&gt;
* ASICS Nimbus 27 (300 g) [2025-04]: Extra cushioned, long runs.&lt;br /&gt;
* New Balance FuelCell SuperComp Pacer V2 (209 g) [2025-05]: Important Races: 5k/10k. Carbon Plate.&lt;br /&gt;
** Half size up, but still too tight for long runs.&lt;br /&gt;
* ASICS Gel Pulse 15 (260 g) [2025-09]: Walking, light runs.&lt;br /&gt;
* ASICS SuperBlast 2 (250 g) [2026-01]: Tempo, Track, more cushioned for Half/Marathon.&lt;br /&gt;
* Scott Supertrac RC 2 Trail (270 g) [2026-01]: Cross-Country.&lt;br /&gt;
** 1 size up&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
* ASICS Metaspeed Sky/Edge Tokyo (188 g, £240): Races/speed&lt;br /&gt;
* ASICS MegaBlast (230g, £210): Fast non-plate&lt;br /&gt;
* ASICS Metaspeed Ride (282 g, £180)&lt;br /&gt;
* ASICS Sonicblast Tokyo (256 g, *£170): Plate version of novablast? Tempo?&lt;br /&gt;
* ASICS Magic Speed 4 (242 g, £160 - 15%): Plate, tempo/speed work.&lt;br /&gt;
* ASICS Novablast 5 (260 g, *£135)&lt;br /&gt;
* ASICS Trabuco 14 (* £140): Trail&lt;br /&gt;
* Li-Ning Eedian 6 Elite (~200 g): Races&lt;br /&gt;
* Li-Ning Eedian 6 Challenger (~200 g): Propulsion and stability&lt;br /&gt;
&lt;br /&gt;
Retired:&lt;br /&gt;
* ASICS NovaBlast 3 (252 g) [2023-07]: Tempo/Track/Parkrun&lt;br /&gt;
* Saucony Mens Ride 17 (282 g) [2024-03]: Easy Run, Daily&lt;br /&gt;
* ASICS Cumulus&lt;br /&gt;
* ASICS Nimbus 22&lt;br /&gt;
* ASICS Nimbus 24 [2023-07]&lt;br /&gt;
&lt;br /&gt;
== Research ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.researchgate.net/profile/Malcolm-Collins/publication/49674432_Increased_running_speed_and_previous_cramps_rather_than_dehydration_or_serum_sodium_changes_predict_exercise-associated_muscle_cramping_A_prospective_cohort_study_in_210_Ironman_triathletes/links/0a85e53c93b820db45000000/Increased-running-speed-and-previous-cramps-rather-than-dehydration-or-serum-sodium-changes-predict-exercise-associated-muscle-cramping-A-prospective-cohort-study-in-210-Ironman-triathletes.pdf Increased running speed and previous cramps rather than dehydration or serum sodium]&lt;br /&gt;
&lt;br /&gt;
== YouTube ==&lt;br /&gt;
&lt;br /&gt;
Runners:&lt;br /&gt;
* [https://www.youtube.com/@BenParkes Ben Parkes]&lt;br /&gt;
* [https://www.youtube.com/@thisisjogon Jog On]&lt;br /&gt;
* [https://www.youtube.com/@kofuzi Kofuzi]&lt;br /&gt;
* [https://www.youtube.com/@justalilbester Nick Bester]&lt;br /&gt;
* [https://www.youtube.com/@PhilyBowden Phily Bowden]&lt;br /&gt;
* [https://www.youtube.com/@RanToJapan Ran To Japan]&lt;br /&gt;
* [https://www.youtube.com/@runningchannel The Running Channel]&lt;br /&gt;
&lt;br /&gt;
Physio/Coach:&lt;br /&gt;
* [https://www.youtube.com/@SpringSnabbare Fredrik Zillén]&lt;br /&gt;
* [https://www.youtube.com/@NicklasRossnerPT Nick Rossner]&lt;br /&gt;
* [https://www.youtube.com/@runelitecoach Run Elite]&lt;br /&gt;
* [https://www.youtube.com/@TheRunExperience The Run Experience]&lt;br /&gt;
* [https://www.youtube.com/@SteveMagness Steve Magness]&lt;br /&gt;
&lt;br /&gt;
== Diet &amp;amp; Supplements ==&lt;br /&gt;
&lt;br /&gt;
* Eat at least 2 hours before a race&lt;br /&gt;
* Marathon/Half:&lt;br /&gt;
** Start taking carbs 20 mins after the start of a race&lt;br /&gt;
** At least 60 g / hour&lt;br /&gt;
** SiS GO Isotonic: 22 g carbs (general training)&lt;br /&gt;
** SiS Beta: 40 g carbs (important long races)&lt;br /&gt;
* Reduce oil intake which reduces nitric oxide&lt;br /&gt;
* Nitric oxide rich foods: rhubarb, celery, lettuce, beetroot, watermelon&lt;br /&gt;
* Sodium&lt;br /&gt;
** Suggested 300 - 600 mg/hr; up to 1 g/hr on very hot days.&lt;br /&gt;
** 2 tablets: 200 mg&lt;br /&gt;
* Caffeine&lt;br /&gt;
** 3 - 6 mg/kg -&amp;gt; ~ 400 mg (2 tablets)&lt;br /&gt;
** ~ 30 - 60 mins prior to race&lt;br /&gt;
** ~ 6 hours half life&lt;br /&gt;
* Turmeric&lt;br /&gt;
** Taken after exercise, can help with DOMS/recovery/anti-inflammatory&lt;br /&gt;
** Eat with black pepper or fat to aid absorption&lt;br /&gt;
* Creatine Monohydrate&lt;br /&gt;
** 5 - 10 g daily&lt;br /&gt;
* Magnesium Glycinate&lt;br /&gt;
** 3 g daily&lt;br /&gt;
* Collagen&lt;br /&gt;
** 10 - 15 g of hydrolyzed collagen peptides&lt;br /&gt;
** Collagen synthesis is dependent on Vitamin C&lt;br /&gt;
** 30 – 60 mins before strength training&lt;br /&gt;
** Do not take caffeine beforehand&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Running&amp;diff=1762</id>
		<title>Running</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Running&amp;diff=1762"/>
		<updated>2026-06-07T11:58:10Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* 10 mile (16 km) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Distances ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.calculator.net/pace-calculator.html Pace Calculator].&lt;br /&gt;
&lt;br /&gt;
=== 5 km ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.parkrun.org.uk/parkrunner/6454631/all/ All Parkruns]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2023-08-12||[https://www.parkrun.org.uk/swanseabay/parkrunner/6454631/ Swansea Bay Parkrun]||19:27||3:53||&lt;br /&gt;
|-&lt;br /&gt;
|2024-05-11&amp;lt;/br&amp;gt;2026-04-27||[https://www.parkrun.org.uk/southnorwood/parkrunner/6454631/ South Norwood Parkrun]||19:55||3:59||&lt;br /&gt;
|-&lt;br /&gt;
|2024-06-29||[https://www.parkrun.org.uk/crystalpalace/parkrunner/6454631/ Crystal Palance Parkrun]||20:43||4:09||&lt;br /&gt;
|-&lt;br /&gt;
|2024-07-27||[https://www.parkrun.org.uk/bromley/parkrunner/6454631/ Bromley Parkrun]||20:27||4:05||&lt;br /&gt;
|-&lt;br /&gt;
|2025-03-01||[https://www.parkrun.org.uk/medina/parkrunner/6454631/ Medina IOW Parkrun]||22:04||4:25||&lt;br /&gt;
|-&lt;br /&gt;
|2025-08-17||[https://results.runthrough.co.uk/myresults.aspx?uid=16487-5495-2-25249 Dulwich Park]||19:58||4:00||13th Overall, 1st in V50 category&amp;lt;br/&amp;gt;Pacer V2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 20:00 (4:00 min/km)&lt;br /&gt;
&lt;br /&gt;
=== 10 km ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2025-01-19||Regent&#039;s Park||43:03||4:18||2 weeks off/with injury. Metaspeed, cool.&lt;br /&gt;
|-&lt;br /&gt;
|2025-06-18||[https://results.netiming.co.uk/results.aspx?CId=20008&amp;amp;RId=465 Norman Park]||44:18||4:26||32nd of 292 overall. Pacer V2, Very hot.&lt;br /&gt;
|-&lt;br /&gt;
|2025-08-24||[https://results.runthrough.co.uk/myresults.aspx?CId=16487&amp;amp;RId=5504&amp;amp;EId=1&amp;amp;AId=1103850 Regent&#039;s Park]||41:57||4:12||18th of 362 overall. Metaspeed, warmish.&lt;br /&gt;
|-&lt;br /&gt;
|2026-06-14||[https://www.orpingtonroadrunners.org.uk/high-elms-10k High Elms]|| || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 42:00 (4:12 min/km)&lt;br /&gt;
&lt;br /&gt;
=== 10 mile (16 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2026-06-07||Dorking||1:08:30||4:15||Metaspped, cool/slight wind, undulating.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 1:09:00 (4:17 min/km)&lt;br /&gt;
&lt;br /&gt;
=== Half (21.1 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2023-09-03||London [https://www.thebighalf.co.uk/ Big Half]||1:36:57||4:36||Hot&lt;br /&gt;
|-&lt;br /&gt;
|2024-09-01||London Big Half||1:32:20||4:23||Hot&lt;br /&gt;
|-&lt;br /&gt;
|2025-09-07||London Big Half||1:32:06||4:22||Warm. On 1:30 pace until halfway, legs tiring.&amp;lt;br/&amp;gt;Insufficient training at race pace?&lt;br /&gt;
|-&lt;br /&gt;
|2026-09-06||London Big Half|| || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 1:30:00 (4:16 min/km)&lt;br /&gt;
&lt;br /&gt;
Notes from BH:&lt;br /&gt;
* Pre-race warmup walk&lt;br /&gt;
* Fueling plan&lt;br /&gt;
* Plan point of sprint finish earlier&lt;br /&gt;
&lt;br /&gt;
=== Marathon (42.2 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2022-05-01||[https://mkmarathon.com/ Milton Keynes]||3:53:00||5:31||Cramp near end: no fueling plan.&lt;br /&gt;
|-&lt;br /&gt;
|2023-05-01||Milton Keynes||3:34:04||5:04||&lt;br /&gt;
|-&lt;br /&gt;
|2024-05-06||Milton Keynes||3:21:04||4:46||&lt;br /&gt;
|-&lt;br /&gt;
|2025-05-05||Milton Keynes||3:40:21||5:13||After injury: insufficient long runs.&amp;lt;br/&amp;gt;Cool, 5 Gells/tablets/2 caffine&amp;lt;br/&amp;gt;Severe cramp in last 6 km&lt;br /&gt;
|-&lt;br /&gt;
|2025-10-18||[https://results.runthrough.co.uk/myresults.aspx?uid=16487-5587-6-56342 Battersea Park]||3:19:58||4:44||Cool, flat. 4 Gells + Sweets.Achillies niggle, New Balance&amp;lt;br/&amp;gt;Bad blisters, cramp after finish&lt;br /&gt;
|-&lt;br /&gt;
|2026-04-12||Brighton||3:29:04||4:57||Superblast 2 (Sunny but not too hot, light wind). Only 2 weeks intensive (100+k) after Achilles recovery. Needed to walk at water stations with cups. Fueling: good gel use, 2 caffeine tabs, 2 electrolyte tabs. Steady heart rate. Started to get cramp in last 5 km, very bad (needed to run/walk) in last 2 km.&lt;br /&gt;
[https://www.londonmarathonevents.co.uk/sites/default/files/2025-03/BRTN_2025_Road_Closure_Map_v4%201.pdf Map]&lt;br /&gt;
|-&lt;br /&gt;
|2026-05-04||[https://results.resultsbase.net/myresults.aspx?CId=8&amp;amp;RId=21049&amp;amp;EId=1&amp;amp;AId=81587 Milton Keynes]||3:18:04||4:41||Cool, steady pace, Metaspeed Sky +, good gel/electrolytes, no cramp until a little crossing the finish.&lt;br /&gt;
[https://www.mapmyrun.com/routes/view/5974644058 Map]&lt;br /&gt;
|-&lt;br /&gt;
|2026-10-24||Battersea Park|| || ||&lt;br /&gt;
|-&lt;br /&gt;
|2027-04-18||Newport|| || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Targets:&lt;br /&gt;
* 3:30:00 (4:59 min/km) &lt;br /&gt;
* 3:20:00 (4:44 min/km)&lt;br /&gt;
* 3:15:00 (4:37 min/km)&lt;br /&gt;
&lt;br /&gt;
== Training ==&lt;br /&gt;
&lt;br /&gt;
* Polarised Training:&lt;br /&gt;
** Mostly consistent slow runs, high volume&lt;br /&gt;
** Speed work at Parkrun and track. &lt;br /&gt;
* Taper&lt;br /&gt;
** 2 - 3 weeks unnecessary if comfortable with prior volume, so used to recovering.&lt;br /&gt;
** Reduce volume but maintain intensity&lt;br /&gt;
* Sprints&lt;br /&gt;
** Hill sprints develop power; high cadence/look up not down&lt;br /&gt;
** Sprint training should be done not to exhaustion: multiple short bursts to engage fast twitch muscles&lt;br /&gt;
* Alternate:&lt;br /&gt;
** 2 weeks High Load (100+ km)&lt;br /&gt;
** 1 week De-load&lt;br /&gt;
** Vary according to feel, additional races&lt;br /&gt;
** Do not attempt full send Parkrun every week&lt;br /&gt;
* Be more specific closer to the race&lt;br /&gt;
* 2 Weeks from Marathon, peak with race-specific effort:&lt;br /&gt;
** 10 k easy / 15-20 km @ race pace (4:37 min/km)&lt;br /&gt;
** 4 x (5 km @ race pace + 1 km easy)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !!Mon!!Tue!!Wed!!Thu!!Fri!!Sat!!Sun&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|High Load&lt;br /&gt;
|18 km&lt;br /&gt;
|AM: 9 - 18 km;&amp;lt;br/&amp;gt;PM: Track, Max effort&lt;br /&gt;
|12 km&lt;br /&gt;
|18 km&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
|21 - 37 km&lt;br /&gt;
|Rest / 8.5 km depending on previous day&lt;br /&gt;
|-&lt;br /&gt;
|De-Load&lt;br /&gt;
|8 km hill&lt;br /&gt;
|AM: 5 km;&amp;lt;br/&amp;gt;PM: Track, Max effort&lt;br /&gt;
|9 km&lt;br /&gt;
|12 km&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
|&#039;&#039;Parkrun&#039;&#039; 2 - 3 km warmup; 5 km race&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Distances:&lt;br /&gt;
* ~ 6 km : 2 loops around SN Park&lt;br /&gt;
* 9 km : Beckenham J - Penge E&lt;br /&gt;
* 12 km : to BP Park&lt;br /&gt;
* ~ 12.5 km : CPalace - Sydenham - Beckenham J&lt;br /&gt;
* ~ 19 km : Elmers - Shirley - WWickham - Beckenham&lt;br /&gt;
* ~ 21.6 km : Grenwich observatory and back&lt;br /&gt;
* ~ 23 km : Elmers - Shirley - WWickham - Beckenham J with BP Park loop&lt;br /&gt;
* ~ 29.3 km : To SB, Grenwich observatory and back&lt;br /&gt;
* ~ 31.5 km : Elmers - Shirley - WWickham - Beckenham (and repeat with shortcut)&lt;br /&gt;
&lt;br /&gt;
S/C Excercises:&lt;br /&gt;
* Calf Raise&lt;br /&gt;
* Bench Lunge&lt;br /&gt;
* Plank&lt;br /&gt;
* Side Plank&lt;br /&gt;
* Toe Walk&lt;br /&gt;
* Heel Walk&lt;br /&gt;
&lt;br /&gt;
Form:&lt;br /&gt;
* Check, especially when tired&lt;br /&gt;
* Stop flapping arms about&lt;br /&gt;
* Don&#039;t slouch forward&lt;br /&gt;
&lt;br /&gt;
== Shoes ==&lt;br /&gt;
&lt;br /&gt;
Current:&lt;br /&gt;
* ASICS Metaspeed Sky+ (204 g) [2023-12]: Important Races: Half/Marathon. Carbon Plate.&lt;br /&gt;
* ASICS Novablast 5 (260 g) [2025-01]: Everyday, Easy, Parkrun.&lt;br /&gt;
* ASICS Nimbus 27 (300 g) [2025-04]: Extra cushioned, long runs.&lt;br /&gt;
* New Balance FuelCell SuperComp Pacer V2 (209 g) [2025-05]: Important Races: 5k/10k. Carbon Plate.&lt;br /&gt;
** Half size up, but still too tight for long runs.&lt;br /&gt;
* ASICS Gel Pulse 15 (260 g) [2025-09]: Walking, light runs.&lt;br /&gt;
* ASICS SuperBlast 2 (250 g) [2026-01]: Tempo, Track, more cushioned for Half/Marathon.&lt;br /&gt;
* Scott Supertrac RC 2 Trail (270 g) [2026-01]: Cross-Country.&lt;br /&gt;
** 1 size up&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
* ASICS Metaspeed Sky/Edge Tokyo (188 g, £240): Races/speed&lt;br /&gt;
* ASICS MegaBlast (230g, £210): Fast non-plate&lt;br /&gt;
* ASICS Metaspeed Ride (282 g, £180)&lt;br /&gt;
* ASICS Sonicblast Tokyo (256 g, *£170): Plate version of novablast? Tempo?&lt;br /&gt;
* ASICS Magic Speed 4 (242 g, £160 - 15%): Plate, tempo/speed work.&lt;br /&gt;
* ASICS Novablast 5 (260 g, *£135)&lt;br /&gt;
* ASICS Trabuco 14 (* £140): Trail&lt;br /&gt;
* Li-Ning Eedian 6 Elite (~200 g): Races&lt;br /&gt;
* Li-Ning Eedian 6 Challenger (~200 g): Propulsion and stability&lt;br /&gt;
&lt;br /&gt;
Retired:&lt;br /&gt;
* ASICS NovaBlast 3 (252 g) [2023-07]: Tempo/Track/Parkrun&lt;br /&gt;
* Saucony Mens Ride 17 (282 g) [2024-03]: Easy Run, Daily&lt;br /&gt;
* ASICS Cumulus&lt;br /&gt;
* ASICS Nimbus 22&lt;br /&gt;
* ASICS Nimbus 24 [2023-07]&lt;br /&gt;
&lt;br /&gt;
== Research ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.researchgate.net/profile/Malcolm-Collins/publication/49674432_Increased_running_speed_and_previous_cramps_rather_than_dehydration_or_serum_sodium_changes_predict_exercise-associated_muscle_cramping_A_prospective_cohort_study_in_210_Ironman_triathletes/links/0a85e53c93b820db45000000/Increased-running-speed-and-previous-cramps-rather-than-dehydration-or-serum-sodium-changes-predict-exercise-associated-muscle-cramping-A-prospective-cohort-study-in-210-Ironman-triathletes.pdf Increased running speed and previous cramps rather than dehydration or serum sodium]&lt;br /&gt;
&lt;br /&gt;
== YouTube ==&lt;br /&gt;
&lt;br /&gt;
Runners:&lt;br /&gt;
* [https://www.youtube.com/@BenParkes Ben Parkes]&lt;br /&gt;
* [https://www.youtube.com/@thisisjogon Jog On]&lt;br /&gt;
* [https://www.youtube.com/@kofuzi Kofuzi]&lt;br /&gt;
* [https://www.youtube.com/@justalilbester Nick Bester]&lt;br /&gt;
* [https://www.youtube.com/@PhilyBowden Phily Bowden]&lt;br /&gt;
* [https://www.youtube.com/@RanToJapan Ran To Japan]&lt;br /&gt;
* [https://www.youtube.com/@runningchannel The Running Channel]&lt;br /&gt;
&lt;br /&gt;
Physio/Coach:&lt;br /&gt;
* [https://www.youtube.com/@SpringSnabbare Fredrik Zillén]&lt;br /&gt;
* [https://www.youtube.com/@NicklasRossnerPT Nick Rossner]&lt;br /&gt;
* [https://www.youtube.com/@runelitecoach Run Elite]&lt;br /&gt;
* [https://www.youtube.com/@TheRunExperience The Run Experience]&lt;br /&gt;
* [https://www.youtube.com/@SteveMagness Steve Magness]&lt;br /&gt;
&lt;br /&gt;
== Diet &amp;amp; Supplements ==&lt;br /&gt;
&lt;br /&gt;
* Eat at least 2 hours before a race&lt;br /&gt;
* Marathon/Half:&lt;br /&gt;
** Start taking carbs 20 mins after the start of a race&lt;br /&gt;
** At least 60 g / hour&lt;br /&gt;
** SiS GO Isotonic: 22 g carbs (general training)&lt;br /&gt;
** SiS Beta: 40 g carbs (important long races)&lt;br /&gt;
* Reduce oil intake which reduces nitric oxide&lt;br /&gt;
* Nitric oxide rich foods: rhubarb, celery, lettuce, beetroot, watermelon&lt;br /&gt;
* Sodium&lt;br /&gt;
** Suggested 300 - 600 mg/hr; up to 1 g/hr on very hot days.&lt;br /&gt;
** 2 tablets: 200 mg&lt;br /&gt;
* Caffeine&lt;br /&gt;
** 3 - 6 mg/kg -&amp;gt; ~ 400 mg (2 tablets)&lt;br /&gt;
** ~ 30 - 60 mins prior to race&lt;br /&gt;
** ~ 6 hours half life&lt;br /&gt;
* Turmeric&lt;br /&gt;
** Taken after exercise, can help with DOMS/recovery/anti-inflammatory&lt;br /&gt;
** Eat with black pepper or fat to aid absorption&lt;br /&gt;
* Creatine Monohydrate&lt;br /&gt;
** 5 - 10 g daily&lt;br /&gt;
* Magnesium Glycinate&lt;br /&gt;
** 3 g daily&lt;br /&gt;
* Collagen&lt;br /&gt;
** 10 - 15 g of hydrolyzed collagen peptides&lt;br /&gt;
** Collagen synthesis is dependent on Vitamin C&lt;br /&gt;
** 30 – 60 mins before strength training&lt;br /&gt;
** Do not take caffeine beforehand&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Running&amp;diff=1761</id>
		<title>Running</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Running&amp;diff=1761"/>
		<updated>2026-06-07T11:56:54Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* 10 mile (16 km) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Distances ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.calculator.net/pace-calculator.html Pace Calculator].&lt;br /&gt;
&lt;br /&gt;
=== 5 km ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.parkrun.org.uk/parkrunner/6454631/all/ All Parkruns]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2023-08-12||[https://www.parkrun.org.uk/swanseabay/parkrunner/6454631/ Swansea Bay Parkrun]||19:27||3:53||&lt;br /&gt;
|-&lt;br /&gt;
|2024-05-11&amp;lt;/br&amp;gt;2026-04-27||[https://www.parkrun.org.uk/southnorwood/parkrunner/6454631/ South Norwood Parkrun]||19:55||3:59||&lt;br /&gt;
|-&lt;br /&gt;
|2024-06-29||[https://www.parkrun.org.uk/crystalpalace/parkrunner/6454631/ Crystal Palance Parkrun]||20:43||4:09||&lt;br /&gt;
|-&lt;br /&gt;
|2024-07-27||[https://www.parkrun.org.uk/bromley/parkrunner/6454631/ Bromley Parkrun]||20:27||4:05||&lt;br /&gt;
|-&lt;br /&gt;
|2025-03-01||[https://www.parkrun.org.uk/medina/parkrunner/6454631/ Medina IOW Parkrun]||22:04||4:25||&lt;br /&gt;
|-&lt;br /&gt;
|2025-08-17||[https://results.runthrough.co.uk/myresults.aspx?uid=16487-5495-2-25249 Dulwich Park]||19:58||4:00||13th Overall, 1st in V50 category&amp;lt;br/&amp;gt;Pacer V2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 20:00 (4:00 min/km)&lt;br /&gt;
&lt;br /&gt;
=== 10 km ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2025-01-19||Regent&#039;s Park||43:03||4:18||2 weeks off/with injury. Metaspeed, cool.&lt;br /&gt;
|-&lt;br /&gt;
|2025-06-18||[https://results.netiming.co.uk/results.aspx?CId=20008&amp;amp;RId=465 Norman Park]||44:18||4:26||32nd of 292 overall. Pacer V2, Very hot.&lt;br /&gt;
|-&lt;br /&gt;
|2025-08-24||[https://results.runthrough.co.uk/myresults.aspx?CId=16487&amp;amp;RId=5504&amp;amp;EId=1&amp;amp;AId=1103850 Regent&#039;s Park]||41:57||4:12||18th of 362 overall. Metaspeed, warmish.&lt;br /&gt;
|-&lt;br /&gt;
|2026-06-14||[https://www.orpingtonroadrunners.org.uk/high-elms-10k High Elms]|| || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 42:00 (4:12 min/km)&lt;br /&gt;
&lt;br /&gt;
=== 10 mile (16 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2026-06-07||Dorking||1:08:30||4:15||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 1:09:00 (4:17 min/km)&lt;br /&gt;
&lt;br /&gt;
=== Half (21.1 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2023-09-03||London [https://www.thebighalf.co.uk/ Big Half]||1:36:57||4:36||Hot&lt;br /&gt;
|-&lt;br /&gt;
|2024-09-01||London Big Half||1:32:20||4:23||Hot&lt;br /&gt;
|-&lt;br /&gt;
|2025-09-07||London Big Half||1:32:06||4:22||Warm. On 1:30 pace until halfway, legs tiring.&amp;lt;br/&amp;gt;Insufficient training at race pace?&lt;br /&gt;
|-&lt;br /&gt;
|2026-09-06||London Big Half|| || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 1:30:00 (4:16 min/km)&lt;br /&gt;
&lt;br /&gt;
Notes from BH:&lt;br /&gt;
* Pre-race warmup walk&lt;br /&gt;
* Fueling plan&lt;br /&gt;
* Plan point of sprint finish earlier&lt;br /&gt;
&lt;br /&gt;
=== Marathon (42.2 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2022-05-01||[https://mkmarathon.com/ Milton Keynes]||3:53:00||5:31||Cramp near end: no fueling plan.&lt;br /&gt;
|-&lt;br /&gt;
|2023-05-01||Milton Keynes||3:34:04||5:04||&lt;br /&gt;
|-&lt;br /&gt;
|2024-05-06||Milton Keynes||3:21:04||4:46||&lt;br /&gt;
|-&lt;br /&gt;
|2025-05-05||Milton Keynes||3:40:21||5:13||After injury: insufficient long runs.&amp;lt;br/&amp;gt;Cool, 5 Gells/tablets/2 caffine&amp;lt;br/&amp;gt;Severe cramp in last 6 km&lt;br /&gt;
|-&lt;br /&gt;
|2025-10-18||[https://results.runthrough.co.uk/myresults.aspx?uid=16487-5587-6-56342 Battersea Park]||3:19:58||4:44||Cool, flat. 4 Gells + Sweets.Achillies niggle, New Balance&amp;lt;br/&amp;gt;Bad blisters, cramp after finish&lt;br /&gt;
|-&lt;br /&gt;
|2026-04-12||Brighton||3:29:04||4:57||Superblast 2 (Sunny but not too hot, light wind). Only 2 weeks intensive (100+k) after Achilles recovery. Needed to walk at water stations with cups. Fueling: good gel use, 2 caffeine tabs, 2 electrolyte tabs. Steady heart rate. Started to get cramp in last 5 km, very bad (needed to run/walk) in last 2 km.&lt;br /&gt;
[https://www.londonmarathonevents.co.uk/sites/default/files/2025-03/BRTN_2025_Road_Closure_Map_v4%201.pdf Map]&lt;br /&gt;
|-&lt;br /&gt;
|2026-05-04||[https://results.resultsbase.net/myresults.aspx?CId=8&amp;amp;RId=21049&amp;amp;EId=1&amp;amp;AId=81587 Milton Keynes]||3:18:04||4:41||Cool, steady pace, Metaspeed Sky +, good gel/electrolytes, no cramp until a little crossing the finish.&lt;br /&gt;
[https://www.mapmyrun.com/routes/view/5974644058 Map]&lt;br /&gt;
|-&lt;br /&gt;
|2026-10-24||Battersea Park|| || ||&lt;br /&gt;
|-&lt;br /&gt;
|2027-04-18||Newport|| || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Targets:&lt;br /&gt;
* 3:30:00 (4:59 min/km) &lt;br /&gt;
* 3:20:00 (4:44 min/km)&lt;br /&gt;
* 3:15:00 (4:37 min/km)&lt;br /&gt;
&lt;br /&gt;
== Training ==&lt;br /&gt;
&lt;br /&gt;
* Polarised Training:&lt;br /&gt;
** Mostly consistent slow runs, high volume&lt;br /&gt;
** Speed work at Parkrun and track. &lt;br /&gt;
* Taper&lt;br /&gt;
** 2 - 3 weeks unnecessary if comfortable with prior volume, so used to recovering.&lt;br /&gt;
** Reduce volume but maintain intensity&lt;br /&gt;
* Sprints&lt;br /&gt;
** Hill sprints develop power; high cadence/look up not down&lt;br /&gt;
** Sprint training should be done not to exhaustion: multiple short bursts to engage fast twitch muscles&lt;br /&gt;
* Alternate:&lt;br /&gt;
** 2 weeks High Load (100+ km)&lt;br /&gt;
** 1 week De-load&lt;br /&gt;
** Vary according to feel, additional races&lt;br /&gt;
** Do not attempt full send Parkrun every week&lt;br /&gt;
* Be more specific closer to the race&lt;br /&gt;
* 2 Weeks from Marathon, peak with race-specific effort:&lt;br /&gt;
** 10 k easy / 15-20 km @ race pace (4:37 min/km)&lt;br /&gt;
** 4 x (5 km @ race pace + 1 km easy)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !!Mon!!Tue!!Wed!!Thu!!Fri!!Sat!!Sun&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|High Load&lt;br /&gt;
|18 km&lt;br /&gt;
|AM: 9 - 18 km;&amp;lt;br/&amp;gt;PM: Track, Max effort&lt;br /&gt;
|12 km&lt;br /&gt;
|18 km&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
|21 - 37 km&lt;br /&gt;
|Rest / 8.5 km depending on previous day&lt;br /&gt;
|-&lt;br /&gt;
|De-Load&lt;br /&gt;
|8 km hill&lt;br /&gt;
|AM: 5 km;&amp;lt;br/&amp;gt;PM: Track, Max effort&lt;br /&gt;
|9 km&lt;br /&gt;
|12 km&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
|&#039;&#039;Parkrun&#039;&#039; 2 - 3 km warmup; 5 km race&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Distances:&lt;br /&gt;
* ~ 6 km : 2 loops around SN Park&lt;br /&gt;
* 9 km : Beckenham J - Penge E&lt;br /&gt;
* 12 km : to BP Park&lt;br /&gt;
* ~ 12.5 km : CPalace - Sydenham - Beckenham J&lt;br /&gt;
* ~ 19 km : Elmers - Shirley - WWickham - Beckenham&lt;br /&gt;
* ~ 21.6 km : Grenwich observatory and back&lt;br /&gt;
* ~ 23 km : Elmers - Shirley - WWickham - Beckenham J with BP Park loop&lt;br /&gt;
* ~ 29.3 km : To SB, Grenwich observatory and back&lt;br /&gt;
* ~ 31.5 km : Elmers - Shirley - WWickham - Beckenham (and repeat with shortcut)&lt;br /&gt;
&lt;br /&gt;
S/C Excercises:&lt;br /&gt;
* Calf Raise&lt;br /&gt;
* Bench Lunge&lt;br /&gt;
* Plank&lt;br /&gt;
* Side Plank&lt;br /&gt;
* Toe Walk&lt;br /&gt;
* Heel Walk&lt;br /&gt;
&lt;br /&gt;
Form:&lt;br /&gt;
* Check, especially when tired&lt;br /&gt;
* Stop flapping arms about&lt;br /&gt;
* Don&#039;t slouch forward&lt;br /&gt;
&lt;br /&gt;
== Shoes ==&lt;br /&gt;
&lt;br /&gt;
Current:&lt;br /&gt;
* ASICS Metaspeed Sky+ (204 g) [2023-12]: Important Races: Half/Marathon. Carbon Plate.&lt;br /&gt;
* ASICS Novablast 5 (260 g) [2025-01]: Everyday, Easy, Parkrun.&lt;br /&gt;
* ASICS Nimbus 27 (300 g) [2025-04]: Extra cushioned, long runs.&lt;br /&gt;
* New Balance FuelCell SuperComp Pacer V2 (209 g) [2025-05]: Important Races: 5k/10k. Carbon Plate.&lt;br /&gt;
** Half size up, but still too tight for long runs.&lt;br /&gt;
* ASICS Gel Pulse 15 (260 g) [2025-09]: Walking, light runs.&lt;br /&gt;
* ASICS SuperBlast 2 (250 g) [2026-01]: Tempo, Track, more cushioned for Half/Marathon.&lt;br /&gt;
* Scott Supertrac RC 2 Trail (270 g) [2026-01]: Cross-Country.&lt;br /&gt;
** 1 size up&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
* ASICS Metaspeed Sky/Edge Tokyo (188 g, £240): Races/speed&lt;br /&gt;
* ASICS MegaBlast (230g, £210): Fast non-plate&lt;br /&gt;
* ASICS Metaspeed Ride (282 g, £180)&lt;br /&gt;
* ASICS Sonicblast Tokyo (256 g, *£170): Plate version of novablast? Tempo?&lt;br /&gt;
* ASICS Magic Speed 4 (242 g, £160 - 15%): Plate, tempo/speed work.&lt;br /&gt;
* ASICS Novablast 5 (260 g, *£135)&lt;br /&gt;
* ASICS Trabuco 14 (* £140): Trail&lt;br /&gt;
* Li-Ning Eedian 6 Elite (~200 g): Races&lt;br /&gt;
* Li-Ning Eedian 6 Challenger (~200 g): Propulsion and stability&lt;br /&gt;
&lt;br /&gt;
Retired:&lt;br /&gt;
* ASICS NovaBlast 3 (252 g) [2023-07]: Tempo/Track/Parkrun&lt;br /&gt;
* Saucony Mens Ride 17 (282 g) [2024-03]: Easy Run, Daily&lt;br /&gt;
* ASICS Cumulus&lt;br /&gt;
* ASICS Nimbus 22&lt;br /&gt;
* ASICS Nimbus 24 [2023-07]&lt;br /&gt;
&lt;br /&gt;
== Research ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.researchgate.net/profile/Malcolm-Collins/publication/49674432_Increased_running_speed_and_previous_cramps_rather_than_dehydration_or_serum_sodium_changes_predict_exercise-associated_muscle_cramping_A_prospective_cohort_study_in_210_Ironman_triathletes/links/0a85e53c93b820db45000000/Increased-running-speed-and-previous-cramps-rather-than-dehydration-or-serum-sodium-changes-predict-exercise-associated-muscle-cramping-A-prospective-cohort-study-in-210-Ironman-triathletes.pdf Increased running speed and previous cramps rather than dehydration or serum sodium]&lt;br /&gt;
&lt;br /&gt;
== YouTube ==&lt;br /&gt;
&lt;br /&gt;
Runners:&lt;br /&gt;
* [https://www.youtube.com/@BenParkes Ben Parkes]&lt;br /&gt;
* [https://www.youtube.com/@thisisjogon Jog On]&lt;br /&gt;
* [https://www.youtube.com/@kofuzi Kofuzi]&lt;br /&gt;
* [https://www.youtube.com/@justalilbester Nick Bester]&lt;br /&gt;
* [https://www.youtube.com/@PhilyBowden Phily Bowden]&lt;br /&gt;
* [https://www.youtube.com/@RanToJapan Ran To Japan]&lt;br /&gt;
* [https://www.youtube.com/@runningchannel The Running Channel]&lt;br /&gt;
&lt;br /&gt;
Physio/Coach:&lt;br /&gt;
* [https://www.youtube.com/@SpringSnabbare Fredrik Zillén]&lt;br /&gt;
* [https://www.youtube.com/@NicklasRossnerPT Nick Rossner]&lt;br /&gt;
* [https://www.youtube.com/@runelitecoach Run Elite]&lt;br /&gt;
* [https://www.youtube.com/@TheRunExperience The Run Experience]&lt;br /&gt;
* [https://www.youtube.com/@SteveMagness Steve Magness]&lt;br /&gt;
&lt;br /&gt;
== Diet &amp;amp; Supplements ==&lt;br /&gt;
&lt;br /&gt;
* Eat at least 2 hours before a race&lt;br /&gt;
* Marathon/Half:&lt;br /&gt;
** Start taking carbs 20 mins after the start of a race&lt;br /&gt;
** At least 60 g / hour&lt;br /&gt;
** SiS GO Isotonic: 22 g carbs (general training)&lt;br /&gt;
** SiS Beta: 40 g carbs (important long races)&lt;br /&gt;
* Reduce oil intake which reduces nitric oxide&lt;br /&gt;
* Nitric oxide rich foods: rhubarb, celery, lettuce, beetroot, watermelon&lt;br /&gt;
* Sodium&lt;br /&gt;
** Suggested 300 - 600 mg/hr; up to 1 g/hr on very hot days.&lt;br /&gt;
** 2 tablets: 200 mg&lt;br /&gt;
* Caffeine&lt;br /&gt;
** 3 - 6 mg/kg -&amp;gt; ~ 400 mg (2 tablets)&lt;br /&gt;
** ~ 30 - 60 mins prior to race&lt;br /&gt;
** ~ 6 hours half life&lt;br /&gt;
* Turmeric&lt;br /&gt;
** Taken after exercise, can help with DOMS/recovery/anti-inflammatory&lt;br /&gt;
** Eat with black pepper or fat to aid absorption&lt;br /&gt;
* Creatine Monohydrate&lt;br /&gt;
** 5 - 10 g daily&lt;br /&gt;
* Magnesium Glycinate&lt;br /&gt;
** 3 g daily&lt;br /&gt;
* Collagen&lt;br /&gt;
** 10 - 15 g of hydrolyzed collagen peptides&lt;br /&gt;
** Collagen synthesis is dependent on Vitamin C&lt;br /&gt;
** 30 – 60 mins before strength training&lt;br /&gt;
** Do not take caffeine beforehand&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Running&amp;diff=1760</id>
		<title>Running</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Running&amp;diff=1760"/>
		<updated>2026-06-07T11:54:27Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* 10 mile (16 km) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Distances ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.calculator.net/pace-calculator.html Pace Calculator].&lt;br /&gt;
&lt;br /&gt;
=== 5 km ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.parkrun.org.uk/parkrunner/6454631/all/ All Parkruns]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2023-08-12||[https://www.parkrun.org.uk/swanseabay/parkrunner/6454631/ Swansea Bay Parkrun]||19:27||3:53||&lt;br /&gt;
|-&lt;br /&gt;
|2024-05-11&amp;lt;/br&amp;gt;2026-04-27||[https://www.parkrun.org.uk/southnorwood/parkrunner/6454631/ South Norwood Parkrun]||19:55||3:59||&lt;br /&gt;
|-&lt;br /&gt;
|2024-06-29||[https://www.parkrun.org.uk/crystalpalace/parkrunner/6454631/ Crystal Palance Parkrun]||20:43||4:09||&lt;br /&gt;
|-&lt;br /&gt;
|2024-07-27||[https://www.parkrun.org.uk/bromley/parkrunner/6454631/ Bromley Parkrun]||20:27||4:05||&lt;br /&gt;
|-&lt;br /&gt;
|2025-03-01||[https://www.parkrun.org.uk/medina/parkrunner/6454631/ Medina IOW Parkrun]||22:04||4:25||&lt;br /&gt;
|-&lt;br /&gt;
|2025-08-17||[https://results.runthrough.co.uk/myresults.aspx?uid=16487-5495-2-25249 Dulwich Park]||19:58||4:00||13th Overall, 1st in V50 category&amp;lt;br/&amp;gt;Pacer V2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 20:00 (4:00 min/km)&lt;br /&gt;
&lt;br /&gt;
=== 10 km ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2025-01-19||Regent&#039;s Park||43:03||4:18||2 weeks off/with injury. Metaspeed, cool.&lt;br /&gt;
|-&lt;br /&gt;
|2025-06-18||[https://results.netiming.co.uk/results.aspx?CId=20008&amp;amp;RId=465 Norman Park]||44:18||4:26||32nd of 292 overall. Pacer V2, Very hot.&lt;br /&gt;
|-&lt;br /&gt;
|2025-08-24||[https://results.runthrough.co.uk/myresults.aspx?CId=16487&amp;amp;RId=5504&amp;amp;EId=1&amp;amp;AId=1103850 Regent&#039;s Park]||41:57||4:12||18th of 362 overall. Metaspeed, warmish.&lt;br /&gt;
|-&lt;br /&gt;
|2026-06-14||[https://www.orpingtonroadrunners.org.uk/high-elms-10k High Elms]|| || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 42:00 (4:12 min/km)&lt;br /&gt;
&lt;br /&gt;
=== 10 mile (16 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2026-06-07||Dorking|| || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 1:09:00 (4:17 min/km)&lt;br /&gt;
&lt;br /&gt;
=== Half (21.1 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|2023-09-03||London [https://www.thebighalf.co.uk/ Big Half]||1:36:57||4:36||Hot&lt;br /&gt;
|-&lt;br /&gt;
|2024-09-01||London Big Half||1:32:20||4:23||Hot&lt;br /&gt;
|-&lt;br /&gt;
|2025-09-07||London Big Half||1:32:06||4:22||Warm. On 1:30 pace until halfway, legs tiring.&amp;lt;br/&amp;gt;Insufficient training at race pace?&lt;br /&gt;
|-&lt;br /&gt;
|2026-09-06||London Big Half|| || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Target: 1:30:00 (4:16 min/km)&lt;br /&gt;
&lt;br /&gt;
Notes from BH:&lt;br /&gt;
* Pre-race warmup walk&lt;br /&gt;
* Fueling plan&lt;br /&gt;
* Plan point of sprint finish earlier&lt;br /&gt;
&lt;br /&gt;
=== Marathon (42.2 km) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Location&lt;br /&gt;
!Time&lt;br /&gt;
!Pace (min/km)&lt;br /&gt;
!Notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2022-05-01||[https://mkmarathon.com/ Milton Keynes]||3:53:00||5:31||Cramp near end: no fueling plan.&lt;br /&gt;
|-&lt;br /&gt;
|2023-05-01||Milton Keynes||3:34:04||5:04||&lt;br /&gt;
|-&lt;br /&gt;
|2024-05-06||Milton Keynes||3:21:04||4:46||&lt;br /&gt;
|-&lt;br /&gt;
|2025-05-05||Milton Keynes||3:40:21||5:13||After injury: insufficient long runs.&amp;lt;br/&amp;gt;Cool, 5 Gells/tablets/2 caffine&amp;lt;br/&amp;gt;Severe cramp in last 6 km&lt;br /&gt;
|-&lt;br /&gt;
|2025-10-18||[https://results.runthrough.co.uk/myresults.aspx?uid=16487-5587-6-56342 Battersea Park]||3:19:58||4:44||Cool, flat. 4 Gells + Sweets.Achillies niggle, New Balance&amp;lt;br/&amp;gt;Bad blisters, cramp after finish&lt;br /&gt;
|-&lt;br /&gt;
|2026-04-12||Brighton||3:29:04||4:57||Superblast 2 (Sunny but not too hot, light wind). Only 2 weeks intensive (100+k) after Achilles recovery. Needed to walk at water stations with cups. Fueling: good gel use, 2 caffeine tabs, 2 electrolyte tabs. Steady heart rate. Started to get cramp in last 5 km, very bad (needed to run/walk) in last 2 km.&lt;br /&gt;
[https://www.londonmarathonevents.co.uk/sites/default/files/2025-03/BRTN_2025_Road_Closure_Map_v4%201.pdf Map]&lt;br /&gt;
|-&lt;br /&gt;
|2026-05-04||[https://results.resultsbase.net/myresults.aspx?CId=8&amp;amp;RId=21049&amp;amp;EId=1&amp;amp;AId=81587 Milton Keynes]||3:18:04||4:41||Cool, steady pace, Metaspeed Sky +, good gel/electrolytes, no cramp until a little crossing the finish.&lt;br /&gt;
[https://www.mapmyrun.com/routes/view/5974644058 Map]&lt;br /&gt;
|-&lt;br /&gt;
|2026-10-24||Battersea Park|| || ||&lt;br /&gt;
|-&lt;br /&gt;
|2027-04-18||Newport|| || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Targets:&lt;br /&gt;
* 3:30:00 (4:59 min/km) &lt;br /&gt;
* 3:20:00 (4:44 min/km)&lt;br /&gt;
* 3:15:00 (4:37 min/km)&lt;br /&gt;
&lt;br /&gt;
== Training ==&lt;br /&gt;
&lt;br /&gt;
* Polarised Training:&lt;br /&gt;
** Mostly consistent slow runs, high volume&lt;br /&gt;
** Speed work at Parkrun and track. &lt;br /&gt;
* Taper&lt;br /&gt;
** 2 - 3 weeks unnecessary if comfortable with prior volume, so used to recovering.&lt;br /&gt;
** Reduce volume but maintain intensity&lt;br /&gt;
* Sprints&lt;br /&gt;
** Hill sprints develop power; high cadence/look up not down&lt;br /&gt;
** Sprint training should be done not to exhaustion: multiple short bursts to engage fast twitch muscles&lt;br /&gt;
* Alternate:&lt;br /&gt;
** 2 weeks High Load (100+ km)&lt;br /&gt;
** 1 week De-load&lt;br /&gt;
** Vary according to feel, additional races&lt;br /&gt;
** Do not attempt full send Parkrun every week&lt;br /&gt;
* Be more specific closer to the race&lt;br /&gt;
* 2 Weeks from Marathon, peak with race-specific effort:&lt;br /&gt;
** 10 k easy / 15-20 km @ race pace (4:37 min/km)&lt;br /&gt;
** 4 x (5 km @ race pace + 1 km easy)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !!Mon!!Tue!!Wed!!Thu!!Fri!!Sat!!Sun&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|High Load&lt;br /&gt;
|18 km&lt;br /&gt;
|AM: 9 - 18 km;&amp;lt;br/&amp;gt;PM: Track, Max effort&lt;br /&gt;
|12 km&lt;br /&gt;
|18 km&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
|21 - 37 km&lt;br /&gt;
|Rest / 8.5 km depending on previous day&lt;br /&gt;
|-&lt;br /&gt;
|De-Load&lt;br /&gt;
|8 km hill&lt;br /&gt;
|AM: 5 km;&amp;lt;br/&amp;gt;PM: Track, Max effort&lt;br /&gt;
|9 km&lt;br /&gt;
|12 km&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
|&#039;&#039;Parkrun&#039;&#039; 2 - 3 km warmup; 5 km race&lt;br /&gt;
|Rest / S&amp;amp;C&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Distances:&lt;br /&gt;
* ~ 6 km : 2 loops around SN Park&lt;br /&gt;
* 9 km : Beckenham J - Penge E&lt;br /&gt;
* 12 km : to BP Park&lt;br /&gt;
* ~ 12.5 km : CPalace - Sydenham - Beckenham J&lt;br /&gt;
* ~ 19 km : Elmers - Shirley - WWickham - Beckenham&lt;br /&gt;
* ~ 21.6 km : Grenwich observatory and back&lt;br /&gt;
* ~ 23 km : Elmers - Shirley - WWickham - Beckenham J with BP Park loop&lt;br /&gt;
* ~ 29.3 km : To SB, Grenwich observatory and back&lt;br /&gt;
* ~ 31.5 km : Elmers - Shirley - WWickham - Beckenham (and repeat with shortcut)&lt;br /&gt;
&lt;br /&gt;
S/C Excercises:&lt;br /&gt;
* Calf Raise&lt;br /&gt;
* Bench Lunge&lt;br /&gt;
* Plank&lt;br /&gt;
* Side Plank&lt;br /&gt;
* Toe Walk&lt;br /&gt;
* Heel Walk&lt;br /&gt;
&lt;br /&gt;
Form:&lt;br /&gt;
* Check, especially when tired&lt;br /&gt;
* Stop flapping arms about&lt;br /&gt;
* Don&#039;t slouch forward&lt;br /&gt;
&lt;br /&gt;
== Shoes ==&lt;br /&gt;
&lt;br /&gt;
Current:&lt;br /&gt;
* ASICS Metaspeed Sky+ (204 g) [2023-12]: Important Races: Half/Marathon. Carbon Plate.&lt;br /&gt;
* ASICS Novablast 5 (260 g) [2025-01]: Everyday, Easy, Parkrun.&lt;br /&gt;
* ASICS Nimbus 27 (300 g) [2025-04]: Extra cushioned, long runs.&lt;br /&gt;
* New Balance FuelCell SuperComp Pacer V2 (209 g) [2025-05]: Important Races: 5k/10k. Carbon Plate.&lt;br /&gt;
** Half size up, but still too tight for long runs.&lt;br /&gt;
* ASICS Gel Pulse 15 (260 g) [2025-09]: Walking, light runs.&lt;br /&gt;
* ASICS SuperBlast 2 (250 g) [2026-01]: Tempo, Track, more cushioned for Half/Marathon.&lt;br /&gt;
* Scott Supertrac RC 2 Trail (270 g) [2026-01]: Cross-Country.&lt;br /&gt;
** 1 size up&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
* ASICS Metaspeed Sky/Edge Tokyo (188 g, £240): Races/speed&lt;br /&gt;
* ASICS MegaBlast (230g, £210): Fast non-plate&lt;br /&gt;
* ASICS Metaspeed Ride (282 g, £180)&lt;br /&gt;
* ASICS Sonicblast Tokyo (256 g, *£170): Plate version of novablast? Tempo?&lt;br /&gt;
* ASICS Magic Speed 4 (242 g, £160 - 15%): Plate, tempo/speed work.&lt;br /&gt;
* ASICS Novablast 5 (260 g, *£135)&lt;br /&gt;
* ASICS Trabuco 14 (* £140): Trail&lt;br /&gt;
* Li-Ning Eedian 6 Elite (~200 g): Races&lt;br /&gt;
* Li-Ning Eedian 6 Challenger (~200 g): Propulsion and stability&lt;br /&gt;
&lt;br /&gt;
Retired:&lt;br /&gt;
* ASICS NovaBlast 3 (252 g) [2023-07]: Tempo/Track/Parkrun&lt;br /&gt;
* Saucony Mens Ride 17 (282 g) [2024-03]: Easy Run, Daily&lt;br /&gt;
* ASICS Cumulus&lt;br /&gt;
* ASICS Nimbus 22&lt;br /&gt;
* ASICS Nimbus 24 [2023-07]&lt;br /&gt;
&lt;br /&gt;
== Research ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.researchgate.net/profile/Malcolm-Collins/publication/49674432_Increased_running_speed_and_previous_cramps_rather_than_dehydration_or_serum_sodium_changes_predict_exercise-associated_muscle_cramping_A_prospective_cohort_study_in_210_Ironman_triathletes/links/0a85e53c93b820db45000000/Increased-running-speed-and-previous-cramps-rather-than-dehydration-or-serum-sodium-changes-predict-exercise-associated-muscle-cramping-A-prospective-cohort-study-in-210-Ironman-triathletes.pdf Increased running speed and previous cramps rather than dehydration or serum sodium]&lt;br /&gt;
&lt;br /&gt;
== YouTube ==&lt;br /&gt;
&lt;br /&gt;
Runners:&lt;br /&gt;
* [https://www.youtube.com/@BenParkes Ben Parkes]&lt;br /&gt;
* [https://www.youtube.com/@thisisjogon Jog On]&lt;br /&gt;
* [https://www.youtube.com/@kofuzi Kofuzi]&lt;br /&gt;
* [https://www.youtube.com/@justalilbester Nick Bester]&lt;br /&gt;
* [https://www.youtube.com/@PhilyBowden Phily Bowden]&lt;br /&gt;
* [https://www.youtube.com/@RanToJapan Ran To Japan]&lt;br /&gt;
* [https://www.youtube.com/@runningchannel The Running Channel]&lt;br /&gt;
&lt;br /&gt;
Physio/Coach:&lt;br /&gt;
* [https://www.youtube.com/@SpringSnabbare Fredrik Zillén]&lt;br /&gt;
* [https://www.youtube.com/@NicklasRossnerPT Nick Rossner]&lt;br /&gt;
* [https://www.youtube.com/@runelitecoach Run Elite]&lt;br /&gt;
* [https://www.youtube.com/@TheRunExperience The Run Experience]&lt;br /&gt;
* [https://www.youtube.com/@SteveMagness Steve Magness]&lt;br /&gt;
&lt;br /&gt;
== Diet &amp;amp; Supplements ==&lt;br /&gt;
&lt;br /&gt;
* Eat at least 2 hours before a race&lt;br /&gt;
* Marathon/Half:&lt;br /&gt;
** Start taking carbs 20 mins after the start of a race&lt;br /&gt;
** At least 60 g / hour&lt;br /&gt;
** SiS GO Isotonic: 22 g carbs (general training)&lt;br /&gt;
** SiS Beta: 40 g carbs (important long races)&lt;br /&gt;
* Reduce oil intake which reduces nitric oxide&lt;br /&gt;
* Nitric oxide rich foods: rhubarb, celery, lettuce, beetroot, watermelon&lt;br /&gt;
* Sodium&lt;br /&gt;
** Suggested 300 - 600 mg/hr; up to 1 g/hr on very hot days.&lt;br /&gt;
** 2 tablets: 200 mg&lt;br /&gt;
* Caffeine&lt;br /&gt;
** 3 - 6 mg/kg -&amp;gt; ~ 400 mg (2 tablets)&lt;br /&gt;
** ~ 30 - 60 mins prior to race&lt;br /&gt;
** ~ 6 hours half life&lt;br /&gt;
* Turmeric&lt;br /&gt;
** Taken after exercise, can help with DOMS/recovery/anti-inflammatory&lt;br /&gt;
** Eat with black pepper or fat to aid absorption&lt;br /&gt;
* Creatine Monohydrate&lt;br /&gt;
** 5 - 10 g daily&lt;br /&gt;
* Magnesium Glycinate&lt;br /&gt;
** 3 g daily&lt;br /&gt;
* Collagen&lt;br /&gt;
** 10 - 15 g of hydrolyzed collagen peptides&lt;br /&gt;
** Collagen synthesis is dependent on Vitamin C&lt;br /&gt;
** 30 – 60 mins before strength training&lt;br /&gt;
** Do not take caffeine beforehand&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1759</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1759"/>
		<updated>2026-06-05T13:43:54Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Composite Video */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
** 3.3 V on data lines only&lt;br /&gt;
** Pin numbers differ from chip/programmatic pin numbers&lt;br /&gt;
** 3.3 V power lines: 150-200 mA max&lt;br /&gt;
** 5 V power lines: from the main PSU input (reserve 1 A for Pi itself)&lt;br /&gt;
** Data lines: 15 mA max per pin, 50 mA total from all pins&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
eg to enable I2C interface.&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
Will default to NTSC; in /boot/firmware/cmdline.txt, add this to the end for PAL 50i:&lt;br /&gt;
 video=Composite-1:720x576@50ie&lt;br /&gt;
&lt;br /&gt;
Alternatives include:&lt;br /&gt;
 * NTSC: 720x480@60ie&lt;br /&gt;
 * PAL60: 720x480@60ie&lt;br /&gt;
&lt;br /&gt;
This will show the Pi desktop. Stop it to allow direct access to the framebuffer /dev/fb0:&lt;br /&gt;
 systemctl stop lightdm&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
* 1 System Options -&amp;gt; S5 Boot / Auto Login -&amp;gt; B1 Console&lt;br /&gt;
&lt;br /&gt;
Can explicitly set the standard:&lt;br /&gt;
 video=Composite-1:720x576@50ie,tv_mode=PAL&lt;br /&gt;
&lt;br /&gt;
Alternatives:&lt;br /&gt;
* PAL / PAL-M / PAL-N&lt;br /&gt;
* NTSC / NTSC-J (Japan) / NTSC-443&lt;br /&gt;
* SECAM&lt;br /&gt;
&lt;br /&gt;
To avoid overscan on TVs, add padding:&lt;br /&gt;
 video=Composite-1:720x576@50ie,margin_left=40,margin_right=40,margin_top=30,margin_bottom=30&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== I2C Development ===&lt;br /&gt;
&lt;br /&gt;
Check devices:&lt;br /&gt;
 i2cdetect -y 1&lt;br /&gt;
&lt;br /&gt;
Get a byte (BME280/BMP280 chip ID register 0xD0)@&lt;br /&gt;
 i2cget -y 1 0x76 0xD0&lt;br /&gt;
&lt;br /&gt;
This returns 0x60 for BME280, 0x58 for BMP280) &lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libi2c-dev&lt;br /&gt;
 g++ i2c_prog.cpp -o i2c_prog -li2c&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Stress ===&lt;br /&gt;
&lt;br /&gt;
 apt install stress-ng&lt;br /&gt;
&lt;br /&gt;
Run memory test:&lt;br /&gt;
 stress-ng --vm 1 --vm-bytes 750M --timeout 120 --vm-keep --vm-method rand-sum&lt;br /&gt;
&lt;br /&gt;
CPU test:&lt;br /&gt;
 stress-ng --cpu 4 --cpu-method matrixprod --timeout 300&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure hybrid configuration, overruding default /etc/rpi/swap.conf in /etc/rpi/swap.conf.d/hybrid-swap.conf:&lt;br /&gt;
 [Main]&lt;br /&gt;
 Mechanism=zram+file&lt;br /&gt;
 &lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
 &lt;br /&gt;
 [File]&lt;br /&gt;
 FixedSizeMiB=1024&lt;br /&gt;
&lt;br /&gt;
Ensure systemd component is enabled and reboot:&lt;br /&gt;
 systemctl enable var-swap.swap&lt;br /&gt;
&lt;br /&gt;
There is no need to recreate/resize the /var/swap physical file, which is done at boot time if necessary. In this mode, file system swap will not be visible with swapon; instead it is owned by the zram kernel driver. Zram blocks are pushed to/from file as needed.&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1758</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1758"/>
		<updated>2026-06-04T20:03:43Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Composite Video */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
** 3.3 V on data lines only&lt;br /&gt;
** Pin numbers differ from chip/programmatic pin numbers&lt;br /&gt;
** 3.3 V power lines: 150-200 mA max&lt;br /&gt;
** 5 V power lines: from the main PSU input (reserve 1 A for Pi itself)&lt;br /&gt;
** Data lines: 15 mA max per pin, 50 mA total from all pins&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
eg to enable I2C interface.&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
Will default to NTSC; in /boot/firmware/cmdline.txt, add this to the end for PAL 50i:&lt;br /&gt;
 video=Composite-1:720x576@50ie&lt;br /&gt;
&lt;br /&gt;
This will show the Pi desktop. Stop it to allow direct access to the framebuffer /dev/fb0:&lt;br /&gt;
 systemctl stop lightdm&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
* 1 System Options -&amp;gt; S5 Boot / Auto Login -&amp;gt; B1 Console&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== I2C Development ===&lt;br /&gt;
&lt;br /&gt;
Check devices:&lt;br /&gt;
 i2cdetect -y 1&lt;br /&gt;
&lt;br /&gt;
Get a byte (BME280/BMP280 chip ID register 0xD0)@&lt;br /&gt;
 i2cget -y 1 0x76 0xD0&lt;br /&gt;
&lt;br /&gt;
This returns 0x60 for BME280, 0x58 for BMP280) &lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libi2c-dev&lt;br /&gt;
 g++ i2c_prog.cpp -o i2c_prog -li2c&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Stress ===&lt;br /&gt;
&lt;br /&gt;
 apt install stress-ng&lt;br /&gt;
&lt;br /&gt;
Run memory test:&lt;br /&gt;
 stress-ng --vm 1 --vm-bytes 750M --timeout 120 --vm-keep --vm-method rand-sum&lt;br /&gt;
&lt;br /&gt;
CPU test:&lt;br /&gt;
 stress-ng --cpu 4 --cpu-method matrixprod --timeout 300&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure hybrid configuration, overruding default /etc/rpi/swap.conf in /etc/rpi/swap.conf.d/hybrid-swap.conf:&lt;br /&gt;
 [Main]&lt;br /&gt;
 Mechanism=zram+file&lt;br /&gt;
 &lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
 &lt;br /&gt;
 [File]&lt;br /&gt;
 FixedSizeMiB=1024&lt;br /&gt;
&lt;br /&gt;
Ensure systemd component is enabled and reboot:&lt;br /&gt;
 systemctl enable var-swap.swap&lt;br /&gt;
&lt;br /&gt;
There is no need to recreate/resize the /var/swap physical file, which is done at boot time if necessary. In this mode, file system swap will not be visible with swapon; instead it is owned by the zram kernel driver. Zram blocks are pushed to/from file as needed.&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1757</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1757"/>
		<updated>2026-06-04T19:52:45Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Composite Video */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
** 3.3 V on data lines only&lt;br /&gt;
** Pin numbers differ from chip/programmatic pin numbers&lt;br /&gt;
** 3.3 V power lines: 150-200 mA max&lt;br /&gt;
** 5 V power lines: from the main PSU input (reserve 1 A for Pi itself)&lt;br /&gt;
** Data lines: 15 mA max per pin, 50 mA total from all pins&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
eg to enable I2C interface.&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
Will default to NTSC; in /boot/firmware/cmdline.txt, add this to the end for PAL 50i:&lt;br /&gt;
 video=Composite-1:720x576@50ie&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== I2C Development ===&lt;br /&gt;
&lt;br /&gt;
Check devices:&lt;br /&gt;
 i2cdetect -y 1&lt;br /&gt;
&lt;br /&gt;
Get a byte (BME280/BMP280 chip ID register 0xD0)@&lt;br /&gt;
 i2cget -y 1 0x76 0xD0&lt;br /&gt;
&lt;br /&gt;
This returns 0x60 for BME280, 0x58 for BMP280) &lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libi2c-dev&lt;br /&gt;
 g++ i2c_prog.cpp -o i2c_prog -li2c&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Stress ===&lt;br /&gt;
&lt;br /&gt;
 apt install stress-ng&lt;br /&gt;
&lt;br /&gt;
Run memory test:&lt;br /&gt;
 stress-ng --vm 1 --vm-bytes 750M --timeout 120 --vm-keep --vm-method rand-sum&lt;br /&gt;
&lt;br /&gt;
CPU test:&lt;br /&gt;
 stress-ng --cpu 4 --cpu-method matrixprod --timeout 300&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure hybrid configuration, overruding default /etc/rpi/swap.conf in /etc/rpi/swap.conf.d/hybrid-swap.conf:&lt;br /&gt;
 [Main]&lt;br /&gt;
 Mechanism=zram+file&lt;br /&gt;
 &lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
 &lt;br /&gt;
 [File]&lt;br /&gt;
 FixedSizeMiB=1024&lt;br /&gt;
&lt;br /&gt;
Ensure systemd component is enabled and reboot:&lt;br /&gt;
 systemctl enable var-swap.swap&lt;br /&gt;
&lt;br /&gt;
There is no need to recreate/resize the /var/swap physical file, which is done at boot time if necessary. In this mode, file system swap will not be visible with swapon; instead it is owned by the zram kernel driver. Zram blocks are pushed to/from file as needed.&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1756</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1756"/>
		<updated>2026-06-02T15:03:40Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Stress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
** 3.3 V on data lines only&lt;br /&gt;
** Pin numbers differ from chip/programmatic pin numbers&lt;br /&gt;
** 3.3 V power lines: 150-200 mA max&lt;br /&gt;
** 5 V power lines: from the main PSU input (reserve 1 A for Pi itself)&lt;br /&gt;
** Data lines: 15 mA max per pin, 50 mA total from all pins&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
eg to enable I2C interface.&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== I2C Development ===&lt;br /&gt;
&lt;br /&gt;
Check devices:&lt;br /&gt;
 i2cdetect -y 1&lt;br /&gt;
&lt;br /&gt;
Get a byte (BME280/BMP280 chip ID register 0xD0)@&lt;br /&gt;
 i2cget -y 1 0x76 0xD0&lt;br /&gt;
&lt;br /&gt;
This returns 0x60 for BME280, 0x58 for BMP280) &lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libi2c-dev&lt;br /&gt;
 g++ i2c_prog.cpp -o i2c_prog -li2c&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Stress ===&lt;br /&gt;
&lt;br /&gt;
 apt install stress-ng&lt;br /&gt;
&lt;br /&gt;
Run memory test:&lt;br /&gt;
 stress-ng --vm 1 --vm-bytes 750M --timeout 120 --vm-keep --vm-method rand-sum&lt;br /&gt;
&lt;br /&gt;
CPU test:&lt;br /&gt;
 stress-ng --cpu 4 --cpu-method matrixprod --timeout 300&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure hybrid configuration, overruding default /etc/rpi/swap.conf in /etc/rpi/swap.conf.d/hybrid-swap.conf:&lt;br /&gt;
 [Main]&lt;br /&gt;
 Mechanism=zram+file&lt;br /&gt;
 &lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
 &lt;br /&gt;
 [File]&lt;br /&gt;
 FixedSizeMiB=1024&lt;br /&gt;
&lt;br /&gt;
Ensure systemd component is enabled and reboot:&lt;br /&gt;
 systemctl enable var-swap.swap&lt;br /&gt;
&lt;br /&gt;
There is no need to recreate/resize the /var/swap physical file, which is done at boot time if necessary. In this mode, file system swap will not be visible with swapon; instead it is owned by the zram kernel driver. Zram blocks are pushed to/from file as needed.&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1755</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1755"/>
		<updated>2026-06-02T14:46:03Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* I2C Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
** 3.3 V on data lines only&lt;br /&gt;
** Pin numbers differ from chip/programmatic pin numbers&lt;br /&gt;
** 3.3 V power lines: 150-200 mA max&lt;br /&gt;
** 5 V power lines: from the main PSU input (reserve 1 A for Pi itself)&lt;br /&gt;
** Data lines: 15 mA max per pin, 50 mA total from all pins&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
eg to enable I2C interface.&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== I2C Development ===&lt;br /&gt;
&lt;br /&gt;
Check devices:&lt;br /&gt;
 i2cdetect -y 1&lt;br /&gt;
&lt;br /&gt;
Get a byte (BME280/BMP280 chip ID register 0xD0)@&lt;br /&gt;
 i2cget -y 1 0x76 0xD0&lt;br /&gt;
&lt;br /&gt;
This returns 0x60 for BME280, 0x58 for BMP280) &lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libi2c-dev&lt;br /&gt;
 g++ i2c_prog.cpp -o i2c_prog -li2c&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Stress ===&lt;br /&gt;
&lt;br /&gt;
 apt install stress-ng&lt;br /&gt;
&lt;br /&gt;
Run memory test:&lt;br /&gt;
 stress-ng --vm 1 --vm-bytes 750M --timeout 120s --vm-keep --vm-method rand-sum&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure hybrid configuration, overruding default /etc/rpi/swap.conf in /etc/rpi/swap.conf.d/hybrid-swap.conf:&lt;br /&gt;
 [Main]&lt;br /&gt;
 Mechanism=zram+file&lt;br /&gt;
 &lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
 &lt;br /&gt;
 [File]&lt;br /&gt;
 FixedSizeMiB=1024&lt;br /&gt;
&lt;br /&gt;
Ensure systemd component is enabled and reboot:&lt;br /&gt;
 systemctl enable var-swap.swap&lt;br /&gt;
&lt;br /&gt;
There is no need to recreate/resize the /var/swap physical file, which is done at boot time if necessary. In this mode, file system swap will not be visible with swapon; instead it is owned by the zram kernel driver. Zram blocks are pushed to/from file as needed.&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1754</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1754"/>
		<updated>2026-06-02T13:30:32Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
** 3.3 V on data lines only&lt;br /&gt;
** Pin numbers differ from chip/programmatic pin numbers&lt;br /&gt;
** 3.3 V power lines: 150-200 mA max&lt;br /&gt;
** 5 V power lines: from the main PSU input (reserve 1 A for Pi itself)&lt;br /&gt;
** Data lines: 15 mA max per pin, 50 mA total from all pins&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
eg to enable I2C interface.&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== I2C Development ===&lt;br /&gt;
&lt;br /&gt;
Check devices:&lt;br /&gt;
 i2cdetect -y 1&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libi2c-dev&lt;br /&gt;
 g++ i2c_prog.cpp -o i2c_prog -li2c&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Stress ===&lt;br /&gt;
&lt;br /&gt;
 apt install stress-ng&lt;br /&gt;
&lt;br /&gt;
Run memory test:&lt;br /&gt;
 stress-ng --vm 1 --vm-bytes 750M --timeout 120s --vm-keep --vm-method rand-sum&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure hybrid configuration, overruding default /etc/rpi/swap.conf in /etc/rpi/swap.conf.d/hybrid-swap.conf:&lt;br /&gt;
 [Main]&lt;br /&gt;
 Mechanism=zram+file&lt;br /&gt;
 &lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
 &lt;br /&gt;
 [File]&lt;br /&gt;
 FixedSizeMiB=1024&lt;br /&gt;
&lt;br /&gt;
Ensure systemd component is enabled and reboot:&lt;br /&gt;
 systemctl enable var-swap.swap&lt;br /&gt;
&lt;br /&gt;
There is no need to recreate/resize the /var/swap physical file, which is done at boot time if necessary. In this mode, file system swap will not be visible with swapon; instead it is owned by the zram kernel driver. Zram blocks are pushed to/from file as needed.&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1753</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1753"/>
		<updated>2026-06-02T07:29:44Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* I2C Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
** 3.3V only&lt;br /&gt;
** Pin numbers differ from chip/programmatic pin numbers&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
eg to enable I2C interface.&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== I2C Development ===&lt;br /&gt;
&lt;br /&gt;
Check devices:&lt;br /&gt;
 i2cdetect -y 1&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libi2c-dev&lt;br /&gt;
 g++ i2c_prog.cpp -o i2c_prog -li2c&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Stress ===&lt;br /&gt;
&lt;br /&gt;
 apt install stress-ng&lt;br /&gt;
&lt;br /&gt;
Run memory test:&lt;br /&gt;
 stress-ng --vm 1 --vm-bytes 750M --timeout 120s --vm-keep --vm-method rand-sum&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure hybrid configuration, overruding default /etc/rpi/swap.conf in /etc/rpi/swap.conf.d/hybrid-swap.conf:&lt;br /&gt;
 [Main]&lt;br /&gt;
 Mechanism=zram+file&lt;br /&gt;
 &lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
 &lt;br /&gt;
 [File]&lt;br /&gt;
 FixedSizeMiB=1024&lt;br /&gt;
&lt;br /&gt;
Ensure systemd component is enabled and reboot:&lt;br /&gt;
 systemctl enable var-swap.swap&lt;br /&gt;
&lt;br /&gt;
There is no need to recreate/resize the /var/swap physical file, which is done at boot time if necessary. In this mode, file system swap will not be visible with swapon; instead it is owned by the zram kernel driver. Zram blocks are pushed to/from file as needed.&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1752</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1752"/>
		<updated>2026-06-01T21:22:05Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* I2C Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
** 3.3V only&lt;br /&gt;
** Pin numbers differ from chip/programmatic pin numbers&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
eg to enable I2C interface.&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== I2C Development ===&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libi2c-dev&lt;br /&gt;
 g++ i2c_prog.cpp -o i2c_prog -li2c&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Stress ===&lt;br /&gt;
&lt;br /&gt;
 apt install stress-ng&lt;br /&gt;
&lt;br /&gt;
Run memory test:&lt;br /&gt;
 stress-ng --vm 1 --vm-bytes 750M --timeout 120s --vm-keep --vm-method rand-sum&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure hybrid configuration, overruding default /etc/rpi/swap.conf in /etc/rpi/swap.conf.d/hybrid-swap.conf:&lt;br /&gt;
 [Main]&lt;br /&gt;
 Mechanism=zram+file&lt;br /&gt;
 &lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
 &lt;br /&gt;
 [File]&lt;br /&gt;
 FixedSizeMiB=1024&lt;br /&gt;
&lt;br /&gt;
Ensure systemd component is enabled and reboot:&lt;br /&gt;
 systemctl enable var-swap.swap&lt;br /&gt;
&lt;br /&gt;
There is no need to recreate/resize the /var/swap physical file, which is done at boot time if necessary. In this mode, file system swap will not be visible with swapon; instead it is owned by the zram kernel driver. Zram blocks are pushed to/from file as needed.&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1751</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1751"/>
		<updated>2026-06-01T21:21:13Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* GPIO Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
** 3.3V only&lt;br /&gt;
** Pin numbers differ from chip/programmatic pin numbers&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
eg to enable I2C interface.&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== I2C Development ===&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libi2c-dev&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Stress ===&lt;br /&gt;
&lt;br /&gt;
 apt install stress-ng&lt;br /&gt;
&lt;br /&gt;
Run memory test:&lt;br /&gt;
 stress-ng --vm 1 --vm-bytes 750M --timeout 120s --vm-keep --vm-method rand-sum&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure hybrid configuration, overruding default /etc/rpi/swap.conf in /etc/rpi/swap.conf.d/hybrid-swap.conf:&lt;br /&gt;
 [Main]&lt;br /&gt;
 Mechanism=zram+file&lt;br /&gt;
 &lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
 &lt;br /&gt;
 [File]&lt;br /&gt;
 FixedSizeMiB=1024&lt;br /&gt;
&lt;br /&gt;
Ensure systemd component is enabled and reboot:&lt;br /&gt;
 systemctl enable var-swap.swap&lt;br /&gt;
&lt;br /&gt;
There is no need to recreate/resize the /var/swap physical file, which is done at boot time if necessary. In this mode, file system swap will not be visible with swapon; instead it is owned by the zram kernel driver. Zram blocks are pushed to/from file as needed.&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1750</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1750"/>
		<updated>2026-06-01T21:00:18Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
** 3.3V only&lt;br /&gt;
** Pin numbers differ from chip/programmatic pin numbers&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
eg to enable I2C interface.&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Stress ===&lt;br /&gt;
&lt;br /&gt;
 apt install stress-ng&lt;br /&gt;
&lt;br /&gt;
Run memory test:&lt;br /&gt;
 stress-ng --vm 1 --vm-bytes 750M --timeout 120s --vm-keep --vm-method rand-sum&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure hybrid configuration, overruding default /etc/rpi/swap.conf in /etc/rpi/swap.conf.d/hybrid-swap.conf:&lt;br /&gt;
 [Main]&lt;br /&gt;
 Mechanism=zram+file&lt;br /&gt;
 &lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
 &lt;br /&gt;
 [File]&lt;br /&gt;
 FixedSizeMiB=1024&lt;br /&gt;
&lt;br /&gt;
Ensure systemd component is enabled and reboot:&lt;br /&gt;
 systemctl enable var-swap.swap&lt;br /&gt;
&lt;br /&gt;
There is no need to recreate/resize the /var/swap physical file, which is done at boot time if necessary. In this mode, file system swap will not be visible with swapon; instead it is owned by the zram kernel driver. Zram blocks are pushed to/from file as needed.&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1749</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1749"/>
		<updated>2026-06-01T17:34:51Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
** 3.3V only&lt;br /&gt;
** Pin numbers differ from chip/programmatic pin numbers&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Stress ===&lt;br /&gt;
&lt;br /&gt;
 apt install stress-ng&lt;br /&gt;
&lt;br /&gt;
Run memory test:&lt;br /&gt;
 stress-ng --vm 1 --vm-bytes 750M --timeout 120s --vm-keep --vm-method rand-sum&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure hybrid configuration, overruding default /etc/rpi/swap.conf in /etc/rpi/swap.conf.d/hybrid-swap.conf:&lt;br /&gt;
 [Main]&lt;br /&gt;
 Mechanism=zram+file&lt;br /&gt;
 &lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
 &lt;br /&gt;
 [File]&lt;br /&gt;
 FixedSizeMiB=1024&lt;br /&gt;
&lt;br /&gt;
Ensure systemd component is enabled and reboot:&lt;br /&gt;
 systemctl enable var-swap.swap&lt;br /&gt;
&lt;br /&gt;
There is no need to recreate/resize the /var/swap physical file, which is done at boot time if necessary. In this mode, file system swap will not be visible with swapon; instead it is owned by the zram kernel driver. Zram blocks are pushed to/from file as needed.&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1748</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1748"/>
		<updated>2026-05-31T16:48:08Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* SSH */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
** 3.3V only&lt;br /&gt;
** Pin numbers differ from chip/programmatic pin numbers&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file nano /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Stress ===&lt;br /&gt;
&lt;br /&gt;
 apt install stress-ng&lt;br /&gt;
&lt;br /&gt;
Run memory test:&lt;br /&gt;
 stress-ng --vm 1 --vm-bytes 750M --timeout 120s --vm-keep --vm-method rand-sum&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure hybrid configuration, overruding default /etc/rpi/swap.conf in /etc/rpi/swap.conf.d/hybrid-swap.conf:&lt;br /&gt;
 [Main]&lt;br /&gt;
 Mechanism=zram+file&lt;br /&gt;
 &lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
 &lt;br /&gt;
 [File]&lt;br /&gt;
 FixedSizeMiB=1024&lt;br /&gt;
&lt;br /&gt;
Ensure systemd component is enabled and reboot:&lt;br /&gt;
 systemctl enable var-swap.swap&lt;br /&gt;
&lt;br /&gt;
There is no need to recreate/resize the /var/swap physical file, which is done at boot time if necessary. In this mode, file system swap will not be visible with swapon; instead it is owned by the zram kernel driver. Zram blocks are pushed to/from file as needed.&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1747</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1747"/>
		<updated>2026-05-31T16:39:12Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Swap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
** 3.3V only&lt;br /&gt;
** Pin numbers differ from chip/programmatic pin numbers&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file nano /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure hybrid configuration, overruding default /etc/rpi/swap.conf in /etc/rpi/swap.conf.d/hybrid-swap.conf:&lt;br /&gt;
 [Main]&lt;br /&gt;
 Mechanism=zram+file&lt;br /&gt;
 &lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
 &lt;br /&gt;
 [File]&lt;br /&gt;
 FixedSizeMiB=1024&lt;br /&gt;
&lt;br /&gt;
Ensure systemd component is enabled and reboot:&lt;br /&gt;
 systemctl enable var-swap.swap&lt;br /&gt;
&lt;br /&gt;
There is no need to recreate/resize the /var/swap physical file, which is done at boot time if necessary. In this mode, file system swap will not be visible with swapon; instead it is owned by the zram kernel driver. Zram blocks are pushed to/from file as needed.&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1746</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1746"/>
		<updated>2026-05-31T15:39:10Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Device */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
** 3.3V only&lt;br /&gt;
** Pin numbers differ from chip/programmatic pin numbers&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file nano /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure in /etc/rpi/swap.conf&lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/var/swap bs=1M count=1024&lt;br /&gt;
 chmod 600 /var/swap&lt;br /&gt;
 mkswap /var/swap&lt;br /&gt;
 swapon /var/swap&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /var/swap none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1745</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1745"/>
		<updated>2026-05-30T20:32:40Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file nano /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
Reload systemd, &lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl enable --now temp-logger.timer&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure in /etc/rpi/swap.conf&lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/var/swap bs=1M count=1024&lt;br /&gt;
 chmod 600 /var/swap&lt;br /&gt;
 mkswap /var/swap&lt;br /&gt;
 swapon /var/swap&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /var/swap none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1744</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1744"/>
		<updated>2026-05-30T20:29:01Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* NTP Client */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
Create a service file nano /etc/systemd/system/temp-logger.service:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=CPU Temperature Logger to HTML&lt;br /&gt;
 After=network.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 ExecStart=/usr/local/bin/temp_logger.sh&lt;br /&gt;
 # Run as root or www-data depending on who owns your /var/www/html directory&lt;br /&gt;
 User=root&lt;br /&gt;
&lt;br /&gt;
Create a systemd timer /etc/systemd/system/temp-logger.timer:&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Run Pi Temperature Logger every 5 minutes&lt;br /&gt;
 &lt;br /&gt;
 [Timer]&lt;br /&gt;
 # Run 5 minutes after boot-up&lt;br /&gt;
 OnBootSec=5min&lt;br /&gt;
 # Run every 5 minutes relative to when the timer was started&lt;br /&gt;
 OnUnitActiveSec=5min&lt;br /&gt;
 # Ensures precision alignment to the clock wall if desired (optional)&lt;br /&gt;
 AccuracySec=1s&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=timers.target&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure in /etc/rpi/swap.conf&lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/var/swap bs=1M count=1024&lt;br /&gt;
 chmod 600 /var/swap&lt;br /&gt;
 mkswap /var/swap&lt;br /&gt;
 swapon /var/swap&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /var/swap none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1743</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1743"/>
		<updated>2026-05-30T20:12:32Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Swap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== SSH ===&lt;br /&gt;
&lt;br /&gt;
Copy key (and generate ~/.ssh) from client tp pi:&lt;br /&gt;
 ssh-copy-id username@raspi.example.com&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure in /etc/rpi/swap.conf&lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/var/swap bs=1M count=1024&lt;br /&gt;
 chmod 600 /var/swap&lt;br /&gt;
 mkswap /var/swap&lt;br /&gt;
 swapon /var/swap&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /var/swap none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1742</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1742"/>
		<updated>2026-05-30T06:17:15Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Rasbery Pi OS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt list --upgradeable&lt;br /&gt;
 apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure in /etc/rpi/swap.conf&lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/var/swap bs=1M count=1024&lt;br /&gt;
 chmod 600 /var/swap&lt;br /&gt;
 mkswap /var/swap&lt;br /&gt;
 swapon /var/swap&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /var/swap none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1741</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1741"/>
		<updated>2026-05-28T20:27:58Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Swap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure in /etc/rpi/swap.conf&lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/var/swap bs=1M count=1024&lt;br /&gt;
 chmod 600 /var/swap&lt;br /&gt;
 mkswap /var/swap&lt;br /&gt;
 swapon /var/swap&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /var/swap none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1740</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1740"/>
		<updated>2026-05-28T20:13:37Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Swap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
&lt;br /&gt;
Configure in /etc/rpi/swap.conf&lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
&lt;br /&gt;
dd filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1739</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1739"/>
		<updated>2026-05-28T20:13:27Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Swap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
Configure in /etc/rpi/swap.conf&lt;br /&gt;
 [Zram]&lt;br /&gt;
 FixedSizeMiB=512&lt;br /&gt;
&lt;br /&gt;
dd filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1738</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1738"/>
		<updated>2026-05-28T08:47:39Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* GPIO Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod -y&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1737</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1737"/>
		<updated>2026-05-28T08:47:11Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* GPIO Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation].&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-dev -y&lt;br /&gt;
&lt;br /&gt;
for python gpiod bindings. See [https://pypi.org/project/gpiod/ documentation]. &lt;br /&gt;
&lt;br /&gt;
Or the abstraction:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1736</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1736"/>
		<updated>2026-05-28T08:14:22Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* GPIO Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip0).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
See [https://libgpiod.readthedocs.io/en/master/ documentation]&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1735</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1735"/>
		<updated>2026-05-28T08:06:50Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Go Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
Or install ARMv6 release:&lt;br /&gt;
 wget https://go.dev/dl/go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
 tar -C /usr/local -xzf go1.26.3.linux-armv6l.tar.gz&lt;br /&gt;
&lt;br /&gt;
Set environment variables:&lt;br /&gt;
 PATH=$PATH:/usr/local/go/bin&lt;br /&gt;
 GOPATH=$HOME/go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1734</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1734"/>
		<updated>2026-05-27T20:24:18Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* GPIO Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip).&lt;br /&gt;
&lt;br /&gt;
In C++:&lt;br /&gt;
 apt install libgpiod-dev gpiod&lt;br /&gt;
 g++ -O3 prog.cpp -o prog -lgpiodcxx&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1733</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1733"/>
		<updated>2026-05-27T17:10:45Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* NFS Automounter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip).&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
To allow remove mounts to be accessed under /net/&amp;lt;server&amp;gt;/&amp;lt;export&amp;gt;, edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1732</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1732"/>
		<updated>2026-05-27T17:10:13Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* NFS Automounter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip).&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remote mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1731</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1731"/>
		<updated>2026-05-27T17:09:39Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* NFS Automounter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip).&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
To mount remove mail directory:&lt;br /&gt;
&lt;br /&gt;
Create the new /etc/auto.master.d/mail.autofs file:&lt;br /&gt;
 /-    /etc/auto.direct    --timeout=60&lt;br /&gt;
&lt;br /&gt;
Create the /etc/auto.direct file:&lt;br /&gt;
 /var/mail    -fstype=nfs,rw,soft,intr,tcp,rsize=8192,wsize=8192    mailhost:/var/spool/mail&lt;br /&gt;
&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1730</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1730"/>
		<updated>2026-05-27T17:07:43Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Mail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip).&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Or use automounter (see other section). Note: UID/GID must match.&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1729</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1729"/>
		<updated>2026-05-27T16:33:14Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Device */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip).&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1728</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1728"/>
		<updated>2026-05-27T16:28:00Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
Hardware info:&lt;br /&gt;
* AV Connector:&lt;br /&gt;
** 1 (tip): L Audio&lt;br /&gt;
** 2: R Audio&lt;br /&gt;
** 3: Ground&lt;br /&gt;
** Sleeve: Composite Video.&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio GPIO Header]&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html Boards]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip).&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1727</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1727"/>
		<updated>2026-05-27T15:59:49Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Mail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
AV Connector:&lt;br /&gt;
* 1 (tip): L Audio&lt;br /&gt;
* 2: R Audio&lt;br /&gt;
* 3: Ground&lt;br /&gt;
* Sleeve: Composite Video.&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header GPIO]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip).&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mount mail directory from server:&lt;br /&gt;
 mailhost:/var/spool/mail    /var/mail    nfs    rw,nofail,noatime,_netdev,soft,intr    0    0&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1726</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1726"/>
		<updated>2026-05-27T15:25:14Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* GPIO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
AV Connector:&lt;br /&gt;
* 1 (tip): L Audio&lt;br /&gt;
* 2: R Audio&lt;br /&gt;
* 3: Ground&lt;br /&gt;
* Sleeve: Composite Video.&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header GPIO]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== GPIO Development ===&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS use the newer gpiod subsystem (which interacts with /dev/gpiochip).&lt;br /&gt;
&lt;br /&gt;
In Python, use:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
In Go, use: periph.io&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mail spool directory (eg NFS mount from server):&lt;br /&gt;
 /var/mail&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1725</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1725"/>
		<updated>2026-05-27T15:23:36Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Device */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
AV Connector:&lt;br /&gt;
* 1 (tip): L Audio&lt;br /&gt;
* 2: R Audio&lt;br /&gt;
* 3: Ground&lt;br /&gt;
* Sleeve: Composite Video.&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header GPIO]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS versions use the newer gpiod subsystem (which interacts with /dev/gpiochip)&lt;br /&gt;
&lt;br /&gt;
python:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
go: periph.io&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mail spool directory (eg NFS mount from server):&lt;br /&gt;
 /var/mail&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1724</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1724"/>
		<updated>2026-05-27T15:23:20Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Device */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
AV Connector:&lt;br /&gt;
* 1 (tip): L Audio&lt;br /&gt;
* 2: R Audio&lt;br /&gt;
* 3L Ground&lt;br /&gt;
* Sleve: Composite Video.&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header GPIO]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS versions use the newer gpiod subsystem (which interacts with /dev/gpiochip)&lt;br /&gt;
&lt;br /&gt;
python:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
go: periph.io&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mail spool directory (eg NFS mount from server):&lt;br /&gt;
 /var/mail&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1723</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1723"/>
		<updated>2026-05-27T15:21:30Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Composite Video */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header GPIO]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS versions use the newer gpiod subsystem (which interacts with /dev/gpiochip)&lt;br /&gt;
&lt;br /&gt;
python:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
go: periph.io&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mail spool directory (eg NFS mount from server):&lt;br /&gt;
 /var/mail&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1722</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1722"/>
		<updated>2026-05-27T15:20:25Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Mail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header GPIO]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS versions use the newer gpiod subsystem (which interacts with /dev/gpiochip)&lt;br /&gt;
&lt;br /&gt;
python:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
go: periph.io&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
Note: CVBS is on sleve; Gnd is ring 3. It is enabled when no HDMI monitor is connected.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mail spool directory (eg NFS mount from server):&lt;br /&gt;
 /var/mail&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 tail -f /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1721</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1721"/>
		<updated>2026-05-27T15:19:54Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Apache Web Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header GPIO]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS versions use the newer gpiod subsystem (which interacts with /dev/gpiochip)&lt;br /&gt;
&lt;br /&gt;
python:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
go: periph.io&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2 -y&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
Note: CVBS is on sleve; Gnd is ring 3. It is enabled when no HDMI monitor is connected.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mail spool directory (eg NFS mount from server):&lt;br /&gt;
 /var/mail&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1720</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1720"/>
		<updated>2026-05-27T15:19:40Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Apache Web Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header GPIO]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS versions use the newer gpiod subsystem (which interacts with /dev/gpiochip)&lt;br /&gt;
&lt;br /&gt;
python:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
go: periph.io&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2 -y&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
Note: CVBS is on sleve; Gnd is ring 3. It is enabled when no HDMI monitor is connected.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mail spool directory (eg NFS mount from server):&lt;br /&gt;
 /var/mail&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1719</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1719"/>
		<updated>2026-05-27T15:15:39Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Temperature */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header GPIO]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS versions use the newer gpiod subsystem (which interacts with /dev/gpiochip)&lt;br /&gt;
&lt;br /&gt;
python:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
go: periph.io&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
Note: CVBS is on sleve; Gnd is ring 3. It is enabled when no HDMI monitor is connected.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mail spool directory (eg NFS mount from server):&lt;br /&gt;
 /var/mail&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1718</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1718"/>
		<updated>2026-05-27T15:15:26Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Swap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header GPIO]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS versions use the newer gpiod subsystem (which interacts with /dev/gpiochip)&lt;br /&gt;
&lt;br /&gt;
python:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
go: periph.io&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
Note: CVBS is on sleve; Gnd is ring 3. It is enabled when no HDMI monitor is connected.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mail spool directory (eg NFS mount from server):&lt;br /&gt;
 /var/mail&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1717</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1717"/>
		<updated>2026-05-27T15:14:55Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Mail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header GPIO]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS versions use the newer gpiod subsystem (which interacts with /dev/gpiochip)&lt;br /&gt;
&lt;br /&gt;
python:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
go: periph.io&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
Note: CVBS is on sleve; Gnd is ring 3. It is enabled when no HDMI monitor is connected.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Go Development ===&lt;br /&gt;
&lt;br /&gt;
Because of limited RAM, best to cross compile on a more powerful system:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mail spool directory (eg NFS mount from server):&lt;br /&gt;
 /var/mail&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1716</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1716"/>
		<updated>2026-05-27T15:13:59Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Go */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header GPIO]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS versions use the newer gpiod subsystem (which interacts with /dev/gpiochip)&lt;br /&gt;
&lt;br /&gt;
python:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
go: periph.io&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
Note: CVBS is on sleve; Gnd is ring 3. It is enabled when no HDMI monitor is connected.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mail spool directory (eg NFS mount from server):&lt;br /&gt;
 /var/mail&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
	<entry>
		<id>https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1715</id>
		<title>Rasberry Pi</title>
		<link rel="alternate" type="text/html" href="https://www.smithnet.org.uk/wiki/index.php?title=Rasberry_Pi&amp;diff=1715"/>
		<updated>2026-05-27T15:13:25Z</updated>

		<summary type="html">&lt;p&gt;NickPGSmith: /* Rasbery Pi OS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Device ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-3-model-b Rasberry Pi 3B] (&amp;quot;Rev 1.2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 cat /proc/device-tree/model&lt;br /&gt;
&lt;br /&gt;
* [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header GPIO]&lt;br /&gt;
&lt;br /&gt;
== Rasbery Pi OS ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.raspberrypi.com/documentation/computers/config_txt.html  /boot/firmware/config.txt].&lt;br /&gt;
&lt;br /&gt;
Command line configuration program:&lt;br /&gt;
 raspi-config&lt;br /&gt;
&lt;br /&gt;
Upgrade:&lt;br /&gt;
 apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
=== Go ===&lt;br /&gt;
&lt;br /&gt;
Cross compile on amd64:&lt;br /&gt;
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build myprog.go&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi OS versions use the newer gpiod subsystem (which interacts with /dev/gpiochip)&lt;br /&gt;
&lt;br /&gt;
python:&lt;br /&gt;
 apt install python3-gpiozero -y&lt;br /&gt;
&lt;br /&gt;
go: periph.io&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Apache Web Server ===&lt;br /&gt;
&lt;br /&gt;
 apt install apache2&lt;br /&gt;
&lt;br /&gt;
* Configuration: /etc/apache2&lt;br /&gt;
* Serve from: /var/www/html&lt;br /&gt;
&lt;br /&gt;
=== Composite Video ===&lt;br /&gt;
&lt;br /&gt;
Note: CVBS is on sleve; Gnd is ring 3. It is enabled when no HDMI monitor is connected.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/config.txt:&lt;br /&gt;
 enable_tvout=1&lt;br /&gt;
 dtoverlay=vc4-kms-v3d,composite&lt;br /&gt;
&lt;br /&gt;
Ensure hdmi_force_hotplug=1 is commented out or set to 0.&lt;br /&gt;
&lt;br /&gt;
In /boot/firmware/cmdline.txt, either:&lt;br /&gt;
 vc4.tv_norm=PAL&lt;br /&gt;
 vc4.tv_norm=NTSC&lt;br /&gt;
&lt;br /&gt;
To control overscan, see settings:&lt;br /&gt;
 margin_left&lt;br /&gt;
 margin_right&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
&lt;br /&gt;
MUA:&lt;br /&gt;
 apt install bsd-mailx&lt;br /&gt;
 apt install mutt&lt;br /&gt;
&lt;br /&gt;
Mail spool directory (eg NFS mount from server):&lt;br /&gt;
 /var/mail&lt;br /&gt;
&lt;br /&gt;
Exim is the default MTA:&lt;br /&gt;
 dpkg-reconfigure exim4-config&lt;br /&gt;
 update-exim4.conf&lt;br /&gt;
 systemctl restart exim4&lt;br /&gt;
&lt;br /&gt;
Monitor logs:&lt;br /&gt;
 /var/log/exim4/mainlog&lt;br /&gt;
&lt;br /&gt;
=== Swap ===&lt;br /&gt;
 free -m&lt;br /&gt;
 swapon --show&lt;br /&gt;
&lt;br /&gt;
Add filesystem swap:&lt;br /&gt;
 swapoff -a&lt;br /&gt;
 dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;br /&gt;
 chmod 600 /swapfile&lt;br /&gt;
 mkswap /swapfile&lt;br /&gt;
 swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
Add to /etc/fstab:&lt;br /&gt;
 /swapfile none swap sw 0 0&lt;br /&gt;
&lt;br /&gt;
To see current zram configuration:&lt;br /&gt;
 zramctl &lt;br /&gt;
 zramctl --output-all /dev/zram0&lt;br /&gt;
 &lt;br /&gt;
To resize:&lt;br /&gt;
 swapoff /dev/zram0&lt;br /&gt;
 zramctl --reset /dev/zram0&lt;br /&gt;
 zramctl --find --size 512M&lt;br /&gt;
 mkswap /dev/zram0&lt;br /&gt;
 swapon /dev/zram0&lt;br /&gt;
&lt;br /&gt;
=== NFS Automounter ===&lt;br /&gt;
&lt;br /&gt;
 apt install autofs nfs-common -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/auto.master and enable the host map:&lt;br /&gt;
 /net    -hosts --timeout=60&lt;br /&gt;
&lt;br /&gt;
 systemctl enable autofs&lt;br /&gt;
 systemctl restart autofs&lt;br /&gt;
&lt;br /&gt;
=== NTP Client ===&lt;br /&gt;
&lt;br /&gt;
 apt install systemd-timesyncd -y&lt;br /&gt;
&lt;br /&gt;
Edit /etc/systemd/timesyncd.conf and set NTP parameter&lt;br /&gt;
 systemctl restart systemd-timesyncd&lt;br /&gt;
 timedatectl status&lt;br /&gt;
 timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;scale=2; $(cat /sys/class/thermal/thermal_zone0/temp) / 1000&amp;quot; | bc&lt;br /&gt;
&lt;br /&gt;
CPU Core throttling above 80 C.&lt;/div&gt;</summary>
		<author><name>NickPGSmith</name></author>
	</entry>
</feed>