<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://steakwiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ViciousCarnivore</id>
	<title>Steak Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://steakwiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ViciousCarnivore"/>
	<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php/Special:Contributions/ViciousCarnivore"/>
	<updated>2026-10-02T21:46:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>http://steakwiki.com/index.php?title=Connectors&amp;diff=2914</id>
		<title>Connectors</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Connectors&amp;diff=2914"/>
		<updated>2026-09-27T07:49:42Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Arduino Jumper Wires / Dupont Connectors / Mini-PV */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Connectors are a perpetual problem in electronics and electrical work.&lt;br /&gt;
&lt;br /&gt;
They have to connect properly. They have to not disconnect. They have to not degrade. They have to be water tight. The polarity can not be reversed. They have to not be reactive metals, etc, etc...&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
* https://www.eevblog.com/forum/projects/screw-terminal-for-pcb-and-seeking-any-ideas/msg5779107/ - broaching nut, vs. soldered on pcb nut (to hold M.2 connectors. broaching nut would be for a heatsink).&lt;br /&gt;
* https://connectorbook.com/&lt;br /&gt;
&lt;br /&gt;
==Tips/Techniques==&lt;br /&gt;
===Arduino Jumper Wires / Dupont Connectors / Mini-PV===&lt;br /&gt;
The connectors / cables used on the Arduino Uno and sold everywhere in single or ribbon types. You are doing yourself a disservice if you do not learn how to use / make these. You do not have to spend a lot of money, and there are a number of tricks such as repurposing previously crimped connectors in new housings, making custom partial housings, and using blank female or male pins to add support to a partial connector. These tricks can be learned by watching youtube videos or researching online. &lt;br /&gt;
&lt;br /&gt;
In any case, I've crimped a lot of RJ45 cables, a few spade / ring connector types, and now the mini-pv clones, and the most satisfying are the latter, without a doubt. An excellent connector to crimp.&lt;br /&gt;
&lt;br /&gt;
Some resources I've learned about these from are:&lt;br /&gt;
* Five Tricks for working with Dupont wires [eI3fxTH6f6I].mp4&lt;br /&gt;
* Crimping DuPont Connectors [A-ewZMjQFfo].mp4&lt;br /&gt;
* Crimping dupont connectors [woa-p-Rk4zg].mp4&lt;br /&gt;
* Crimping DuPont connector with needle nose pliers [K5xbkOxC-j8].mp4&lt;br /&gt;
* Definitive Guide to Crimping Dupont Connectors [W9w2IN3TqAg].mp4&lt;br /&gt;
* Dupont Connector Crimping Tool Tutorial - SN-28B [YQJX0AXc0Gc].mp4&lt;br /&gt;
* How to Crimp Dupont, JST, &amp;amp; Similar Connectors [JM87vskH6eE].mp4&lt;br /&gt;
* How to crimp Dupont Terminals, and why you SHOULDNT [mdD9NaCWuJ8].mp4&lt;br /&gt;
* How To Properly Crimp Dupont Pins for Arduino – Wrong vs Right [Lmyh3PojSQY].mp4&lt;br /&gt;
* STOP Fighting JST Connectors — Easy Dupont Crimping Guide [UMb7N-azQ7Q].mp4&lt;br /&gt;
* Tyco or Molex or Dupont or JST Connectors, All can be Crimped by This Crimping Tools #crimpingtools [4bK8lIR-1ps].mp4&lt;br /&gt;
* 'AVR-Guidance_HardwareNotes_CrimpingDuPontAndJST.md at master · SpenceKonde_AVR-Guidance · GitHub.pdf&lt;br /&gt;
* DuPont and “DuPont” connectors, and how to crimp them properly – Matt's Tech Pages.pdf&lt;br /&gt;
&lt;br /&gt;
For starters, a basic setup might be an SN-28B ($20-30), a kit that has a variety of the connectors and housings ($12), and also some premade jumper wires ($12). This can be had for $40-50 online. With that, and a pair of pliers (as the crimp may need slight work) you are in business. Though one of the guides above (SpenceKonde AVR Guidance page, and also the tooki eevblog thread) mentions that the TZ-4228B crimper may be better. Do your own research and see what you find. I personally find the four jaw options unaesthetic. Three is better.&lt;br /&gt;
&lt;br /&gt;
And beware that you don't buy a bunch of cheap crimpers when you can just invest in the official tooling (if you go that far).&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
* https://www.eevblog.com/forum/beginners/test-lead-connectors/ - Connectors on machinery. Isolated BNCs. Tying the two leads in an overhand knot.&lt;br /&gt;
&lt;br /&gt;
===Measure your Connectors/Cables===&lt;br /&gt;
* https://www.eevblog.com/forum/renewable-energy/wrong-crosssection-of-cables/ - Measure your connectors/cables, and try to spot the ripoff.&lt;br /&gt;
&lt;br /&gt;
===Power Cord Connector Tables===&lt;br /&gt;
These are helpful. The second one is from Mcmaster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Power cord tables.png|300px|||]]&lt;br /&gt;
&lt;br /&gt;
[[File:Mcmaster nema connectors.png|180px|||]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* See the link about high end wiring in [[wire]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:online notes]]&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Connectors&amp;diff=2913</id>
		<title>Connectors</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Connectors&amp;diff=2913"/>
		<updated>2026-09-27T07:48:23Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Arduino Jumper Wires / Dupont Connectors / Mini-PV */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Connectors are a perpetual problem in electronics and electrical work.&lt;br /&gt;
&lt;br /&gt;
They have to connect properly. They have to not disconnect. They have to not degrade. They have to be water tight. The polarity can not be reversed. They have to not be reactive metals, etc, etc...&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
* https://www.eevblog.com/forum/projects/screw-terminal-for-pcb-and-seeking-any-ideas/msg5779107/ - broaching nut, vs. soldered on pcb nut (to hold M.2 connectors. broaching nut would be for a heatsink).&lt;br /&gt;
* https://connectorbook.com/&lt;br /&gt;
&lt;br /&gt;
==Tips/Techniques==&lt;br /&gt;
===Arduino Jumper Wires / Dupont Connectors / Mini-PV===&lt;br /&gt;
The connectors / cables used on the Arduino Uno and sold everywhere in single or ribbon types. You are doing yourself a disservice if you do not learn how to use / make these. You do not have to spend a lot of money, and there are a number of tricks such as repurposing previously crimped connectors in new housings, making custom partial housings, and using blank female or male pins to add support to a partial connector. These tricks can be learned by watching youtube videos or researching online. &lt;br /&gt;
&lt;br /&gt;
In any case, I've crimped a lot of RJ45 cables, a few spade / ring connector types, and now the mini-pv clones, and the most satisfying are the latter, without a doubt. An excellent connector to crimp.&lt;br /&gt;
&lt;br /&gt;
Some resources I've learned about these from are:&lt;br /&gt;
* Five Tricks for working with Dupont wires [eI3fxTH6f6I].mp4&lt;br /&gt;
* Crimping DuPont Connectors [A-ewZMjQFfo].mp4&lt;br /&gt;
* Crimping dupont connectors [woa-p-Rk4zg].mp4&lt;br /&gt;
* Crimping DuPont connector with needle nose pliers [K5xbkOxC-j8].mp4&lt;br /&gt;
* Definitive Guide to Crimping Dupont Connectors [W9w2IN3TqAg].mp4&lt;br /&gt;
* Dupont Connector Crimping Tool Tutorial - SN-28B [YQJX0AXc0Gc].mp4&lt;br /&gt;
* How to Crimp Dupont, JST, &amp;amp; Similar Connectors [JM87vskH6eE].mp4&lt;br /&gt;
* How to crimp Dupont Terminals, and why you SHOULDNT [mdD9NaCWuJ8].mp4&lt;br /&gt;
* How To Properly Crimp Dupont Pins for Arduino – Wrong vs Right [Lmyh3PojSQY].mp4&lt;br /&gt;
* STOP Fighting JST Connectors — Easy Dupont Crimping Guide [UMb7N-azQ7Q].mp4&lt;br /&gt;
* Tyco or Molex or Dupont or JST Connectors, All can be Crimped by This Crimping Tools #crimpingtools [4bK8lIR-1ps].mp4&lt;br /&gt;
* 'AVR-Guidance_HardwareNotes_CrimpingDuPontAndJST.md at master · SpenceKonde_AVR-Guidance · GitHub.pdf&lt;br /&gt;
* DuPont and “DuPont” connectors, and how to crimp them properly – Matt's Tech Pages.pdf&lt;br /&gt;
&lt;br /&gt;
For starters, a basic setup might be an SN-28B ($20-30), a kit that has a variety of the connectors and housings ($12), and also some premade jumper wires ($12). This can be had for $40-50 online. With that, and a pair of pliers (as the crimp may need slight work) you are in business. Though one of the guides above (SpenceKonde AVR Guidance page, and also the tooki eevblog thread) mentions that the TZ-4228B crimper may be better. Do your own research and see what you find. I personally find the four jaw options unaesthetic. Three is better.&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
* https://www.eevblog.com/forum/beginners/test-lead-connectors/ - Connectors on machinery. Isolated BNCs. Tying the two leads in an overhand knot.&lt;br /&gt;
&lt;br /&gt;
===Measure your Connectors/Cables===&lt;br /&gt;
* https://www.eevblog.com/forum/renewable-energy/wrong-crosssection-of-cables/ - Measure your connectors/cables, and try to spot the ripoff.&lt;br /&gt;
&lt;br /&gt;
===Power Cord Connector Tables===&lt;br /&gt;
These are helpful. The second one is from Mcmaster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Power cord tables.png|300px|||]]&lt;br /&gt;
&lt;br /&gt;
[[File:Mcmaster nema connectors.png|180px|||]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* See the link about high end wiring in [[wire]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:online notes]]&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Connectors&amp;diff=2912</id>
		<title>Connectors</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Connectors&amp;diff=2912"/>
		<updated>2026-09-27T07:48:09Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Arduino Jumper Wires / Dupont Connectors / Mini-PV */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Connectors are a perpetual problem in electronics and electrical work.&lt;br /&gt;
&lt;br /&gt;
They have to connect properly. They have to not disconnect. They have to not degrade. They have to be water tight. The polarity can not be reversed. They have to not be reactive metals, etc, etc...&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
* https://www.eevblog.com/forum/projects/screw-terminal-for-pcb-and-seeking-any-ideas/msg5779107/ - broaching nut, vs. soldered on pcb nut (to hold M.2 connectors. broaching nut would be for a heatsink).&lt;br /&gt;
* https://connectorbook.com/&lt;br /&gt;
&lt;br /&gt;
==Tips/Techniques==&lt;br /&gt;
===Arduino Jumper Wires / Dupont Connectors / Mini-PV===&lt;br /&gt;
The connectors / cables used on the Arduino Uno and sold everywhere in single or ribbon types. You are doing yourself a disservice if you do not learn how to use / make these. You do not have to spend a lot of money, and there are a number of tricks such as repurposing previously crimped connectors in new housings, making custom partial housings, and using blank female or male pins to add support to a partial connector. These tricks can be learned by watching youtube videos or researching online. &lt;br /&gt;
&lt;br /&gt;
In any case, I've crimped a lot of RJ45 cables, a few spade / ring connector types, and now the mini-pv clones, and the most satisfying are the latter, without a doubt. An excellent connector to crimp.&lt;br /&gt;
&lt;br /&gt;
Some resources I've learned about these from are:&lt;br /&gt;
* Five Tricks for working with Dupont wires [eI3fxTH6f6I].mp4&lt;br /&gt;
* Crimping DuPont Connectors [A-ewZMjQFfo].mp4&lt;br /&gt;
* Crimping dupont connectors [woa-p-Rk4zg].mp4&lt;br /&gt;
* Crimping DuPont connector with needle nose pliers [K5xbkOxC-j8].mp4&lt;br /&gt;
* Definitive Guide to Crimping Dupont Connectors [W9w2IN3TqAg].mp4&lt;br /&gt;
* Dupont Connector Crimping Tool Tutorial - SN-28B [YQJX0AXc0Gc].mp4&lt;br /&gt;
* How to Crimp Dupont, JST, &amp;amp; Similar Connectors [JM87vskH6eE].mp4&lt;br /&gt;
* How to crimp Dupont Terminals, and why you SHOULDNT [mdD9NaCWuJ8].mp4&lt;br /&gt;
* How To Properly Crimp Dupont Pins for Arduino – Wrong vs Right [Lmyh3PojSQY].mp4&lt;br /&gt;
* STOP Fighting JST Connectors — Easy Dupont Crimping Guide [UMb7N-azQ7Q].mp4&lt;br /&gt;
* Tyco or Molex or Dupont or JST Connectors, All can be Crimped by This Crimping Tools #crimpingtools [4bK8lIR-1ps].mp4&lt;br /&gt;
* 'AVR-Guidance_HardwareNotes_CrimpingDuPontAndJST.md at master · SpenceKonde_AVR-Guidance · GitHub.pdf&lt;br /&gt;
* DuPont and “DuPont” connectors, and how to crimp them properly – Matt's Tech Pages.pdf&lt;br /&gt;
&lt;br /&gt;
For starters, a basic setup might be an SN-28B ($20-30), a kit that has a variety of the connectors and housings ($12), and also some premade jumper wires ($12). This can be had for $40-50 online. With that, and a pair of pliers (as the crimp may need slight work) you are in business. Though one of the guides above (SpenceKonde AVR Guidance page, and also the tooki eevblog thread) mentions that the TZ-4228B crimper may be better. Do your own research and see what you find. I personally find the four jaw options unaesthetic. Three is correct.&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
* https://www.eevblog.com/forum/beginners/test-lead-connectors/ - Connectors on machinery. Isolated BNCs. Tying the two leads in an overhand knot.&lt;br /&gt;
&lt;br /&gt;
===Measure your Connectors/Cables===&lt;br /&gt;
* https://www.eevblog.com/forum/renewable-energy/wrong-crosssection-of-cables/ - Measure your connectors/cables, and try to spot the ripoff.&lt;br /&gt;
&lt;br /&gt;
===Power Cord Connector Tables===&lt;br /&gt;
These are helpful. The second one is from Mcmaster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Power cord tables.png|300px|||]]&lt;br /&gt;
&lt;br /&gt;
[[File:Mcmaster nema connectors.png|180px|||]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* See the link about high end wiring in [[wire]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:online notes]]&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Connectors&amp;diff=2911</id>
		<title>Connectors</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Connectors&amp;diff=2911"/>
		<updated>2026-09-27T06:59:04Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Arduino Jumper Wires / Dupont Connectors / Mini-PV */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Connectors are a perpetual problem in electronics and electrical work.&lt;br /&gt;
&lt;br /&gt;
They have to connect properly. They have to not disconnect. They have to not degrade. They have to be water tight. The polarity can not be reversed. They have to not be reactive metals, etc, etc...&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
* https://www.eevblog.com/forum/projects/screw-terminal-for-pcb-and-seeking-any-ideas/msg5779107/ - broaching nut, vs. soldered on pcb nut (to hold M.2 connectors. broaching nut would be for a heatsink).&lt;br /&gt;
* https://connectorbook.com/&lt;br /&gt;
&lt;br /&gt;
==Tips/Techniques==&lt;br /&gt;
===Arduino Jumper Wires / Dupont Connectors / Mini-PV===&lt;br /&gt;
The connectors / cables used on the Arduino Uno and sold everywhere in single or ribbon types. You are doing yourself a disservice if you do not learn how to use / make these. You do not have to spend a lot of money, and there are a number of tricks such as repurposing previously crimped connectors in new housings, making custom partial housings, and using blank female or male pins to add support to a partial connector. These tricks can be learned by watching youtube videos or researching online. &lt;br /&gt;
&lt;br /&gt;
In any case, I've crimped a lot of RJ45 cables, a few spade / ring connector types, and now the mini-pv clones, and the most satisfying are the latter, without a doubt. An excellent connector to crimp.&lt;br /&gt;
&lt;br /&gt;
Some resources I've learned about these from are:&lt;br /&gt;
* Five Tricks for working with Dupont wires [eI3fxTH6f6I].mp4&lt;br /&gt;
* Crimping DuPont Connectors [A-ewZMjQFfo].mp4&lt;br /&gt;
* Crimping dupont connectors [woa-p-Rk4zg].mp4&lt;br /&gt;
* Crimping DuPont connector with needle nose pliers [K5xbkOxC-j8].mp4&lt;br /&gt;
* Definitive Guide to Crimping Dupont Connectors [W9w2IN3TqAg].mp4&lt;br /&gt;
* Dupont Connector Crimping Tool Tutorial - SN-28B [YQJX0AXc0Gc].mp4&lt;br /&gt;
* How to Crimp Dupont, JST, &amp;amp; Similar Connectors [JM87vskH6eE].mp4&lt;br /&gt;
* How to crimp Dupont Terminals, and why you SHOULDNT [mdD9NaCWuJ8].mp4&lt;br /&gt;
* How To Properly Crimp Dupont Pins for Arduino – Wrong vs Right [Lmyh3PojSQY].mp4&lt;br /&gt;
* STOP Fighting JST Connectors — Easy Dupont Crimping Guide [UMb7N-azQ7Q].mp4&lt;br /&gt;
* Tyco or Molex or Dupont or JST Connectors, All can be Crimped by This Crimping Tools #crimpingtools [4bK8lIR-1ps].mp4&lt;br /&gt;
* 'AVR-Guidance_HardwareNotes_CrimpingDuPontAndJST.md at master · SpenceKonde_AVR-Guidance · GitHub.pdf&lt;br /&gt;
* DuPont and “DuPont” connectors, and how to crimp them properly – Matt's Tech Pages.pdf&lt;br /&gt;
&lt;br /&gt;
For starters, a basic setup might be an SN-28B ($20-30), a kit that has a variety of the connectors and housings ($12), and also some premade jumper wires ($12). This can be had for $40-50 online. With that, and a pair of pliers (as the crimp may need slight work) you are in business. Though one of the guides above (SpenceKonde AVR Guidance page) mentions that the TZ-4228B crimper may be better. Do your own research and see what you find.&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
* https://www.eevblog.com/forum/beginners/test-lead-connectors/ - Connectors on machinery. Isolated BNCs. Tying the two leads in an overhand knot.&lt;br /&gt;
&lt;br /&gt;
===Measure your Connectors/Cables===&lt;br /&gt;
* https://www.eevblog.com/forum/renewable-energy/wrong-crosssection-of-cables/ - Measure your connectors/cables, and try to spot the ripoff.&lt;br /&gt;
&lt;br /&gt;
===Power Cord Connector Tables===&lt;br /&gt;
These are helpful. The second one is from Mcmaster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Power cord tables.png|300px|||]]&lt;br /&gt;
&lt;br /&gt;
[[File:Mcmaster nema connectors.png|180px|||]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* See the link about high end wiring in [[wire]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:online notes]]&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Connectors&amp;diff=2910</id>
		<title>Connectors</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Connectors&amp;diff=2910"/>
		<updated>2026-09-27T06:57:47Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Arduino Jumper Wires / Dupont Connectors / Mini-PV */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Connectors are a perpetual problem in electronics and electrical work.&lt;br /&gt;
&lt;br /&gt;
They have to connect properly. They have to not disconnect. They have to not degrade. They have to be water tight. The polarity can not be reversed. They have to not be reactive metals, etc, etc...&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
* https://www.eevblog.com/forum/projects/screw-terminal-for-pcb-and-seeking-any-ideas/msg5779107/ - broaching nut, vs. soldered on pcb nut (to hold M.2 connectors. broaching nut would be for a heatsink).&lt;br /&gt;
* https://connectorbook.com/&lt;br /&gt;
&lt;br /&gt;
==Tips/Techniques==&lt;br /&gt;
===Arduino Jumper Wires / Dupont Connectors / Mini-PV===&lt;br /&gt;
The connectors / cables used on the Arduino Uno and sold everywhere in single or ribbon types. You are doing yourself a disservice if you do not learn how to use / make these. You do not have to spend a lot of money, and there are a number of tricks such as repurposing previously crimped connectors in new housings, making custom partial housings, and using blank female or male pins to add support to a partial connector. These tricks can be learned by watching youtube videos or researching online. &lt;br /&gt;
&lt;br /&gt;
In any case, I've crimped a lot of RJ45 cables, a few spade / ring connector types, and now the mini-pv clones, and the most satisfying are the latter, without a doubt. An excellent connector to crimp.&lt;br /&gt;
&lt;br /&gt;
Some resources I've learned about these from are:&lt;br /&gt;
* Five Tricks for working with Dupont wires [eI3fxTH6f6I].mp4&lt;br /&gt;
* Crimping DuPont Connectors [A-ewZMjQFfo].mp4&lt;br /&gt;
* Crimping dupont connectors [woa-p-Rk4zg].mp4&lt;br /&gt;
* Crimping DuPont connector with needle nose pliers [K5xbkOxC-j8].mp4&lt;br /&gt;
* Definitive Guide to Crimping Dupont Connectors [W9w2IN3TqAg].mp4&lt;br /&gt;
* Dupont Connector Crimping Tool Tutorial - SN-28B [YQJX0AXc0Gc].mp4&lt;br /&gt;
* How to Crimp Dupont, JST, &amp;amp; Similar Connectors [JM87vskH6eE].mp4&lt;br /&gt;
* How to crimp Dupont Terminals, and why you SHOULDNT [mdD9NaCWuJ8].mp4&lt;br /&gt;
* How To Properly Crimp Dupont Pins for Arduino – Wrong vs Right [Lmyh3PojSQY].mp4&lt;br /&gt;
* STOP Fighting JST Connectors — Easy Dupont Crimping Guide [UMb7N-azQ7Q].mp4&lt;br /&gt;
* Tyco or Molex or Dupont or JST Connectors, All can be Crimped by This Crimping Tools #crimpingtools [4bK8lIR-1ps].mp4&lt;br /&gt;
* 'AVR-Guidance_HardwareNotes_CrimpingDuPontAndJST.md at master · SpenceKonde_AVR-Guidance · GitHub.pdf&lt;br /&gt;
* DuPont and “DuPont” connectors, and how to crimp them properly – Matt's Tech Pages.pdf&lt;br /&gt;
&lt;br /&gt;
For starters, a basic kit might be a SN-28B, a kit that has a variety of the connectors and housings, and also some premade jumper wires. This can be had for $40-50 online. With that, and a pair of pliers (as the crimp may need slight work) you are in business. Though one of the guides above (SpenceKonde AVR Guidance page) mentions that the TZ-4228B crimper may be better. Do your own research and see what you find.&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
* https://www.eevblog.com/forum/beginners/test-lead-connectors/ - Connectors on machinery. Isolated BNCs. Tying the two leads in an overhand knot.&lt;br /&gt;
&lt;br /&gt;
===Measure your Connectors/Cables===&lt;br /&gt;
* https://www.eevblog.com/forum/renewable-energy/wrong-crosssection-of-cables/ - Measure your connectors/cables, and try to spot the ripoff.&lt;br /&gt;
&lt;br /&gt;
===Power Cord Connector Tables===&lt;br /&gt;
These are helpful. The second one is from Mcmaster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Power cord tables.png|300px|||]]&lt;br /&gt;
&lt;br /&gt;
[[File:Mcmaster nema connectors.png|180px|||]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* See the link about high end wiring in [[wire]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:online notes]]&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Connectors&amp;diff=2909</id>
		<title>Connectors</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Connectors&amp;diff=2909"/>
		<updated>2026-09-27T06:53:32Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Arduino Jumper Wires / Dupont Connectors / Mini-PV */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Connectors are a perpetual problem in electronics and electrical work.&lt;br /&gt;
&lt;br /&gt;
They have to connect properly. They have to not disconnect. They have to not degrade. They have to be water tight. The polarity can not be reversed. They have to not be reactive metals, etc, etc...&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
* https://www.eevblog.com/forum/projects/screw-terminal-for-pcb-and-seeking-any-ideas/msg5779107/ - broaching nut, vs. soldered on pcb nut (to hold M.2 connectors. broaching nut would be for a heatsink).&lt;br /&gt;
* https://connectorbook.com/&lt;br /&gt;
&lt;br /&gt;
==Tips/Techniques==&lt;br /&gt;
===Arduino Jumper Wires / Dupont Connectors / Mini-PV===&lt;br /&gt;
The connectors / cables used on the Arduino Uno and sold everywhere in single or ribbon types. You are doing yourself a disservice if you do not learn how to use / make these. You do not have to spend a lot of money, and there are a number of tricks such as repurposing previously crimped connectors in new housings, making custom partial housings, and using blank female or male pins to add support to a partial connector. These tricks can be learned by watching youtube videos or researching online. &lt;br /&gt;
&lt;br /&gt;
In any case, I've crimped a lot of RJ45 cables, a few spade / ring connector types, and now the mini-pv clones, and the most satisfying are the latter, without a doubt. An excellent connector to crimp.&lt;br /&gt;
&lt;br /&gt;
Some resources I've learned about these from are:&lt;br /&gt;
* Five Tricks for working with Dupont wires [eI3fxTH6f6I].mp4&lt;br /&gt;
* Crimping DuPont Connectors [A-ewZMjQFfo].mp4&lt;br /&gt;
* Crimping dupont connectors [woa-p-Rk4zg].mp4&lt;br /&gt;
* Crimping DuPont connector with needle nose pliers [K5xbkOxC-j8].mp4&lt;br /&gt;
* Definitive Guide to Crimping Dupont Connectors [W9w2IN3TqAg].mp4&lt;br /&gt;
* Dupont Connector Crimping Tool Tutorial - SN-28B [YQJX0AXc0Gc].mp4&lt;br /&gt;
* How to Crimp Dupont, JST, &amp;amp; Similar Connectors [JM87vskH6eE].mp4&lt;br /&gt;
* How to crimp Dupont Terminals, and why you SHOULDNT [mdD9NaCWuJ8].mp4&lt;br /&gt;
* How To Properly Crimp Dupont Pins for Arduino – Wrong vs Right [Lmyh3PojSQY].mp4&lt;br /&gt;
* STOP Fighting JST Connectors — Easy Dupont Crimping Guide [UMb7N-azQ7Q].mp4&lt;br /&gt;
* Tyco or Molex or Dupont or JST Connectors, All can be Crimped by This Crimping Tools #crimpingtools [4bK8lIR-1ps].mp4&lt;br /&gt;
* 'AVR-Guidance_HardwareNotes_CrimpingDuPontAndJST.md at master · SpenceKonde_AVR-Guidance · GitHub.pdf&lt;br /&gt;
* DuPont and “DuPont” connectors, and how to crimp them properly – Matt's Tech Pages.pdf&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
* https://www.eevblog.com/forum/beginners/test-lead-connectors/ - Connectors on machinery. Isolated BNCs. Tying the two leads in an overhand knot.&lt;br /&gt;
&lt;br /&gt;
===Measure your Connectors/Cables===&lt;br /&gt;
* https://www.eevblog.com/forum/renewable-energy/wrong-crosssection-of-cables/ - Measure your connectors/cables, and try to spot the ripoff.&lt;br /&gt;
&lt;br /&gt;
===Power Cord Connector Tables===&lt;br /&gt;
These are helpful. The second one is from Mcmaster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Power cord tables.png|300px|||]]&lt;br /&gt;
&lt;br /&gt;
[[File:Mcmaster nema connectors.png|180px|||]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* See the link about high end wiring in [[wire]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:online notes]]&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Connectors&amp;diff=2908</id>
		<title>Connectors</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Connectors&amp;diff=2908"/>
		<updated>2026-09-27T06:52:53Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Arduino Jumper Wires / Dupont Connectors / Mini-PV */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Connectors are a perpetual problem in electronics and electrical work.&lt;br /&gt;
&lt;br /&gt;
They have to connect properly. They have to not disconnect. They have to not degrade. They have to be water tight. The polarity can not be reversed. They have to not be reactive metals, etc, etc...&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
* https://www.eevblog.com/forum/projects/screw-terminal-for-pcb-and-seeking-any-ideas/msg5779107/ - broaching nut, vs. soldered on pcb nut (to hold M.2 connectors. broaching nut would be for a heatsink).&lt;br /&gt;
* https://connectorbook.com/&lt;br /&gt;
&lt;br /&gt;
==Tips/Techniques==&lt;br /&gt;
===Arduino Jumper Wires / Dupont Connectors / Mini-PV===&lt;br /&gt;
The connectors / cables used on the Arduino Uno and sold everywhere in single or ribbon types. You are doing yourself a disservice if you do not learn how to use / make these. You do not have to spend a lot of money, and there are a number of tricks such as repurposing previously crimped connectors in new housings, making custom partial housings, and using blank female or male pins to add support to a partial connector. These tricks can be learned by watching youtube videos or researching online. &lt;br /&gt;
&lt;br /&gt;
In any case, I've crimped a lot of RJ45 cables, a few spade and ring connectors, and now the mini-pv clones, and the most satisfying are the latter, without a doubt. An excellent connector to crimp.&lt;br /&gt;
&lt;br /&gt;
Some resources I've learned about these from are:&lt;br /&gt;
* Five Tricks for working with Dupont wires [eI3fxTH6f6I].mp4&lt;br /&gt;
* Crimping DuPont Connectors [A-ewZMjQFfo].mp4&lt;br /&gt;
* Crimping dupont connectors [woa-p-Rk4zg].mp4&lt;br /&gt;
* Crimping DuPont connector with needle nose pliers [K5xbkOxC-j8].mp4&lt;br /&gt;
* Definitive Guide to Crimping Dupont Connectors [W9w2IN3TqAg].mp4&lt;br /&gt;
* Dupont Connector Crimping Tool Tutorial - SN-28B [YQJX0AXc0Gc].mp4&lt;br /&gt;
* How to Crimp Dupont, JST, &amp;amp; Similar Connectors [JM87vskH6eE].mp4&lt;br /&gt;
* How to crimp Dupont Terminals, and why you SHOULDNT [mdD9NaCWuJ8].mp4&lt;br /&gt;
* How To Properly Crimp Dupont Pins for Arduino – Wrong vs Right [Lmyh3PojSQY].mp4&lt;br /&gt;
* STOP Fighting JST Connectors — Easy Dupont Crimping Guide [UMb7N-azQ7Q].mp4&lt;br /&gt;
* Tyco or Molex or Dupont or JST Connectors, All can be Crimped by This Crimping Tools #crimpingtools [4bK8lIR-1ps].mp4&lt;br /&gt;
* 'AVR-Guidance_HardwareNotes_CrimpingDuPontAndJST.md at master · SpenceKonde_AVR-Guidance · GitHub.pdf&lt;br /&gt;
* DuPont and “DuPont” connectors, and how to crimp them properly – Matt's Tech Pages.pdf&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
* https://www.eevblog.com/forum/beginners/test-lead-connectors/ - Connectors on machinery. Isolated BNCs. Tying the two leads in an overhand knot.&lt;br /&gt;
&lt;br /&gt;
===Measure your Connectors/Cables===&lt;br /&gt;
* https://www.eevblog.com/forum/renewable-energy/wrong-crosssection-of-cables/ - Measure your connectors/cables, and try to spot the ripoff.&lt;br /&gt;
&lt;br /&gt;
===Power Cord Connector Tables===&lt;br /&gt;
These are helpful. The second one is from Mcmaster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Power cord tables.png|300px|||]]&lt;br /&gt;
&lt;br /&gt;
[[File:Mcmaster nema connectors.png|180px|||]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* See the link about high end wiring in [[wire]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:online notes]]&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Connectors&amp;diff=2907</id>
		<title>Connectors</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Connectors&amp;diff=2907"/>
		<updated>2026-09-27T06:51:45Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Dupont Connectors / Mini-PV */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Connectors are a perpetual problem in electronics and electrical work.&lt;br /&gt;
&lt;br /&gt;
They have to connect properly. They have to not disconnect. They have to not degrade. They have to be water tight. The polarity can not be reversed. They have to not be reactive metals, etc, etc...&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
* https://www.eevblog.com/forum/projects/screw-terminal-for-pcb-and-seeking-any-ideas/msg5779107/ - broaching nut, vs. soldered on pcb nut (to hold M.2 connectors. broaching nut would be for a heatsink).&lt;br /&gt;
* https://connectorbook.com/&lt;br /&gt;
&lt;br /&gt;
==Tips/Techniques==&lt;br /&gt;
===Arduino Jumper Wires / Dupont Connectors / Mini-PV===&lt;br /&gt;
The connectors / cables used on the Arduino Uno and sold everywhere in single or ribbon types. You are doing yourself a disservice if you do not learn how to use / make these. You don't have to spend a lot of money, and there are a number of tricks such as repurposing previously crimped connectors in new housings, making custom partial housings, and using blank female or male pins to add support to a partial connector. These tricks can be learned by watching youtube videos or researching online. &lt;br /&gt;
&lt;br /&gt;
In any case, I've crimped a lot of RJ45 cables, a few spade and ring connectors, and now the mini-pv clones, and the most satisfying are the latter, without a doubt. An excellent connector to crimp.&lt;br /&gt;
&lt;br /&gt;
Some resources I've learned about these from are:&lt;br /&gt;
* Five Tricks for working with Dupont wires [eI3fxTH6f6I].mp4&lt;br /&gt;
* Crimping DuPont Connectors [A-ewZMjQFfo].mp4&lt;br /&gt;
* Crimping dupont connectors [woa-p-Rk4zg].mp4&lt;br /&gt;
* Crimping DuPont connector with needle nose pliers [K5xbkOxC-j8].mp4&lt;br /&gt;
* Definitive Guide to Crimping Dupont Connectors [W9w2IN3TqAg].mp4&lt;br /&gt;
* Dupont Connector Crimping Tool Tutorial - SN-28B [YQJX0AXc0Gc].mp4&lt;br /&gt;
* How to Crimp Dupont, JST, &amp;amp; Similar Connectors [JM87vskH6eE].mp4&lt;br /&gt;
* How to crimp Dupont Terminals, and why you SHOULDNT [mdD9NaCWuJ8].mp4&lt;br /&gt;
* How To Properly Crimp Dupont Pins for Arduino – Wrong vs Right [Lmyh3PojSQY].mp4&lt;br /&gt;
* STOP Fighting JST Connectors — Easy Dupont Crimping Guide [UMb7N-azQ7Q].mp4&lt;br /&gt;
* Tyco or Molex or Dupont or JST Connectors, All can be Crimped by This Crimping Tools #crimpingtools [4bK8lIR-1ps].mp4&lt;br /&gt;
* 'AVR-Guidance_HardwareNotes_CrimpingDuPontAndJST.md at master · SpenceKonde_AVR-Guidance · GitHub.pdf&lt;br /&gt;
* DuPont and “DuPont” connectors, and how to crimp them properly – Matt's Tech Pages.pdf&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
* https://www.eevblog.com/forum/beginners/test-lead-connectors/ - Connectors on machinery. Isolated BNCs. Tying the two leads in an overhand knot.&lt;br /&gt;
&lt;br /&gt;
===Measure your Connectors/Cables===&lt;br /&gt;
* https://www.eevblog.com/forum/renewable-energy/wrong-crosssection-of-cables/ - Measure your connectors/cables, and try to spot the ripoff.&lt;br /&gt;
&lt;br /&gt;
===Power Cord Connector Tables===&lt;br /&gt;
These are helpful. The second one is from Mcmaster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Power cord tables.png|300px|||]]&lt;br /&gt;
&lt;br /&gt;
[[File:Mcmaster nema connectors.png|180px|||]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* See the link about high end wiring in [[wire]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:online notes]]&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Connectors&amp;diff=2906</id>
		<title>Connectors</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Connectors&amp;diff=2906"/>
		<updated>2026-09-27T06:45:19Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Tips/Techniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Connectors are a perpetual problem in electronics and electrical work.&lt;br /&gt;
&lt;br /&gt;
They have to connect properly. They have to not disconnect. They have to not degrade. They have to be water tight. The polarity can not be reversed. They have to not be reactive metals, etc, etc...&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
* https://www.eevblog.com/forum/projects/screw-terminal-for-pcb-and-seeking-any-ideas/msg5779107/ - broaching nut, vs. soldered on pcb nut (to hold M.2 connectors. broaching nut would be for a heatsink).&lt;br /&gt;
* https://connectorbook.com/&lt;br /&gt;
&lt;br /&gt;
==Tips/Techniques==&lt;br /&gt;
===Dupont Connectors / Mini-PV===&lt;br /&gt;
The connectors / cables used on the Arduino Uno and sold everywhere in single or ribbon types. You are doing yourself a disservice if you do not learn how to use these. You don't have to spend a lot of money, and there are a number of tricks such as repurposing previously crimped connectors in new housings, making custom partial housings, and using blank female or male pins to add support to a partial connector. These tricks can be learned by watching youtube videos or researching online. &lt;br /&gt;
&lt;br /&gt;
In any case, I've crimped a lot of RJ45 cables, a few spade and ring connectors, and now the dupont connectors, and the most satisfying are the dupont connector, without a doubt. An excellent connector to crimp.&lt;br /&gt;
===Misc===&lt;br /&gt;
* https://www.eevblog.com/forum/beginners/test-lead-connectors/ - Connectors on machinery. Isolated BNCs. Tying the two leads in an overhand knot.&lt;br /&gt;
&lt;br /&gt;
===Measure your Connectors/Cables===&lt;br /&gt;
* https://www.eevblog.com/forum/renewable-energy/wrong-crosssection-of-cables/ - Measure your connectors/cables, and try to spot the ripoff.&lt;br /&gt;
&lt;br /&gt;
===Power Cord Connector Tables===&lt;br /&gt;
These are helpful. The second one is from Mcmaster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Power cord tables.png|300px|||]]&lt;br /&gt;
&lt;br /&gt;
[[File:Mcmaster nema connectors.png|180px|||]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* See the link about high end wiring in [[wire]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:online notes]]&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2905</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2905"/>
		<updated>2026-09-25T05:01:23Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Power Saving */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
=== Power Saving ===&lt;br /&gt;
A quick look at power usage of the BBB (industrial). Conclusion: May want to use a pocket beagle if you need low power, but it's possible to adjust some settings if the CPU load is not high. I'm aware that the BBB and RPI (aka Linux) are not advised for low power, but I wanted to test it myself.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Quick Beaglebone Power Usage Tests.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===List of Applications for SBCs===&lt;br /&gt;
Here are some things that I have considered or are working on with the beagleboards / beaglebones and ones that don't work. &lt;br /&gt;
====Applications====&lt;br /&gt;
* General data logging with sensors (easy with the OS. I.e. you can monitor temperature, or an accelerometer and then store in text files or a db, later displaying the data with graphs).&lt;br /&gt;
* Alarm system (This is a classic project for electronics, but it is good for something like an rpi or beagle as you can setup automated email alerts since you have ethernet). You can use one beagle and connect a number of alarms to the 0.1&amp;quot; headers. You could also use RF alarms potentially, with the SBC as a gateway.&lt;br /&gt;
* Radio monitoring (By connecting up one of the tv tuner usb adapters, you could interface to something like GNU Radio. I'm not sure what you might be looking for, but if you have access to different locations, you would get different results depending on where you are.).&lt;br /&gt;
* Software that any x86 computer can do, but with less power consumption. (I will omit any more software specific details, and try to focus on hardware applications of the SBCs. Most anything that runs on Linux will likely work here.).&lt;br /&gt;
&lt;br /&gt;
====What Doesn't Work As Well====&lt;br /&gt;
* Any CPU intensive process that would be better off on an x86 server.&lt;br /&gt;
* Some x86 specific programs don't run on ARM (such as anything with code in x86 asm).&lt;br /&gt;
* X/Wayland dependent software or desktop environments that might be too slow for the limited resources of an SBC. (i.e. you are better off using these as headless or for console purposes. Though custom GUIs are not a bad idea, from what I've seen.).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2904</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2904"/>
		<updated>2026-09-25T05:00:45Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Power Saving */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
=== Power Saving ===&lt;br /&gt;
A quick look at power usage of the BBB (industrial). Conclusion: May want to use a pocket beagle if you need low power, but it's possible to adjust some settings if the CPU load is not high. I'm aware that BBB and RPI (and Linux) are not advised for low power, but I wanted to test it myself.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Quick Beaglebone Power Usage Tests.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===List of Applications for SBCs===&lt;br /&gt;
Here are some things that I have considered or are working on with the beagleboards / beaglebones and ones that don't work. &lt;br /&gt;
====Applications====&lt;br /&gt;
* General data logging with sensors (easy with the OS. I.e. you can monitor temperature, or an accelerometer and then store in text files or a db, later displaying the data with graphs).&lt;br /&gt;
* Alarm system (This is a classic project for electronics, but it is good for something like an rpi or beagle as you can setup automated email alerts since you have ethernet). You can use one beagle and connect a number of alarms to the 0.1&amp;quot; headers. You could also use RF alarms potentially, with the SBC as a gateway.&lt;br /&gt;
* Radio monitoring (By connecting up one of the tv tuner usb adapters, you could interface to something like GNU Radio. I'm not sure what you might be looking for, but if you have access to different locations, you would get different results depending on where you are.).&lt;br /&gt;
* Software that any x86 computer can do, but with less power consumption. (I will omit any more software specific details, and try to focus on hardware applications of the SBCs. Most anything that runs on Linux will likely work here.).&lt;br /&gt;
&lt;br /&gt;
====What Doesn't Work As Well====&lt;br /&gt;
* Any CPU intensive process that would be better off on an x86 server.&lt;br /&gt;
* Some x86 specific programs don't run on ARM (such as anything with code in x86 asm).&lt;br /&gt;
* X/Wayland dependent software or desktop environments that might be too slow for the limited resources of an SBC. (i.e. you are better off using these as headless or for console purposes. Though custom GUIs are not a bad idea, from what I've seen.).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2903</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2903"/>
		<updated>2026-09-25T04:57:11Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* DTB files can be Reverse Engineered */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
=== Power Saving ===&lt;br /&gt;
A quick look at power usage of the BBB (industrial).&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Quick Beaglebone Power Usage Tests.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===List of Applications for SBCs===&lt;br /&gt;
Here are some things that I have considered or are working on with the beagleboards / beaglebones and ones that don't work. &lt;br /&gt;
====Applications====&lt;br /&gt;
* General data logging with sensors (easy with the OS. I.e. you can monitor temperature, or an accelerometer and then store in text files or a db, later displaying the data with graphs).&lt;br /&gt;
* Alarm system (This is a classic project for electronics, but it is good for something like an rpi or beagle as you can setup automated email alerts since you have ethernet). You can use one beagle and connect a number of alarms to the 0.1&amp;quot; headers. You could also use RF alarms potentially, with the SBC as a gateway.&lt;br /&gt;
* Radio monitoring (By connecting up one of the tv tuner usb adapters, you could interface to something like GNU Radio. I'm not sure what you might be looking for, but if you have access to different locations, you would get different results depending on where you are.).&lt;br /&gt;
* Software that any x86 computer can do, but with less power consumption. (I will omit any more software specific details, and try to focus on hardware applications of the SBCs. Most anything that runs on Linux will likely work here.).&lt;br /&gt;
&lt;br /&gt;
====What Doesn't Work As Well====&lt;br /&gt;
* Any CPU intensive process that would be better off on an x86 server.&lt;br /&gt;
* Some x86 specific programs don't run on ARM (such as anything with code in x86 asm).&lt;br /&gt;
* X/Wayland dependent software or desktop environments that might be too slow for the limited resources of an SBC. (i.e. you are better off using these as headless or for console purposes. Though custom GUIs are not a bad idea, from what I've seen.).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=File:Gnumeric_image.png&amp;diff=2902</id>
		<title>File:Gnumeric image.png</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=File:Gnumeric_image.png&amp;diff=2902"/>
		<updated>2026-09-25T04:56:14Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: ViciousCarnivore moved page File:Gnumeric image.png to File:Quick Beaglebone Power Usage Tests.png: Not descriptive enough name.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[File:Quick Beaglebone Power Usage Tests.png]]&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=File:Quick_Beaglebone_Power_Usage_Tests.png&amp;diff=2901</id>
		<title>File:Quick Beaglebone Power Usage Tests.png</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=File:Quick_Beaglebone_Power_Usage_Tests.png&amp;diff=2901"/>
		<updated>2026-09-25T04:56:14Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: ViciousCarnivore moved page File:Gnumeric image.png to File:Quick Beaglebone Power Usage Tests.png: Not descriptive enough name.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=File:Quick_Beaglebone_Power_Usage_Tests.png&amp;diff=2900</id>
		<title>File:Quick Beaglebone Power Usage Tests.png</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=File:Quick_Beaglebone_Power_Usage_Tests.png&amp;diff=2900"/>
		<updated>2026-09-25T04:55:39Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=FPGA_-_Rotary_Encoder&amp;diff=2899</id>
		<title>FPGA - Rotary Encoder</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=FPGA_-_Rotary_Encoder&amp;diff=2899"/>
		<updated>2026-09-25T03:05:49Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's public domain code for a Spartan 3E, to interface with multiple rotary encoders. It's currently tested up to 8. It uses Block RAM to keep track of a Rotary ID and Value for the rotary (between 0-127). It outputs the rotary values via UART on 57600 baud. Based off of the Papilio and also HamsterNZ's introductory PDF on FPGAs.&lt;br /&gt;
&lt;br /&gt;
I have different versions of this. I've had some issues with UART partial garbage output on a Spartan 3E 500, whereas the Papilio's 250 did not have such issues. I'll start with the one that's compatible with the Papilio board (including the pinout / constraints.ucf file).&lt;br /&gt;
&lt;br /&gt;
There is Rotary_Top.vhd, which is the main code, then there is rotary.vhd. Finally you will need to initialize the Block Ram, and also optionally include a init hex file.&lt;br /&gt;
&lt;br /&gt;
'''Caution: Prototype code! Expect extra notes / comments.'''&lt;br /&gt;
&lt;br /&gt;
==Rotary_Top.vhd==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
library IEEE;&lt;br /&gt;
use IEEE.STD_LOGIC_1164.ALL;&lt;br /&gt;
use IEEE.STD_LOGIC_UNSIGNED.ALL;&lt;br /&gt;
use IEEE.NUMERIC_STD.ALL;&lt;br /&gt;
&lt;br /&gt;
-- TODO&lt;br /&gt;
&lt;br /&gt;
--DONE test reading one address in RAM. make sure it is right.&lt;br /&gt;
--DONE make sure output on UART is correct. Also bits are&lt;br /&gt;
--DONE  in right order too. DONE.&lt;br /&gt;
&lt;br /&gt;
--DONE (used counter, not loop) setup a read on 0-99 addresses of RAM . use loop.&lt;br /&gt;
&lt;br /&gt;
--DONE have it output each memory address in uart 3 or 4 times before&lt;br /&gt;
--going to the next.&lt;br /&gt;
&lt;br /&gt;
--DONE EASY have it loop through the ram 24/7 EASY&lt;br /&gt;
&lt;br /&gt;
--DONE: set default values of ram to be letters abcabcabcabc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--RAM&lt;br /&gt;
-- idea&lt;br /&gt;
-- have top level manage all ram and output&lt;br /&gt;
-- have output only if cw or ccw&lt;br /&gt;
-- if outputs, have that rotaryID(or memory address)&lt;br /&gt;
-- be the chosen one to write to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--UART&lt;br /&gt;
-- possible solution #1&lt;br /&gt;
-- if a memory address is updated&lt;br /&gt;
-- then output uart of new memory address only&lt;br /&gt;
-- every rotary change, causes&lt;br /&gt;
-- new ram write/ read, and uart output&lt;br /&gt;
-- on as needed basis&lt;br /&gt;
-- PROBLEMS: having trouble getting just one uart byte out&lt;br /&gt;
-- noisy, and timing is off possibly (check timing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- possible solution #2&lt;br /&gt;
-- loop through all memory constantly&lt;br /&gt;
-- output all values constantly&lt;br /&gt;
-- any changes will be reflected in micro&lt;br /&gt;
-- hopefully fast enough? (should be)(57600 is p fast)&lt;br /&gt;
-- any rotaries that update will write to ram&lt;br /&gt;
-- problems: if 100 rotaries updating at once,&lt;br /&gt;
-- could not be fast enough? maybe? maybe not. maybe it&lt;br /&gt;
-- is fast enough to read io, write ram.&lt;br /&gt;
-- write RAM would be separate from read ram / UART here&lt;br /&gt;
-- but need to adjust write enable flag as needed... maybe&lt;br /&gt;
-- two port RAM is better? constantly write on port A&lt;br /&gt;
-- constantly read from port b. no need to adjust write enable&lt;br /&gt;
-- flag...&lt;br /&gt;
-- Yes, you can use dual port RAM. one port always wea high&lt;br /&gt;
-- other port always wea low. and they should only interfere&lt;br /&gt;
-- if read is during a write. however,&lt;br /&gt;
-- depending how fast I read the data, I may be able to get&lt;br /&gt;
-- around htis. i could also average the values (say last 3&lt;br /&gt;
-- values) from the serial for a given byte, and call that&lt;br /&gt;
-- the true value. this way avoid any memory errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- TODO&lt;br /&gt;
&lt;br /&gt;
-- Need to writeup basic documentation and clean these at the&lt;br /&gt;
-- very end.&lt;br /&gt;
&lt;br /&gt;
-- look up what a memory latch is&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- output serial as BCD or ascii table bits&lt;br /&gt;
-- i.e. instead of using straight hex (one byte each) for&lt;br /&gt;
-- a number, convert it to its ascii equivalent (not as fast)&lt;br /&gt;
-- (takes more bytes)&lt;br /&gt;
&lt;br /&gt;
-- EDIT: just outputting raw 8 bits&lt;br /&gt;
&lt;br /&gt;
entity rotary_top is&lt;br /&gt;
--must map all 100 rotaries here&lt;br /&gt;
   GENERIC(&lt;br /&gt;
             RAMADDR : STD_LOGIC_VECTOR(7 downto 0) := x&amp;quot;FF&amp;quot;;&lt;br /&gt;
                  ROTARYID   : integer := 1&lt;br /&gt;
             );&lt;br /&gt;
  PORT( ROT           : in  STD_LOGIC_VECTOR(1 downto 0); -- semi colons&lt;br /&gt;
        ROT2          : in  STD_LOGIC_VECTOR(1 downto 0); -- here&lt;br /&gt;
                  ROT3          : in  STD_LOGIC_VECTOR(1 downto 0);&lt;br /&gt;
                  ROT4          : in  STD_LOGIC_VECTOR(1 downto 0);&lt;br /&gt;
                  ROT5          : in  STD_LOGIC_VECTOR(1 downto 0);&lt;br /&gt;
                  ROT6          : in  STD_LOGIC_VECTOR(1 downto 0);&lt;br /&gt;
                  ROT7          : in  STD_LOGIC_VECTOR(1 downto 0);&lt;br /&gt;
                  ROT8          : in  STD_LOGIC_VECTOR(1 downto 0);&lt;br /&gt;
        LED           : out  STD_LOGIC_VECTOR(7 downto 0); -- commas in&lt;br /&gt;
                  --LEDWATCH      : out STD_LOGIC_VECTOR(7 downto 0); --instance&lt;br /&gt;
                  clk           : in STD_LOGIC;&lt;br /&gt;
                  --DATAOUTUART   : out STD_LOGIC;&lt;br /&gt;
                  TX                             : out STD_LOGIC_VECTOR(0 downto 0)&lt;br /&gt;
                  --RX                           : STD_LOGIC&lt;br /&gt;
&lt;br /&gt;
                  );&lt;br /&gt;
&lt;br /&gt;
end rotary_top;&lt;br /&gt;
&lt;br /&gt;
        architecture Behavioral of rotary_top is&lt;br /&gt;
        COMPONENT rotary&lt;br /&gt;
   GENERIC(&lt;br /&gt;
                RAMADDR : STD_LOGIC_VECTOR(7 downto 0) := x&amp;quot;FF&amp;quot;;&lt;br /&gt;
                ROTARYID   : STD_LOGIC_VECTOR(7 downto 0) := x&amp;quot;00&amp;quot;&lt;br /&gt;
                );&lt;br /&gt;
        PORT(&lt;br /&gt;
                ROT : IN std_logic_vector(1 downto 0);&lt;br /&gt;
                clk : IN std_logic;&lt;br /&gt;
                LED : OUT std_logic_vector(3 downto 0);&lt;br /&gt;
                -- LEDWATCH : OUT std_logic_vector(7 downto 0);&lt;br /&gt;
                 DATAOUT  : OUT STD_LOGIC_VECTOR(15 downto 0)&lt;br /&gt;
                );&lt;br /&gt;
        END COMPONENT;&lt;br /&gt;
      COMPONENT DUALRAM&lt;br /&gt;
  PORT (&lt;br /&gt;
    clka : IN STD_LOGIC;&lt;br /&gt;
    ena : IN STD_LOGIC;&lt;br /&gt;
    wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0);&lt;br /&gt;
    addra : IN STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
    dina : IN STD_LOGIC_VECTOR(15 DOWNTO 0);&lt;br /&gt;
    douta : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);&lt;br /&gt;
&lt;br /&gt;
    clkb : IN STD_LOGIC;&lt;br /&gt;
    enb : IN STD_LOGIC;&lt;br /&gt;
    web : IN STD_LOGIC_VECTOR(0 DOWNTO 0);&lt;br /&gt;
    addrb : IN STD_LOGIC_VECTOR(7 DOWNTO 0);&lt;br /&gt;
    dinb : IN STD_LOGIC_VECTOR(15 DOWNTO 0);&lt;br /&gt;
    doutb : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)&lt;br /&gt;
  );&lt;br /&gt;
END COMPONENT;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        signal   resultsigtest    : STD_LOGIC_VECTOR(7 downto 0) ;&lt;br /&gt;
        signal   RAMADDR_CURRENT  : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000000&amp;quot;;&lt;br /&gt;
        -- RAMADDR_0 is start byte (zz (LOWER CASE)) for pic to know when array starts&lt;br /&gt;
        constant RAMADDR_1        : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000001&amp;quot;;&lt;br /&gt;
        constant ROTARYID_1       : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000001&amp;quot;;&lt;br /&gt;
        constant RAMADDR_2        : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000010&amp;quot;;&lt;br /&gt;
        constant ROTARYID_2       : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000010&amp;quot;;&lt;br /&gt;
        --signal   RAMADDR_CURRENT2 : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00001000&amp;quot;;&lt;br /&gt;
        constant RAMADDR_3        : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000011&amp;quot;;&lt;br /&gt;
        constant ROTARYID_3       : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000011&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        constant RAMADDR_4        : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000100&amp;quot;;&lt;br /&gt;
        constant ROTARYID_4       : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        constant RAMADDR_5        : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000101&amp;quot;;&lt;br /&gt;
        constant ROTARYID_5       : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000101&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        constant RAMADDR_6        : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000110&amp;quot;;&lt;br /&gt;
        constant ROTARYID_6       : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000110&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        constant RAMADDR_7        : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000111&amp;quot;;&lt;br /&gt;
        constant ROTARYID_7       : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00000111&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        constant RAMADDR_8        : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00001000&amp;quot;;&lt;br /&gt;
        constant ROTARYID_8       : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;00001000&amp;quot;;&lt;br /&gt;
     -- these must be here or error. must translate output to&lt;br /&gt;
        -- sig, then to output. can't directly go&lt;br /&gt;
        -- from output to output&lt;br /&gt;
&lt;br /&gt;
        signal ROT1OUT                  : STD_LOGIC_VECTOR(15 downto 0);&lt;br /&gt;
        signal ROT2OUT                  : STD_LOGIC_VECTOR(15 downto 0);&lt;br /&gt;
        --must be set to zero (or unequal to rot1out) at start&lt;br /&gt;
        signal ROT1PREV         : STD_LOGIC_VECTOR(15 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
&lt;br /&gt;
        type t_ROTOUT is array (1 to 100) of std_logic_vector(15 downto 0);&lt;br /&gt;
        signal r_ROTO : t_ROTOUT := (others =&amp;gt; (others =&amp;gt; '0'));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        signal wea                        : STD_LOGIC_VECTOR(0 DOWNTO 0)  := &amp;quot;0&amp;quot;;&lt;br /&gt;
        signal addra              : STD_LOGIC_VECTOR(7 DOWNTO 0)  := (others =&amp;gt; '0');&lt;br /&gt;
        signal dina                       : STD_LOGIC_VECTOR(15 DOWNTO 0) := (others =&amp;gt; '0');&lt;br /&gt;
        signal douta              : STD_LOGIC_VECTOR(15 DOWNTO 0) := (others =&amp;gt; '0');&lt;br /&gt;
        signal ena                        : STD_LOGIC                     := '0';&lt;br /&gt;
        signal DINAPROXY          : STD_LOGIC_VECTOR(15 DOWNTO 0) := (others =&amp;gt; '0');&lt;br /&gt;
&lt;br /&gt;
        signal web                        : STD_LOGIC_VECTOR(0 DOWNTO 0)  := &amp;quot;0&amp;quot;;&lt;br /&gt;
        signal addrb              : STD_LOGIC_VECTOR(7 DOWNTO 0)  := (others =&amp;gt; '0');&lt;br /&gt;
        signal dinb                  : STD_LOGIC_VECTOR(15 DOWNTO 0) := (others =&amp;gt; '0');&lt;br /&gt;
        signal doutb              : STD_LOGIC_VECTOR(15 DOWNTO 0) := (others =&amp;gt; '0');&lt;br /&gt;
        signal enb                        : STD_LOGIC                     := '0';&lt;br /&gt;
        signal ADDRAPROXY   : STD_LOGIC_VECTOR(7 DOWNTO 0)  := &amp;quot;00000001&amp;quot;;&lt;br /&gt;
        signal ADDRBPROXY   : STD_LOGIC_VECTOR(7 DOWNTO 0)  := (others =&amp;gt; '0');&lt;br /&gt;
        signal ADDR_RD_COUNTER   : STD_LOGIC_VECTOR(7 DOWNTO 0)  := (others =&amp;gt; '0');&lt;br /&gt;
&lt;br /&gt;
        signal WRITE_COUNTER1  : STD_LOGIC_VECTOR(12 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
        signal WRITE_COUNTER2 : STD_LOGIC_VECTOR(12 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
&lt;br /&gt;
        signal COUNTER        : STD_LOGIC_VECTOR(29 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
        signal READOUT       : STD_LOGIC_VECTOR(15 downto 0) := (others =&amp;gt; '0'); --&amp;quot;1111111010110100&amp;quot;; --default data to test uart&lt;br /&gt;
        signal BUSY          : STD_LOGIC                     := '0';&lt;br /&gt;
        signal UART_COUNTER  : STD_LOGIC_VECTOR(12 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
        signal UART_COUNTER2 : STD_LOGIC_VECTOR(12 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
        signal UART_COUNTER3 : STD_LOGIC_VECTOR(12 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
        signal RAM_COUNTER   : STD_LOGIC_VECTOR(29 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
        --signal UART_COUNTER_SPACER : STD_LOGIC_VECTOR(12 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
        --signal UART_COUNTER4 : STD_LOGIC_VECTOR(12 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
   --signal UART_OFFON    : STD_LOGIC                     := '0';&lt;br /&gt;
&lt;br /&gt;
---variable ROT_INCREASE : integer range 0 to 255 := 1;&lt;br /&gt;
        signal ROT_INCREASE : STD_LOGIC_VECTOR(7 downto 0) := x&amp;quot;01&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        --signal UARTOUT    : STD_LOGIC_VECTOR(15 downto        0) := &amp;quot;1111111010110100&amp;quot;; --default data to test uart without reading rotary&lt;br /&gt;
        --signal UARTOUT    : STD_LOGIC_VECTOR(29 downto 0) := &amp;quot;111110101101001111111010110100&amp;quot;; --Y then Z -- WORKS&lt;br /&gt;
        signal UARTOUT      : STD_LOGIC_VECTOR(199 downto 0) := (others =&amp;gt; '1');&lt;br /&gt;
&lt;br /&gt;
        --debugging uart&lt;br /&gt;
        --signal UARTOUT    : STD_LOGIC_VECTOR(29 downto 0) := &amp;quot;101010101010101010101010101010&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- must map all 100 instances of rotary module here&lt;br /&gt;
--TODO&lt;br /&gt;
-- input a value for rotary (i.e. rotary1= 1, as 8 bit value)&lt;br /&gt;
-- output that value somewhere else, and put it into uart&lt;br /&gt;
-- output the value for rotary plus or minus into&lt;br /&gt;
-- a specific 8 bit register. output into uart when called.&lt;br /&gt;
-- After uart reads, erase these banks.&lt;br /&gt;
&lt;br /&gt;
-- OR, need to find how to write to RAM. Then I need to&lt;br /&gt;
-- programatically write the rotary to a specific ram register&lt;br /&gt;
-- then read the registers&lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
Inst_DUALRAM: DUALRAM&lt;br /&gt;
  PORT MAP (&lt;br /&gt;
    clka =&amp;gt; clk,&lt;br /&gt;
    ena =&amp;gt; ena,&lt;br /&gt;
    wea =&amp;gt; wea,&lt;br /&gt;
    addra =&amp;gt; addra,&lt;br /&gt;
    dina =&amp;gt; dina,&lt;br /&gt;
    douta =&amp;gt; douta,&lt;br /&gt;
  clkb =&amp;gt; clk,&lt;br /&gt;
    enb =&amp;gt; enb,&lt;br /&gt;
    web =&amp;gt; web,&lt;br /&gt;
    addrb =&amp;gt; addrb,&lt;br /&gt;
    dinb =&amp;gt; dinb,&lt;br /&gt;
    doutb =&amp;gt; doutb&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inst_ROTARY_1: rotary&lt;br /&gt;
        GENERIC MAP(&lt;br /&gt;
        RAMADDR =&amp;gt; RAMADDR_1,&lt;br /&gt;
        ROTARYID   =&amp;gt; ROTARYID_1&lt;br /&gt;
        )&lt;br /&gt;
        PORT MAP(&lt;br /&gt;
                ROT =&amp;gt; ROT,&lt;br /&gt;
                LED =&amp;gt; open,&lt;br /&gt;
                clk =&amp;gt; clk,&lt;br /&gt;
                DATAOUT =&amp;gt; r_ROTO(1)&lt;br /&gt;
                );&lt;br /&gt;
&lt;br /&gt;
Inst_ROTARY_2: rotary&lt;br /&gt;
        GENERIC MAP(&lt;br /&gt;
        RAMADDR =&amp;gt; RAMADDR_2,&lt;br /&gt;
        ROTARYID   =&amp;gt; ROTARYID_2&lt;br /&gt;
        )&lt;br /&gt;
        PORT MAP(&lt;br /&gt;
                ROT =&amp;gt; ROT2,&lt;br /&gt;
                LED =&amp;gt; open,&lt;br /&gt;
                clk =&amp;gt; clk,&lt;br /&gt;
                DATAOUT =&amp;gt; r_ROTO(2)&lt;br /&gt;
        );&lt;br /&gt;
&lt;br /&gt;
Inst_ROTARY_3: rotary&lt;br /&gt;
        GENERIC MAP(&lt;br /&gt;
        RAMADDR =&amp;gt; RAMADDR_3,&lt;br /&gt;
        ROTARYID   =&amp;gt; ROTARYID_3&lt;br /&gt;
        )&lt;br /&gt;
        PORT MAP(&lt;br /&gt;
                ROT =&amp;gt; ROT3,&lt;br /&gt;
                LED =&amp;gt; open,&lt;br /&gt;
                clk =&amp;gt; clk,&lt;br /&gt;
                DATAOUT =&amp;gt; r_ROTO(3)&lt;br /&gt;
        );&lt;br /&gt;
&lt;br /&gt;
Inst_ROTARY_4: rotary&lt;br /&gt;
        GENERIC MAP(&lt;br /&gt;
        RAMADDR =&amp;gt; RAMADDR_4,&lt;br /&gt;
        ROTARYID   =&amp;gt; ROTARYID_4&lt;br /&gt;
        )&lt;br /&gt;
        PORT MAP(&lt;br /&gt;
                ROT =&amp;gt; ROT4,&lt;br /&gt;
                LED =&amp;gt; open,&lt;br /&gt;
                clk =&amp;gt; clk,&lt;br /&gt;
                DATAOUT =&amp;gt; r_ROTO(4)&lt;br /&gt;
        );&lt;br /&gt;
&lt;br /&gt;
Inst_ROTARY_5: rotary&lt;br /&gt;
        GENERIC MAP(&lt;br /&gt;
        RAMADDR =&amp;gt; RAMADDR_5,&lt;br /&gt;
        ROTARYID   =&amp;gt; ROTARYID_5&lt;br /&gt;
        )&lt;br /&gt;
        PORT MAP(&lt;br /&gt;
                ROT =&amp;gt; ROT5,&lt;br /&gt;
                LED =&amp;gt; open,&lt;br /&gt;
                clk =&amp;gt; clk,&lt;br /&gt;
                DATAOUT =&amp;gt; r_ROTO(5)&lt;br /&gt;
        );&lt;br /&gt;
Inst_ROTARY_6: rotary&lt;br /&gt;
        GENERIC MAP(&lt;br /&gt;
        RAMADDR =&amp;gt; RAMADDR_6,&lt;br /&gt;
        ROTARYID   =&amp;gt; ROTARYID_6&lt;br /&gt;
        )&lt;br /&gt;
        PORT MAP(&lt;br /&gt;
                ROT =&amp;gt; ROT6,&lt;br /&gt;
                LED =&amp;gt; open,&lt;br /&gt;
                clk =&amp;gt; clk,&lt;br /&gt;
                DATAOUT =&amp;gt; r_ROTO(6)&lt;br /&gt;
        );&lt;br /&gt;
&lt;br /&gt;
Inst_ROTARY_7: rotary&lt;br /&gt;
        GENERIC MAP(&lt;br /&gt;
        RAMADDR =&amp;gt; RAMADDR_7,&lt;br /&gt;
        ROTARYID   =&amp;gt; ROTARYID_7&lt;br /&gt;
        )&lt;br /&gt;
        PORT MAP(&lt;br /&gt;
                ROT =&amp;gt; ROT7,&lt;br /&gt;
                LED =&amp;gt; open,&lt;br /&gt;
                clk =&amp;gt; clk,&lt;br /&gt;
                DATAOUT =&amp;gt; r_ROTO(7)&lt;br /&gt;
        );&lt;br /&gt;
&lt;br /&gt;
Inst_ROTARY_8: rotary&lt;br /&gt;
        GENERIC MAP(&lt;br /&gt;
        RAMADDR =&amp;gt; RAMADDR_8,&lt;br /&gt;
        ROTARYID   =&amp;gt; ROTARYID_8&lt;br /&gt;
        )&lt;br /&gt;
        PORT MAP(&lt;br /&gt;
                ROT =&amp;gt; ROT8,&lt;br /&gt;
                LED =&amp;gt; open,&lt;br /&gt;
                clk =&amp;gt; clk,&lt;br /&gt;
                DATAOUT =&amp;gt; r_ROTO(8)&lt;br /&gt;
        );&lt;br /&gt;
-- LEDWATCH &amp;lt;=READOUT(7 downto 0);  --works&lt;br /&gt;
-- this means i'm passing rotary values succesfully through&lt;br /&gt;
-- to ROT1OUT and the rotary ID as well.&lt;br /&gt;
&lt;br /&gt;
--LEDWATCH &amp;lt;= READOUT(7 downto 0);&lt;br /&gt;
&lt;br /&gt;
--put everything in a process because why not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--try this out of the clock for starters...&lt;br /&gt;
--RAMWRITE: process(r_ROTO(1))&lt;br /&gt;
----variable ROT_INCREASE : integer range 0 to 255 := 1;&lt;br /&gt;
--begin&lt;br /&gt;
--&lt;br /&gt;
--                                      DINAPROXY  &amp;lt;= ROT1OUT;&lt;br /&gt;
--                                      ADDRAPROXY &amp;lt;= RAMADDR_1;&lt;br /&gt;
--&lt;br /&gt;
----            --if rising_edge(clk) then       this breaks things&lt;br /&gt;
----                                    ROT_INCREASE &amp;lt;= x&amp;quot;01&amp;quot;;&lt;br /&gt;
----                                    --RAMADDR_CURRENT &amp;lt;= std_logic_vector(to_unsigned(ROT_INCREASE, RAMADDR_CURRENT'length));&lt;br /&gt;
----                                    RAMADDR_CURRENT &amp;lt;= ROT_INCREASE;&lt;br /&gt;
----                                    --write to ram&lt;br /&gt;
----                                    dina  &amp;lt;= r_ROTO(to_integer(unsigned(ROT_INCREASE)));&lt;br /&gt;
----                                    ADDRAPROXY &amp;lt;= RAMADDR_CURRENT;&lt;br /&gt;
----                                    --ROT_INCREASE := ROT_INCREASE + 1;&lt;br /&gt;
----            --end if;&lt;br /&gt;
--&lt;br /&gt;
--&lt;br /&gt;
----                    ROT_INCREASE &amp;lt;= x&amp;quot;00&amp;quot;;&lt;br /&gt;
----                            if ROT_INCREASE = x&amp;quot;00&amp;quot; then&lt;br /&gt;
----                                    ROT_INCREASE &amp;lt;= x&amp;quot;01&amp;quot;;&lt;br /&gt;
----                                    RAMADDR_CURRENT &amp;lt;= ROT_INCREASE;&lt;br /&gt;
----                                    dina  &amp;lt;= r_ROTO(to_integer(unsigned(ROT_INCREASE)));&lt;br /&gt;
----                                    ADDRAPROXY &amp;lt;= RAMADDR_CURRENT;&lt;br /&gt;
----                            elsif ROT_INCREASE = x&amp;quot;01&amp;quot; then&lt;br /&gt;
----                                    ROT_INCREASE &amp;lt;= x&amp;quot;02&amp;quot;;&lt;br /&gt;
----                                    RAMADDR_CURRENT &amp;lt;= ROT_INCREASE;&lt;br /&gt;
----                                    dina  &amp;lt;= r_ROTO(to_integer(unsigned(ROT_INCREASE)));&lt;br /&gt;
----                                    ADDRAPROXY &amp;lt;= RAMADDR_CURRENT;&lt;br /&gt;
----                            elsif ROT_INCREASE = x&amp;quot;02&amp;quot; then&lt;br /&gt;
----                                    ROT_INCREASE &amp;lt;= x&amp;quot;00&amp;quot;;&lt;br /&gt;
----                            end if;&lt;br /&gt;
----&lt;br /&gt;
----                    ROT_INCREASE &amp;lt;= x&amp;quot;00&amp;quot;;&lt;br /&gt;
----                            if ROT_INCREASE = x&amp;quot;00&amp;quot; then&lt;br /&gt;
----                                    ROT_INCREASE &amp;lt;= x&amp;quot;01&amp;quot;;&lt;br /&gt;
----                                    RAMADDR_CURRENT &amp;lt;= RAMADDR_1;&lt;br /&gt;
----                                    dina  &amp;lt;= r_ROTO(1);&lt;br /&gt;
----                                    ADDRAPROXY &amp;lt;= RAMADDR_CURRENT;&lt;br /&gt;
------                          elsif ROT_INCREASE = x&amp;quot;01&amp;quot; then&lt;br /&gt;
------                                  ROT_INCREASE &amp;lt;= x&amp;quot;02&amp;quot;;&lt;br /&gt;
------                                  RAMADDR_CURRENT &amp;lt;= RAMADDR_2;&lt;br /&gt;
------                                  dina  &amp;lt;= r_ROTO(2);&lt;br /&gt;
------                                  ADDRAPROXY &amp;lt;= RAMADDR_CURRENT;&lt;br /&gt;
----                            elsif ROT_INCREASE = x&amp;quot;01&amp;quot; then&lt;br /&gt;
----                                    ROT_INCREASE &amp;lt;= x&amp;quot;00&amp;quot;;&lt;br /&gt;
----                            end if;&lt;br /&gt;
----&lt;br /&gt;
--&lt;br /&gt;
--                              --ROT_INCREASE := ROT_INCREASE + 1;&lt;br /&gt;
--&lt;br /&gt;
----                            for x in 1 to 50 loop&lt;br /&gt;
----                                    ROT_INCREASE := 2;&lt;br /&gt;
----                                    RAMADDR_CURRENT &amp;lt;= std_logic_vector(to_unsigned(ROT_INCREASE, RAMADDR_CURRENT'length));&lt;br /&gt;
----                                    --write to ram&lt;br /&gt;
----                                    dina  &amp;lt;= r_ROTO(ROT_INCREASE);&lt;br /&gt;
----                                    ADDRAPROXY &amp;lt;= RAMADDR_CURRENT;&lt;br /&gt;
----                                    --ROT_INCREASE := ROT_INCREASE + 1;&lt;br /&gt;
----                            end loop;&lt;br /&gt;
--&lt;br /&gt;
--&lt;br /&gt;
--                      --end if;&lt;br /&gt;
--&lt;br /&gt;
--      --maybe just add rot1out to a queue? or variable&lt;br /&gt;
--              -- put it in its own process instead of clk?&lt;br /&gt;
--&lt;br /&gt;
--&lt;br /&gt;
--              -- is this if statement needed here? I don't think so.&lt;br /&gt;
--              -- I think the process(ROT1OUT) assumes it will run&lt;br /&gt;
--              -- should anything change on ROT1OUT. or i could do an if with a explicit change detected i think&lt;br /&gt;
--              --if ROT1PREV /= ROT1OUT and BUSY = '0' then --put in fms&lt;br /&gt;
--              --if BUSY = '0' then --if some aren't detected, try removing busy...&lt;br /&gt;
--                      --BUSY &amp;lt;= '1';&lt;br /&gt;
--&lt;br /&gt;
--                      --for loop: upon a change in anything, loop&lt;br /&gt;
--                      --through all values, and write to block ram&lt;br /&gt;
--                      --using variables&lt;br /&gt;
--&lt;br /&gt;
--&lt;br /&gt;
--                      --ADDRBPROXY &amp;lt;= RAMADDR_CURRENT;&lt;br /&gt;
--&lt;br /&gt;
----            ROT1PREV &amp;lt;= doutb; -- this needs to be somewhere else&lt;br /&gt;
----                    READOUT  &amp;lt;= doutb; -- RAM reads are all done at once&lt;br /&gt;
--                                                                       -- in main read loop&lt;br /&gt;
--                      --BUSY &amp;lt;= '0';&lt;br /&gt;
--              --end if;&lt;br /&gt;
--&lt;br /&gt;
--end process;&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
--ALL RAM writes must be in same processper mikes electiceev forum&lt;br /&gt;
&lt;br /&gt;
--RAMWRITE2: process(r_ROTO(2))&lt;br /&gt;
--begin&lt;br /&gt;
--                                      DINAPROXY  &amp;lt;= ROT2OUT;&lt;br /&gt;
--                                      ADDRAPROXY &amp;lt;= RAMADDR_2;&lt;br /&gt;
--end process;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
rotarytop: process (clk)&lt;br /&gt;
        begin&lt;br /&gt;
        if rising_edge(clk) then&lt;br /&gt;
&lt;br /&gt;
        --if rot1out goes to dinaproxy (which is not connected&lt;br /&gt;
        --to anything) then nothing happens. I htink it was over&lt;br /&gt;
        --writing the zs&lt;br /&gt;
--this works&lt;br /&gt;
        if WRITE_COUNTER1     &amp;lt; 100000 then&lt;br /&gt;
                ADDRAPROXY     &amp;lt;= x&amp;quot;8C&amp;quot;;&lt;br /&gt;
                WRITE_COUNTER1 &amp;lt;= WRITE_COUNTER1 + 1;&lt;br /&gt;
        elsif WRITE_COUNTER1 &amp;lt; 8000000 then&lt;br /&gt;
                dina           &amp;lt;= r_ROTO(to_integer(unsigned(ROT_INCREASE)));&lt;br /&gt;
                ADDRAPROXY     &amp;lt;= ROT_INCREASE;&lt;br /&gt;
                WRITE_COUNTER1 &amp;lt;= WRITE_COUNTER1 + 1;&lt;br /&gt;
        elsif WRITE_COUNTER1 = 10000000 then&lt;br /&gt;
                ROT_INCREASE   &amp;lt;= ROT_INCREASE + 1;&lt;br /&gt;
                WRITE_COUNTER1 &amp;lt;= (others =&amp;gt; '0');&lt;br /&gt;
        else&lt;br /&gt;
                WRITE_COUNTER1 &amp;lt;= WRITE_COUNTER1 + 1;&lt;br /&gt;
        end if;&lt;br /&gt;
&lt;br /&gt;
        if ROT_INCREASE &amp;gt; x&amp;quot;09&amp;quot; then&lt;br /&gt;
                ROT_INCREASE &amp;lt;= x&amp;quot;01&amp;quot;;&lt;br /&gt;
        end if;&lt;br /&gt;
--      if ROT_INCREASE = x&amp;quot;00&amp;quot; then&lt;br /&gt;
--              ROT_INCREASE &amp;lt;= x&amp;quot;01&amp;quot;;&lt;br /&gt;
--      end if; --NOT NEEDED. Be careful NOT to set ROT_INCREASE&lt;br /&gt;
                        -- TO ZERO ON STARTUP. SET TO x&amp;quot;01&amp;quot;.&lt;br /&gt;
   --this works&lt;br /&gt;
--      if WRITE_COUNTER2 &amp;lt; 2 then&lt;br /&gt;
--              WRITE_COUNTER1 &amp;lt;= WRITE_COUNTER1 + 1;&lt;br /&gt;
--              ADDRAPROXY     &amp;lt;= x&amp;quot;8C&amp;quot;;&lt;br /&gt;
--              ROT_INCREASE   &amp;lt;= x&amp;quot;01&amp;quot;;&lt;br /&gt;
--      elsif WRITE_COUNTER2 &amp;lt; 10 then&lt;br /&gt;
--              dina           &amp;lt;= r_ROTO(to_integer(unsigned(ROT_INCREASE)));&lt;br /&gt;
--              ADDRAPROXY     &amp;lt;= ROT_INCREASE;&lt;br /&gt;
--              WRITE_COUNTER1 &amp;lt;= WRITE_COUNTER1 + 1;&lt;br /&gt;
--      --use elsif here to keep writes exclusive&lt;br /&gt;
--      elsif WRITE_COUNTER2 &amp;lt; 12 then&lt;br /&gt;
--              ADDRAPROXY     &amp;lt;= x&amp;quot;8C&amp;quot;;&lt;br /&gt;
--              ROT_INCREASE   &amp;lt;= x&amp;quot;02&amp;quot;;&lt;br /&gt;
--              WRITE_COUNTER1 &amp;lt;= WRITE_COUNTER1 + 1;&lt;br /&gt;
--      elsif WRITE_COUNTER2 &amp;lt; 25 then&lt;br /&gt;
--              dina           &amp;lt;= r_ROTO(to_integer(unsigned(ROT_INCREASE)));&lt;br /&gt;
--              ADDRAPROXY     &amp;lt;= ROT_INCREASE;&lt;br /&gt;
--              WRITE_COUNTER1 &amp;lt;= WRITE_COUNTER1 + 1;&lt;br /&gt;
--      elsif WRITE_COUNTER2 &amp;lt; 30 then&lt;br /&gt;
--              ADDRAPROXY     &amp;lt;= x&amp;quot;8C&amp;quot;;&lt;br /&gt;
--              WRITE_COUNTER1 &amp;lt;= WRITE_COUNTER1 + 1;&lt;br /&gt;
--      else&lt;br /&gt;
--              WRITE_COUNTER1 &amp;lt;= WRITE_COUNTER1 + 1;&lt;br /&gt;
--      end if;&lt;br /&gt;
--&lt;br /&gt;
--      if WRITE_COUNTER1 &amp;gt; 1000000 then&lt;br /&gt;
--              WRITE_COUNTER2 &amp;lt;= WRITE_COUNTER2 + 1;&lt;br /&gt;
--              WRITE_COUNTER1 &amp;lt;= (others =&amp;gt; '0');&lt;br /&gt;
--      end if;&lt;br /&gt;
--      if WRITE_COUNTER2 &amp;gt; 30 then&lt;br /&gt;
--              WRITE_COUNTER2 &amp;lt;= (others =&amp;gt; '0');&lt;br /&gt;
--      end if;&lt;br /&gt;
&lt;br /&gt;
--      if WRITE_COUNTER2 = 10 then&lt;br /&gt;
--                              --write to ram&lt;br /&gt;
--                              dina  &amp;lt;= ROT1OUT;&lt;br /&gt;
--                              ADDRAPROXY &amp;lt;= RAMADDR_1;&lt;br /&gt;
--                              --RAMADDR_CURRENT &amp;lt;= RAMADDR_CURRENT + 1;&lt;br /&gt;
--                      end if;&lt;br /&gt;
--&lt;br /&gt;
--                      if WRITE_COUNTER1 = 500 then&lt;br /&gt;
--&lt;br /&gt;
--                                      WRITE_COUNTER2 &amp;lt;= WRITE_COUNTER2 + 1;&lt;br /&gt;
--                              else&lt;br /&gt;
--                                      WRITE_COUNTER1 &amp;lt;= WRITE_COUNTER1 + 1;&lt;br /&gt;
--                              end if;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--                                              ALWAYS                          --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        ena &amp;lt;= '1';                             -- ram enable high always&lt;br /&gt;
        enb &amp;lt;= '1';&lt;br /&gt;
        wea &amp;lt;= &amp;quot;1&amp;quot;;                             -- write port, never reads&lt;br /&gt;
        web &amp;lt;= &amp;quot;0&amp;quot;;                             -- read port, never writes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        addra &amp;lt;= ADDRAPROXY;&lt;br /&gt;
        --addrb &amp;lt;= ADDRBPROXY;&lt;br /&gt;
        TX(0) &amp;lt;= UARTOUT(0);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--                                              DEBUG                                   --&lt;br /&gt;
        --LEDWATCH &amp;lt;= READOUT(7 downto 0);&lt;br /&gt;
&lt;br /&gt;
        --check values are as expected&lt;br /&gt;
        --LEDWATCH &amp;lt;= ROT1PREV(7 downto 0); --rot1prev WORKING&lt;br /&gt;
        --LEDWATCH &amp;lt;= ROT1OUT(7 downto 0);       --rot1out WORKING only 8&lt;br /&gt;
        --LEDWATCH &amp;lt;= doutb(7 downto 0);&lt;br /&gt;
        --LEDWATCH(7 downto 4) &amp;lt;= READOUT(3 downto 0);&lt;br /&gt;
--      LED(0) &amp;lt;= r_ROTO(1)(0); --green&lt;br /&gt;
--      LED(1) &amp;lt;= r_ROTO(2)(0); --red&lt;br /&gt;
--      LED(2) &amp;lt;= ADDRAPROXY(0);&lt;br /&gt;
--      LED(3) &amp;lt;= WEA(0);&lt;br /&gt;
--      LED(4) &amp;lt;= ROT_INCREASE(0);      --green&lt;br /&gt;
--      LED(5) &amp;lt;= ROT_INCREASE(1); --red&lt;br /&gt;
--      LED(6) &amp;lt;= ROT_INCREASE(2);&lt;br /&gt;
--      LED(7) &amp;lt;= ROT_INCREASE(3);&lt;br /&gt;
&lt;br /&gt;
        --LED(0) &amp;lt;= r_ROTO(1)(0);       --green&lt;br /&gt;
&lt;br /&gt;
        --seems to be skipping on two sometimes&lt;br /&gt;
        --LED    &amp;lt;= r_ROTO(2)(7 downto 0);&lt;br /&gt;
&lt;br /&gt;
        LED    &amp;lt;= r_ROTO(3)(7 downto 0);&lt;br /&gt;
&lt;br /&gt;
--case state is&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--                                      idle state                                      --&lt;br /&gt;
--              when state_start =&amp;gt;&lt;br /&gt;
                -- ROT1PREV starts as zero, state_RAM as soon as ROT1OUT change&lt;br /&gt;
----            if ROT1PREV /= ROT1OUT and BUSY = '0' and UARTOFF = '0' then&lt;br /&gt;
--                      state &amp;lt;= state_RAM;&lt;br /&gt;
--              else&lt;br /&gt;
--                      state &amp;lt;= state_start;&lt;br /&gt;
--              end if;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------- RAM WRITE &amp;amp; READ ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                -- if rot1out has a change?&lt;br /&gt;
                -- put it in its own process instead of clk?&lt;br /&gt;
--              if ROT1PREV /= ROT1OUT and BUSY = '0' then --put in fms&lt;br /&gt;
--&lt;br /&gt;
--                      BUSY &amp;lt;= '1';&lt;br /&gt;
--&lt;br /&gt;
--                      dina  &amp;lt;= ROT1OUT;&lt;br /&gt;
--                      addra &amp;lt;= RAMADDR_1;&lt;br /&gt;
--&lt;br /&gt;
--                      RAMADDR_CURRENT &amp;lt;= RAMADDR_1;&lt;br /&gt;
--                      addrb &amp;lt;= RAMADDR_1;&lt;br /&gt;
--&lt;br /&gt;
--              ROT1PREV &amp;lt;= doutb;&lt;br /&gt;
--                      --in here&lt;br /&gt;
--                      -- then write new data output to uart&lt;br /&gt;
--                      -- put loops in to keep it to appropriate baud&lt;br /&gt;
--                      -- use a for loop (of say 1000 times)&lt;br /&gt;
--                      -- and a counter that counts up, then down&lt;br /&gt;
--                      -- as delay with an outer for loop&lt;br /&gt;
--                      -- that shifts bits out once every loop (nested loops)&lt;br /&gt;
--&lt;br /&gt;
--&lt;br /&gt;
--                      BUSY &amp;lt;= '0';&lt;br /&gt;
--              end if;&lt;br /&gt;
&lt;br /&gt;
--                                      RAM READ                                        --&lt;br /&gt;
-- This will be separate process / module&lt;br /&gt;
-- that will read constantly from all memory addresses&lt;br /&gt;
-- and output the results to UART pin. need to time correctly.&lt;br /&gt;
&lt;br /&gt;
--      if RAM_COUNTER = 1000000 then&lt;br /&gt;
--&lt;br /&gt;
----            addrb    &amp;lt;= RAMADDR_CURRENT;&lt;br /&gt;
----            READOUT  &amp;lt;= doutb;&lt;br /&gt;
--&lt;br /&gt;
--                      -- &amp;quot;0000 0000 0000 0000 0000 0000 0000 00&amp;quot;&lt;br /&gt;
--              --  xxxxxx8   5    1sxx xxxx x8   5    1s&lt;br /&gt;
--              --&lt;br /&gt;
----            UARTOUT(0)                               &amp;lt;= '0';&lt;br /&gt;
----            UARTOUT(8 downto 1)   &amp;lt;= READOUT(7 downto 0);&lt;br /&gt;
----            UARTOUT(15 downto 9)  &amp;lt;= (others =&amp;gt; '1'); --spacing to allow settling&lt;br /&gt;
----            UARTOUT(16)           &amp;lt;= '0';&lt;br /&gt;
----            UARTOUT(24 downto 17) &amp;lt;= READOUT(15 downto 8);&lt;br /&gt;
----            UARTOUT(29 downto 25) &amp;lt;= (others =&amp;gt; '1');&lt;br /&gt;
--              RAM_COUNTER &amp;lt;= (others =&amp;gt; '0');&lt;br /&gt;
--      else&lt;br /&gt;
--              RAM_COUNTER &amp;lt;= RAM_COUNTER + 1;&lt;br /&gt;
--&lt;br /&gt;
--      end if;&lt;br /&gt;
      -- BEWARE&lt;br /&gt;
                -- When using jumper leads with uart&lt;br /&gt;
                -- you can't go over like a few inches.&lt;br /&gt;
                -- or signal fails. BEWARE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--                                      UART                                            --&lt;br /&gt;
&lt;br /&gt;
--                                      SHIFTING                                                --&lt;br /&gt;
&lt;br /&gt;
-- We always shift whatever is in the UART register out&lt;br /&gt;
-- When we are idling, we fill UART register with 1's (idle high&lt;br /&gt;
-- is normal). Every so often (further down), we read an address&lt;br /&gt;
-- and output the value into UART register IF uart is on.&lt;br /&gt;
-- Otherwise nothing happens.&lt;br /&gt;
&lt;br /&gt;
                   -- I think timing is wrong on this. need a scope.&lt;br /&gt;
              --if OUTPUTHIGH = '1' then --this broke things&lt;br /&gt;
                        --if UART_COUNTER = 3333 then --9600&lt;br /&gt;
                        --if UART_COUNTER = 278 then -- 115200 --maybe too fast. maybe not.&lt;br /&gt;
                        --if UART_OFFON = '0' then --this spaces out groups of bytes. not what I'm intending&lt;br /&gt;
                        --uart offon didn't work.&lt;br /&gt;
                                if UART_COUNTER = 555 then -- 57600 -- pretty good.&lt;br /&gt;
                                                --shift bit over every 3332 cycles or 9600 bits per second&lt;br /&gt;
                                                UARTOUT &amp;lt;= UARTOUT(0) &amp;amp; UARTOUT(199 downto 1);&lt;br /&gt;
                                                UART_COUNTER &amp;lt;= (others =&amp;gt; '0');&lt;br /&gt;
                                                UART_COUNTER3 &amp;lt;= UART_COUNTER3 + 1;&lt;br /&gt;
                                                --UART_COUNTER4 &amp;lt;= UART_COUNTER4 + 1; --with uartoffon&lt;br /&gt;
                                else&lt;br /&gt;
                                        UART_COUNTER &amp;lt;= UART_COUNTER + 1;&lt;br /&gt;
                                end if;&lt;br /&gt;
                        --end if; --with uart offon&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--                      --shift one sequence, then stop&lt;br /&gt;
--                      if UART_COUNTER4 = 1 then&lt;br /&gt;
--                              UART_OFFON &amp;lt;= '1';&lt;br /&gt;
--                      end if;&lt;br /&gt;
--&lt;br /&gt;
--                      --idle high while uart_offon is high&lt;br /&gt;
--                      if UART_OFFON = '1' then&lt;br /&gt;
--                              UARTOUT &amp;lt;= (others =&amp;gt; '1');&lt;br /&gt;
--                      end if;&lt;br /&gt;
&lt;br /&gt;
                -- for 9600 baud, or 3333 cycles&lt;br /&gt;
                --&lt;br /&gt;
                --approach 1&lt;br /&gt;
--                      if UART_COUNTER2 = 99990 then&lt;br /&gt;
--                              addrb    &amp;lt;= RAMADDR_CURRENT;&lt;br /&gt;
--                              READOUT  &amp;lt;= doutb;&lt;br /&gt;
--                              UARTOUT(0)                               &amp;lt;= '0';&lt;br /&gt;
--                              UARTOUT(8 downto 1)   &amp;lt;= READOUT(7 downto 0);&lt;br /&gt;
--                              UARTOUT(15 downto 9)  &amp;lt;= (others =&amp;gt; '1'); --spacing to allow settling&lt;br /&gt;
--                              UARTOUT(16)           &amp;lt;= '0';&lt;br /&gt;
--                              UARTOUT(24 downto 17) &amp;lt;= READOUT(15 downto 8);&lt;br /&gt;
--                              UARTOUT(29 downto 25) &amp;lt;= (others =&amp;gt; '1');&lt;br /&gt;
--                              UART_COUNTER2  &amp;lt;= (others =&amp;gt; '0');&lt;br /&gt;
--                              UART_COUNTER &amp;lt;= (others =&amp;gt; '0');&lt;br /&gt;
--                      else&lt;br /&gt;
--                              UART_COUNTER2  &amp;lt;= UART_COUNTER2 + 1;&lt;br /&gt;
--                      end if;&lt;br /&gt;
               RAM READ                                        --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- APPROACH 1&lt;br /&gt;
-- read all memory addresses, at the speed of if uart counter3&lt;br /&gt;
-- equals 90.&lt;br /&gt;
-- for i in 0 to 99 loop&lt;br /&gt;
-- addrb &amp;lt;= i;&lt;br /&gt;
-- READOUT &amp;lt;= doutb;&lt;br /&gt;
-- end loop;&lt;br /&gt;
&lt;br /&gt;
-- APPROACH 2&lt;br /&gt;
-- use counter&lt;br /&gt;
-- if uartcOunter3=90 then&lt;br /&gt;
-- addrb &amp;lt;= ADDRCOUNTER (starts at zero)&lt;br /&gt;
-- READOUT &amp;lt;= doutb&lt;br /&gt;
-- ADDRCOUNTER &amp;lt;= ADDRCOUNTER + 1;&lt;br /&gt;
        -- if ADDRCOUNTER = 100 then&lt;br /&gt;
        -- ADDRCOUNTER &amp;lt;= (others to 0)&lt;br /&gt;
        -- end if&lt;br /&gt;
-- end if;&lt;br /&gt;
&lt;br /&gt;
--approach 2 for ram read                 --read ram for every three txout&lt;br /&gt;
                        if UART_COUNTER3 = 199 then --after one sequence&lt;br /&gt;
                                --if UART_OFFON = '0' then --only do if on&lt;br /&gt;
&lt;br /&gt;
                                        addrb    &amp;lt;= ADDR_RD_COUNTER;&lt;br /&gt;
                                        READOUT  &amp;lt;= doutb;&lt;br /&gt;
                                        ADDR_RD_COUNTER &amp;lt;= ADDR_RD_COUNTER + 1;&lt;br /&gt;
&lt;br /&gt;
                                        -- send two bits. one id, one value&lt;br /&gt;
                                        --UARTOUT(0)                             &amp;lt;= '0';&lt;br /&gt;
                                        --UARTOUT(8 downto 1)   &amp;lt;= READOUT(7 downto 0);&lt;br /&gt;
                                        --UARTOUT(15 downto 9)  &amp;lt;= (others =&amp;gt; '1'); --spacing to allow settling&lt;br /&gt;
                                        --UARTOUT(16)           &amp;lt;= '0';&lt;br /&gt;
                                        --UARTOUT(24 downto 17) &amp;lt;= READOUT(15 downto 8);&lt;br /&gt;
                                        --UARTOUT(29 downto 25) &amp;lt;= (others =&amp;gt; '1');&lt;br /&gt;
  -- send RotaryID and Count&lt;br /&gt;
                                        UARTOUT(3 downto 0)     &amp;lt;= (others =&amp;gt; '1'); --idle when high&lt;br /&gt;
                                        UARTOUT(4)                            &amp;lt;= '0'; --start bit&lt;br /&gt;
                                        UARTOUT(12 downto 5)    &amp;lt;= READOUT(15 downto 8); -- ROTARYID first&lt;br /&gt;
                                        UARTOUT(102 downto 13)  &amp;lt;= (others =&amp;gt; '1'); --idle when high&lt;br /&gt;
                                        UARTOUT(103)                       &amp;lt;= '0'; --start bit&lt;br /&gt;
                                        UARTOUT(111 downto 104) &amp;lt;= READOUT(7 downto 0); -- ROTARYCOUNT second&lt;br /&gt;
                                        UARTOUT(199 downto 112) &amp;lt;= (others =&amp;gt; '1'); --idle when high&lt;br /&gt;
&lt;br /&gt;
                                        UART_COUNTER3 &amp;lt;= (others =&amp;gt; '0');&lt;br /&gt;
                                   --UART_COUNTER4 &amp;lt;= UART_COUNTER4 + 1;&lt;br /&gt;
&lt;br /&gt;
                                        if ADDR_RD_COUNTER = 100 then&lt;br /&gt;
                                                ADDR_RD_COUNTER &amp;lt;= (others =&amp;gt; '0');&lt;br /&gt;
                                        end if;&lt;br /&gt;
&lt;br /&gt;
                                --end if; --end uartoffon&lt;br /&gt;
                        end if;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--              COUNTER &amp;lt;= COUNTER +1;&lt;br /&gt;
--              if (COUNTER= 100000) then&lt;br /&gt;
--                      COUNTER &amp;lt;= (others =&amp;gt; '0');&lt;br /&gt;
--                      UART_OFFON &amp;lt;= '0';&lt;br /&gt;
--                      UART_COUNTER4 &amp;lt;= (others =&amp;gt; '0');&lt;br /&gt;
--              end if;&lt;br /&gt;
--              if (COUNTER(12) = '1') then&lt;br /&gt;
--                      UART_COUNTER_SPACER &amp;lt;= UART_COUNTER_SPACER +1;&lt;br /&gt;
--              end if;&lt;br /&gt;
--              if (UART_COUNTER_SPACER = 4) then&lt;br /&gt;
--                      UART_COUNTER_SPACER &amp;lt;= (others =&amp;gt; '0');&lt;br /&gt;
--              end if;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        end if; --  rising clk end&lt;br /&gt;
        end process;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Rotary.vhd==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--------------------------------------&lt;br /&gt;
library IEEE;&lt;br /&gt;
use IEEE.STD_LOGIC_1164.ALL;&lt;br /&gt;
use IEEE.STD_LOGIC_UNSIGNED.ALL;&lt;br /&gt;
&lt;br /&gt;
-- todo: IO of rotary needs communication&lt;br /&gt;
-- need to store values in signals&lt;br /&gt;
-- need to output signals with distinct ID (generic passed&lt;br /&gt;
-- holds the ID number)&lt;br /&gt;
-- one byte output, with 1 bits for left/right (either 1 or 0)&lt;br /&gt;
-- 7 bits for rotary ID, one bit for stop (i.e. normal uart)&lt;br /&gt;
&lt;br /&gt;
--the idea will be. each rotary has a unique ID, and a unique&lt;br /&gt;
--signal (ROTSIG1, ROTSIG2) in each instance&lt;br /&gt;
--which will output direction bit and id bits.&lt;br /&gt;
--there will be a uart to send out bits. Or preferably&lt;br /&gt;
--some way to read registers (see hamsterbook) beyond uart.&lt;br /&gt;
--there will be a busy flag, which all rotary instances share&lt;br /&gt;
--and when a byte is being sent, other rotary instances wait&lt;br /&gt;
--until it is cleared. after each sends a byte, it clears&lt;br /&gt;
--it. each rotary stores the direction / id in a signal and&lt;br /&gt;
--after outputting, it erases the direction. there will be&lt;br /&gt;
--another flag to determine if data needs to be sent or not.&lt;br /&gt;
--if dataoutputneededflag is 0, then no data is sent.&lt;br /&gt;
&lt;br /&gt;
--signals are specified in top level module and mapped in&lt;br /&gt;
--instance. you can map the ports in the instance to signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Outputs ROTARYCOUNT (7 to 0)&lt;br /&gt;
-- and     ROTARYID (15 to 8)&lt;br /&gt;
-- to DATAOUT&lt;br /&gt;
&lt;br /&gt;
entity rotary is&lt;br /&gt;
&lt;br /&gt;
 GENERIC(&lt;br /&gt;
             RAMADDR     : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;11001100&amp;quot;;&lt;br /&gt;
                  ROTARYID   : STD_LOGIC_VECTOR(7 downto 0) := &amp;quot;01100110&amp;quot;&lt;br /&gt;
             );&lt;br /&gt;
 PORT ( ROT        : in  STD_LOGIC_VECTOR(1 downto 0);&lt;br /&gt;
        LED        : out  STD_LOGIC_VECTOR(3 downto 0);&lt;br /&gt;
                  --LEDWATCH   : out STD_LOGIC_VECTOR(7 downto 0);&lt;br /&gt;
                  clk        : in STD_LOGIC;&lt;br /&gt;
                  DATAOUT    : out STD_LOGIC_VECTOR(15 downto 0)&lt;br /&gt;
                  );&lt;br /&gt;
&lt;br /&gt;
end rotary;&lt;br /&gt;
&lt;br /&gt;
architecture Behavioral of rotary is&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- logic_vector takes double quotes for single num&lt;br /&gt;
-- std_logic takes single for single num&lt;br /&gt;
signal current      : STD_LOGIC_VECTOR(1 downto 0);&lt;br /&gt;
signal previous     : STD_LOGIC_VECTOR(1 downto 0);&lt;br /&gt;
signal target       : STD_LOGIC_VECTOR(1 downto 0) := &amp;quot;00&amp;quot;;&lt;br /&gt;
signal truetarget   : STD_LOGIC_VECTOR(1 downto 0) := &amp;quot;00&amp;quot;;&lt;br /&gt;
signal xortest      : STD_LOGIC_VECTOR(1 downto 0);&lt;br /&gt;
signal counter      : STD_LOGIC_VECTOR(29 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
signal shiftreg   : STD_LOGIC_VECTOR(9 downto 0) := &amp;quot;1010110100&amp;quot;;&lt;br /&gt;
signal counter2     : STD_LOGIC_VECTOR(29 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
signal ROTARYCOUNT  : STD_LOGIC_VECTOR(6 downto 0) := &amp;quot;0000000&amp;quot;;&lt;br /&gt;
signal counter3     : STD_LOGIC_VECTOR(31 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
signal ROTARYMEMWRITE    : STD_LOGIC_VECTOR(15 downto 0)  := x&amp;quot;0101&amp;quot;;&lt;br /&gt;
signal counter4     : STD_LOGIC_VECTOR(29 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
signal counter5     : STD_LOGIC_VECTOR(7 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
signal writeenable  : STD_LOGIC_VECTOR(0 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
signal memoutput    : STD_LOGIC_VECTOR(7 downto 0) := (others =&amp;gt; '0');&lt;br /&gt;
&lt;br /&gt;
constant CCWPIN : STD_LOGIC_VECTOR(1 downto 0) := &amp;quot;10&amp;quot;;&lt;br /&gt;
constant CWPIN  : STD_LOGIC_VECTOR(1 downto 0) := &amp;quot;01&amp;quot;;&lt;br /&gt;
constant PINS   : STD_LOGIC_VECTOR(1 downto 0) := &amp;quot;11&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- hamster page 103 section 20.1 what is rs232&lt;br /&gt;
&lt;br /&gt;
rotarywatch: process (clk)&lt;br /&gt;
        begin&lt;br /&gt;
        if rising_edge(clk) then&lt;br /&gt;
&lt;br /&gt;
        DATAOUT(6 downto 0)   &amp;lt;= ROTARYCOUNT;&lt;br /&gt;
        DATAOUT(7)                               &amp;lt;= '0';&lt;br /&gt;
        DATAOUT(15 downto 8)  &amp;lt;= ROTARYID;&lt;br /&gt;
&lt;br /&gt;
        --LED(1) &amp;lt;= douta(0);  --red&lt;br /&gt;
        --LED(0) &amp;lt;= wea(0); -- green&lt;br /&gt;
        --ena &amp;lt;= '1';&lt;br /&gt;
        --if counter(8) = '1' then&lt;br /&gt;
        --      wea &amp;lt;= &amp;quot;1&amp;quot; ; -- this works. but lower down make sure it has&lt;br /&gt;
        -- enough time. EDIT: seems its easier to leave it up&lt;br /&gt;
        -- and pull it down for reads than vice versa.&lt;br /&gt;
        -- THIS WORKS&lt;br /&gt;
        -- note how i had to leave wea to write high occasionally&lt;br /&gt;
        -- otherwise it will allow enough time to read&lt;br /&gt;
        --end if;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        -- use ledwatch to check addra  (CHECKEDOU T)&lt;br /&gt;
        -- then check dina (CHECKED OUT)&lt;br /&gt;
        -- then check wea (NOT CHANGING FAST ENOUGH)&lt;br /&gt;
        -- then check douta etc etc make sure it all lines up&lt;br /&gt;
        -- douta is not going high, last thing I did last night.&lt;br /&gt;
        --LEDWATCH(6 downto 0) &amp;lt;= douta(6 downto 0);&lt;br /&gt;
        --LEDWATCH(6) &amp;lt;= ena;&lt;br /&gt;
        --LEDWATCH(6) &amp;lt;= douta(0);&lt;br /&gt;
        --LEDWATCH(7) &amp;lt;= wea(0);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        -- how to write to mem?&lt;br /&gt;
        -- make write enable high&lt;br /&gt;
        -- specify address&lt;br /&gt;
        -- output to data in?&lt;br /&gt;
        -- need to read xapp463 which is the data sheet and&lt;br /&gt;
        -- copy the pins&lt;br /&gt;
&lt;br /&gt;
  --LEDWATCH(7 downto 0) &amp;lt;= counter3(31 downto 24);&lt;br /&gt;
        --LEDWATCH(7 downto 6) &amp;lt;= previous;&lt;br /&gt;
        --LEDWATCH(5 downto 4) &amp;lt;= current;&lt;br /&gt;
        --LEDWATCH(3 downto 2) &amp;lt;= xortest;&lt;br /&gt;
        --LEDWATCH(1 downto 0) &amp;lt;= target;&lt;br /&gt;
        --LEDWATCH &amp;lt;= rotarycount;&lt;br /&gt;
        xortest &amp;lt;= current xor previous; --have it run constnatly&lt;br /&gt;
        -- so we don't have to worry when debugging whether target&lt;br /&gt;
        -- equals current&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                if counter(0) = '1' then&lt;br /&gt;
                        current(0) &amp;lt;= ROT(0);&lt;br /&gt;
                        current(1) &amp;lt;= ROT(1);&lt;br /&gt;
                        if current = target then&lt;br /&gt;
&lt;br /&gt;
                                if current = truetarget then&lt;br /&gt;
                                --wea &amp;lt;= &amp;quot;1&amp;quot;; --this doesn't work. not enough time see above for better spot for wea&lt;br /&gt;
                                        if xortest = CCWPIN then&lt;br /&gt;
                                                --LED(2) &amp;lt;= '1';&lt;br /&gt;
                                                ROTARYCOUNT &amp;lt;= ROTARYCOUNT-1;&lt;br /&gt;
                                                --dina &amp;lt;= rotarycount;&lt;br /&gt;
                                        end if;&lt;br /&gt;
                                        if xortest = CWPIN then&lt;br /&gt;
                                                --LED(3) &amp;lt;= '1'; -- leds are NOT reliable&lt;br /&gt;
                                                                                        -- for any fast signals&lt;br /&gt;
                                                                                        -- as these missed many&lt;br /&gt;
                                                ROTARYCOUNT &amp;lt;= ROTARYCOUNT+1;&lt;br /&gt;
&lt;br /&gt;
                                                -- if write enabled&lt;br /&gt;
                                                -- address?&lt;br /&gt;
                                                --wea &amp;lt;= &amp;quot;1&amp;quot; ;&lt;br /&gt;
                                                --dina &amp;lt;= rotarycount;&lt;br /&gt;
&lt;br /&gt;
                                        end if;&lt;br /&gt;
                                        --LED(2) &amp;lt;= '1'; --debug (yellow ch1)&lt;br /&gt;
                                        --wea &amp;lt;= &amp;quot;0&amp;quot;; enable this to only read when change&lt;br /&gt;
                                end if;&lt;br /&gt;
                        target &amp;lt;= PINS XOR target; --invert if equal to target (not truetarget)&lt;br /&gt;
                        end if;&lt;br /&gt;
                previous &amp;lt;= current;&lt;br /&gt;
                --wea &amp;lt;= &amp;quot;0&amp;quot;; enable this to read at all times&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                end if;&lt;br /&gt;
&lt;br /&gt;
                if counter = 64000000 then --runs every 0.5 or .4 second&lt;br /&gt;
                        --previous &amp;lt;= current; --debug only&lt;br /&gt;
&lt;br /&gt;
                        counter &amp;lt;= (others =&amp;gt; '0');&lt;br /&gt;
                        --target &amp;lt;= PINS XOR target; works&lt;br /&gt;
                else&lt;br /&gt;
                        counter  &amp;lt;= counter+1;&lt;br /&gt;
                        counter2 &amp;lt;= counter2+1;&lt;br /&gt;
                end if;&lt;br /&gt;
                if counter2 = 500000000 then&lt;br /&gt;
&lt;br /&gt;
                        counter2 &amp;lt;= (others =&amp;gt; '0');&lt;br /&gt;
                end if;&lt;br /&gt;
        end if;&lt;br /&gt;
end process;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end Behavioral;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constraints/Pin Mapping==&lt;br /&gt;
For Papilio FPGA.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NET ROT(0)            LOC=&amp;quot;P16&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT(1)            LOC=&amp;quot;P17&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
#NET ROT2(0)           LOC=&amp;quot;P12&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
#NET ROT2(1)           LOC=&amp;quot;P15&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
NET TX(0)             LOC=&amp;quot;P12&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
#NET RX(0)             LOC=&amp;quot;P15&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
NET LED(0)            LOC=&amp;quot;P2&amp;quot;  | IOSTANDARD=LVTTL;&lt;br /&gt;
NET LED(1)            LOC=&amp;quot;P3&amp;quot;  | IOSTANDARD=LVTTL;&lt;br /&gt;
NET LED(2)            LOC=&amp;quot;P4&amp;quot; | IOSTANDARD=LVTTL;&lt;br /&gt;
NET LED(3)            LOC=&amp;quot;P5&amp;quot;  | IOSTANDARD=LVTTL;&lt;br /&gt;
NET LED(4)            LOC=&amp;quot;P98&amp;quot;  | IOSTANDARD=LVTTL;&lt;br /&gt;
NET LED(5)            LOC=&amp;quot;P95&amp;quot;  | IOSTANDARD=LVTTL;&lt;br /&gt;
NET LED(6)            LOC=&amp;quot;P94&amp;quot; | IOSTANDARD=LVTTL;&lt;br /&gt;
NET LED(7)            LOC=&amp;quot;P92&amp;quot;  | IOSTANDARD=LVTTL;&lt;br /&gt;
# no tabs? spaces only?&lt;br /&gt;
NET clk               LOC=&amp;quot;P89&amp;quot; | IOSTANDARD=LVCMOS25;&lt;br /&gt;
#NET LEDWATCH(0)       LOC=&amp;quot;P58&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
#NET LEDWATCH(1)       LOC=&amp;quot;P54&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
#NET LEDWATCH(2)       LOC=&amp;quot;P41&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
#NET LEDWATCH(3)       LOC=&amp;quot;P36&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
#NET LEDWATCH(4)       LOC=&amp;quot;P34&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
#NET LEDWATCH(5)       LOC=&amp;quot;P32&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
#NET LEDWATCH(6)       LOC=&amp;quot;P25&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
#NET LEDWATCH(7)       LOC=&amp;quot;P22&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
#NET DATAOUTUART       LOC=&amp;quot;P91&amp;quot;   | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT2(0)                             LOC=&amp;quot;P22&amp;quot;       | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT2(1)                             LOC=&amp;quot;P18&amp;quot;       | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT3(0)                             LOC=&amp;quot;P25&amp;quot;       | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT3(1)                             LOC=&amp;quot;P23&amp;quot;       | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT4(0)                             LOC=&amp;quot;P32&amp;quot;       | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT4(1)                             LOC=&amp;quot;P26&amp;quot;       | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT5(0)                             LOC=&amp;quot;P34&amp;quot;       | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT5(1)                             LOC=&amp;quot;P33&amp;quot;       | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT6(0)                             LOC=&amp;quot;P36&amp;quot;       | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT6(1)                             LOC=&amp;quot;P35&amp;quot;       | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT7(0)                             LOC=&amp;quot;P41&amp;quot;       | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT7(1)                             LOC=&amp;quot;P40&amp;quot;       | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT8(0)                             LOC=&amp;quot;P54&amp;quot;       | IOSTANDARD=LVTTL;&lt;br /&gt;
NET ROT8(1)                             LOC=&amp;quot;P53&amp;quot;       | IOSTANDARD=LVTTL;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Block RAM Settings==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
true dual port ram&lt;br /&gt;
common clock y&lt;br /&gt;
16 write width&lt;br /&gt;
160 write depth&lt;br /&gt;
operating mode (write or read first) - no change&lt;br /&gt;
yes, using enable pins&lt;br /&gt;
and load init file, write rest 0's.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Init hex File==&lt;br /&gt;
You will also need an init Hex file to load in the Block RAM, in order to make it easy to see where the bits start and stop. The radix is 16 (so hex) and each two integers is one byte (e.g. 0x00, 0x01, would be the first two). This is what the UART outputs, without any data added. So you see 00, then 01. The 01 is an index, the 00 is the value of the rotary encoder (being 7 bits, so 0 - 127), and so on. This way you get the UART from FPGA to the micro with an index.&lt;br /&gt;
It should look something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
memory_initialization_radix=16;&lt;br /&gt;
memory_initialization_vector=&lt;br /&gt;
0001,&lt;br /&gt;
0002,&lt;br /&gt;
0003,&lt;br /&gt;
0004,&lt;br /&gt;
0005,&lt;br /&gt;
0006,&lt;br /&gt;
0007,&lt;br /&gt;
0008,&lt;br /&gt;
0009,&lt;br /&gt;
000A,&lt;br /&gt;
000B,&lt;br /&gt;
000C,&lt;br /&gt;
000D,&lt;br /&gt;
000E,&lt;br /&gt;
000F,&lt;br /&gt;
0010,&lt;br /&gt;
0011,&lt;br /&gt;
0012,&lt;br /&gt;
0013,&lt;br /&gt;
0014,&lt;br /&gt;
0015,&lt;br /&gt;
0016,&lt;br /&gt;
0017,&lt;br /&gt;
0018,&lt;br /&gt;
0019,&lt;br /&gt;
001A,&lt;br /&gt;
001B,&lt;br /&gt;
001C,&lt;br /&gt;
001D,&lt;br /&gt;
001E,&lt;br /&gt;
001F,&lt;br /&gt;
0020,&lt;br /&gt;
0021,&lt;br /&gt;
0022,&lt;br /&gt;
0023,&lt;br /&gt;
0024,&lt;br /&gt;
0025,&lt;br /&gt;
0026,&lt;br /&gt;
0027,&lt;br /&gt;
0028,&lt;br /&gt;
0029,&lt;br /&gt;
002A,&lt;br /&gt;
002B,&lt;br /&gt;
002C,&lt;br /&gt;
002D,&lt;br /&gt;
002E,&lt;br /&gt;
002F,&lt;br /&gt;
0030,&lt;br /&gt;
0031,&lt;br /&gt;
0032,&lt;br /&gt;
0033,&lt;br /&gt;
0034,&lt;br /&gt;
0035,&lt;br /&gt;
0036,&lt;br /&gt;
0037,&lt;br /&gt;
0038,&lt;br /&gt;
0039,&lt;br /&gt;
003A,&lt;br /&gt;
003B,&lt;br /&gt;
003C,&lt;br /&gt;
003D,&lt;br /&gt;
003E,&lt;br /&gt;
003F,&lt;br /&gt;
0040,&lt;br /&gt;
0041,&lt;br /&gt;
0042,&lt;br /&gt;
0043,&lt;br /&gt;
0044,&lt;br /&gt;
0045,&lt;br /&gt;
0046,&lt;br /&gt;
0047,&lt;br /&gt;
0048,&lt;br /&gt;
0049,&lt;br /&gt;
004A,&lt;br /&gt;
004B,&lt;br /&gt;
004C,&lt;br /&gt;
004D,&lt;br /&gt;
004E,&lt;br /&gt;
004F,&lt;br /&gt;
0050,&lt;br /&gt;
0051,&lt;br /&gt;
0052,&lt;br /&gt;
0053,&lt;br /&gt;
0054,&lt;br /&gt;
0055,&lt;br /&gt;
0056,&lt;br /&gt;
0057,&lt;br /&gt;
0058,&lt;br /&gt;
0059,&lt;br /&gt;
005A,&lt;br /&gt;
005B,&lt;br /&gt;
005C,&lt;br /&gt;
005D,&lt;br /&gt;
005E,&lt;br /&gt;
005F,&lt;br /&gt;
0060,&lt;br /&gt;
0061,&lt;br /&gt;
0062,&lt;br /&gt;
0063,&lt;br /&gt;
0064,&lt;br /&gt;
0065,&lt;br /&gt;
7A7A,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://papilio.cc/ Papilio FPGA] While the Papilio is obsolete now, and you should probably start with a newer FPGA, it's still not a bad place to start.&lt;br /&gt;
* [http://hamsterworks.co.nz HamsterWorks] &lt;br /&gt;
* http://web.archive.org/web/20190803104358/http://hamsterworks.co.nz/mediawiki/index.php/Main_Page&lt;br /&gt;
* [https://www.eevblog.com/forum/projects/rotary-encoders-new-polling-and-pin-interrupt-servicing-routines/ EEVblog Forum] The algorithm for the Rotary was from here.&lt;br /&gt;
* [http://dangerousprototypes.com/docs/CPLD:_Complex_programmable_logic_devices#CPLD_development_tutorials] Some basic vhdl/verilog/schematic entry examples for ISE. A good place to start, although I like HamsterNZ's pdf better. Still, some good info here on setup, and initialization. Good on these gentlemen for their use of CC-0 / Public Domain.&lt;br /&gt;
* https://gitlab.com/colibri-cern/colibri - Cern FPGA Library&lt;br /&gt;
&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2898</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2898"/>
		<updated>2026-09-23T07:09:22Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* What Doesn't Work As Well */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===List of Applications for SBCs===&lt;br /&gt;
Here are some things that I have considered or are working on with the beagleboards / beaglebones and ones that don't work. &lt;br /&gt;
====Applications====&lt;br /&gt;
* General data logging with sensors (easy with the OS. I.e. you can monitor temperature, or an accelerometer and then store in text files or a db, later displaying the data with graphs).&lt;br /&gt;
* Alarm system (This is a classic project for electronics, but it is good for something like an rpi or beagle as you can setup automated email alerts since you have ethernet). You can use one beagle and connect a number of alarms to the 0.1&amp;quot; headers. You could also use RF alarms potentially, with the SBC as a gateway.&lt;br /&gt;
* Radio monitoring (By connecting up one of the tv tuner usb adapters, you could interface to something like GNU Radio. I'm not sure what you might be looking for, but if you have access to different locations, you would get different results depending on where you are.).&lt;br /&gt;
* Software that any x86 computer can do, but with less power consumption. (I will omit any more software specific details, and try to focus on hardware applications of the SBCs. Most anything that runs on Linux will likely work here.).&lt;br /&gt;
&lt;br /&gt;
====What Doesn't Work As Well====&lt;br /&gt;
* Any CPU intensive process that would be better off on an x86 server.&lt;br /&gt;
* Some x86 specific programs don't run on ARM (such as anything with code in x86 asm).&lt;br /&gt;
* X/Wayland dependent software or desktop environments that might be too slow for the limited resources of an SBC. (i.e. you are better off using these as headless or for console purposes. Though custom GUIs are not a bad idea, from what I've seen.).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2897</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2897"/>
		<updated>2026-09-23T07:08:20Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* What Doesn't Work As Well */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===List of Applications for SBCs===&lt;br /&gt;
Here are some things that I have considered or are working on with the beagleboards / beaglebones and ones that don't work. &lt;br /&gt;
====Applications====&lt;br /&gt;
* General data logging with sensors (easy with the OS. I.e. you can monitor temperature, or an accelerometer and then store in text files or a db, later displaying the data with graphs).&lt;br /&gt;
* Alarm system (This is a classic project for electronics, but it is good for something like an rpi or beagle as you can setup automated email alerts since you have ethernet). You can use one beagle and connect a number of alarms to the 0.1&amp;quot; headers. You could also use RF alarms potentially, with the SBC as a gateway.&lt;br /&gt;
* Radio monitoring (By connecting up one of the tv tuner usb adapters, you could interface to something like GNU Radio. I'm not sure what you might be looking for, but if you have access to different locations, you would get different results depending on where you are.).&lt;br /&gt;
* Software that any x86 computer can do, but with less power consumption. (I will omit any more software specific details, and try to focus on hardware applications of the SBCs. Most anything that runs on Linux will likely work here.).&lt;br /&gt;
&lt;br /&gt;
====What Doesn't Work As Well====&lt;br /&gt;
* Any CPU intensive process that would be better off on an x86 server.&lt;br /&gt;
* Some x86 specific programs don't run on ARM (such as anything with code in x86 asm).&lt;br /&gt;
* X/Wayland dependent software, that might be too slow for the limited resources of an SBC. (i.e. you are better off using these as headless or for console purposes. Though custom GUIs are not a bad idea, from what I've seen.).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2896</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2896"/>
		<updated>2026-09-23T07:06:28Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===List of Applications for SBCs===&lt;br /&gt;
Here are some things that I have considered or are working on with the beagleboards / beaglebones and ones that don't work. &lt;br /&gt;
====Applications====&lt;br /&gt;
* General data logging with sensors (easy with the OS. I.e. you can monitor temperature, or an accelerometer and then store in text files or a db, later displaying the data with graphs).&lt;br /&gt;
* Alarm system (This is a classic project for electronics, but it is good for something like an rpi or beagle as you can setup automated email alerts since you have ethernet). You can use one beagle and connect a number of alarms to the 0.1&amp;quot; headers. You could also use RF alarms potentially, with the SBC as a gateway.&lt;br /&gt;
* Radio monitoring (By connecting up one of the tv tuner usb adapters, you could interface to something like GNU Radio. I'm not sure what you might be looking for, but if you have access to different locations, you would get different results depending on where you are.).&lt;br /&gt;
* Software that any x86 computer can do, but with less power consumption. (I will omit any more software specific details, and try to focus on hardware applications of the SBCs. Most anything that runs on Linux will likely work here.).&lt;br /&gt;
&lt;br /&gt;
====What Doesn't Work As Well====&lt;br /&gt;
* Any CPU intensive process that would be better off on an x86 server.&lt;br /&gt;
* Some x86 specific programs don't run on ARM (such as anything with code in x86 asm).&lt;br /&gt;
* X/Wayland dependent software, that might be too slow for the limited resources of an SBC. (i.e. you are better off using these as headless or for console purposes).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2895</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2895"/>
		<updated>2026-09-23T07:06:09Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===List of Applications for SBCs===&lt;br /&gt;
Here are some things that I have considered or are working on with the beagleboards / beaglebones and ones that don't work. &lt;br /&gt;
====Applications====&lt;br /&gt;
* General Data Logging with sensors (easy with the OS. I.e. you can monitor temperature, or an accelerometer and then store in text files or a db, later displaying the data with graphs).&lt;br /&gt;
* Alarm system (This is a classic project for electronics, but it is good for something like an rpi or beagle as you can setup automated email alerts since you have ethernet). You can use one beagle and connect a number of alarms to the 0.1&amp;quot; headers. You could also use RF alarms potentially, with the SBC as a gateway.&lt;br /&gt;
* Radio monitoring (By connecting up one of the tv tuner usb adapters, you could interface to something like GNU Radio. I'm not sure what you might be looking for, but if you have access to different locations, you would get different results depending on where you are.).&lt;br /&gt;
* Software that any x86 computer can do, but with less power consumption. (I will omit any more software specific details, and try to focus on hardware applications of the SBCs. Most anything that runs on Linux will likely work here.).&lt;br /&gt;
&lt;br /&gt;
====What Doesn't Work As Well====&lt;br /&gt;
* Any CPU intensive process that would be better off on an x86 server.&lt;br /&gt;
* Some x86 specific programs don't run on ARM (such as anything with code in x86 asm).&lt;br /&gt;
* X/Wayland dependent software, that might be too slow for the limited resources of an SBC. (i.e. you are better off using these as headless or for console purposes).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2894</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2894"/>
		<updated>2026-09-23T07:05:46Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* List of Applications for Beagleboards */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===List of Applications for SBCs===&lt;br /&gt;
Here are some things that I have considered or are working on with the beagleboards / beaglebones and ones that don't work. &lt;br /&gt;
====Applications====&lt;br /&gt;
* General Data Logging with sensors on the headers (easy with the OS. I.e. you can monitor temperature, or an accelerometer and then store in text files or a db, later displaying the data with graphs).&lt;br /&gt;
* Alarm system (This is a classic project for electronics, but it is good for something like an rpi or beagle as you can setup automated email alerts since you have ethernet). You can use one beagle and connect a number of alarms to the 0.1&amp;quot; headers. You could also use RF alarms potentially, with the SBC as a gateway.&lt;br /&gt;
* Radio monitoring (By connecting up one of the tv tuner usb adapters, you could interface to something like GNU Radio. I'm not sure what you might be looking for, but if you have access to different locations, you would get different results depending on where you are.).&lt;br /&gt;
* Software that any x86 computer can do, but with less power consumption. (I will omit any more software specific details, and try to focus on hardware applications of the SBCs. Most anything that runs on Linux will likely work here.).&lt;br /&gt;
&lt;br /&gt;
====What Doesn't Work As Well====&lt;br /&gt;
* Any CPU intensive process that would be better off on an x86 server.&lt;br /&gt;
* Some x86 specific programs don't run on ARM (such as anything with code in x86 asm).&lt;br /&gt;
* X/Wayland dependent software, that might be too slow for the limited resources of an SBC. (i.e. you are better off using these as headless or for console purposes).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2893</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2893"/>
		<updated>2026-09-23T07:04:39Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===List of Applications for Beagleboards===&lt;br /&gt;
Here are some things that I have considered or are working on with the beagleboards / beaglebones and ones that don't work. &lt;br /&gt;
====Applications====&lt;br /&gt;
* General Data Logging with sensors on the headers (easy with the OS. I.e. you can monitor temperature, or an accelerometer and then store in text files or a db, later displaying the data with graphs).&lt;br /&gt;
* Alarm system (This is a classic project for electronics, but it is good for something like an rpi or beagle as you can setup automated email alerts since you have ethernet). You can use one beagle and connect a number of alarms to the 0.1&amp;quot; headers. You could also use RF alarms potentially, with the SBC as a gateway.&lt;br /&gt;
* Radio monitoring (By connecting up one of the tv tuner usb adapters, you could interface to something like GNU Radio. I'm not sure what you might be looking for, but if you have access to different locations, you would get different results depending on where you are.).&lt;br /&gt;
* Software that any x86 computer can do, but with less power consumption. (I will omit any more software specific details, and try to focus on hardware applications of the SBCs. Most anything that runs on Linux will likely work here.).&lt;br /&gt;
&lt;br /&gt;
====What Doesn't Work As Well====&lt;br /&gt;
* Any CPU intensive process that would be better off on an x86 server.&lt;br /&gt;
* Some x86 specific programs don't run on ARM (such as anything with code in x86 asm).&lt;br /&gt;
* X/Wayland dependent software, that might be too slow for the limited resources of an SBC. (i.e. you are better off using these as headless or for console purposes).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2892</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2892"/>
		<updated>2026-09-23T07:03:21Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===List of Applications for Beagleboards===&lt;br /&gt;
Here are some things that I have considered or are working on with the beagleboards / beaglebones and ones that don't work. &lt;br /&gt;
====Applications====&lt;br /&gt;
* General Data Logging with sensors on the headers (easy with the OS. I.e. you can monitor temperature, or an accelerometer and then store in text files or a db, later displaying the data with graphs).&lt;br /&gt;
* Alarm system (This is a classic project for electronics, but it is good for something like an rpi or beagle as you can setup automated email alerts since you are connected to the internet). You can use one beagle and connect a number of alarms to the 0.1&amp;quot; headers. You could also use RF alarms potentially, with the SBC as a gateway.&lt;br /&gt;
* Radio monitoring (By connecting up one of the tv tuner usb adapters, you could interface to something like GNU Radio. I'm not sure what you might be looking for, but if you have access to different locations, you would get different results depending on where you are.).&lt;br /&gt;
* Software that any x86 computer can do, but with less power consumption. (I will omit any more software specific details, and try to focus on hardware applications of the SBCs. Most anything that runs on Linux will likely work here.).&lt;br /&gt;
&lt;br /&gt;
====What Doesn't Work As Well====&lt;br /&gt;
* Any CPU intensive process that would be better off on an x86 server.&lt;br /&gt;
* Some x86 specific programs don't run on ARM (such as anything with code in x86 asm).&lt;br /&gt;
* X/Wayland dependent software, that might be too slow for the limited resources of an SBC. (i.e. you are better off using these as headless or for console purposes).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2891</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2891"/>
		<updated>2026-09-23T07:02:24Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* What Doesn't Work As Well */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===List of Applications for Beagleboards===&lt;br /&gt;
Here are some things that I have considered or are working on with the beagleboards / beaglebones and ones that don't work. &lt;br /&gt;
====Applications====&lt;br /&gt;
* General Data Logging with sensors on the headers (easy with the OS. I.e. you can monitor temperature, or an accelerometer and then store in text files or a db, later displaying the data with graphs).&lt;br /&gt;
* Alarm system (This is a classic project for electronics, but it is good for something like an rpi or beagle as you can setup automated email alerts since you are connected to the internet). You can use one beagle and connect a number of alarms to the 0.1&amp;quot; headers.&lt;br /&gt;
* Radio monitoring (By connecting up one of the tv tuner usb adapters, you could interface to something like GNU Radio. I'm not sure what you might be looking for, but if you have access to different locations, you would get different results depending on where you are.).&lt;br /&gt;
* Software that any x86 computer can do, but with less power consumption. (I will omit any more software specific details, and try to focus on hardware applications of the SBCs. Most anything that runs on Linux will likely work here.).&lt;br /&gt;
====What Doesn't Work As Well====&lt;br /&gt;
* Any CPU intensive process that would be better off on an x86 server.&lt;br /&gt;
* Some x86 specific programs don't run on ARM (such as anything with code in x86 asm).&lt;br /&gt;
* X/Wayland dependent software, that might be too slow for the limited resources of an SBC. (i.e. you are better off using these as headless or for console purposes).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2890</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2890"/>
		<updated>2026-09-23T07:01:54Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* List of Applications for Beagleboards */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===List of Applications for Beagleboards===&lt;br /&gt;
Here are some things that I have considered or are working on with the beagleboards / beaglebones and ones that don't work. &lt;br /&gt;
====Applications====&lt;br /&gt;
* General Data Logging with sensors on the headers (easy with the OS. I.e. you can monitor temperature, or an accelerometer and then store in text files or a db, later displaying the data with graphs).&lt;br /&gt;
* Alarm system (This is a classic project for electronics, but it is good for something like an rpi or beagle as you can setup automated email alerts since you are connected to the internet). You can use one beagle and connect a number of alarms to the 0.1&amp;quot; headers.&lt;br /&gt;
* Radio monitoring (By connecting up one of the tv tuner usb adapters, you could interface to something like GNU Radio. I'm not sure what you might be looking for, but if you have access to different locations, you would get different results depending on where you are.).&lt;br /&gt;
* Software that any x86 computer can do, but with less power consumption. (I will omit any more software specific details, and try to focus on hardware applications of the SBCs. Most anything that runs on Linux will likely work here.).&lt;br /&gt;
====What Doesn't Work As Well====&lt;br /&gt;
* Any CPU intensive process that would be better off on an x86 server.&lt;br /&gt;
* Some x86 specific programs don't run on ARM&lt;br /&gt;
* X/Wayland dependent software, that might be too slow for the limited resources of an SBC. (i.e. you are better off using these as headless or for console purposes).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2889</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2889"/>
		<updated>2026-09-23T06:59:23Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* List of Applications for Beaglboards */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===List of Applications for Beagleboards===&lt;br /&gt;
Here are some things that I have considered or are working on with the beagleboards / beaglebones and ones that don't work. &lt;br /&gt;
&lt;br /&gt;
* General Data Logging with sensors on the headers (easy with the OS. I.e. you can monitor temperature, or an accelerometer and then store in text files or a db, later displaying the data with graphs).&lt;br /&gt;
* Alarm system (This is a classic project for electronics, but it is good for something like an rpi or beagle as you can setup automated email alerts since you are connected to the internet). You can use one beagle and connect a number of alarms to the 0.1&amp;quot; headers.&lt;br /&gt;
* Radio monitoring (By connecting up one of the tv tuner usb adapters, you could interface to something like GNU Radio. I'm not sure what you might be looking for, but if you have access to different locations, you would get different results depending on where you are.).&lt;br /&gt;
* Software that any x86 computer can do, but with less power consumption. (I will omit any more software specific details, and try to focus on hardware applications of the SBCs. Most anything that runs on Linux will likely work here.).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2888</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2888"/>
		<updated>2026-09-23T06:56:14Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Busy Networks with a BBB May be Unadvised */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===List of Applications for Beaglboards===&lt;br /&gt;
Here are some things that I have considered or are working on with the beagleboards / beaglebones and ones that don't work. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* General Data Logging with sensors on the headers (easy with the OS. I.e. you can monitor temperature, or an accelerometer and then store in text files or a db, later displaying the data with graphs).&lt;br /&gt;
* Alarm system (This is a classic project for electronics, but it is good for something like an rpi or beagle as you can setup automated email alerts since you are connected to the internet). You can use one beagle and connect a number of alarms to the 0.1&amp;quot; headers.&lt;br /&gt;
* Radio &lt;br /&gt;
* Software that any x86 computer can do, but with less power consumption. (I will omit any more software specific details, and try to focus on hardware applications of the SBCs).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2887</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2887"/>
		<updated>2026-09-21T07:25:38Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Beagleboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===Busy Networks with a BBB May be Unadvised===&lt;br /&gt;
I found that a BBB on a very busy LAN would occasionally crash. Consider that a BBB is just the equivalent of an RPI2 so it's older tech. It works very well for what it is, but it's still an early gen SBC.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2886</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2886"/>
		<updated>2026-09-21T07:24:09Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Tips\Techniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
===Busy Networks with a BBB May be Unadvised===&lt;br /&gt;
I found that a BBB on a very busy LAN would occasionally crash. Consider that a BBB is just the equivalent of an RPI2 so it's older tech. It works very well for what it is, but it's still an early gen SBC.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2885</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2885"/>
		<updated>2026-09-21T07:19:55Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2884</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2884"/>
		<updated>2026-09-21T07:18:01Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2883</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2883"/>
		<updated>2026-09-21T07:17:33Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Beaglebone2.jpg|300px|thumb|right|Cute little guy.]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2882</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2882"/>
		<updated>2026-09-21T07:17:26Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[File:Beaglebone2.jpg|300px|thumb|right|Cute little guy.]]&lt;br /&gt;
&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=File:Beaglebone2.jpg&amp;diff=2881</id>
		<title>File:Beaglebone2.jpg</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=File:Beaglebone2.jpg&amp;diff=2881"/>
		<updated>2026-09-21T07:16:41Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2880</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2880"/>
		<updated>2026-09-21T07:14:53Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO, peripherals, a PRU, and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2879</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2879"/>
		<updated>2026-09-21T07:13:16Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* OS for original Beagleboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO and peripherals and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2878</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2878"/>
		<updated>2026-09-21T07:12:53Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Verifying dtbo files are available */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO and peripherals and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
=== DTB files can be Reverse Engineered ===&lt;br /&gt;
I just learned this today. Ask a search engine. I'm not sure if they lose any comments or details, but it's better than nothing. There is a one line command to convert dtb to dts.&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
* Other OS: openwrt&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2877</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2877"/>
		<updated>2026-09-21T07:10:09Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Always Boot from SD Card */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO and peripherals and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBB, it is pin P8_43 to ground. See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt; This was the original advice I found, and it was incorrect as grounding a pin is easier.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
* Other OS: openwrt&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2876</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2876"/>
		<updated>2026-09-21T07:09:27Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Moving Resistor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO and peripherals and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBG, it is pin P8_43 to ground. You might want to put a 100ohm resistor in there to mimic the boot switch (though I found it was not necessary). See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
* Other OS: openwrt&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2875</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2875"/>
		<updated>2026-09-21T07:08:42Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Booting Alpine on the Beaglebone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO and peripherals and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBG, it is pin P8_43 to ground. You might want to put a 100ohm resistor in there to mimic the boot switch (though I found it was not necessary). See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A latching switch would be nice. Onboard flash is built in obsolescence. It's one of the flaws with the beaglebone. It is always in the way.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards). I found a usb ethernet adapter worked. &lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. &lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
* Other OS: openwrt&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2874</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2874"/>
		<updated>2026-09-21T07:03:58Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Boot log: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO and peripherals and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBG, it is pin P8_43 to ground. You might want to put a 100ohm resistor in there to mimic the boot switch (though I found it was not necessary). See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A latching switch would be nice. Onboard flash is built in obsolescence. It's one of the flaws with the beaglebone. It is always in the way.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I think I started making the partition in fdisk at an offset of 32768, as the alpine guide recommended it. I also zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards).&lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. Also make sure to mark the partition as bootable.&lt;br /&gt;
&lt;br /&gt;
====u-boot Boot Log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
* Other OS: openwrt&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2873</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2873"/>
		<updated>2026-09-21T07:02:23Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Boot log: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO and peripherals and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBG, it is pin P8_43 to ground. You might want to put a 100ohm resistor in there to mimic the boot switch (though I found it was not necessary). See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A latching switch would be nice. Onboard flash is built in obsolescence. It's one of the flaws with the beaglebone. It is always in the way.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I think I started making the partition in fdisk at an offset of 32768, as the alpine guide recommended it. I also zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards).&lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. Also make sure to mark the partition as bootable.&lt;br /&gt;
&lt;br /&gt;
====Boot log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now). You can enable earlycon in extlinux.conf kernel parameters (earlycon=uart8250,mmio32,0x44e09000) to get some more output, but that too will stop (once the console starts).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
* Other OS: openwrt&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2872</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2872"/>
		<updated>2026-09-21T07:00:44Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Boot log: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO and peripherals and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBG, it is pin P8_43 to ground. You might want to put a 100ohm resistor in there to mimic the boot switch (though I found it was not necessary). See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A latching switch would be nice. Onboard flash is built in obsolescence. It's one of the flaws with the beaglebone. It is always in the way.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I think I started making the partition in fdisk at an offset of 32768, as the alpine guide recommended it. I also zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards).&lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. Also make sure to mark the partition as bootable.&lt;br /&gt;
&lt;br /&gt;
====Boot log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that alpine 3.24 serial port stops here as the OMAP_8250 driver (# CONFIG_SERIAL_8250_OMAP is not set) is not installed in the kernel. Don't try to use a BBG. Use a BBB and install via HDMI, then migrate the working install to other machines (which is what I'm trying now).&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
* Other OS: openwrt&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2871</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2871"/>
		<updated>2026-09-21T03:17:12Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Booting Alpine on the Beaglebone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO and peripherals and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBG, it is pin P8_43 to ground. You might want to put a 100ohm resistor in there to mimic the boot switch (though I found it was not necessary). See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A latching switch would be nice. Onboard flash is built in obsolescence. It's one of the flaws with the beaglebone. It is always in the way.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I think I started making the partition in fdisk at an offset of 32768, as the alpine guide recommended it. I also zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards).&lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. Also make sure to mark the partition as bootable.&lt;br /&gt;
&lt;br /&gt;
====Boot log:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Boot SPL 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
Trying to boot from MMC1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2026.04 (Apr 21 2026 - 09:17:42 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU  : AM335X-GP rev 2.1&lt;br /&gt;
Model: TI AM335x BeagleBone Green&lt;br /&gt;
DRAM:  512 MiB&lt;br /&gt;
Core:  162 devices, 19 uclasses, devicetree: separate&lt;br /&gt;
WDT:   Started wdt@44e35000 with servicing every 1000ms (60s timeout)&lt;br /&gt;
NAND:  0 MiB&lt;br /&gt;
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1&lt;br /&gt;
Loading Environment from FAT... Unable to read &amp;quot;uboot.env&amp;quot; from mmc0:1... &lt;br /&gt;
&amp;lt;ethaddr&amp;gt; not set. Validating first E-fuse MAC&lt;br /&gt;
Net:   eth2: ethernet@4a100000using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in&lt;br /&gt;
MAC de:ad:be:ef:00:01&lt;br /&gt;
HOST MAC de:ad:be:ef:00:00&lt;br /&gt;
RNDIS ready&lt;br /&gt;
, eth3: usb_ether&lt;br /&gt;
Hit any key to stop autoboot: 0&lt;br /&gt;
switch to partitions #0, OK&lt;br /&gt;
mmc0 is current device&lt;br /&gt;
Scanning mmc 0:1...&lt;br /&gt;
Found /extlinux/extlinux.conf&lt;br /&gt;
Retrieving file: /extlinux/extlinux.conf&lt;br /&gt;
1:      Linux lts&lt;br /&gt;
Enter choice: 1:        Linux lts&lt;br /&gt;
Retrieving file: /boot/vmlinuz-lts&lt;br /&gt;
Retrieving file: /boot/initramfs-lts&lt;br /&gt;
append: modules=loop,squashfs,sd-mod,usb-storage quiet &lt;br /&gt;
Retrieving file: /boot/dtbs-lts/am335x-bonegreen.dtb&lt;br /&gt;
Kernel image @ 0x82000000 [ 0x000000 - 0x81c200 ]&lt;br /&gt;
## Flattened Device Tree blob at 88000000&lt;br /&gt;
   Booting using the fdt blob at 0x88000000&lt;br /&gt;
Working FDT set to 88000000&lt;br /&gt;
   Loading Ramdisk to 8f529000, end 8ffff4ec ... OK&lt;br /&gt;
   Loading Device Tree to 8f515000, end 8f528659 ... OK&lt;br /&gt;
Working FDT set to 8f515000&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
* Other OS: openwrt&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2870</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2870"/>
		<updated>2026-09-21T03:06:58Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Booting Alpine on the Beaglebone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO and peripherals and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBG, it is pin P8_43 to ground. You might want to put a 100ohm resistor in there to mimic the boot switch (though I found it was not necessary). See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A latching switch would be nice. Onboard flash is built in obsolescence. It's one of the flaws with the beaglebone. It is always in the way.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I think I started making the partition in fdisk at an offset of 32768, as the alpine guide recommended it. I also zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards).&lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works. Also make sure to mark the partition as bootable.&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
* Other OS: openwrt&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2869</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2869"/>
		<updated>2026-09-21T03:04:12Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Booting Alpine on the Beaglebone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO and peripherals and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBG, it is pin P8_43 to ground. You might want to put a 100ohm resistor in there to mimic the boot switch (though I found it was not necessary). See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A latching switch would be nice. Onboard flash is built in obsolescence. It's one of the flaws with the beaglebone. It is always in the way.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I think I started making the partition in fdisk at an offset of 32768, as the alpine guide recommended it. I also zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over (sgdisk --zap-all). Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards).&lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works.&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
* Other OS: openwrt&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2868</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2868"/>
		<updated>2026-09-21T02:42:06Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Booting Alpine on the Beaglebone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO and peripherals and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBG, it is pin P8_43 to ground. You might want to put a 100ohm resistor in there to mimic the boot switch (though I found it was not necessary). See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A latching switch would be nice. Onboard flash is built in obsolescence. It's one of the flaws with the beaglebone. It is always in the way.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply (tar -xf alpine-uboot img --directory=sdcard) to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I think I started making the partition in fdisk at an offset of 32768, as the alpine guide recommended it. I also zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over. Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards).&lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works.&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
* Other OS: openwrt&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2867</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2867"/>
		<updated>2026-09-21T02:03:25Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Booting Alpine on the Beaglebone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO and peripherals and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBG, it is pin P8_43 to ground. You might want to put a 100ohm resistor in there to mimic the boot switch (though I found it was not necessary). See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A latching switch would be nice. Onboard flash is built in obsolescence. It's one of the flaws with the beaglebone. It is always in the way.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply tar -xf the alpine-uboot img to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I think I started making the partition in fdisk at an offset of 32768, as the alpine guide recommended it. I also zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over. Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards).&lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works.&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
* Other OS: openwrt&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2866</id>
		<title>Beaglebone</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Beaglebone&amp;diff=2866"/>
		<updated>2026-09-21T01:53:08Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Booting Alpine on the Beaglebone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;The beaglebone is similar to the RPI, but more powerful for microcontroller applications. There are more accessible GPIO and peripherals and it has a bit more soul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PocketBeagle==&lt;br /&gt;
Connected via usb. Opens up cloud9 IDE, and gives you a web server connected arduino like interface to program the AM355x CPU.&lt;br /&gt;
&lt;br /&gt;
===Connecting to Beagle from host via usb===&lt;br /&gt;
 ip link &lt;br /&gt;
 ip link set en2923492024 up (whatever the interface was renamed to - see dmesg)&lt;br /&gt;
 dhclient en2923492024  OR  ifconfig en2923492024 192.168.6.1 netmask 255.255.255.0&lt;br /&gt;
 ssh debian@192.168.6.2 (or 7.2)&lt;br /&gt;
&lt;br /&gt;
See troubleshooting note about ipv4 not working below.&lt;br /&gt;
&lt;br /&gt;
Here's a script I use on my beaglebone to connect to a beagleboard (similar when connected via usb)(this contains some of the steps mentioned below regarding internet sharing)&lt;br /&gt;
{{cat|/root/usb19216871.sh|#!/bin/bash&lt;br /&gt;
ip link set usb0 up&lt;br /&gt;
ifconfig usb0 192.168.7.1 netmask 255.255.255.0&lt;br /&gt;
&amp;amp;#35; less /opt/scripts/networking/doc-debian-setup.md&lt;br /&gt;
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;br /&gt;
iptables --append FORWARD --in-interface usb0 -j ACCEPT&lt;br /&gt;
sysctl net.ipv4.ip_forward&amp;amp;#61;1}}&lt;br /&gt;
&lt;br /&gt;
===GNU\Linux Sharing internet with Pocketbeagle over USB===&lt;br /&gt;
Had some trouble with this today. This guide: https://elementztechblog.wordpress.com/2014/12/22/sharing-internet-using-network-over-usb-in-beaglebone-black/ does NOT work. These guides are also no good: https://unix.stackexchange.com/questions/520528/sharing-internet-using-network-over-usb-in-raspberry-zero-based-on-beaglebone&lt;br /&gt;
These steps are partially covered in the official beagle directory here: /opt/scripts/network/doc-debian-setup.md&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don't need to setup a bridge. It might work that way, but its not required. What works is the following:&lt;br /&gt;
* (pocketbeagle) Add route w/host ip&lt;br /&gt;
* (host) enable packet forwarding&lt;br /&gt;
* (host) NAT forwarding&lt;br /&gt;
* (pocketbeagle) DNS - resolv.conf&lt;br /&gt;
&lt;br /&gt;
====On beagle====&lt;br /&gt;
'''Have Pocketbeagle Route to Host'''&lt;br /&gt;
 # route add default gw 192.168.6.1&lt;br /&gt;
Or 192.168.7.1, see # route&lt;br /&gt;
&lt;br /&gt;
====On Host====&lt;br /&gt;
'''Enable packet forwarding on Host'''&lt;br /&gt;
&lt;br /&gt;
Check the current packet forwarding settings:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
You will note that options exist for controlling forwarding per default, per interface, as well as separate options for IPv4/IPv6 per interface.&lt;br /&gt;
&lt;br /&gt;
Enter this command to temporarily enable packet forwarding at runtime:&lt;br /&gt;
&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysctl.d/30-ipforward.conf to make the previous change persistent after a reboot for all interfaces:&lt;br /&gt;
&lt;br /&gt;
/etc/sysctl.d/30-ipforward.conf&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
Afterwards it is advisable to double-check forwarding is enabled as required after a reboot.&lt;br /&gt;
'''Enable NAT on Host'''&lt;br /&gt;
With iptables&lt;br /&gt;
&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
 # iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
 # iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
Iface names can vary depending on distro. What's important is that you are trying to with iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT, is forward input from the pocketbeagle NIC (in this case usb0, but it can be eth1 or en289929442 or something), to the main iface on the host. Here eth0. To recap:&lt;br /&gt;
&lt;br /&gt;
eth0: whatever host main iface&lt;br /&gt;
&lt;br /&gt;
usb0: whatever beagle usb gadget iface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.archlinux.org/index.php/Internet_Sharing&lt;br /&gt;
&lt;br /&gt;
'''route on host:'''&lt;br /&gt;
usually not required, but in case it is:&lt;br /&gt;
 ip route add 192.168.7.0/24 dev eth0&lt;br /&gt;
&amp;lt;small&amp;gt;todo: example with normal route cmd&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fix DNS on beagle====&lt;br /&gt;
At this point, you will have ip routing (i.e. ping to lan from beagle by ip will work), but DNS isn't setup yet. To get DNS working put your preferred name server in /etc/resolv.conf&lt;br /&gt;
 nameserver 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
Note: If you are testing an existing ping, when you change the iptables settings, you must stop / start a new ping to see the changes take effect.&lt;br /&gt;
Note: It's nameserver ###.###.###.###, not just the #.&lt;br /&gt;
&lt;br /&gt;
Question: Why isn't /etc/resolv.conf called /etc/nameserver ? How about a symbolic link? Is that too obvious?&lt;br /&gt;
&lt;br /&gt;
===IPv4 usb Interface Not Working===&lt;br /&gt;
Had ipv4 not working for pocketbeagle today. Same image, same computer... Throw it out the window.&lt;br /&gt;
&lt;br /&gt;
dhclient of usb interface on host gave only ipv6 address. ssh was able to connect via beagle's ipv6 address (ipv6%interface, e.g. ssh debian@fe80%usb1)&lt;br /&gt;
&lt;br /&gt;
the two virtual usb ethernet interfaces that show up in host are always 192.168.7 or 192.168.6 range. Try one, if you can't ping the beagle at 192.168.6.2 (it's always 2) then try the 7 range.&lt;br /&gt;
(on host)&lt;br /&gt;
 ifconfig en238240224 192.168.6.1&lt;br /&gt;
 ping 192.168.6.2&lt;br /&gt;
&lt;br /&gt;
===Sysvinit on pocketbeagle===&lt;br /&gt;
(Via Devuan): Breaks ssh usb access. Only use if you have a wifi/ethernet adapter connected and ip info set in /etc/network/interfaces, or UART connected.&lt;br /&gt;
&lt;br /&gt;
May have to edit inittab to add (correct) serial. See beagleboard section.&lt;br /&gt;
&lt;br /&gt;
===Alpine on pocketbeagle===&lt;br /&gt;
This script doesn't compile on Debian (Devuan) Stretch (kernel phase. uboot compiles). GCC appears to be the wrong version. GCC 5 has been removed from Debian stretch repos.&lt;br /&gt;
https://github.com/BrianSidebotham/alpine-on-bbb&lt;br /&gt;
&lt;br /&gt;
See notes about alpine on beaglebone.&lt;br /&gt;
&lt;br /&gt;
===Change Partition Size on SD===&lt;br /&gt;
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD&lt;br /&gt;
&lt;br /&gt;
===Gamepup===&lt;br /&gt;
First, see the official cape instructions (they are short):&lt;br /&gt;
https://github.com/beagleboard/pocketbeagle/wiki/GamePup-cape&lt;br /&gt;
====TTY | login screen on LCD====&lt;br /&gt;
I migrated to devuan and added a tty to the inittab. The console can be rotated.&lt;br /&gt;
&lt;br /&gt;
 /sys/class/graphics/fbcon# echo 1 &amp;gt; rotate&lt;br /&gt;
&lt;br /&gt;
See also: [[How_to_do_things_with_the_beaglebone]]&lt;br /&gt;
====Buttons====&lt;br /&gt;
Work out of the box by default.&lt;br /&gt;
&lt;br /&gt;
==Beaglebone Black==&lt;br /&gt;
[[File:DSCN3116.JPG|300px|thumb|right|Monitoring temperature w/a beagle and LMT84 / LM35]]&lt;br /&gt;
===Always Boot from SD Card===&lt;br /&gt;
&lt;br /&gt;
====Ground A Pin====&lt;br /&gt;
https://forum.beagleboard.org/t/how-to-force-boot-from-sd-card-other-than-by-holding-the-button-down/35633/6&lt;br /&gt;
&lt;br /&gt;
This is easier than moving a resistor. on the BBG, it is pin P8_43 to ground. You might want to put a 100ohm resistor in there to mimic the boot switch (though I found it was not necessary). See the schematic.&lt;br /&gt;
&lt;br /&gt;
====Moving Resistor====&lt;br /&gt;
 &amp;quot;...move R68 to R93 if you want to make the board boot from SD by default.&amp;quot;&lt;br /&gt;
&amp;lt;small&amp;gt;ref: https://stackoverflow.com/questions/33030802/fix-the-boot-order-emmc-on-a-beagle-bone-black&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A latching switch would be nice. Onboard flash is built in obsolescence. It's one of the flaws with the beaglebone. It is always in the way.&lt;br /&gt;
&lt;br /&gt;
=====Instructions===== &lt;br /&gt;
Put some leaded solder on both sides of R68 (bottom of board, the silkscreen is misplaced, but just count down the line). Use hot air to remove R68, being careful not to use too much air flow which will knock the resistor off your bench, onto the floor. The resistor is a 100K, in case you lose it.&lt;br /&gt;
&lt;br /&gt;
After removing the resistor, use an iron to put small dobs of leaded solder on pad R93 (top side of board). Use hot air to heat the board until the solder is fluid, then place the 100K R onto R93, heating as necessary while being careful not to blow the resistor away.&lt;br /&gt;
&lt;br /&gt;
===Where are the registers for the BBB?===&lt;br /&gt;
AM335x_TechnicalReferenceManual.pdf&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf&lt;br /&gt;
&lt;br /&gt;
To read/write a value, see the note about devmem2 below.&lt;br /&gt;
&lt;br /&gt;
===Booting Alpine on the Beaglebone===&lt;br /&gt;
About 2-3 hours of work. https://wiki.alpinelinux.org/wiki/Alpine_on_ARM is the basic guide to follow. There is a lot of instructions online that are not necessarily helpful. https://www.beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example Is not necessary. These guides https://elinux.org/Category:ECE497 Are incomplete, though they are somewhat useful. (for example: https://elinux.org/EBC_Exercise_22_Recovering Doesn't have enough detail to start from scratch (how do you format the partitions), and https://elinux.org/EBC_Exercise_03_Installing_a_Beagle_OS uses one of those programs (balenaetcher) that are unnecessary on Linux when you have dd and fdisk. This https://elinux.org/EBC_Exercise_21a_Boot_Sequence only covers using u-boot, not the installation / partitioning of u-boot. Not helpful. This gives some hand-wavey instructions but is not thorough enough: https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0  However, this stackexchange article is well documented https://stackoverflow.com/questions/60873038/how-to-write-new-mlo-and-u-boot-img-to-an-sd-card-without-erasing-the-os Though it shows how difficult it is to find the info. It points to the am355x reference manual. It also indicates that old pre-existing MLO and uboot images may need to be zeroed on the sd card.&lt;br /&gt;
&lt;br /&gt;
Anyways, with all those links being reviewed, you can look back at the alpine_on_arm page. Also download the generic u-boot alpine image (not the standard one) https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/armv7/alpine-uboot-3.21.3-armv7.tar.gz which has a README, in the u-boot folder (easy to miss, and obscure) that indicates, that for the beaglebone, you need the MLO and u-boot.img (that they provide) copied to the beginning of the first FAT partition of the disk. This is similar but reversed from the alpine_on_arm page's instructions. Anyways, doing this, then you simply tar -xf the alpine-uboot img to the rest of the partition. Make sure the partition is big enough. 100M won't be enough, so I used 1G. Then finally, load the sd card in the bbb and it should just boot.&lt;br /&gt;
&lt;br /&gt;
Note that the generic uboot folder in the alpine image contains a number of uboot images for a variety of arm boards, such as the Cubieboard, RPI, and Bananapi. I would recommend you look at these entries to see how the uboot loading differs. Those boards will be likely to work, given someone went to the trouble of including them in the image.&lt;br /&gt;
&lt;br /&gt;
And when it boots, it is the minimal alpine image, so you must install from there.&lt;br /&gt;
&lt;br /&gt;
I think I started making the partition in fdisk at an offset of 32768, as the alpine guide recommended it. I also zeroed out the old possibly conflicting regions where the u-boot from the beagleboard debian images may have been left over. Make sure the partition is bootable. NOTE: the alpine image listed above does not work with ethernet out of the box. May need to re-compile or use a usb hub and a different wifi or usb adapter (the config lists support for a lot of network cards).&lt;br /&gt;
&lt;br /&gt;
For reference, here's what the README says in the alpine u-boot images.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BeagleBoard&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
- ROM looks for 1st partition with FAT, and loads MLO from it&lt;br /&gt;
- NOTE: MLO needs to be the first file created on this partition&lt;br /&gt;
&lt;br /&gt;
- Install u-boot with:&lt;br /&gt;
  cp am335x_boneblack/{MLO,u-boot.img} /media/mmcblk0p1/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Based on this, and on the stackexchange post above, you can see that every SBC will have different behavior when it loads the uboot files. And the reference manual, should give information on how it works.&lt;br /&gt;
&lt;br /&gt;
Note that the ethernet did not work out of the box with the above image. Might be able to use usb ethernet or usb wifi.&lt;br /&gt;
&lt;br /&gt;
===No Video Display on Devuan/Debian 10 after Update===&lt;br /&gt;
I ran into this. As soon as you update via apt in Debian, or migrate to Devuan, the text console fails (from the Debian 10 text console images on beagleboard.org) You have to use the TI kernels from the official BBB repo included with the Debian images. I tried one of the default arm kernels (debian repos), but this did not boot. Note that this is only if you are using a console only image. I think with X/xfce4, the display should work. See: https://forum.beagleboard.org/t/bb-black-not-displaying-on-reboot/30823&lt;br /&gt;
&lt;br /&gt;
The tools to use are the official beaglebone tools, found in /opt/scripts/tools  update_kernel.sh&lt;br /&gt;
You might also have to run update-initramfs. Note that it's possible to manually edit the /boot/uEnv.text file to have multiple kernels, or to comment out the new one (if that fails to boot), so i have read.&lt;br /&gt;
&lt;br /&gt;
I ran into this again, with a different Beaglebone Black (element 14 industrial version). See https://forum.digikey.com/t/no-signal-on-lcd-screen-using-beagle-bone-black-and-hdmi/1578  The /opt/scripts/tools/version.sh tool is helpful.&lt;br /&gt;
&lt;br /&gt;
See also: https://forum.beagleboard.org/t/no-hdmi-output-on-beaglebone-black/22391 Which has the sys fs entry for the HDMI (useful). &lt;br /&gt;
 &lt;br /&gt;
 e.g. apt install read-edid&lt;br /&gt;
 root@beaglebone:/sys/class/drm/card0/card0-HDMI-A-1# parse-edid &amp;lt; edid&lt;br /&gt;
Note that the Beagle will indicate the HDMI is enabled and connected, if you only connect a cable. You don't have to actually have a screen connected. At least in my setup.&lt;br /&gt;
&lt;br /&gt;
Check that the cable hasn't failed. I had a cable fail on me inbetween beaglebones. That is near unbelievable. It worked one day, and then the next the cable was dead. So you technically, should have an ebay HDMI cable tester (I can't ever remember a time a VGA cable failed on me...).&lt;br /&gt;
&lt;br /&gt;
Sadly, there isn't a step by step discussion of troubleshooting video output problems on the beaglebone anywhere. Just forum posts. That is a systematic failure of documentation. Maybe if I get time, I can make one on the elinux wiki. Ideally, there should be a single mediawiki page with all possible video output troubleshooting scenarios (instead of scattered forum posts).&lt;br /&gt;
&lt;br /&gt;
=== Update &amp;amp;&amp;amp; Change Kernel ===&lt;br /&gt;
There is the /opt/scripts/tools/update_kernel.sh tool. If you run this, it will only update the current kernel release to the latest release of the same #.## version. If you want to change to a new number that is not helpful. However, it will list other available kernels. This is good because an apt search linux-image comes up with too many results to dig through. So the update_kernel.sh will tell you what TI kernels are available. From there you just add linux-image to the beginning of whatever numbers they list there, and install one of those.&lt;br /&gt;
&lt;br /&gt;
The trap is that if you try to apt install a debian arm kernel, the beagle may not even boot.&lt;br /&gt;
&lt;br /&gt;
EDIT: See the ECE497 docs for instructions on updating.&lt;br /&gt;
&lt;br /&gt;
=== Login to Console (HDMI LCD) without User Interaction ===&lt;br /&gt;
This always confuses me. I've done it before. It's handled with inittab.&lt;br /&gt;
 Edit /etc/inittab (comment out existing, and add this below. Replace username with your new user):&lt;br /&gt;
 1:2345:respawn:/bin/login -f USERNAME tty1 &amp;lt;/dev/tty1 &amp;gt;/dev/tty1 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
per https://wiki.zoneminder.com/Dedicated_SBC_Camera_Monitor#Auto_Start_Computer&lt;br /&gt;
If you search this online, for some reason you don't get this answer.&lt;br /&gt;
=== Devmem2 Install ===&lt;br /&gt;
Sometimes you just want to change a memory address. &lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/VCTLabs/devmem2&lt;br /&gt;
 cd devmem2&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
e.g. usage:&lt;br /&gt;
 Append a memory adjustment to rc.local&lt;br /&gt;
&lt;br /&gt;
 nano /etc/rc.local&lt;br /&gt;
 devmem2 0x4c000054 w 0x00FFFFF10&lt;br /&gt;
 (note: if you want to only read the address, simply omit the data to be written)&lt;br /&gt;
&lt;br /&gt;
Watch syslog and FIFO errors should immediately stop upon entering write command on memory.&lt;br /&gt;
&lt;br /&gt;
Install steps source: Scivision: Devmem2 on the beaglebone black The author of devmem2 (Jan-Derk Bakker, website and code found at lartmaker.nl), his website is down at the moment. You can view the root domain at internet archive, but the page for devmem2 is not  available. Others like VCTLabs above have copied his code to various spots. See also the Notes section below.&lt;br /&gt;
(NOTE: The above was taken from: https://wiki.zoneminder.com/index.php?title=Dedicated_SBC_Camera_Monitor&amp;amp;oldid=16692)&lt;br /&gt;
&lt;br /&gt;
Looking at the devmem2 operation above, we can see the following: &lt;br /&gt;
 $ sudo ./devmem2 0x4c000054 w&lt;br /&gt;
 /dev/mem opened.&lt;br /&gt;
 Memory mapped at address 0xb6f8e000.&lt;br /&gt;
 Read at address  0x4C000054 (0xb6f8e054): 0x00141414&lt;br /&gt;
Based on the memory map of the AM335xx reference manual, the address 0x4c000054 is the EMIF OCP_CONFIG register. Section 7 which is the memory. EMIF is for RAM configuration (DDR2/DDR3). The EM standing for External Memory. Section 7.3. So the fix above, was to adjust a type of class of service, priority, or niceness for the CPU and the RAM FIFO (to my limited understanding). The register change was to increase the priority of the RAM access to the CPU, I think.&lt;br /&gt;
&lt;br /&gt;
=== Config-Pin ===&lt;br /&gt;
[[File:Beaglebone lab box.jpg|300px|thumb|right|Testing out the Mikroe Click boards. There is a shield for the BBB which has four spots for mikroe click boards and includes an eeprom. But of course, you can always make a custom dupont connector for the click board and use any (compatible) pins or even another device completely (e.g. Arduino). Tip: TX3/RX3 is incorrectly named on the BBB shield. It's actually TX2/RX2.]]&lt;br /&gt;
I found this tool helpful for configuring the pins. You will want to enable the cape-universal overlay in /boot/uEnv.txt (by uncommenting it, and you may need to comment out other overlays such as the PRU) then &lt;br /&gt;
 git clone https://github.com/cdsteinkuehler/beaglebone-universal-io&lt;br /&gt;
The cape-universal overlay exports all pins except for HDMI and EMMC.&lt;br /&gt;
&lt;br /&gt;
You don't have to make anything in that github. You only need the script.&lt;br /&gt;
&lt;br /&gt;
See also: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays&lt;br /&gt;
https://forum.digikey.com/t/bbb-about-config-pin/31959 - This doesn't seem to work.&lt;br /&gt;
&lt;br /&gt;
A lot of dead ends showing up on beaglebone black documentation, unfortunately.&lt;br /&gt;
This seems like the most valuable link: https://forum.beagleboard.org/t/config-pin-tool-doesnt-work/2476/36&lt;br /&gt;
Which mentions that official beagleboard images won't work with config-pin. And to use: https://rcn-ee.net/rootfs/bb.org/testing/. You can verify what beagle image you have with beagle-version.&lt;br /&gt;
&lt;br /&gt;
Actually, I found that if you enable the overlays (other than the cape-universal), it breaks config pin. So start out with no overlays, verify that config-pin works with the universal cape. Then you can enable a different cape (e.g. UART2) but you will find that config pin  now fails on the UART2 pins. This is alluded to in the forums but they don't come to a solution. Here is a reference for this: https://forum.beagleboard.org/t/uart-from-c-on-beagle-bone-black/36675&lt;br /&gt;
&lt;br /&gt;
Note that there are two versions of config-pin. The older bash script (which still works) and a newer limited c compiled script (that is reportedly easier to maintain).&lt;br /&gt;
&lt;br /&gt;
=== beagle-version ===&lt;br /&gt;
 version.sh → beagle-version&lt;br /&gt;
&lt;br /&gt;
 debian@BeagleBone:~$ sudo beagle-version&lt;br /&gt;
 eeprom:[A335BNLT00C02516BBBK2626]&lt;br /&gt;
 model:[TI_AM335x_BeagleBone_Black]&lt;br /&gt;
 dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2021-12-29]&lt;br /&gt;
 &amp;lt;lots of debugging info&amp;gt;&lt;br /&gt;
Reference: https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6&lt;br /&gt;
&lt;br /&gt;
This is useful to find out what overlays are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Verifying dtbo files are available ===&lt;br /&gt;
In order to edit uEnv.txt and add an overlay (to the 4th entry, not 1st I guess) you have to verify they exist.&lt;br /&gt;
&lt;br /&gt;
https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI&lt;br /&gt;
&lt;br /&gt;
They should be in /lib/firmware/ (This page also has instructions to compile them).&lt;br /&gt;
&lt;br /&gt;
==Beagleboard==&lt;br /&gt;
[[File:Beagleboard_w-RS232_connected.jpg|300px|thumb|right|RS232 connected to docking station Serial In. Beagleboard works best with a dedicated 5V supply. When connecting via RS232, keep the grounds close.]]&lt;br /&gt;
The beagleboard is the original. It has more connectors / peripherals, however lacks ethernet. It has a good audio chip.&lt;br /&gt;
&lt;br /&gt;
Resources for beagleboard:&lt;br /&gt;
* https://elinux.org/BeagleBoard_Community#Board_recovery&lt;br /&gt;
* https://elinux.org/BeagleBoardRecovery&lt;br /&gt;
* https://elinux.org/BeagleBoardFAQ&lt;br /&gt;
* https://elinux.org/2010_ICASSP_Lab_2_The_Boot_Sequence&lt;br /&gt;
&lt;br /&gt;
===RS232 Serial is garbled and unreadable===&lt;br /&gt;
Yes, I said RS232. This is not TTL levels. You need -12 and +12V, so use a RS232 port.&lt;br /&gt;
&lt;br /&gt;
I resolved an issue of garbled serial by using an external 5V 3A PSU, and also by locating the laptop PSU adjacent to the BB PSU on mains via a power strip. Laptop USB did not work, nor did a 1A 0-12V adjustable PSU, as they were not close enough on the mains (different outlets)&lt;br /&gt;
&lt;br /&gt;
I also had a poorly made thinkpad dock that required a 'hard' shutdown in order for rs232 to restart, after gnu screen was closed/reopened.&lt;br /&gt;
&lt;br /&gt;
===OS for original Beagleboard===&lt;br /&gt;
Angstrom loads on the old uboot without problem. Debian Buster Console (link: https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM tested: bbxm-debian-10.4-console-xm-armhf-2020-05-18-1gb.img.xz) also loads, though requires holding user button upon boot (forces boot from mmc) due to uboot being ancient on the nand. See also: &lt;br /&gt;
https://elinux.org/BeagleBoardDebian&lt;br /&gt;
&lt;br /&gt;
* Other OS: openwrt&lt;br /&gt;
&lt;br /&gt;
====Angstrom: Tweaks to make====&lt;br /&gt;
It boots up in [[Regressions Of GNU\Linux|systemd]] X11 session, which is using 60MB of RAM. First thing to do is disable X11. This uses an older systemd syntax, so it is something like&lt;br /&gt;
{{cmd|systemctl -h&lt;br /&gt;
systemctl list-unit-files&lt;br /&gt;
systemctl disable graphical.target&lt;br /&gt;
systemctl enable multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
This will lower it to 30MB of RAM.&lt;br /&gt;
&lt;br /&gt;
===Debian Buster Console===&lt;br /&gt;
Don't mess with Angstrom, use this instead. Link is buried and hard to find, but see:&lt;br /&gt;
https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Debian_Buster_Console_Snapshot_for_BeagleBoard-xM&lt;br /&gt;
&lt;br /&gt;
===Upgrading old UBoot for new Debian Images===&lt;br /&gt;
* https://elinux.org/BeagleBoardNAND#U-Boot_v2011.12_or_newer&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
===Migrate to Devuan / Sysvinit===&lt;br /&gt;
Requires modprobe g_ether (usb gagdet for ethernet) to /etc/modules&lt;br /&gt;
Requires adding serial to /etc/inittab&lt;br /&gt;
Make it easier by using usb to ethernet adapter (or wifi).&lt;br /&gt;
e.g.&lt;br /&gt;
[[Beagleboard_inittab_and_modules]]&lt;br /&gt;
See [[Beaglebone#Note_on_connman]]&lt;br /&gt;
&lt;br /&gt;
===always boot usb0===&lt;br /&gt;
When migrating to devuan you need modprobe g_ether in /etc/modules or modprobe.conf (forget which).&lt;br /&gt;
&lt;br /&gt;
in /etc/rc.local add &lt;br /&gt;
 ip link set usb0 up&lt;br /&gt;
in /etc/network/interfaces add&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
     address 192.168.7.2&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
     gateway 192.168.7.1&lt;br /&gt;
note that the official bbb images have a netmask of 255.255.255.252 for these usb interfaces, but I will ignore that. They also use scripts e.g. /opt/scripts/boot/autoconfigure_usb0.sh which are messier than above.&lt;br /&gt;
&lt;br /&gt;
===S-video output===&lt;br /&gt;
The SVideo output is Luminance/Sync (Y) and Chroma(C). You can turn this into composite, and then output to a CRT. &lt;br /&gt;
&lt;br /&gt;
Adjust the font size of the local svideo tty with dpkg-reconfigure console-font. Review the different  fonts as they have different max sizes. Some are easier to read than others.&lt;br /&gt;
&lt;br /&gt;
===Note on connman===&lt;br /&gt;
During a sysvinit/devuan install, I uninstalled connman on my pocketbeagle in an effort to diagnose routing issues (because I had an usb to ethernet adapter, my routes were not working for usb rndis gadget to host). I thought I was locked out and would have to install from .deb but in fact connman is not required for the interfaces to be brought up. I disconnected the usb-ethernet adapter, added a route on the host to the usb subnet, and was able to login via the usb gadget.&lt;br /&gt;
&lt;br /&gt;
===Can't Install Xorg on Beagleboard===&lt;br /&gt;
 apt-get install xorg&lt;br /&gt;
fails due to dependencies&lt;br /&gt;
solution:&lt;br /&gt;
 apt-get install xserver-xorg-legacy&lt;br /&gt;
ref:&lt;br /&gt;
https://www.raspberrypi.org/forums/viewtopic.php?t=168927&lt;br /&gt;
&lt;br /&gt;
==Tips\Techniques==&lt;br /&gt;
===The Dual Identical (Twin) Pin Headers Will Trip You Up===&lt;br /&gt;
I would argue this is bad design. Connectors should be keyed. You should not be able to mistake one for another. I've been bitten at least twice by thinking I was on P9 but was on P8. Anyways, just double check you have the right pins. As an occassional user, it's easy to mess this up. &lt;br /&gt;
&lt;br /&gt;
At least the connector identifiers are written on the silk screen.&lt;br /&gt;
&lt;br /&gt;
===Power Consumption of Newer Beagles and RPIs===&lt;br /&gt;
One benefit of the Beaglebone (and the older RPI3 as opposed to 4 and 5) is that they use less power than the newer devices. Some sources online are saying the BBB can run off of 5V 1A. I'm not sure about that (might be possible if there are no peripherals), but if there is some truth to that, then it somewhat evens the playing field for the newer devices. Sure, you can get a more powerful device, but it will require more power.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[MCP3021]] - I2C example w/beaglebone.&lt;br /&gt;
* [[How_to_do_things_with_the_beaglebone]] - scratchpad&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/mvduin/bbb-pin-utils/#show-pins Easily Display Information about pins.&lt;br /&gt;
* https://elinux.org/ - General Information&lt;br /&gt;
* https://elinux.org/Category:ECE497 - Various Tutorials on BBB&lt;br /&gt;
* https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master - Code for the ECE497 tutorials.&lt;br /&gt;
* https://elinux.org/EBC_Exercise_10a_Analog_In&lt;br /&gt;
* https://elinux.org/EBC_Exercise_12a_2.4_TFT_LCD_display_via_SPI - Display Video. LCDs can be $20 on auction sites.&lt;br /&gt;
* http://blog.machinekit.io/p/hardware-capes.html - BBB and CNC&lt;br /&gt;
* https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Flashing_eMMC - Convert any non flashing ISO to a flashing one.&lt;br /&gt;
* https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280#update-u-boot-6 - Some changes from the early BBB images to the later are covered here.&lt;br /&gt;
* https://forum.beagleboard.org/t/replacing-cloud9-ide-with-vs-code-server-bb-code-server/32061 - Getting VSCode server to start (this has replaced the cloud9 bonescript server). However it seems to be missing the startup scripts for systemd.&lt;br /&gt;
* https://forum.beagleboard.org/t/bbb-using-vscode-server-with-debian-13-image/44016/2 - Further info on VSCode. Seems the beaglebone is not powerful enough for it.&lt;br /&gt;
* https://forum.beagleboard.org/t/bonescript-module-not-found-in-js/41115 - Installing bonescript on recent images (old images already have it). Note that the flash is 4GB and this install will require possibly more than that. Which means to install this, you may want to use an sd card (Technically you can get away with it, but you will be very close to 4GB on the debian 13 image from 7/23/26 and may need to uninstall other items).&lt;br /&gt;
* https://www.righto.com/2017/12/hands-on-with-pocketbeagle-tiny-25.html - Writeup on the PocketBeagle. &lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
{{Electronics}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
	<entry>
		<id>http://steakwiki.com/index.php?title=Alpine&amp;diff=2865</id>
		<title>Alpine</title>
		<link rel="alternate" type="text/html" href="http://steakwiki.com/index.php?title=Alpine&amp;diff=2865"/>
		<updated>2026-09-21T01:48:00Z</updated>

		<summary type="html">&lt;p&gt;ViciousCarnivore: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine is great. A minimalist, graceful, stable OS. Similar to sucklessOS.&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
==General Tips==&lt;br /&gt;
===Building a package in Alpine===&lt;br /&gt;
&lt;br /&gt;
* https://wiki.alpinelinux.org/wiki/Category_talk:Developer_Documentation#Building_from_source_and_creating_packages&lt;br /&gt;
&lt;br /&gt;
* https://wiki.alpinelinux.org/wiki/Custom_Kernel&lt;br /&gt;
&lt;br /&gt;
===Compiling a Kernel in Alpine or ARM and DTS / DTB===&lt;br /&gt;
See above, also &lt;br /&gt;
* https://wiki.alpinelinux.org/wiki/Odroid-C2&lt;br /&gt;
&lt;br /&gt;
Unfortunately, this doesn't use aports, or the alpine build system.&lt;br /&gt;
&lt;br /&gt;
===Xorg video playback stutters upon suspend / resume===&lt;br /&gt;
&lt;br /&gt;
I added the following configuration to xorg.conf&lt;br /&gt;
 Section &amp;quot;Device&amp;quot;&lt;br /&gt;
   Identifier &amp;quot;Intel Graphics&amp;quot;&lt;br /&gt;
   Driver &amp;quot;intel&amp;quot;&lt;br /&gt;
   Option &amp;quot;AccelMethod&amp;quot; &amp;quot;uxa&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
This seems to resolve video playback issues. What happens is that the video will not play, though audio will. Only the first frame or so is visible. Video seems to be unable to display. This is a documented fix. The important part is AccelMethod.&lt;br /&gt;
https://wiki.archlinux.org/index.php/Intel_Graphics&lt;br /&gt;
Also documented in forums that I can't seem to find at the moment.&lt;br /&gt;
&lt;br /&gt;
===Python3 Script Won't Run===&lt;br /&gt;
 $ ztdl&lt;br /&gt;
 env: can't execute python&lt;br /&gt;
solution:&lt;br /&gt;
 python3 /usr/local/bin/ztdl&lt;br /&gt;
&lt;br /&gt;
===Cloning HDD===&lt;br /&gt;
&lt;br /&gt;
When cloning a hdd, do the&lt;br /&gt;
following:&lt;br /&gt;
*clonezilla or otherwise rsync partitions and recreate partitions to similar boundaries&lt;br /&gt;
by default clonezilla might fail, due to -C not being set. There is an icds option for restore, but it can either be edited into /usr/sbin/ocs-onthefly  for partclone or just rsync then:&lt;br /&gt;
*edit etc fstab  uuids&lt;br /&gt;
*edit (boot partition) grub/grub.cfg root=uuid=whatever to root=/dev/sda3&lt;br /&gt;
*can also be in /dev/sda1 - extlinux.conf&lt;br /&gt;
NOTE: normal editing of extlinux.conf can also be done with the extlinux in /etc/&lt;br /&gt;
&lt;br /&gt;
===Kernel, Initramfs recovery===&lt;br /&gt;
If upgrade fails halfway through for any reason (hdd failing, system in a broken state), you may be left with a unbootable machine. Keep an extra /boot/vmlinuz-lts and /boot/initramfs-lts and also a copy of that kernels /lib/modules/&amp;lt;kernelvers&amp;gt; around in case. I keep mine in a folder named /boot/recovery. Backup hdds help here. If you have a corrupt initramfs, or kernel, move the old files back over to /boot from another machine. Now, from the alpine machine (not from a different dist chroot, which didn't work for me btw), boot up, and run mkinitfs again. The command is easy to mess up, so here's the correct one (as of 3.12)&lt;br /&gt;
 mkinitfs -c /etc/mkinitfs/mkinitfs.conf -b / &amp;lt;kernelvers&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The kernel vers for the new kernel can be found from /lib/modules. It should also have a folder, as the script will load modules into the initramfs&lt;br /&gt;
ref:&lt;br /&gt;
https://wiki.alpinelinux.org/wiki/Running_Alpine_in_a_Docker_Container&lt;br /&gt;
&lt;br /&gt;
https://wiki.alpinelinux.org/wiki/NVME&lt;br /&gt;
&lt;br /&gt;
https://wiki.alpinelinux.org/wiki/Bootloaders&lt;br /&gt;
&lt;br /&gt;
https://wiki.alpinelinux.org/wiki/Setting_up_a_software_RAID_array&lt;br /&gt;
&lt;br /&gt;
===UTF-8 Characters===&lt;br /&gt;
If you see certain foreign language characters not showing up correctly, you can try installing different fonts.&lt;br /&gt;
 apk search ttf&lt;br /&gt;
But I found that changing in FF opensans to sans-serif fixed some of them for me. opensans had partial support for international characters.&lt;br /&gt;
&lt;br /&gt;
===History File Size===&lt;br /&gt;
Alpine uses ash, not bash. &lt;br /&gt;
 printenv&lt;br /&gt;
Histfilesize / histsize should be set correctly.&lt;br /&gt;
&lt;br /&gt;
===Search for package===&lt;br /&gt;
There's obv &lt;br /&gt;
 apk search &amp;lt;packagename&amp;gt; &lt;br /&gt;
but, there is also&lt;br /&gt;
 apk search -v --description 'something descriptive'&lt;br /&gt;
e.g.&lt;br /&gt;
 apk search -v --description 'browser'&lt;br /&gt;
&lt;br /&gt;
===Search for who owns a certain file===&lt;br /&gt;
 apk info -W ./somefile.so&lt;br /&gt;
Some info options (omitted a few):&amp;lt;pre&amp;gt;&lt;br /&gt;
Info options:&lt;br /&gt;
  -L, --contents          List contents of the PACKAGE&lt;br /&gt;
  -e, --installed         Check if PACKAGE is installed&lt;br /&gt;
  -W, --who-owns          Print the package owning the specified file&lt;br /&gt;
  -R, --depends           List packages that the PACKAGE depends on&lt;br /&gt;
  -r, --rdepends          List all packages depending on PACKAGE&lt;br /&gt;
  --replaces              List packages whom files PACKAGE might replace&lt;br /&gt;
  -w, --webpage           Show URL for more information about PACKAGE&lt;br /&gt;
  -s, --size              Show installed size of PACKAGE&lt;br /&gt;
  -d, --description       Print description for PACKAGE&lt;br /&gt;
  -a, --all               Print all information about PACKAGE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===apk Update Between Versions===&lt;br /&gt;
* A couple releases are supported for a while. So even if a new one is out, the older one may still have updates.&lt;br /&gt;
* Follow directions on Wiki for upgrade. &lt;br /&gt;
* If you run out of space in boot (as I did) just back up or delete the old kernel and initramfs (they will be in a folder, e.g. 202012) then mkinitfs and grub-mkimage again. should boot.&lt;br /&gt;
* If you get errors on apk, there is an apk fix. This might also run mkinitfs and grub again.&lt;br /&gt;
&lt;br /&gt;
===NTP: Chronyd not updating the time===&lt;br /&gt;
First: setup-ntp will give you options. By default, it uses chrony which has chronyd and chronyc (cli interface).&lt;br /&gt;
&lt;br /&gt;
On a default install with an RPI, I found that chronyd was not changing the clock, though&lt;br /&gt;
it did have a correct time from the ntp pool.&lt;br /&gt;
&lt;br /&gt;
The pool time can be viewed with:&lt;br /&gt;
 chronyc tracking&lt;br /&gt;
The computer time can be viewed with:&lt;br /&gt;
 date&lt;br /&gt;
Setting the time can be done manually with:&lt;br /&gt;
 chronyc -a makestep&lt;br /&gt;
This can be put in a cron job. Alternatively, you can add makestep 1 -1 to the /etc/chrony/chrony.conf file. &lt;br /&gt;
The wiki's (alpine, gentoo) only list what the man page says, which is makestep 0.1 3, but I think (have&lt;br /&gt;
not tested) you don't want that as it only syncs three times, according to the man page. See also:&lt;br /&gt;
&lt;br /&gt;
https://serverfault.com/questions/819467/chrony-time-synchronization-on-huge-time-diff&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/questions/49730407/how-to-do-one-shot-time-sync-using-chrony&lt;br /&gt;
&lt;br /&gt;
The official docs at chrony-project.org are also worth looking at. Good website design, and the FAQ answers&lt;br /&gt;
the oneshot question from stack overflow above (which, the official answer is to use chronyc -q &amp;lt;server&amp;gt; not -a makestep.&lt;br /&gt;
Here's an interesting tidbit from the FAQ: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
It is not recommended to run chronyd with the -q option periodically &lt;br /&gt;
(e.g. from a cron job) as a replacement for the daemon mode, because it &lt;br /&gt;
performs significantly worse (e.g. the clock is stepped and its &lt;br /&gt;
frequency is not corrected). If you must run it this way and you are &lt;br /&gt;
using a public NTP server, make sure chronyd does not always start &lt;br /&gt;
around the first second of a minute, e.g. by adding a random sleep &lt;br /&gt;
before the chronyd command. Public servers typically receive large &lt;br /&gt;
bursts of requests around the first second as there is a large number of &lt;br /&gt;
NTP clients started from cron with no delay.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hilarious. I don't know who is really at fault here... Do you blame the users, cron programmers, or the ntp client programmers...?&lt;br /&gt;
&lt;br /&gt;
===lbu===&lt;br /&gt;
With diskless installs, by default it will only save changes if you do&lt;br /&gt;
 lbu_commit -d&lt;br /&gt;
BUT, the changes saved are only in etc and what directories you specify.&lt;br /&gt;
BUT, another trap, /etc/init.d/ does NOT save. No matter what you do.&lt;br /&gt;
The work around is issue 119 in aports on the gitlab, i.e.&lt;br /&gt;
 https://gitlab.alpinelinux.org/alpine/aports/-/issues/119&lt;br /&gt;
use a symbolic link in /etc/init.d/ and lbu add the symbolic link.&lt;br /&gt;
That will be retained over reboots.&lt;br /&gt;
&lt;br /&gt;
===/etc/crontab===&lt;br /&gt;
&lt;br /&gt;
This is a bit confusing. Busybox does not use /etc/crontab, and you can't add it in via /etc/conf.d/crond as a -c (that is for directories only). Debian uses vixie-cron which is not available in alpine (check community repos). You may be able to add it via runparts in the cron -e for root (put an entry for /etc/crontab and run it every minute). I did this, as well as installed cronie, and after updating the run levels appropriately (it tells you what to do when installing), removing busybox cron and adding cronie, then restarting, i was able to get /etc/crontab to start. I need to test if you can get the same behavior by just restarting busybox cron, without installing cronie. In any case, it will work with cronie. See: https://bbs.archlinux.org/viewtopic.php?id=193568 https://wiki.archlinux.org/title/Cron#Cronie_2&lt;br /&gt;
&lt;br /&gt;
/etc/crontab is a 'simple' way to do cron, and I think it is enough.&lt;br /&gt;
&lt;br /&gt;
===Misc===&lt;br /&gt;
&lt;br /&gt;
 /etc/local.d&lt;br /&gt;
Allows for boot / shutdown scripts&lt;br /&gt;
&lt;br /&gt;
 /etc/apk/world&lt;br /&gt;
Lists all packages installed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''text files''':&lt;br /&gt;
&lt;br /&gt;
Alpine uses a lot of text files for configuration. Text files are holy because they are accessible, editable, and in plain sight. DBs, hidden files, and registries are evil (when used for program flags/switches). Text files (in Alpine) are also minimal, and obvious where they are located. This makes editing / customization accessible to the novice user.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* https://wiki.alpinelinux.org/wiki/Configure_Wake-on-LAN Configure_Wake-on-LAN&lt;br /&gt;
&lt;br /&gt;
* gcompat - way to run glibc programs&lt;br /&gt;
&lt;br /&gt;
* https://wiki.alpinelinux.org/wiki/Running_glibc_programs&lt;br /&gt;
&lt;br /&gt;
* https://ariadne.space/2021/04/25/why-apk-tools-is-different-than-other-package-managers/&lt;br /&gt;
&lt;br /&gt;
* https://wiki.alpinelinux.org/w/index.php?title=Mailing_lists&lt;br /&gt;
&lt;br /&gt;
* https://pkgs.alpinelinux.org/contents?repo=main&amp;amp;file=*.dtb&amp;amp;branch=edge - This is a different pkg search (looks for files) on pkgs.alpinelinux.org. Referenced from: https://wiki.alpinelinux.org/wiki/Alpine_on_ARM&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{GNU\Linux}}&lt;/div&gt;</summary>
		<author><name>ViciousCarnivore</name></author>
	</entry>
</feed>