<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://massmesh.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cure</id>
	<title>MassMeshWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://massmesh.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cure"/>
	<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Special:Contributions/Cure"/>
	<updated>2026-08-20T03:04:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_UAP_AC_Mesh&amp;diff=1898</id>
		<title>Ubiquiti UAP AC Mesh</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_UAP_AC_Mesh&amp;diff=1898"/>
		<updated>2021-05-02T20:43:53Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Install the Mass Mesh Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-uap-ac-m.png|thumb|UAP AC Mesh -- Front]]&lt;br /&gt;
[[File:UAP_Mounting_Slide.jpeg|thumb|UAP AC Mesh -- Back]]&lt;br /&gt;
&lt;br /&gt;
The UAP AC Mesh is an omnidirectional, weather resistant, PoE powered access point. It is useful for short (less than one block,) unplanned links. If you live in an apartment building, this device will connect you with your next-door neighbor through the wall.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin Ubiquiti Firmware (Downgrade to 3.7.xx)]&lt;br /&gt;
&lt;br /&gt;
[https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin Mass Mesh Firmware (sysupgrade)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWRT ===&lt;br /&gt;
If you're already using OpenWRT, you can use Luci to install the Mass Mesh firmware. &lt;br /&gt;
# Download the latest [https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS) ===&lt;br /&gt;
If your device shipped with the latest firmware, or if you upgraded to version &amp;lt;code&amp;gt;3.8.xx.xxxx&amp;lt;/code&amp;gt; or higher, you need to downgrade the device before you can flash it due to the &amp;lt;code&amp;gt;mtd&amp;lt;/code&amp;gt; utility being missing in later versions. Simply download any &amp;lt;code&amp;gt;3.7.xx.xxxx&amp;lt;/code&amp;gt; firmware image from [https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin Ubiquiti Downloads] and complete this section before proceeding to [[#Install the Mass Mesh Firmware]].&amp;lt;section begin=&amp;quot;flash-uap-ac-mesh&amp;quot; /&amp;gt;{{Template:TFTP Flashing Steps&lt;br /&gt;
|factory_reset_steps=&lt;br /&gt;
# Unplug the ethernet from the antenna (This turns it off.)&lt;br /&gt;
# Use a paper clip to hold in the reset button&lt;br /&gt;
# Plug the ethernet back in to the antenna, holding the paperclip steady as you do&lt;br /&gt;
# Continue holding the paper clip until the light on the side of your UAP AC Mesh starts blinking OFF/WHITE/BLUE (should take about 30 seconds)&lt;br /&gt;
|firmware_link=[https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin version 3.7 of Ubiquiti's AirOS]&lt;br /&gt;
|firmware_filename=firmware.bin&lt;br /&gt;
|firmware_renamed=yes&lt;br /&gt;
|device_ip=192.168.1.20&lt;br /&gt;
|user_ip=192.168.1.25/24&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The LED will flash at varying speeds, then it will turn solid when complete. After writing the firmware, the device automatically reboots. This will take a few minutes to complete, and when done the device will be pingeable at 192.168.1.20.&lt;br /&gt;
&lt;br /&gt;
* The radio will timeout if left in tftp mode for too long. If the transfer is unsuccessful, try power cycling the radio and entering tftp mode again.&lt;br /&gt;
* If you don't see something like what's shown above (maybe your &amp;quot;Transfer timed out.), go back and make sure that the light on the side of your UAP AC Mesh is blinking in the pattern indicated above. If not, start again from [[#Enter Factory Reset Mode]]&lt;br /&gt;
* If the light is blinking properly, make sure that your static IP address was assigned properly. If not, start again from [[#Set Up a Static IP Address]]&lt;br /&gt;
* If you are still having trouble transferring firmware to the device, reach out for help in the chatroom. Someone will help you get unstuck.&lt;br /&gt;
&lt;br /&gt;
=== Install the Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Download the latest Mass Mesh radio firmware [https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin here.]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Statically assign your computer the IP address &amp;lt;code&amp;gt;192.168.1.25&amp;lt;/code&amp;gt; (See [[#Set Up a Static IP Address]] if needed.)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Open a terminal/command prompt.&amp;lt;/b&amp;gt; You will need it in order to copy/paste the commands shown below.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the Mass Mesh firmware onto the device (default password is &amp;lt;code&amp;gt;ubnt&amp;lt;/code&amp;gt;):&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt; &amp;lt;pre&amp;gt;scp openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin ubnt@192.168.1.20:/tmp/&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SSH into the device and log in with the default username and password &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;pre&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Then write the firmware to &amp;lt;code&amp;gt;kernel0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kernel1&amp;lt;/code&amp;gt; by entering the following into the terminal, line by line:&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;pre&amp;gt;BZ.v3.7.40# mtd write /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin kernel0&lt;br /&gt;
BZ.v3.7.40# mtd -r write /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin kernel1&amp;lt;/pre&amp;gt;&lt;br /&gt;
        &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;You should see something like the following:&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;pre&amp;gt;BZ.v3.7.40# mtd write /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin kernel0&lt;br /&gt;
Unlocking kernel0 ...&lt;br /&gt;
Erasing kernel0 ...&lt;br /&gt;
Writing from /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin to kernel0 ...  [e/w]&lt;br /&gt;
&lt;br /&gt;
BZ.v3.7.40# mtd -r write /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin kernel1&lt;br /&gt;
Unlocking kernel1 ...&lt;br /&gt;
Erasing kernel1 ...&lt;br /&gt;
Writing from /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin to kernel1 ...  [e/w]&amp;lt;/pre&amp;gt;&lt;br /&gt;
         &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the device does not reboot by itself, type &amp;lt;code&amp;gt;reboot&amp;lt;/code&amp;gt; into the terminal, and hit enter. The radio will now restart. Please wait upwards of 5+ minutes during this &amp;quot;first boot&amp;quot; process. When the device is working properly, you should see a wifi network named &amp;quot;MassMesh.org&amp;quot;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;flash-uap-ac-mesh&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_UAP_AC_Mesh&amp;diff=1897</id>
		<title>Ubiquiti UAP AC Mesh</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_UAP_AC_Mesh&amp;diff=1897"/>
		<updated>2021-05-02T20:43:18Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Install the Mass Mesh Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-uap-ac-m.png|thumb|UAP AC Mesh -- Front]]&lt;br /&gt;
[[File:UAP_Mounting_Slide.jpeg|thumb|UAP AC Mesh -- Back]]&lt;br /&gt;
&lt;br /&gt;
The UAP AC Mesh is an omnidirectional, weather resistant, PoE powered access point. It is useful for short (less than one block,) unplanned links. If you live in an apartment building, this device will connect you with your next-door neighbor through the wall.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin Ubiquiti Firmware (Downgrade to 3.7.xx)]&lt;br /&gt;
&lt;br /&gt;
[https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin Mass Mesh Firmware (sysupgrade)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWRT ===&lt;br /&gt;
If you're already using OpenWRT, you can use Luci to install the Mass Mesh firmware. &lt;br /&gt;
# Download the latest [https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS) ===&lt;br /&gt;
If your device shipped with the latest firmware, or if you upgraded to version &amp;lt;code&amp;gt;3.8.xx.xxxx&amp;lt;/code&amp;gt; or higher, you need to downgrade the device before you can flash it due to the &amp;lt;code&amp;gt;mtd&amp;lt;/code&amp;gt; utility being missing in later versions. Simply download any &amp;lt;code&amp;gt;3.7.xx.xxxx&amp;lt;/code&amp;gt; firmware image from [https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin Ubiquiti Downloads] and complete this section before proceeding to [[#Install the Mass Mesh Firmware]].&amp;lt;section begin=&amp;quot;flash-uap-ac-mesh&amp;quot; /&amp;gt;{{Template:TFTP Flashing Steps&lt;br /&gt;
|factory_reset_steps=&lt;br /&gt;
# Unplug the ethernet from the antenna (This turns it off.)&lt;br /&gt;
# Use a paper clip to hold in the reset button&lt;br /&gt;
# Plug the ethernet back in to the antenna, holding the paperclip steady as you do&lt;br /&gt;
# Continue holding the paper clip until the light on the side of your UAP AC Mesh starts blinking OFF/WHITE/BLUE (should take about 30 seconds)&lt;br /&gt;
|firmware_link=[https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin version 3.7 of Ubiquiti's AirOS]&lt;br /&gt;
|firmware_filename=firmware.bin&lt;br /&gt;
|firmware_renamed=yes&lt;br /&gt;
|device_ip=192.168.1.20&lt;br /&gt;
|user_ip=192.168.1.25/24&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The LED will flash at varying speeds, then it will turn solid when complete. After writing the firmware, the device automatically reboots. This will take a few minutes to complete, and when done the device will be pingeable at 192.168.1.20.&lt;br /&gt;
&lt;br /&gt;
* The radio will timeout if left in tftp mode for too long. If the transfer is unsuccessful, try power cycling the radio and entering tftp mode again.&lt;br /&gt;
* If you don't see something like what's shown above (maybe your &amp;quot;Transfer timed out.), go back and make sure that the light on the side of your UAP AC Mesh is blinking in the pattern indicated above. If not, start again from [[#Enter Factory Reset Mode]]&lt;br /&gt;
* If the light is blinking properly, make sure that your static IP address was assigned properly. If not, start again from [[#Set Up a Static IP Address]]&lt;br /&gt;
* If you are still having trouble transferring firmware to the device, reach out for help in the chatroom. Someone will help you get unstuck.&lt;br /&gt;
&lt;br /&gt;
=== Install the Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Download the latest Mass Mesh radio firmware [https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin here.]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Statically assign your computer the IP address &amp;lt;code&amp;gt;192.168.1.25&amp;lt;/code&amp;gt; (See [[#Set Up a Static IP Address]] if needed.)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Open a terminal/command prompt.&amp;lt;/b&amp;gt; You will need it in order to copy/paste the commands shown below.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the Mass Mesh firmware onto the device (default password is &amp;lt;code&amp;gt;ubnt&amp;lt;/code&amp;gt;):&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt; &amp;lt;pre&amp;gt;scp openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin ubnt@192.168.1.20:/tmp/&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SSH into the device and log in with the default username and password &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;pre&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Then write the firmware to &amp;lt;code&amp;gt;kernel0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kernel1&amp;lt;/code&amp;gt; by entering the following into the terminal, line by line:&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;pre&amp;gt;BZ.v3.7.40# mtd write /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin kernel0&lt;br /&gt;
BZ.v3.7.40# mtd -r write /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin kernel1&amp;lt;/pre&amp;gt;&lt;br /&gt;
        &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;You should see something like the following:&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;pre&amp;gt;BZ.v3.7.40# mtd write /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin kernel0&lt;br /&gt;
Unlocking kernel0 ...&lt;br /&gt;
Erasing kernel0 ...&lt;br /&gt;
Writing from /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin to kernel0 ...  [e/w]&lt;br /&gt;
&lt;br /&gt;
BZ.v3.7.40# mtd -r write /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin kernel1&lt;br /&gt;
Unlocking kernel1 ...&lt;br /&gt;
Erasing kernel1 ...&lt;br /&gt;
Writing from /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin to kernel1 ...  [e/w]&amp;lt;/pre&amp;gt;&lt;br /&gt;
         &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the device does not reboot by itself, type &amp;lt;code&amp;gt;reboot&amp;lt;/code&amp;gt; into the terminal, and hit enter. The radio will now restart. Please wait upwards of 5+ minutes during this &amp;quot;first boot&amp;quot; process. When the device is working properly, you should see a wifi network named &amp;quot;MassMesh.org&amp;quot;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;flash-uap-ac-mesh&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_UAP_AC_Mesh&amp;diff=1896</id>
		<title>Ubiquiti UAP AC Mesh</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_UAP_AC_Mesh&amp;diff=1896"/>
		<updated>2021-05-02T20:42:23Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Install the Mass Mesh Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-uap-ac-m.png|thumb|UAP AC Mesh -- Front]]&lt;br /&gt;
[[File:UAP_Mounting_Slide.jpeg|thumb|UAP AC Mesh -- Back]]&lt;br /&gt;
&lt;br /&gt;
The UAP AC Mesh is an omnidirectional, weather resistant, PoE powered access point. It is useful for short (less than one block,) unplanned links. If you live in an apartment building, this device will connect you with your next-door neighbor through the wall.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin Ubiquiti Firmware (Downgrade to 3.7.xx)]&lt;br /&gt;
&lt;br /&gt;
[https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin Mass Mesh Firmware (sysupgrade)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWRT ===&lt;br /&gt;
If you're already using OpenWRT, you can use Luci to install the Mass Mesh firmware. &lt;br /&gt;
# Download the latest [https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS) ===&lt;br /&gt;
If your device shipped with the latest firmware, or if you upgraded to version &amp;lt;code&amp;gt;3.8.xx.xxxx&amp;lt;/code&amp;gt; or higher, you need to downgrade the device before you can flash it due to the &amp;lt;code&amp;gt;mtd&amp;lt;/code&amp;gt; utility being missing in later versions. Simply download any &amp;lt;code&amp;gt;3.7.xx.xxxx&amp;lt;/code&amp;gt; firmware image from [https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin Ubiquiti Downloads] and complete this section before proceeding to [[#Install the Mass Mesh Firmware]].&amp;lt;section begin=&amp;quot;flash-uap-ac-mesh&amp;quot; /&amp;gt;{{Template:TFTP Flashing Steps&lt;br /&gt;
|factory_reset_steps=&lt;br /&gt;
# Unplug the ethernet from the antenna (This turns it off.)&lt;br /&gt;
# Use a paper clip to hold in the reset button&lt;br /&gt;
# Plug the ethernet back in to the antenna, holding the paperclip steady as you do&lt;br /&gt;
# Continue holding the paper clip until the light on the side of your UAP AC Mesh starts blinking OFF/WHITE/BLUE (should take about 30 seconds)&lt;br /&gt;
|firmware_link=[https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin version 3.7 of Ubiquiti's AirOS]&lt;br /&gt;
|firmware_filename=firmware.bin&lt;br /&gt;
|firmware_renamed=yes&lt;br /&gt;
|device_ip=192.168.1.20&lt;br /&gt;
|user_ip=192.168.1.25/24&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The LED will flash at varying speeds, then it will turn solid when complete. After writing the firmware, the device automatically reboots. This will take a few minutes to complete, and when done the device will be pingeable at 192.168.1.20.&lt;br /&gt;
&lt;br /&gt;
* The radio will timeout if left in tftp mode for too long. If the transfer is unsuccessful, try power cycling the radio and entering tftp mode again.&lt;br /&gt;
* If you don't see something like what's shown above (maybe your &amp;quot;Transfer timed out.), go back and make sure that the light on the side of your UAP AC Mesh is blinking in the pattern indicated above. If not, start again from [[#Enter Factory Reset Mode]]&lt;br /&gt;
* If the light is blinking properly, make sure that your static IP address was assigned properly. If not, start again from [[#Set Up a Static IP Address]]&lt;br /&gt;
* If you are still having trouble transferring firmware to the device, reach out for help in the chatroom. Someone will help you get unstuck.&lt;br /&gt;
&lt;br /&gt;
=== Install the Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Download the latest Mass Mesh radio firmware [https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin here.]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Statically assign your computer the IP address &amp;lt;code&amp;gt;192.168.1.25&amp;lt;/code&amp;gt; (See [[#Set Up a Static IP Address]] if needed.)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Open a terminal/command prompt.&amp;lt;/b&amp;gt; You will need it in order to copy/paste the commands shown below.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the Mass Mesh firmware onto the device (default password is &amp;lt;code&amp;gt;ubnt&amp;lt;/code&amp;gt;):&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt; &amp;lt;pre&amp;gt;scp openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin ubnt@192.168.1.20:/tmp/&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SSH into the device and log in with the default username and password &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;pre&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Then write the firmware to &amp;lt;code&amp;gt;kernel0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kernel1&amp;lt;/code&amp;gt; by entering the following into the terminal, line by line:&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;pre&amp;gt;BZ.v3.7.40# mtd write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel0&lt;br /&gt;
BZ.v3.7.40# mtd -r write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel1&amp;lt;/pre&amp;gt;&lt;br /&gt;
        &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;You should see something like the following:&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;pre&amp;gt;BZ.v3.7.40# mtd write /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin kernel0&lt;br /&gt;
Unlocking kernel0 ...&lt;br /&gt;
Erasing kernel0 ...&lt;br /&gt;
Writing from /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin to kernel0 ...  [e/w]&lt;br /&gt;
&lt;br /&gt;
BZ.v3.7.40# mtd -r write /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin kernel1&lt;br /&gt;
Unlocking kernel1 ...&lt;br /&gt;
Erasing kernel1 ...&lt;br /&gt;
Writing from /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin to kernel1 ...  [e/w]&amp;lt;/pre&amp;gt;&lt;br /&gt;
         &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the device does not reboot by itself, type &amp;lt;code&amp;gt;reboot&amp;lt;/code&amp;gt; into the terminal, and hit enter. The radio will now restart. Please wait upwards of 5+ minutes during this &amp;quot;first boot&amp;quot; process. When the device is working properly, you should see a wifi network named &amp;quot;MassMesh.org&amp;quot;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;flash-uap-ac-mesh&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_UAP_AC_Mesh&amp;diff=1895</id>
		<title>Ubiquiti UAP AC Mesh</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_UAP_AC_Mesh&amp;diff=1895"/>
		<updated>2021-05-02T20:39:51Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Install the Mass Mesh Firmware */  update filename of our firmware.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-uap-ac-m.png|thumb|UAP AC Mesh -- Front]]&lt;br /&gt;
[[File:UAP_Mounting_Slide.jpeg|thumb|UAP AC Mesh -- Back]]&lt;br /&gt;
&lt;br /&gt;
The UAP AC Mesh is an omnidirectional, weather resistant, PoE powered access point. It is useful for short (less than one block,) unplanned links. If you live in an apartment building, this device will connect you with your next-door neighbor through the wall.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin Ubiquiti Firmware (Downgrade to 3.7.xx)]&lt;br /&gt;
&lt;br /&gt;
[https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin Mass Mesh Firmware (sysupgrade)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWRT ===&lt;br /&gt;
If you're already using OpenWRT, you can use Luci to install the Mass Mesh firmware. &lt;br /&gt;
# Download the latest [https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS) ===&lt;br /&gt;
If your device shipped with the latest firmware, or if you upgraded to version &amp;lt;code&amp;gt;3.8.xx.xxxx&amp;lt;/code&amp;gt; or higher, you need to downgrade the device before you can flash it due to the &amp;lt;code&amp;gt;mtd&amp;lt;/code&amp;gt; utility being missing in later versions. Simply download any &amp;lt;code&amp;gt;3.7.xx.xxxx&amp;lt;/code&amp;gt; firmware image from [https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin Ubiquiti Downloads] and complete this section before proceeding to [[#Install the Mass Mesh Firmware]].&amp;lt;section begin=&amp;quot;flash-uap-ac-mesh&amp;quot; /&amp;gt;{{Template:TFTP Flashing Steps&lt;br /&gt;
|factory_reset_steps=&lt;br /&gt;
# Unplug the ethernet from the antenna (This turns it off.)&lt;br /&gt;
# Use a paper clip to hold in the reset button&lt;br /&gt;
# Plug the ethernet back in to the antenna, holding the paperclip steady as you do&lt;br /&gt;
# Continue holding the paper clip until the light on the side of your UAP AC Mesh starts blinking OFF/WHITE/BLUE (should take about 30 seconds)&lt;br /&gt;
|firmware_link=[https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin version 3.7 of Ubiquiti's AirOS]&lt;br /&gt;
|firmware_filename=firmware.bin&lt;br /&gt;
|firmware_renamed=yes&lt;br /&gt;
|device_ip=192.168.1.20&lt;br /&gt;
|user_ip=192.168.1.25/24&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The LED will flash at varying speeds, then it will turn solid when complete. After writing the firmware, the device automatically reboots. This will take a few minutes to complete, and when done the device will be pingeable at 192.168.1.20.&lt;br /&gt;
&lt;br /&gt;
* The radio will timeout if left in tftp mode for too long. If the transfer is unsuccessful, try power cycling the radio and entering tftp mode again.&lt;br /&gt;
* If you don't see something like what's shown above (maybe your &amp;quot;Transfer timed out.), go back and make sure that the light on the side of your UAP AC Mesh is blinking in the pattern indicated above. If not, start again from [[#Enter Factory Reset Mode]]&lt;br /&gt;
* If the light is blinking properly, make sure that your static IP address was assigned properly. If not, start again from [[#Set Up a Static IP Address]]&lt;br /&gt;
* If you are still having trouble transferring firmware to the device, reach out for help in the chatroom. Someone will help you get unstuck.&lt;br /&gt;
&lt;br /&gt;
=== Install the Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Download the latest Mass Mesh radio firmware [https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin here.]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Statically assign your computer the IP address &amp;lt;code&amp;gt;192.168.1.25&amp;lt;/code&amp;gt; (See [[#Set Up a Static IP Address]] if needed.)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Open a terminal/command prompt.&amp;lt;/b&amp;gt; You will need it in order to copy/paste the commands shown below.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the Mass Mesh firmware onto the device (default password is &amp;lt;code&amp;gt;ubnt&amp;lt;/code&amp;gt;):&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt; &amp;lt;pre&amp;gt;scp openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin ubnt@192.168.1.20:/tmp/&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SSH into the device and log in with the default username and password &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;pre&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Then write the firmware to &amp;lt;code&amp;gt;kernel0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kernel1&amp;lt;/code&amp;gt; by entering the following into the terminal, line by line:&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;pre&amp;gt;BZ.v3.7.40# mtd write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel0&lt;br /&gt;
BZ.v3.7.40# mtd -r write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel1&amp;lt;/pre&amp;gt;&lt;br /&gt;
        &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;You should see something like the following:&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;pre&amp;gt;BZ.v3.7.40# mtd write /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin kernel0&lt;br /&gt;
Unlocking kernel0 ...&lt;br /&gt;
Erasing kernel0 ...&lt;br /&gt;
Writing from /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin to kernel0 ...  [e/w]&lt;br /&gt;
&lt;br /&gt;
BZ.v3.7.40# mtd -r write /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin kernel1&lt;br /&gt;
Unlocking kernel1 ...&lt;br /&gt;
Erasing kernel1 ...&lt;br /&gt;
Writing from /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin to kernel1 ...  [e/w]&amp;lt;/pre&amp;gt;&lt;br /&gt;
         &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Type &amp;lt;code&amp;gt;reboot&amp;lt;/code&amp;gt; into the terminal, and hit enter. The radio will now restart. Please wait upwards of 5+ minutes during this &amp;quot;first boot&amp;quot; process. When the device is working properly, you should see a wifi network named &amp;quot;MassMesh.org&amp;quot;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;flash-uap-ac-mesh&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_UAP_AC_Mesh&amp;diff=1894</id>
		<title>Ubiquiti UAP AC Mesh</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_UAP_AC_Mesh&amp;diff=1894"/>
		<updated>2021-05-02T20:36:31Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Flashing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-uap-ac-m.png|thumb|UAP AC Mesh -- Front]]&lt;br /&gt;
[[File:UAP_Mounting_Slide.jpeg|thumb|UAP AC Mesh -- Back]]&lt;br /&gt;
&lt;br /&gt;
The UAP AC Mesh is an omnidirectional, weather resistant, PoE powered access point. It is useful for short (less than one block,) unplanned links. If you live in an apartment building, this device will connect you with your next-door neighbor through the wall.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin Ubiquiti Firmware (Downgrade to 3.7.xx)]&lt;br /&gt;
&lt;br /&gt;
[https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin Mass Mesh Firmware (sysupgrade)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWRT ===&lt;br /&gt;
If you're already using OpenWRT, you can use Luci to install the Mass Mesh firmware. &lt;br /&gt;
# Download the latest [https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS) ===&lt;br /&gt;
If your device shipped with the latest firmware, or if you upgraded to version &amp;lt;code&amp;gt;3.8.xx.xxxx&amp;lt;/code&amp;gt; or higher, you need to downgrade the device before you can flash it due to the &amp;lt;code&amp;gt;mtd&amp;lt;/code&amp;gt; utility being missing in later versions. Simply download any &amp;lt;code&amp;gt;3.7.xx.xxxx&amp;lt;/code&amp;gt; firmware image from [https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin Ubiquiti Downloads] and complete this section before proceeding to [[#Install the Mass Mesh Firmware]].&amp;lt;section begin=&amp;quot;flash-uap-ac-mesh&amp;quot; /&amp;gt;{{Template:TFTP Flashing Steps&lt;br /&gt;
|factory_reset_steps=&lt;br /&gt;
# Unplug the ethernet from the antenna (This turns it off.)&lt;br /&gt;
# Use a paper clip to hold in the reset button&lt;br /&gt;
# Plug the ethernet back in to the antenna, holding the paperclip steady as you do&lt;br /&gt;
# Continue holding the paper clip until the light on the side of your UAP AC Mesh starts blinking OFF/WHITE/BLUE (should take about 30 seconds)&lt;br /&gt;
|firmware_link=[https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin version 3.7 of Ubiquiti's AirOS]&lt;br /&gt;
|firmware_filename=firmware.bin&lt;br /&gt;
|firmware_renamed=yes&lt;br /&gt;
|device_ip=192.168.1.20&lt;br /&gt;
|user_ip=192.168.1.25/24&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The LED will flash at varying speeds, then it will turn solid when complete. After writing the firmware, the device automatically reboots. This will take a few minutes to complete, and when done the device will be pingeable at 192.168.1.20.&lt;br /&gt;
&lt;br /&gt;
* The radio will timeout if left in tftp mode for too long. If the transfer is unsuccessful, try power cycling the radio and entering tftp mode again.&lt;br /&gt;
* If you don't see something like what's shown above (maybe your &amp;quot;Transfer timed out.), go back and make sure that the light on the side of your UAP AC Mesh is blinking in the pattern indicated above. If not, start again from [[#Enter Factory Reset Mode]]&lt;br /&gt;
* If the light is blinking properly, make sure that your static IP address was assigned properly. If not, start again from [[#Set Up a Static IP Address]]&lt;br /&gt;
* If you are still having trouble transferring firmware to the device, reach out for help in the chatroom. Someone will help you get unstuck.&lt;br /&gt;
&lt;br /&gt;
=== Install the Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Download the latest Mass Mesh radio firmware [https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin here.]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Statically assign your computer the IP address &amp;lt;code&amp;gt;192.168.1.25&amp;lt;/code&amp;gt; (See [[#Set Up a Static IP Address]] if needed.)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Open a terminal/command prompt.&amp;lt;/b&amp;gt; You will need it in order to copy/paste the commands shown below.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the Mass Mesh firmware onto the device (default password is &amp;lt;code&amp;gt;ubnt&amp;lt;/code&amp;gt;):&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt; &amp;lt;pre&amp;gt;scp openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin ubnt@192.168.1.20:/tmp/&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SSH into the device and log in with the default username and password &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;pre&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Then write the firmware to &amp;lt;code&amp;gt;kernel0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kernel1&amp;lt;/code&amp;gt; by entering the following into the terminal, line by line:&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;pre&amp;gt;BZ.v3.7.40# mtd write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel0&lt;br /&gt;
BZ.v3.7.40# mtd -r write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel1&amp;lt;/pre&amp;gt;&lt;br /&gt;
        &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;You should see something like the following:&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;pre&amp;gt;BZ.v3.7.40# mtd write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel0&lt;br /&gt;
Unlocking kernel0 ...&lt;br /&gt;
Erasing kernel0 ...&lt;br /&gt;
Writing from /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin to kernel0 ...  [e/w]&lt;br /&gt;
&lt;br /&gt;
BZ.v3.7.40# mtd -r write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel1&lt;br /&gt;
Unlocking kernel1 ...&lt;br /&gt;
Erasing kernel1 ...&lt;br /&gt;
Writing from /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin to kernel1 ...  [e/w]&amp;lt;/pre&amp;gt;&lt;br /&gt;
         &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Type &amp;lt;code&amp;gt;reboot&amp;lt;/code&amp;gt; into the terminal, and hit enter. The radio will now restart. Please wait upwards of 5+ minutes during this &amp;quot;first boot&amp;quot; process. When the device is working properly, you should see a wifi network named &amp;quot;MassMesh.org&amp;quot;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;flash-uap-ac-mesh&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_UAP_AC_Mesh&amp;diff=1893</id>
		<title>Ubiquiti UAP AC Mesh</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_UAP_AC_Mesh&amp;diff=1893"/>
		<updated>2021-05-02T20:32:57Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Install the Mass Mesh Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-uap-ac-m.png|thumb|UAP AC Mesh -- Front]]&lt;br /&gt;
[[File:UAP_Mounting_Slide.jpeg|thumb|UAP AC Mesh -- Back]]&lt;br /&gt;
&lt;br /&gt;
The UAP AC Mesh is an omnidirectional, weather resistant, PoE powered access point. It is useful for short (less than one block,) unplanned links. If you live in an apartment building, this device will connect you with your next-door neighbor through the wall.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin Ubiquiti Firmware (Downgrade to 3.7.xx)]&lt;br /&gt;
&lt;br /&gt;
[https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin Mass Mesh Firmware (sysupgrade)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWRT ===&lt;br /&gt;
If you're already using OpenWRT, you can use Luci to install the Mass Mesh firmware. &lt;br /&gt;
# Download the latest [https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS) ===&lt;br /&gt;
If your device shipped with the latest firmware, or if you upgraded to version &amp;lt;code&amp;gt;3.8.xx.xxxx&amp;lt;/code&amp;gt; or higher, you need to downgrade the device before you can flash it due to the &amp;lt;code&amp;gt;mtd&amp;lt;/code&amp;gt; utility being missing in later versions. Simply download any &amp;lt;code&amp;gt;3.7.xx.xxxx&amp;lt;/code&amp;gt; firmware image from [https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin Ubiquiti Downloads] and complete this section before proceeding to [[#Install the Mass Mesh Firmware]].&amp;lt;section begin=&amp;quot;flash-uap-ac-mesh&amp;quot; /&amp;gt;{{Template:TFTP Flashing Steps&lt;br /&gt;
|factory_reset_steps=&lt;br /&gt;
# Unplug the ethernet from the antenna (This turns it off.)&lt;br /&gt;
# Use a paper clip to hold in the reset button&lt;br /&gt;
# Plug the ethernet back in to the antenna, holding the paperclip steady as you do&lt;br /&gt;
# Continue holding the paper clip until the light on the side of your UAP AC Mesh starts blinking OFF/WHITE/BLUE (should take about 30 seconds)&lt;br /&gt;
|firmware_link=[https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin version 3.7 of Ubiquiti's AirOS]&lt;br /&gt;
|firmware_filename=firmware.bin&lt;br /&gt;
|firmware_renamed=yes&lt;br /&gt;
|device_ip=192.168.1.20&lt;br /&gt;
|user_ip=192.168.1.25/24&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The LED will flash at varying speeds, then it will turn solid when complete.&lt;br /&gt;
&lt;br /&gt;
* The radio will timeout if left in tftp mode for too long. If the transfer is unsuccessful, try power cycling the radio and entering tftp mode again.&lt;br /&gt;
* If you don't see something like what's shown above (maybe your &amp;quot;Transfer timed out.), go back and make sure that the light on the side of your UAP AC Mesh is blinking in the pattern indicated above. If not, start again from [[#Enter Factory Reset Mode]]&lt;br /&gt;
* If the light is blinking properly, make sure that your static IP address was assigned properly. If not, start again from [[#Set Up a Static IP Address]]&lt;br /&gt;
* If you are still having trouble transferring firmware to the device, reach out for help in the chatroom. Someone will help you get unstuck.&lt;br /&gt;
&lt;br /&gt;
=== Install the Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Download the latest Mass Mesh radio firmware [https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin here.]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Statically assign your computer the IP address &amp;lt;code&amp;gt;192.168.1.25&amp;lt;/code&amp;gt; (See [[#Set Up a Static IP Address]] if needed.)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Open a terminal/command prompt.&amp;lt;/b&amp;gt; You will need it in order to copy/paste the commands shown below.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the Mass Mesh firmware onto the device (default password is &amp;lt;code&amp;gt;ubnt&amp;lt;/code&amp;gt;):&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt; &amp;lt;pre&amp;gt;scp openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin ubnt@192.168.1.20:/tmp/&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SSH into the device and log in with the default username and password &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;pre&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Then write the firmware to &amp;lt;code&amp;gt;kernel0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kernel1&amp;lt;/code&amp;gt; by entering the following into the terminal, line by line:&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;pre&amp;gt;BZ.v3.7.40# mtd write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel0&lt;br /&gt;
BZ.v3.7.40# mtd -r write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel1&amp;lt;/pre&amp;gt;&lt;br /&gt;
        &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;You should see something like the following:&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;pre&amp;gt;BZ.v3.7.40# mtd write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel0&lt;br /&gt;
Unlocking kernel0 ...&lt;br /&gt;
Erasing kernel0 ...&lt;br /&gt;
Writing from /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin to kernel0 ...  [e/w]&lt;br /&gt;
&lt;br /&gt;
BZ.v3.7.40# mtd -r write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel1&lt;br /&gt;
Unlocking kernel1 ...&lt;br /&gt;
Erasing kernel1 ...&lt;br /&gt;
Writing from /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin to kernel1 ...  [e/w]&amp;lt;/pre&amp;gt;&lt;br /&gt;
         &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Type &amp;lt;code&amp;gt;reboot&amp;lt;/code&amp;gt; into the terminal, and hit enter. The radio will now restart. Please wait upwards of 5+ minutes during this &amp;quot;first boot&amp;quot; process. When the device is working properly, you should see a wifi network named &amp;quot;MassMesh.org&amp;quot;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;section end=&amp;quot;flash-uap-ac-mesh&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Benchmarks&amp;diff=1875</id>
		<title>Benchmarks</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Benchmarks&amp;diff=1875"/>
		<updated>2020-10-27T23:41:17Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Gateway Benchmark */  add vCPUs to the benchmark table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Mesh Benchmark ==&lt;br /&gt;
The Mesh Benchmark represents the maximum amount of mesh-based traffic a device can send or receive. This is the speed limit of node to node traffic that doesn't leave the mesh. Services hosted in a way such that they are accessible on the mesh are mainly subject to this limit.&lt;br /&gt;
&lt;br /&gt;
=== Procedure ===&lt;br /&gt;
To test the in-mesh speed, run iperf3 and yggdrasil on both a decently powerful PC/laptop as well as a mesh node.&lt;br /&gt;
&lt;br /&gt;
On the PC, run the following command:&lt;br /&gt;
&lt;br /&gt;
 iperf3 -s&lt;br /&gt;
&lt;br /&gt;
Then use &amp;lt;code&amp;gt;yggdrasilctl getself&amp;lt;/code&amp;gt; and note the IPv6 address.&lt;br /&gt;
&lt;br /&gt;
On the mesh node, run the following command to start the benchmark:&lt;br /&gt;
&lt;br /&gt;
 iperf3 -c &amp;lt;PC-ipv6-address&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Mesh Node Benchmarks (In-Mesh)&lt;br /&gt;
! Device !! Download !! Upload !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| example || 55 Mbit/s || 30 Mbit/s || Maxes out cpu&lt;br /&gt;
|-&lt;br /&gt;
| example || 53 Mbit/s || 47 Mbit/s || Low resource usage&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Gateway Benchmark ==&lt;br /&gt;
&lt;br /&gt;
Todo: Create standard test procedure with more powerful hardware&lt;br /&gt;
&lt;br /&gt;
Environment: Laptop, Rpi4, DO Droplet, mullvad&lt;br /&gt;
&lt;br /&gt;
Fully wired, rpi connected via autoygg to droplet, which routes traffic out through mullvad&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Benchmarked VPS&lt;br /&gt;
! Size !! vCPUs !! Download !! Upload !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| $5 Basic || 1 || 55 Mbit/s || 30 Mbit/s || Tested steam downloads as well as speedtest.net. Maxed out CPU&lt;br /&gt;
|-&lt;br /&gt;
| $15 Basic || 2 || 53 Mbit/s || 47 Mbit/s || Tested speedtest.net, CPU at ~50%&lt;br /&gt;
|-&lt;br /&gt;
| $40 Basic || 4 || 65 Mbit/s || 55 Mbit/s || Tested speedtest.net, low resource utilization overall&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Old benchmarking results ==&lt;br /&gt;
=== EspressoBin v5 ===&lt;br /&gt;
==== No Yggdrasil ====&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Connecting to host 10.0.0.1, port 5201&lt;br /&gt;
[  5] local 10.0.0.106 port 58198 connected to 10.0.0.1 port 5201&lt;br /&gt;
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd&lt;br /&gt;
[  5]   0.00-1.00   sec  49.2 MBytes   413 Mbits/sec   27    532 KBytes       &lt;br /&gt;
[  5]   1.00-2.00   sec  44.8 MBytes   376 Mbits/sec    0    592 KBytes       &lt;br /&gt;
[  5]   2.00-3.00   sec  44.8 MBytes   376 Mbits/sec    0    643 KBytes       &lt;br /&gt;
[  5]   3.00-4.00   sec  44.9 MBytes   376 Mbits/sec    1    519 KBytes       &lt;br /&gt;
[  5]   4.00-5.00   sec  46.1 MBytes   387 Mbits/sec    0    581 KBytes       &lt;br /&gt;
[  5]   5.00-6.00   sec  44.8 MBytes   376 Mbits/sec    0    639 KBytes       &lt;br /&gt;
[  5]   6.00-7.00   sec  46.1 MBytes   387 Mbits/sec    1    516 KBytes       &lt;br /&gt;
[  5]   7.00-8.00   sec  43.6 MBytes   366 Mbits/sec  374    346 KBytes       &lt;br /&gt;
[  5]   8.00-9.00   sec  44.9 MBytes   377 Mbits/sec    0    434 KBytes       &lt;br /&gt;
[  5]   9.00-10.00  sec  46.1 MBytes   387 Mbits/sec    0    509 KBytes       &lt;br /&gt;
- - - - - - - - - - - - - - - - - - - - - - - - -&lt;br /&gt;
[ ID] Interval           Transfer     Bitrate         Retr&lt;br /&gt;
[  5]   0.00-10.00  sec   455 MBytes   382 Mbits/sec  403             sender&lt;br /&gt;
[  5]   0.00-10.05  sec   452 MBytes   377 Mbits/sec                  receiver&lt;br /&gt;
&lt;br /&gt;
iperf Done.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
==== Yggdrasil ====&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Connecting to host 201:f06b:1827:4e45:90fa:554e:ace5:27c7, port 5201&lt;br /&gt;
[  5] local 201:28ab:ee79:77d4:192e:1366:8b79:4980 port 33776 connected to 201:f06b:1827:4e45:90fa:554e:ace5:27c7 port 5201&lt;br /&gt;
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd&lt;br /&gt;
[  5]   0.00-1.00   sec  17.4 MBytes   146 Mbits/sec   26   1.50 MBytes       &lt;br /&gt;
[  5]   1.00-2.00   sec  16.2 MBytes   136 Mbits/sec   20   1.31 MBytes       &lt;br /&gt;
[  5]   2.00-3.00   sec  15.0 MBytes   126 Mbits/sec   56    959 KBytes       &lt;br /&gt;
[  5]   3.00-4.00   sec  13.8 MBytes   115 Mbits/sec   31    767 KBytes       &lt;br /&gt;
[  5]   4.00-5.00   sec  13.8 MBytes   115 Mbits/sec   20    831 KBytes       &lt;br /&gt;
[  5]   5.00-6.00   sec  15.0 MBytes   126 Mbits/sec    2   1.25 MBytes       &lt;br /&gt;
[  5]   6.00-7.00   sec  17.5 MBytes   147 Mbits/sec   23   1.37 MBytes       &lt;br /&gt;
[  5]   7.00-8.00   sec  17.5 MBytes   147 Mbits/sec    1   1.62 MBytes       &lt;br /&gt;
[  5]   8.00-9.00   sec  15.0 MBytes   126 Mbits/sec    5   1.62 MBytes       &lt;br /&gt;
[  5]   9.00-10.00  sec  17.5 MBytes   147 Mbits/sec    6   1.62 MBytes       &lt;br /&gt;
- - - - - - - - - - - - - - - - - - - - - - - - -&lt;br /&gt;
[ ID] Interval           Transfer     Bitrate         Retr&lt;br /&gt;
[  5]   0.00-10.00  sec   159 MBytes   133 Mbits/sec  190             sender&lt;br /&gt;
[  5]   0.00-10.09  sec   157 MBytes   130 Mbits/sec                  receiver&lt;br /&gt;
&lt;br /&gt;
iperf Done.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi 3B+ ===&lt;br /&gt;
==== Yggdrasil ====&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[ ID] Interval           Transfer     Bitrate&lt;br /&gt;
[  5]   0.00-10.41  sec  37.3 MBytes  30.1 Mbits/sec                  receiver&lt;br /&gt;
[  8]   0.00-10.41  sec  36.6 MBytes  29.5 Mbits/sec                  receiver&lt;br /&gt;
[ 10]   0.00-10.41  sec  36.6 MBytes  29.5 Mbits/sec                  receiver&lt;br /&gt;
[ 12]   0.00-10.41  sec  38.0 MBytes  30.6 Mbits/sec                  receiver&lt;br /&gt;
[SUM]   0.00-10.41  sec   149 MBytes   120 Mbits/sec                  receiver&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=USB_Ethernet_Adapters&amp;diff=1813</id>
		<title>USB Ethernet Adapters</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=USB_Ethernet_Adapters&amp;diff=1813"/>
		<updated>2020-09-03T20:44:02Z</updated>

		<summary type="html">&lt;p&gt;Cure: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents USB Ethernet Adapters that may be compatible with the MassMesh Mesh Node. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ USB Ethernet Adapter Comparison&lt;br /&gt;
! Brand !! Model !! Supported&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; !! Driver Required !! Links&lt;br /&gt;
|-&lt;br /&gt;
| Amazon Basics || USB 3.0 to 10/100/1000 Gigabit Ethernet Adapter || Yes || kmod-usb-net-asix-ax88179 || [https://www.amazon.com/dp/B00M77HMU0/ Amazon]&lt;br /&gt;
|-&lt;br /&gt;
| Anker || USB 3.0 Unibody Aluminum Gigabit Ethernet Adapter || Yes || kmod-usb-net-rtl8152 || [https://www.amazon.com/gp/product/B00PC0H9IE/ Amazon]&lt;br /&gt;
|-&lt;br /&gt;
| Inland || USB 3.0 to Gigabit Ethernet Adapter || Likely || kmod-usb-net-asix-ax88179 ? || [https://www.microcenter.com/product/485118/USB_30_to_Gigabit_Ethernet_Adapter Micro Center]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; For the purposes of this comparison, supported means that it works as intended out of the box&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=First_Time_Setup&amp;diff=1811</id>
		<title>First Time Setup</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=First_Time_Setup&amp;diff=1811"/>
		<updated>2020-09-02T00:47:21Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Connecting to a Mass Mesh public Internet Gateway */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tip | Before continuing, connect to your mesh node using the '''MassMesh.org''' wireless network or by connecting directly to the mesh node, like in [[Mesh Node Troubleshooting]].}}&lt;br /&gt;
&lt;br /&gt;
{{Tip | Access your mesh node by navigating to http://192.168.42.1 in your web browser.}}&lt;br /&gt;
&lt;br /&gt;
== Setting Your Password ==&lt;br /&gt;
&lt;br /&gt;
[[File:No_password.png|thumb|When you first boot your mesh node, there is no admin password set.]]&lt;br /&gt;
&lt;br /&gt;
When you first boot your mesh node, there is no password set. This is quite dangerous, so OpenWrt will disable many useful features until you set one. Therefore, it is important that you set one up right away.&lt;br /&gt;
&lt;br /&gt;
{{Warning|This is not the same thing as a wi-fi password. Your admin password should be a secret.}}&lt;br /&gt;
&lt;br /&gt;
To set a password, complete the following steps:&lt;br /&gt;
* Navigate to &amp;quot;System &amp;gt; Administration&amp;quot; in the left-hand menu of OpenWrt&lt;br /&gt;
** [[File:Set_password_screen.png|frameless|Enter your desired password twice, and click &amp;quot;Save.&amp;quot;]]&lt;br /&gt;
* Enter your desired password twice, and hit Enter or click &amp;quot;Save.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Enabling Remote Support ==&lt;br /&gt;
&lt;br /&gt;
Following these steps, you will allow a maintainer to log into and use your mesh node remotely -- as long as it's connected to the global Yggdrasil network. See [[#The Yggdrasil Page]] if you think you may not be connected to the rest of the Yggdrasil network.&lt;br /&gt;
&lt;br /&gt;
In order to enable remote support, you will need to:&lt;br /&gt;
# Authorize the maintenance team to access your mesh node&lt;br /&gt;
# Allow SSH over Yggdrasil&lt;br /&gt;
&lt;br /&gt;
=== Authorize the Maintenance Team to Access Your Mesh Node ===&lt;br /&gt;
&lt;br /&gt;
{{Note|You must first [[#Setting Your Password|Set Up a Password]] before adding authorized remote users.}}&lt;br /&gt;
&lt;br /&gt;
# Navigate to System &amp;gt; Administration&lt;br /&gt;
# Select the &amp;quot;SSH-Keys&amp;quot; tab&lt;br /&gt;
## [[File:SSH_Keys_Screen_owrt.png|frameless|The ssh-keys tab.]]&lt;br /&gt;
# Enter the following keys, clicking &amp;quot;Add Key&amp;quot; in between each&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCndT67lJYJl1Re974keiGRzzD0m4qY9KM4m/XttWWinSggoFD+VKQDZchxnsyGbtDFH/NOSfI37MS+djccDj5fue1s/KnzL/j44JFyzt0M1pVgwopetMKTCaduCVeCQP2JN20Ss4fBI4FjvBM1tgAx3d1FUJEz7axwxJUBAgUDtvA1PUSKdhPxZTlWrKgHr4OXzdEoYJcLiktQc79QR2lJHKIBZgVq0C76Y/q+Q3mbl7ppLMmNgFRprXRkzDtRHndin5S7+f2zOlNryIGdnX3HCItr0XBkG/uNkrWnx0NFArP6Xq/BsJMhdNvl+KfCZiLYN2m3qxhEjZeTQIfBXh5wDfUzW0tPoDSCQ2WIBRjkSPjgnohskbakF6bnzLPJlsQofHfdDYUJJkywTYfo7FspPR4h2//FrBUDaRUXFUQBaguBTKX5P6U6quXSAfupkPIjZ7TkbxL0Q4OkWa/MX/QdBi/wZMYTcm4osJBmFxEZEumFHTb2gZ3SyTKD9sCKQHE= lurker@lurker-T450&lt;br /&gt;
&lt;br /&gt;
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEA3nzI6T6Lpd5xFoRewcx91Dv9sUzNNmdYfwOleemBFz0y3RaQElehUWasyjuIURZw7RL5EjvrqeQq9pe/lO99dO0F9yMuMsMH2t88YrVJQ/z/5Aa4I2zYQotKb/9CCfynsy41y5xywxtOwXiDk2kpo+c9VZCyCeW8Hnc9HaIpkKSLnkqDVhESzlrkYyNKZvUAL1hiFIzmmw/veFgRb7/ol76Ze3xsWugbHUECEIAKoz/8uaevOAAoJrMFhffFIQ8IfClqDZv2lnBBhvh1O9TO0Mg4klcieyQ1RZhMjeP4WnAa9PXP7xZlQHLgO9qO1jDd2sOdkX6EedCfX5jO4Y51HPJpV35uYumw3veftMlpIJFmA2eIQxU19SCYpojWRGXZ5v9WtFIHX2nGy+Gi1bk7TR+HBsCDXOPhhQk4ceIM4OonqEb1NJ57elxh6mFbDAQCZtYhRLqYvcyGpuBdVdLNOJbOZ7vBJY3Kfjxa87rvFIJheT6DXhpdRayeOovLm0vuJ53bZoWxWOqjpuigQqHtSB3OmintrKB916BhNFsHwPeZpK0ahZGFygV63REM/X8m0nOlHqyAY69uzLHyYXM83zAI1L5Y4wuzsVqO+1tnK6PMcfg5/DArjBrn7YqA5tzJY9EgdVVPjpgjD2yYYTOP6b3UUw4uFj3asnOX24dfVzk= ward@countzero&lt;br /&gt;
&lt;br /&gt;
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDVi8ExDYdV7EfkjQiMZA3o0QtjVNtd0wVzp9n1xFqY1dse/zHBqrEZQKBtbrk7D/NAI4qzoogC6SbHWa8fHPyc3LJuKbxHrSC8xylByGL7nAzI7AfmsHCQ8Z+OrgI625PzVpMCY/30D/rBgR2JTlzxlA35cuOPjN5r1HHE53+mVRu62jn/wTa16ubFXaYmibpZ3C830+qsAB8RPEHJH7zknFNPponAqH7kt1I8WQL6fa2TCuxIBijzDLbtX1xH4klTeMRJTK+tmLRUUjUefD/f7lNlgce7o9zkHktO5u1hmpC95/NC2cylzU9RWglHqJ21fSg66y441lm0Y9ZUc2p7DQFQP0f6kovuPWgVPWuMCQHVPgCWqqlKfTK3Dyscn9MfsCUnN2fZY+T0fx3lutLcIOwvQc/N2EDJIb0/R+7XMrzfUDVrkGeBoG11tBkKjltdC19JrAmGAkfIcN0LMOeZT7yTlZ/f/6d5C19DegXX74owM4V4pkqs/hbpmDkvQYkSXPfVpZ9ZTVUVSBrwKVaVX9A1hTXjIzfsuoZheMIdlakt0qSIuukyaIxzi1aAH67nR0kp+XCLldBDXGKQXah+mIGQPDBwWFR34re40jzxKmvLT+Dq+5yASgoLDbul8IYDJa2r7yYZQu+EgsW24p62q+y041wW4YIGBJs/cQqpCw== stephen304@gmail.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Allow SSH over Yggdrasil ===&lt;br /&gt;
# Navigate to Network &amp;gt; Firewall&lt;br /&gt;
# Select the &amp;quot;Traffic Rules tab&lt;br /&gt;
## [[File:Firewall_traffic_rules_tab_owrt.png|frameless|The network firewall traffic rules tab.]]&lt;br /&gt;
# Scroll down to &amp;quot;Allow-SSH-Yggdrasil&amp;quot;&lt;br /&gt;
# Enable the Accept input checkbox&lt;br /&gt;
## [[File:Enable_ssh_over_yggdrasil_firewall_rule_checked.png|frameless|Enable the ssh-over-yggdrasil firewall rule.]]&lt;br /&gt;
# Click &amp;quot;Save and Apply&amp;quot;&lt;br /&gt;
## [[File:firewall_save_and_apply.png|frameless|Click save and apply]]&lt;br /&gt;
&lt;br /&gt;
== The Diagnostic Page ==&lt;br /&gt;
== The Yggdrasil Page ==&lt;br /&gt;
&lt;br /&gt;
[[File:Peers.png|thumb|A working mesh node should have several peers.]]&lt;br /&gt;
&lt;br /&gt;
One of the most helpful screens for troubleshooting is the Yggdrasil page. This page is entirely focused on your mesh node's status ''within the global Yggdrasil mesh network.'' You can access the Yggdrasil page by selecting &amp;quot;Network &amp;gt; Yggdrasil&amp;quot; on the right-hand menu in OpenWrt.&lt;br /&gt;
&lt;br /&gt;
=== Important Yggdrasil Information ===&lt;br /&gt;
&lt;br /&gt;
You can view important information about your mesh node in the Yggdrasil screen. Among other things, you can view your node's static [https://en.wikipedia.org/wiki/IPv6 IPv6] address and [https://en.wikipedia.org/wiki/Public-key_cryptography public key.]&lt;br /&gt;
&lt;br /&gt;
Your static IPv6 address is unique to the Yggdrasil, and never changes. It comes in handy very frequently, and is used for remote support (among other things.) Your public key is sometimes used to gain access to private resources on the Yggdrasil network. It's good to know where it is just in case you ever need it.&lt;br /&gt;
&lt;br /&gt;
[[File:IPv6.png|frameless|Your static IPv6 address is unique to the Yggdrasil, and never changes.]]&lt;br /&gt;
[[File:Pubkey.png|frameless|Your public key is sometimes used to gain access to private resources on the Yggdrasil network.]]&lt;br /&gt;
&lt;br /&gt;
=== Checking for Peers ===&lt;br /&gt;
&lt;br /&gt;
As long as your mesh node has public Yggdrasil peers, it is connected to the global Yggdrasil mesh network. This means that things like remote support will work properly. If you're interested in learning more about Yggdrasil vs. the Internet vs. the LAN, see our [[Network Architecture]] page.&lt;br /&gt;
&lt;br /&gt;
A working mesh node should have several peers. You can see these in the following screen:&lt;br /&gt;
* [[File:Peers.png|frameless|A working mesh node should have several peers.]]&lt;br /&gt;
&lt;br /&gt;
If you don't have any peers, your Yggdrasil screen will look something like this:&lt;br /&gt;
* [[File:No_Peers.png|frameless|If you don't have any peers, your Yggdrasil screen will look something like this.]]&lt;br /&gt;
* Note the &amp;quot;Proto&amp;quot; column.... it says &amp;quot;self,&amp;quot; because the only peer your mesh node has is ... itself!&lt;br /&gt;
&lt;br /&gt;
== The Internet Gateway Page ==&lt;br /&gt;
&lt;br /&gt;
Once you are connected to the ''Yggdrasil mesh network'' (see previous section), it is time to configure the node for internet access. To do so, the node needs to be connected to an internet gateway. We use a program called [https://github.com/massmesh/autoygg Autoygg] for this purpose. You can access the Internet Gateway page by selecting &amp;quot;Network &amp;gt; Internet Gateway&amp;quot; in the left-hand menu in OpenWrt.&lt;br /&gt;
&lt;br /&gt;
=== The Autoygg client status page ===&lt;br /&gt;
&lt;br /&gt;
The '''Status''' page shows the current connection state with the configured Autoygg Gateway. On first boot, the page will show that you are '''disconnected''':&lt;br /&gt;
&lt;br /&gt;
[[File:AutoyggStatusFirstTimeSetup.png|frameless|The Autoygg status screen for a new installation.]]&lt;br /&gt;
&lt;br /&gt;
=== The Autoygg client settings page ===&lt;br /&gt;
&lt;br /&gt;
On the '''Settings''' page, an Internet Gateway server can be configured. It is also possible (but not required) to populate your name, e-mail address and/or phone number, to identify yourself to the gateway owner.&lt;br /&gt;
&lt;br /&gt;
==== Connecting to a Mass Mesh public Internet Gateway ====&lt;br /&gt;
&lt;br /&gt;
Mass Mesh runs a public Internet Gateway at the address '''201:506e:60d6:bd66:e35c:606:4883:ea9a'''. If you would like to use it to connect to the internet, put that address in the '''autoygg gateway''' field and click '''SAVE &amp;amp; APPLY''':&lt;br /&gt;
&lt;br /&gt;
[[File:AutoyggSettingsMassMeshGateway.png|frameless|The Autoygg settings screen with the Mass Mesh gateway configured.]]&lt;br /&gt;
&lt;br /&gt;
At this point, the '''Status''' page will show you are not connected:&lt;br /&gt;
&lt;br /&gt;
[[File:AutoyggStatusPageClientNotConnected.png|frameless|The Autoygg status screen with the Mass Mesh gateway configured, but not connected.]]&lt;br /&gt;
&lt;br /&gt;
Before you can connect to the internet via the Mass Mesh gateway, one of our volunteers will need to add your node to the accesslist on the gateway server. You can request this in the '''[https://app.element.io/#/room/#mm-ap-hosts:matrix.org Mass Mesh AP Hosts chat room].''' Please provide your Yggdrasil IPv6 address when you do so, which is available on the '''Yggdrasil node status''' page:&lt;br /&gt;
&lt;br /&gt;
[[File:IPv6.png|frameless|Your static IPv6 address is unique to your Yggdrasil node, and never changes.]]&lt;br /&gt;
&lt;br /&gt;
Once your node is added to our accesslist, you can hit the '''Connect''' button and if that goes well, the status page will look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[File:AutoyggStatusPageClientConnected.png|frameless|The Autoygg status screen with the Mass Mesh gateway configured and connected.]]&lt;br /&gt;
&lt;br /&gt;
==== Connecting to your own Internet Gateway ====&lt;br /&gt;
&lt;br /&gt;
It is also possible to run your own Internet Gateway server. This can be done on a cheap cloud VPS, for instance. It requires installing and running the [https://github.com/MassMesh/autoygg/blob/main/README.md Autoygg server]. If you want assistance with this, please ask in the '''[https://app.element.io/#/room/#massmeshtech:matrix.org MassMesh Tech chat room].'''&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=First_Time_Setup&amp;diff=1810</id>
		<title>First Time Setup</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=First_Time_Setup&amp;diff=1810"/>
		<updated>2020-09-02T00:42:03Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* The Internet Gateway Page */ Add instructions for Autoygg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tip | Before continuing, connect to your mesh node using the '''MassMesh.org''' wireless network or by connecting directly to the mesh node, like in [[Mesh Node Troubleshooting]].}}&lt;br /&gt;
&lt;br /&gt;
{{Tip | Access your mesh node by navigating to http://192.168.42.1 in your web browser.}}&lt;br /&gt;
&lt;br /&gt;
== Setting Your Password ==&lt;br /&gt;
&lt;br /&gt;
[[File:No_password.png|thumb|When you first boot your mesh node, there is no admin password set.]]&lt;br /&gt;
&lt;br /&gt;
When you first boot your mesh node, there is no password set. This is quite dangerous, so OpenWrt will disable many useful features until you set one. Therefore, it is important that you set one up right away.&lt;br /&gt;
&lt;br /&gt;
{{Warning|This is not the same thing as a wi-fi password. Your admin password should be a secret.}}&lt;br /&gt;
&lt;br /&gt;
To set a password, complete the following steps:&lt;br /&gt;
* Navigate to &amp;quot;System &amp;gt; Administration&amp;quot; in the left-hand menu of OpenWrt&lt;br /&gt;
** [[File:Set_password_screen.png|frameless|Enter your desired password twice, and click &amp;quot;Save.&amp;quot;]]&lt;br /&gt;
* Enter your desired password twice, and hit Enter or click &amp;quot;Save.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Enabling Remote Support ==&lt;br /&gt;
&lt;br /&gt;
Following these steps, you will allow a maintainer to log into and use your mesh node remotely -- as long as it's connected to the global Yggdrasil network. See [[#The Yggdrasil Page]] if you think you may not be connected to the rest of the Yggdrasil network.&lt;br /&gt;
&lt;br /&gt;
In order to enable remote support, you will need to:&lt;br /&gt;
# Authorize the maintenance team to access your mesh node&lt;br /&gt;
# Allow SSH over Yggdrasil&lt;br /&gt;
&lt;br /&gt;
=== Authorize the Maintenance Team to Access Your Mesh Node ===&lt;br /&gt;
&lt;br /&gt;
{{Note|You must first [[#Setting Your Password|Set Up a Password]] before adding authorized remote users.}}&lt;br /&gt;
&lt;br /&gt;
# Navigate to System &amp;gt; Administration&lt;br /&gt;
# Select the &amp;quot;SSH-Keys&amp;quot; tab&lt;br /&gt;
## [[File:SSH_Keys_Screen_owrt.png|frameless|The ssh-keys tab.]]&lt;br /&gt;
# Enter the following keys, clicking &amp;quot;Add Key&amp;quot; in between each&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCndT67lJYJl1Re974keiGRzzD0m4qY9KM4m/XttWWinSggoFD+VKQDZchxnsyGbtDFH/NOSfI37MS+djccDj5fue1s/KnzL/j44JFyzt0M1pVgwopetMKTCaduCVeCQP2JN20Ss4fBI4FjvBM1tgAx3d1FUJEz7axwxJUBAgUDtvA1PUSKdhPxZTlWrKgHr4OXzdEoYJcLiktQc79QR2lJHKIBZgVq0C76Y/q+Q3mbl7ppLMmNgFRprXRkzDtRHndin5S7+f2zOlNryIGdnX3HCItr0XBkG/uNkrWnx0NFArP6Xq/BsJMhdNvl+KfCZiLYN2m3qxhEjZeTQIfBXh5wDfUzW0tPoDSCQ2WIBRjkSPjgnohskbakF6bnzLPJlsQofHfdDYUJJkywTYfo7FspPR4h2//FrBUDaRUXFUQBaguBTKX5P6U6quXSAfupkPIjZ7TkbxL0Q4OkWa/MX/QdBi/wZMYTcm4osJBmFxEZEumFHTb2gZ3SyTKD9sCKQHE= lurker@lurker-T450&lt;br /&gt;
&lt;br /&gt;
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEA3nzI6T6Lpd5xFoRewcx91Dv9sUzNNmdYfwOleemBFz0y3RaQElehUWasyjuIURZw7RL5EjvrqeQq9pe/lO99dO0F9yMuMsMH2t88YrVJQ/z/5Aa4I2zYQotKb/9CCfynsy41y5xywxtOwXiDk2kpo+c9VZCyCeW8Hnc9HaIpkKSLnkqDVhESzlrkYyNKZvUAL1hiFIzmmw/veFgRb7/ol76Ze3xsWugbHUECEIAKoz/8uaevOAAoJrMFhffFIQ8IfClqDZv2lnBBhvh1O9TO0Mg4klcieyQ1RZhMjeP4WnAa9PXP7xZlQHLgO9qO1jDd2sOdkX6EedCfX5jO4Y51HPJpV35uYumw3veftMlpIJFmA2eIQxU19SCYpojWRGXZ5v9WtFIHX2nGy+Gi1bk7TR+HBsCDXOPhhQk4ceIM4OonqEb1NJ57elxh6mFbDAQCZtYhRLqYvcyGpuBdVdLNOJbOZ7vBJY3Kfjxa87rvFIJheT6DXhpdRayeOovLm0vuJ53bZoWxWOqjpuigQqHtSB3OmintrKB916BhNFsHwPeZpK0ahZGFygV63REM/X8m0nOlHqyAY69uzLHyYXM83zAI1L5Y4wuzsVqO+1tnK6PMcfg5/DArjBrn7YqA5tzJY9EgdVVPjpgjD2yYYTOP6b3UUw4uFj3asnOX24dfVzk= ward@countzero&lt;br /&gt;
&lt;br /&gt;
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDVi8ExDYdV7EfkjQiMZA3o0QtjVNtd0wVzp9n1xFqY1dse/zHBqrEZQKBtbrk7D/NAI4qzoogC6SbHWa8fHPyc3LJuKbxHrSC8xylByGL7nAzI7AfmsHCQ8Z+OrgI625PzVpMCY/30D/rBgR2JTlzxlA35cuOPjN5r1HHE53+mVRu62jn/wTa16ubFXaYmibpZ3C830+qsAB8RPEHJH7zknFNPponAqH7kt1I8WQL6fa2TCuxIBijzDLbtX1xH4klTeMRJTK+tmLRUUjUefD/f7lNlgce7o9zkHktO5u1hmpC95/NC2cylzU9RWglHqJ21fSg66y441lm0Y9ZUc2p7DQFQP0f6kovuPWgVPWuMCQHVPgCWqqlKfTK3Dyscn9MfsCUnN2fZY+T0fx3lutLcIOwvQc/N2EDJIb0/R+7XMrzfUDVrkGeBoG11tBkKjltdC19JrAmGAkfIcN0LMOeZT7yTlZ/f/6d5C19DegXX74owM4V4pkqs/hbpmDkvQYkSXPfVpZ9ZTVUVSBrwKVaVX9A1hTXjIzfsuoZheMIdlakt0qSIuukyaIxzi1aAH67nR0kp+XCLldBDXGKQXah+mIGQPDBwWFR34re40jzxKmvLT+Dq+5yASgoLDbul8IYDJa2r7yYZQu+EgsW24p62q+y041wW4YIGBJs/cQqpCw== stephen304@gmail.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Allow SSH over Yggdrasil ===&lt;br /&gt;
# Navigate to Network &amp;gt; Firewall&lt;br /&gt;
# Select the &amp;quot;Traffic Rules tab&lt;br /&gt;
## [[File:Firewall_traffic_rules_tab_owrt.png|frameless|The network firewall traffic rules tab.]]&lt;br /&gt;
# Scroll down to &amp;quot;Allow-SSH-Yggdrasil&amp;quot;&lt;br /&gt;
# Enable the Accept input checkbox&lt;br /&gt;
## [[File:Enable_ssh_over_yggdrasil_firewall_rule_checked.png|frameless|Enable the ssh-over-yggdrasil firewall rule.]]&lt;br /&gt;
# Click &amp;quot;Save and Apply&amp;quot;&lt;br /&gt;
## [[File:firewall_save_and_apply.png|frameless|Click save and apply]]&lt;br /&gt;
&lt;br /&gt;
== The Diagnostic Page ==&lt;br /&gt;
== The Yggdrasil Page ==&lt;br /&gt;
&lt;br /&gt;
[[File:Peers.png|thumb|A working mesh node should have several peers.]]&lt;br /&gt;
&lt;br /&gt;
One of the most helpful screens for troubleshooting is the Yggdrasil page. This page is entirely focused on your mesh node's status ''within the global Yggdrasil mesh network.'' You can access the Yggdrasil page by selecting &amp;quot;Network &amp;gt; Yggdrasil&amp;quot; on the right-hand menu in OpenWrt.&lt;br /&gt;
&lt;br /&gt;
=== Important Yggdrasil Information ===&lt;br /&gt;
&lt;br /&gt;
You can view important information about your mesh node in the Yggdrasil screen. Among other things, you can view your node's static [https://en.wikipedia.org/wiki/IPv6 IPv6] address and [https://en.wikipedia.org/wiki/Public-key_cryptography public key.]&lt;br /&gt;
&lt;br /&gt;
Your static IPv6 address is unique to the Yggdrasil, and never changes. It comes in handy very frequently, and is used for remote support (among other things.) Your public key is sometimes used to gain access to private resources on the Yggdrasil network. It's good to know where it is just in case you ever need it.&lt;br /&gt;
&lt;br /&gt;
[[File:IPv6.png|frameless|Your static IPv6 address is unique to the Yggdrasil, and never changes.]]&lt;br /&gt;
[[File:Pubkey.png|frameless|Your public key is sometimes used to gain access to private resources on the Yggdrasil network.]]&lt;br /&gt;
&lt;br /&gt;
=== Checking for Peers ===&lt;br /&gt;
&lt;br /&gt;
As long as your mesh node has public Yggdrasil peers, it is connected to the global Yggdrasil mesh network. This means that things like remote support will work properly. If you're interested in learning more about Yggdrasil vs. the Internet vs. the LAN, see our [[Network Architecture]] page.&lt;br /&gt;
&lt;br /&gt;
A working mesh node should have several peers. You can see these in the following screen:&lt;br /&gt;
* [[File:Peers.png|frameless|A working mesh node should have several peers.]]&lt;br /&gt;
&lt;br /&gt;
If you don't have any peers, your Yggdrasil screen will look something like this:&lt;br /&gt;
* [[File:No_Peers.png|frameless|If you don't have any peers, your Yggdrasil screen will look something like this.]]&lt;br /&gt;
* Note the &amp;quot;Proto&amp;quot; column.... it says &amp;quot;self,&amp;quot; because the only peer your mesh node has is ... itself!&lt;br /&gt;
&lt;br /&gt;
== The Internet Gateway Page ==&lt;br /&gt;
&lt;br /&gt;
Once you are connected to the ''Yggdrasil mesh network'' (see previous section), it is time to configure the node for internet access. To do so, the node needs to be connected to an internet gateway. We use a program called [https://github.com/massmesh/autoygg Autoygg] for this purpose. You can access the Internet Gateway page by selecting &amp;quot;Network &amp;gt; Internet Gateway&amp;quot; in the left-hand menu in OpenWrt.&lt;br /&gt;
&lt;br /&gt;
=== The Autoygg client status page ===&lt;br /&gt;
&lt;br /&gt;
The '''Status''' page shows the current connection state with the configured Autoygg Gateway. On first boot, the page will show that you are '''disconnected''':&lt;br /&gt;
&lt;br /&gt;
[[File:AutoyggStatusFirstTimeSetup.png|frameless|The Autoygg status screen for a new installation.]]&lt;br /&gt;
&lt;br /&gt;
=== The Autoygg client settings page ===&lt;br /&gt;
&lt;br /&gt;
On the '''Settings''' page, an Internet Gateway server can be configured. It is also possible (but not required) to populate your name, e-mail address and/or phone number, to identify yourself to the gateway owner.&lt;br /&gt;
&lt;br /&gt;
==== Connecting to a Mass Mesh public Internet Gateway ====&lt;br /&gt;
&lt;br /&gt;
Mass Mesh runs a public Internet Gateway at the address '''201:506e:60d6:bd66:e35c:606:4883:ea9a'''. If you would like to use it to connect to the internet, put that address in the '''autoygg gateway''' field and click '''SAVE &amp;amp; APPLY''':&lt;br /&gt;
&lt;br /&gt;
[[File:AutoyggSettingsMassMeshGateway.png|frameless|The Autoygg settings screen with the Mass Mesh gateway configured.]]&lt;br /&gt;
&lt;br /&gt;
At this point, the '''Status''' page will show you are not connected:&lt;br /&gt;
&lt;br /&gt;
[[File:AutoyggStatusPageClientNotConnected.png|frameless|The Autoygg status screen with the Mass Mesh gateway configured, but not connected.]]&lt;br /&gt;
&lt;br /&gt;
Before you can connect to the internet via the Mass Mesh gateway, one of our volunteers will need to add your node to the accesslist on the gateway server. You can request this in the '''[https://app.element.io/#/room/#mm-ap-hosts:matrix.org Mass Mesh AP Hosts chat room].''' Please provide your Yggdrasil IPv6 address when you do so, which is available on the '''Yggdrasil node status''' page, as described above.&lt;br /&gt;
&lt;br /&gt;
Once your node is added to our accesslist, you can hit the '''Connect''' button and if that goes well, the status page will look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[File:AutoyggStatusPageClientConnected.png|frameless|The Autoygg status screen with the Mass Mesh gateway configured and connected.]]&lt;br /&gt;
&lt;br /&gt;
==== Connecting to your own Internet Gateway ====&lt;br /&gt;
&lt;br /&gt;
It is also possible to run your own Internet Gateway server. This can be done on a cheap cloud VPS, for instance. It requires installing and running the [https://github.com/MassMesh/autoygg/blob/main/README.md Autoygg server]. If you want assistance with this, please ask in the '''[https://app.element.io/#/room/#massmeshtech:matrix.org MassMesh Tech chat room].'''&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=File:AutoyggStatusPageClientConnected.png&amp;diff=1809</id>
		<title>File:AutoyggStatusPageClientConnected.png</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=File:AutoyggStatusPageClientConnected.png&amp;diff=1809"/>
		<updated>2020-09-02T00:36:42Z</updated>

		<summary type="html">&lt;p&gt;Cure: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=File:AutoyggStatusPageClientNotConnected.png&amp;diff=1808</id>
		<title>File:AutoyggStatusPageClientNotConnected.png</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=File:AutoyggStatusPageClientNotConnected.png&amp;diff=1808"/>
		<updated>2020-09-02T00:26:10Z</updated>

		<summary type="html">&lt;p&gt;Cure: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=File:AutoyggSettingsMassMeshGateway.png&amp;diff=1807</id>
		<title>File:AutoyggSettingsMassMeshGateway.png</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=File:AutoyggSettingsMassMeshGateway.png&amp;diff=1807"/>
		<updated>2020-09-02T00:22:59Z</updated>

		<summary type="html">&lt;p&gt;Cure: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=File:AutoyggStatusFirstTimeSetup.png&amp;diff=1806</id>
		<title>File:AutoyggStatusFirstTimeSetup.png</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=File:AutoyggStatusFirstTimeSetup.png&amp;diff=1806"/>
		<updated>2020-09-02T00:16:08Z</updated>

		<summary type="html">&lt;p&gt;Cure: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Node_Setup&amp;diff=1805</id>
		<title>Node Setup</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Node_Setup&amp;diff=1805"/>
		<updated>2020-09-01T23:52:14Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Next Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Full_Node_Diagram_(With_Labels).jpeg|thumb|A wireless mesh node consists of a &amp;quot;mesh node,&amp;quot; &amp;quot;antenna,&amp;quot; and an Internet connection. (Unless you're joining an existing neighborhood network, in which case you will connect to the Internet that way.)]]&lt;br /&gt;
[[File:Full_Node_Setup_(realism).jpeg|thumb|An example wireless mesh node with tags to match up to the diagram. See [[#Assembly]] for more details.]]&lt;br /&gt;
&lt;br /&gt;
In these instructions, we will cover how to deploy a mesh node that is privacy-enabled by default, and allows you to share an Internet connection with your neighbors. The whole setup process takes about 2 hours from start to finish. The necessary hardware is listed below, and instructions for everything from flashing the firmware to placing the antenna are covered.&lt;br /&gt;
&lt;br /&gt;
= Definitions =&lt;br /&gt;
* '''Mesh Node:''' A ''mesh node'' is the smallest unit on a mesh network. Every ''mesh node'' is a ''router'', and is critical for delivering the online traffic of its neighbors. For more details about how mesh networks and neighborhood networks work internally, please see the [[Network Architecture]] page.&lt;br /&gt;
* '''Firmware:''' Firmware is the first thing that you will install on your mesh node. ''Firmware'' is just like the operating system on your computer (Linux, Windows, Mac, etc.) ''Firmware'' is what allows us to install applications, manage users, and all the other things you can do on a functioning computer. The firmware that we use on our network is a customized version of [https://openwrt.org OpenWrt].&lt;br /&gt;
* '''Antenna/Radio:''' The ''antenna'' (or ''radio'') is what allows your mesh node to communicate with other mesh nodes. Our ''antennas'' communicate in [https://en.wikipedia.org/wiki/Open_spectrum free spectrum] at 2.4Ghz and 5Ghz -- just like the wi-fi in your home or workplace.&lt;br /&gt;
* '''Router:''' A ''router'' is any computer that is responsible for &amp;quot;routing&amp;quot; information on a network. All the ''mesh nodes'' on our network can also be called ''routers.''&lt;br /&gt;
* '''Gateway:''' A ''gateway'' or ''gateway server'' is a computer (usually a big one) that acts as a bridge between two networks. In order to provide a high level of security on our network, all of our ''mesh nodes'' reach the Internet through a ''gateway server.'' For more details about how mesh networks and neighborhood networks work internally, please see the [[Network Architecture]] page.&lt;br /&gt;
&lt;br /&gt;
= Preparation =&lt;br /&gt;
&lt;br /&gt;
{{Note|Set yourself up for success, and '''[https://riot.im/app/#/group/+massmesh:matrix.org introduce yourself in one of our chat rooms] before you begin.''' Something will go wrong during the setup process, and it's best to have experienced friends ready to help when it does.}}&lt;br /&gt;
&lt;br /&gt;
== Considerations ==&lt;br /&gt;
&lt;br /&gt;
* '''Time:''' about 2 hours&lt;br /&gt;
* '''Cost:''' about $150&lt;br /&gt;
* '''Internet Access:''' If you do not already have Internet access, you will need to find a neighbor (on your same street) who is willing to set up a mesh node at their home too, and work out a deal to share their Internet connection fairly.&lt;br /&gt;
* '''Difficulty:''' The instructions contained on this website are quite technical, and may be incomplete in some places. Most of these instructions were written with Linux users in mind. If you are using another operating system (like Windows or Mac,) some &amp;quot;[https://ddg.gg googling]&amp;quot; may be necessary to get through them. As stated above, it's good to have friends. [https://riot.im/app/#/group/+massmesh:matrix.org Introduce yourself in any of our chat channels] if you want some help getting started!&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
&lt;br /&gt;
=== Standard Mesh Node ===&lt;br /&gt;
To set up a standard mesh node that broadcasts a secure Internet connection in all directions, you will need to obtain the following equipment:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Rpf-raspberry-pi-4-model-b.png | '''[[RPF Raspberry Pi 4 Model B]]'''&lt;br /&gt;
File:Pi_power_supply.jpg | '''Official Raspberry Pi 4 Power Supply'''&lt;br /&gt;
File:MicroSD_card.jpg  | '''microSD Card''' (4GB+)&lt;br /&gt;
File:Ethernet.jpg | '''Ethernet Cable (3x)''' (Three sections, cut to length)&lt;br /&gt;
File:usb_to_eth.png | '''USB to Ethernet Adapter (1+)'''&lt;br /&gt;
File:Usb-reader-writer.png | '''SD Card reader/writer.''' (Some computers come with this built in.)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ubnt-uap-ac-m.png | '''[[Ubiquiti UAP AC Mesh]]'''&lt;br /&gt;
File:Poe.jpg | '''PoE Injector''' (One should come with the UAP AC Mesh if you buy it new)&lt;br /&gt;
File:Paperclip.jpg | '''One Paperclip''' (Seriously, these come in handy)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Custom Mesh Nodes ===&lt;br /&gt;
If you know what kind of hardware you want, and this 'aint it, please see the recommended [[Hardware Bundles]], or browse the full list of [[:Category:Devices|Devices]].&lt;br /&gt;
&lt;br /&gt;
= Firmware Installation =&lt;br /&gt;
&lt;br /&gt;
Installing the firmware is about moderate difficulty, and will take up to two hours. As mentioned above, it is best to join our chatroom before you begin. If you prefer, bring your hardware to one of our weekly [https://massmesh.org/wiki/index.php?title=Contact_and_Meeting_Info meetups], and we will be happy to flash it for you!&lt;br /&gt;
&lt;br /&gt;
The steps to get a mesh node up and running are as follows:&lt;br /&gt;
# Flash the firmware on your mesh node (Raspberry Pi 4 is recommended)&lt;br /&gt;
# Flash the firmware on your mesh radio (UAP AC Mesh is recommended in most cases)&lt;br /&gt;
# Assemble the wireless mesh node&lt;br /&gt;
# Configure a secure Internet gateway connection&lt;br /&gt;
&lt;br /&gt;
== Raspberry Pi 4 ==&lt;br /&gt;
&lt;br /&gt;
=== Materials &amp;amp; Software ===&lt;br /&gt;
{{Tip|Download and install the appropriate version of the [https://www.raspberrypi.org/downloads/ Raspberry Pi Imager] for your computer before continuing.}}&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Rpf-raspberry-pi-4-model-b.png | '''[[RPF Raspberry Pi 4 Model B]]'''&lt;br /&gt;
File:MicroSD_card.jpg  | '''microSD Card''' (4GB+)&lt;br /&gt;
File:Ethernet.jpg | '''Ethernet Cable (1x)'''&lt;br /&gt;
File:Usb-reader-writer.png | '''SD Card reader/writer.''' (Some computers come with this built in.)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install the Firmware ===&lt;br /&gt;
# Download the latest stable version of Mass Mesh's free firmware [https://downloads.massmesh.net/snapshots/images/meshnode/rpi-4/openwrt-massmesh-meshnode-bcm27xx-bcm2711-rpi-4-ext4-sysupgrade.img.gz here]&lt;br /&gt;
## Following along with an '''Espresso Bin v5?''' Download your firmware from [https://downloads.massmesh.net/snapshots/images/meshnode/globalscale_espressobin/openwrt-massmesh-meshnode-mvebu-cortexa53-globalscale_espressobin-squashfs-sdcard.img.gz here] instead!&lt;br /&gt;
# Open the Raspberry Pi Imager (Download and install it from [https://www.raspberrypi.org/downloads/ here] if you haven't yet.)&lt;br /&gt;
# Select &amp;quot;Choose OS&amp;quot;&lt;br /&gt;
## [[File:RPI_Imager_Main_Screen.png|frameless|Select &amp;quot;Choose OS&amp;quot;]]&lt;br /&gt;
# Scroll to the bottom of the list, and select &amp;quot;Use Custom&amp;quot; &lt;br /&gt;
## [[File:RPI_Imager_Use_Custom.png|frameless|Scroll to the bottom of the list, and select &amp;quot;Use Custom&amp;quot;]]&lt;br /&gt;
# Find the Mass Mesh firmware you just downloaded, and select it from the filesystem.&lt;br /&gt;
# Once you have selected the appropriate firmware, select &amp;quot;Choose SD Card&amp;quot; &lt;br /&gt;
## [[File:RPI_Imager_Main_Screen.png|frameless|Once you have selected the appropriate firmware, select &amp;quot;Choose SD Card&amp;quot;]]&lt;br /&gt;
# You should see something like the following. Go ahead and select that card. (You probably only see one, but use the size of the card as a hint if you see several.) &lt;br /&gt;
## [[File:RPI_Imager_Select_SD_Card.png|frameless|Go ahead and select that card. (You probably only see one, but use the size of the card as a hint if you see several.)]]&lt;br /&gt;
# Once you have selected the OS and the SD Card, select &amp;quot;Write.&amp;quot; You will see a warning like the one shown below... Go ahead and select &amp;quot;Yes.&amp;quot;&lt;br /&gt;
## [[File:RPI_Imager_Write.png|frameless|Once you have selected the OS and the SD Card, select &amp;quot;Write.&amp;quot;]]&lt;br /&gt;
## [[File:RPI_Imager_Warning.png|frameless|You will see a warning like this... Go ahead and select &amp;quot;Yes.&amp;quot;]]&lt;br /&gt;
# You should see a screen like the following. Click &amp;quot;Continue,&amp;quot; and remove the SD card from your computer.&lt;br /&gt;
## [[File:RPI_Imager_Success.png|frameless|Click &amp;quot;Continue,&amp;quot; and remove the SD card from your computer.]]&lt;br /&gt;
# Plug the micro SD card into your Raspberry Pi 4.&lt;br /&gt;
## Plug in the SD card with the gold side up, like shown here:&lt;br /&gt;
## [[File:Plug_in_sd_rpi.jpeg|frameless|Plug in the SD card with the gold side up]]&lt;br /&gt;
&lt;br /&gt;
'''Congratulations!!!''' You have successfully prepared your Raspberry Pi 4b to act as a secure mesh node. Set it aside for now while we prepare the other hardware. We will assemble it at the end in [[#Assembly]].&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting/Progress Check ===&lt;br /&gt;
&lt;br /&gt;
To troubleshoot the install so far, please follow the [[Mesh Node Troubleshooting]] guide. That guide will cover how to connect your laptop directly to the mesh node and make sure everything is set up as it should be. This can be helpful on your first install, or when you suspect the antenna (not set up yet) to be causing issues.&lt;br /&gt;
&lt;br /&gt;
== UAP AC Mesh ==&lt;br /&gt;
&lt;br /&gt;
=== Materials ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Ubnt-uap-ac-m.png | '''[[Ubiquiti UAP AC Mesh]]'''&lt;br /&gt;
File:Ethernet.jpg | '''Ethernet Cable (2x)'''&lt;br /&gt;
File:Poe.jpg | '''PoE Injector''' (One should come with the UAP AC Mesh if you buy it new)&lt;br /&gt;
File:Paperclip.jpg | '''One Paperclip''' (Seriously, these come in handy)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install the Firmware ===&lt;br /&gt;
&lt;br /&gt;
The steps to install firmware on the antenna are a bit different than they were for the Raspberry Pi. For one thing, the antenna does not have an SD card. So, we will have to install the firmware by connecting to the antenna with our laptop. Please see page 6 of the &amp;quot;Node Installation Guide&amp;quot; for instructions on plugging in the antenna. After you have followed the instructions there, connect your computer to the port marked &amp;quot;LAN&amp;quot; on your PoE injector. We are now ready to begin installing the firmware.&lt;br /&gt;
&lt;br /&gt;
==== Enter Factory Reset Mode ====&lt;br /&gt;
&lt;br /&gt;
# Put the antenna into factory reset mode&lt;br /&gt;
## Unplug the ethernet from the antenna&lt;br /&gt;
## Use a paper clip to hold in the reset button&lt;br /&gt;
## Plug the ethernet back in to the antenna, holding the paperclip steady as you do&lt;br /&gt;
## Continue holding the paper clip until the light on the side of your UAP AC Mesh starts blinking OFF/WHITE/BLUE (should take about 30 seconds)&lt;br /&gt;
&lt;br /&gt;
==== Set Up a Static IP Address ====&lt;br /&gt;
&lt;br /&gt;
# Assign your computer a static IP address of 192.168.1.25/24&lt;br /&gt;
## '''Windows:''' [https://winaero.com/blog/set-static-ip-address-windows-10/ Setting a static IP address in Windows 10]&lt;br /&gt;
## '''Mac:''' [https://osxdaily.com/2010/12/17/set-static-ip-address-mac/ Setting a static IP address in OSX]&lt;br /&gt;
## '''Linux:''' [https://linuxize.com/post/how-to-configure-static-ip-address-on-ubuntu-18-04/#configuring-static-ip-address-on-ubuntu-desktop Setting a static IP address in Ubuntu 18.04 desktop]&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
Because we are &amp;quot;jailbreaking&amp;quot; the Ubiquiti router, we have to downgrade to an older version of their proprietary firmware first. Using a tool called TFTP, we can do this quite simply.&lt;br /&gt;
&lt;br /&gt;
# Download [https://dl.ui.com/unifi/firmware/U7PG2/3.7.58.6385/BZ.qca956x.v3.7.58.6385.170508.0957.bin version 3.7 of Ubiquiti's AirOS]&lt;br /&gt;
# Rename the firmware file to &amp;lt;code&amp;gt;firmware.bin&amp;lt;/code&amp;gt;, as the device will look for this file name&lt;br /&gt;
# Launch a command prompt/terminal, and enter the following, one line at a time:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tftp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
Sent x bytes in x seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The LED will flash at varying speeds, then it will turn solid when complete.&lt;br /&gt;
&lt;br /&gt;
* If you don't see something like what's shown above (maybe your &amp;quot;Transfer timed out.), go back and make sure that the light on the side of your UAP AC Mesh is blinking in the pattern indicated above. If not, start again from [[#Enter Factory Reset Mode]]&lt;br /&gt;
* If the light is blinking properly, make sure that your static IP address was assigned properly. If not, start again from [[#Set Up a Static IP Address]]&lt;br /&gt;
* If you are still having trouble transferring firmware to the device, reach out for help in the chatroom. Someone will help you get unstuck.&lt;br /&gt;
&lt;br /&gt;
==== Install the Mass Mesh Firmware ====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Download the latest Mass Mesh radio firmware [https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/openwrt-massmesh-meshradio-ath79-generic-ubnt_unifiac-mesh-squashfs-sysupgrade.bin here.]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Statically assign your computer the IP address &amp;lt;code&amp;gt;192.168.1.25&amp;lt;/code&amp;gt; (You may already have this complete, if you're following this whole guide start to finish.)&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;See [[#Set Up a Static IP Address]] if needed.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Open a terminal/command prompt.&amp;lt;/b&amp;gt; You will need it in order to copy/paste the commands shown below.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the Mass Mesh firmware onto the device:&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt; &amp;lt;pre&amp;gt;scp openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin ubnt@192.168.1.20:/tmp/&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SSH into the device and log in with the default username and password &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;pre&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Then write the firmware to &amp;lt;code&amp;gt;kernel0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kernel1&amp;lt;/code&amp;gt; by entering the following into the terminal, line by line:&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;pre&amp;gt;BZ.v3.7.40# mtd write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel0&lt;br /&gt;
BZ.v3.7.40# mtd -r write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel1&amp;lt;/pre&amp;gt;&lt;br /&gt;
        &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;You should see something like the following:&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;pre&amp;gt;BZ.v3.7.40# mtd write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel0&lt;br /&gt;
Unlocking kernel0 ...&lt;br /&gt;
Erasing kernel0 ...&lt;br /&gt;
Writing from /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin to kernel0 ...  [e/w]&lt;br /&gt;
&lt;br /&gt;
BZ.v3.7.40# mtd -r write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel1&lt;br /&gt;
Unlocking kernel1 ...&lt;br /&gt;
Erasing kernel1 ...&lt;br /&gt;
Writing from /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin to kernel1 ...  [e/w]&amp;lt;/pre&amp;gt;&lt;br /&gt;
         &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Type &amp;lt;code&amp;gt;reboot&amp;lt;/code&amp;gt; into the terminal, and hit enter. The radio will now restart. Please wait upwards of 5+ minutes during this &amp;quot;first boot&amp;quot; process. When the device is working properly, you should see a wifi network named &amp;quot;MassMesh.org&amp;quot;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Congratulations!''' You have now installed all the firmware you need. Set the radio aside, and pick up in [[#Assembly]]&lt;br /&gt;
&lt;br /&gt;
= Assembly =&lt;br /&gt;
&lt;br /&gt;
To assemble your mesh node, please follow this PDF guide. It can be downloaded for your convenience.&lt;br /&gt;
&lt;br /&gt;
[[File:New_Node_Install_Guide.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
{{Note|You still have to do [[First Time Setup]] in order to access the Internet.}}&lt;br /&gt;
&lt;br /&gt;
# [[First Time Setup]]&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=First_Time_Setup&amp;diff=1804</id>
		<title>First Time Setup</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=First_Time_Setup&amp;diff=1804"/>
		<updated>2020-09-01T23:51:35Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* The Internet Gateway Page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tip | Before continuing, connect to your mesh node using the '''MassMesh.org''' wireless network or by connecting directly to the mesh node, like in [[Mesh Node Troubleshooting]].}}&lt;br /&gt;
&lt;br /&gt;
{{Tip | Access your mesh node by navigating to http://192.168.42.1 in your web browser.}}&lt;br /&gt;
&lt;br /&gt;
== Setting Your Password ==&lt;br /&gt;
&lt;br /&gt;
[[File:No_password.png|thumb|When you first boot your mesh node, there is no admin password set.]]&lt;br /&gt;
&lt;br /&gt;
When you first boot your mesh node, there is no password set. This is quite dangerous, so OpenWrt will disable many useful features until you set one. Therefore, it is important that you set one up right away.&lt;br /&gt;
&lt;br /&gt;
{{Warning|This is not the same thing as a wi-fi password. Your admin password should be a secret.}}&lt;br /&gt;
&lt;br /&gt;
To set a password, complete the following steps:&lt;br /&gt;
* Navigate to &amp;quot;System &amp;gt; Administration&amp;quot; in the left-hand menu of OpenWrt&lt;br /&gt;
** [[File:Set_password_screen.png|frameless|Enter your desired password twice, and click &amp;quot;Save.&amp;quot;]]&lt;br /&gt;
* Enter your desired password twice, and hit Enter or click &amp;quot;Save.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Enabling Remote Support ==&lt;br /&gt;
&lt;br /&gt;
Following these steps, you will allow a maintainer to log into and use your mesh node remotely -- as long as it's connected to the global Yggdrasil network. See [[#The Yggdrasil Page]] if you think you may not be connected to the rest of the Yggdrasil network.&lt;br /&gt;
&lt;br /&gt;
In order to enable remote support, you will need to:&lt;br /&gt;
# Authorize the maintenance team to access your mesh node&lt;br /&gt;
# Allow SSH over Yggdrasil&lt;br /&gt;
&lt;br /&gt;
=== Authorize the Maintenance Team to Access Your Mesh Node ===&lt;br /&gt;
&lt;br /&gt;
{{Note|You must first [[#Setting Your Password|Set Up a Password]] before adding authorized remote users.}}&lt;br /&gt;
&lt;br /&gt;
# Navigate to System &amp;gt; Administration&lt;br /&gt;
# Select the &amp;quot;SSH-Keys&amp;quot; tab&lt;br /&gt;
## [[File:SSH_Keys_Screen_owrt.png|frameless|The ssh-keys tab.]]&lt;br /&gt;
# Enter the following keys, clicking &amp;quot;Add Key&amp;quot; in between each&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCndT67lJYJl1Re974keiGRzzD0m4qY9KM4m/XttWWinSggoFD+VKQDZchxnsyGbtDFH/NOSfI37MS+djccDj5fue1s/KnzL/j44JFyzt0M1pVgwopetMKTCaduCVeCQP2JN20Ss4fBI4FjvBM1tgAx3d1FUJEz7axwxJUBAgUDtvA1PUSKdhPxZTlWrKgHr4OXzdEoYJcLiktQc79QR2lJHKIBZgVq0C76Y/q+Q3mbl7ppLMmNgFRprXRkzDtRHndin5S7+f2zOlNryIGdnX3HCItr0XBkG/uNkrWnx0NFArP6Xq/BsJMhdNvl+KfCZiLYN2m3qxhEjZeTQIfBXh5wDfUzW0tPoDSCQ2WIBRjkSPjgnohskbakF6bnzLPJlsQofHfdDYUJJkywTYfo7FspPR4h2//FrBUDaRUXFUQBaguBTKX5P6U6quXSAfupkPIjZ7TkbxL0Q4OkWa/MX/QdBi/wZMYTcm4osJBmFxEZEumFHTb2gZ3SyTKD9sCKQHE= lurker@lurker-T450&lt;br /&gt;
&lt;br /&gt;
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEA3nzI6T6Lpd5xFoRewcx91Dv9sUzNNmdYfwOleemBFz0y3RaQElehUWasyjuIURZw7RL5EjvrqeQq9pe/lO99dO0F9yMuMsMH2t88YrVJQ/z/5Aa4I2zYQotKb/9CCfynsy41y5xywxtOwXiDk2kpo+c9VZCyCeW8Hnc9HaIpkKSLnkqDVhESzlrkYyNKZvUAL1hiFIzmmw/veFgRb7/ol76Ze3xsWugbHUECEIAKoz/8uaevOAAoJrMFhffFIQ8IfClqDZv2lnBBhvh1O9TO0Mg4klcieyQ1RZhMjeP4WnAa9PXP7xZlQHLgO9qO1jDd2sOdkX6EedCfX5jO4Y51HPJpV35uYumw3veftMlpIJFmA2eIQxU19SCYpojWRGXZ5v9WtFIHX2nGy+Gi1bk7TR+HBsCDXOPhhQk4ceIM4OonqEb1NJ57elxh6mFbDAQCZtYhRLqYvcyGpuBdVdLNOJbOZ7vBJY3Kfjxa87rvFIJheT6DXhpdRayeOovLm0vuJ53bZoWxWOqjpuigQqHtSB3OmintrKB916BhNFsHwPeZpK0ahZGFygV63REM/X8m0nOlHqyAY69uzLHyYXM83zAI1L5Y4wuzsVqO+1tnK6PMcfg5/DArjBrn7YqA5tzJY9EgdVVPjpgjD2yYYTOP6b3UUw4uFj3asnOX24dfVzk= ward@countzero&lt;br /&gt;
&lt;br /&gt;
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDVi8ExDYdV7EfkjQiMZA3o0QtjVNtd0wVzp9n1xFqY1dse/zHBqrEZQKBtbrk7D/NAI4qzoogC6SbHWa8fHPyc3LJuKbxHrSC8xylByGL7nAzI7AfmsHCQ8Z+OrgI625PzVpMCY/30D/rBgR2JTlzxlA35cuOPjN5r1HHE53+mVRu62jn/wTa16ubFXaYmibpZ3C830+qsAB8RPEHJH7zknFNPponAqH7kt1I8WQL6fa2TCuxIBijzDLbtX1xH4klTeMRJTK+tmLRUUjUefD/f7lNlgce7o9zkHktO5u1hmpC95/NC2cylzU9RWglHqJ21fSg66y441lm0Y9ZUc2p7DQFQP0f6kovuPWgVPWuMCQHVPgCWqqlKfTK3Dyscn9MfsCUnN2fZY+T0fx3lutLcIOwvQc/N2EDJIb0/R+7XMrzfUDVrkGeBoG11tBkKjltdC19JrAmGAkfIcN0LMOeZT7yTlZ/f/6d5C19DegXX74owM4V4pkqs/hbpmDkvQYkSXPfVpZ9ZTVUVSBrwKVaVX9A1hTXjIzfsuoZheMIdlakt0qSIuukyaIxzi1aAH67nR0kp+XCLldBDXGKQXah+mIGQPDBwWFR34re40jzxKmvLT+Dq+5yASgoLDbul8IYDJa2r7yYZQu+EgsW24p62q+y041wW4YIGBJs/cQqpCw== stephen304@gmail.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Allow SSH over Yggdrasil ===&lt;br /&gt;
# Navigate to Network &amp;gt; Firewall&lt;br /&gt;
# Select the &amp;quot;Traffic Rules tab&lt;br /&gt;
## [[File:Firewall_traffic_rules_tab_owrt.png|frameless|The network firewall traffic rules tab.]]&lt;br /&gt;
# Scroll down to &amp;quot;Allow-SSH-Yggdrasil&amp;quot;&lt;br /&gt;
# Enable the Accept input checkbox&lt;br /&gt;
## [[File:Enable_ssh_over_yggdrasil_firewall_rule_checked.png|frameless|Enable the ssh-over-yggdrasil firewall rule.]]&lt;br /&gt;
# Click &amp;quot;Save and Apply&amp;quot;&lt;br /&gt;
## [[File:firewall_save_and_apply.png|frameless|Click save and apply]]&lt;br /&gt;
&lt;br /&gt;
== The Diagnostic Page ==&lt;br /&gt;
== The Yggdrasil Page ==&lt;br /&gt;
&lt;br /&gt;
[[File:Peers.png|thumb|A working mesh node should have several peers.]]&lt;br /&gt;
&lt;br /&gt;
One of the most helpful screens for troubleshooting is the Yggdrasil page. This page is entirely focused on your mesh node's status ''within the global Yggdrasil mesh network.'' You can access the Yggdrasil page by selecting &amp;quot;Network &amp;gt; Yggdrasil&amp;quot; on the right-hand menu in OpenWrt.&lt;br /&gt;
&lt;br /&gt;
=== Important Yggdrasil Information ===&lt;br /&gt;
&lt;br /&gt;
You can view important information about your mesh node in the Yggdrasil screen. Among other things, you can view your node's static [https://en.wikipedia.org/wiki/IPv6 IPv6] address and [https://en.wikipedia.org/wiki/Public-key_cryptography public key.]&lt;br /&gt;
&lt;br /&gt;
Your static IPv6 address is unique to the Yggdrasil, and never changes. It comes in handy very frequently, and is used for remote support (among other things.) Your public key is sometimes used to gain access to private resources on the Yggdrasil network. It's good to know where it is just in case you ever need it.&lt;br /&gt;
&lt;br /&gt;
[[File:IPv6.png|frameless|Your static IPv6 address is unique to the Yggdrasil, and never changes.]]&lt;br /&gt;
[[File:Pubkey.png|frameless|Your public key is sometimes used to gain access to private resources on the Yggdrasil network.]]&lt;br /&gt;
&lt;br /&gt;
=== Checking for Peers ===&lt;br /&gt;
&lt;br /&gt;
As long as your mesh node has public Yggdrasil peers, it is connected to the global Yggdrasil mesh network. This means that things like remote support will work properly. If you're interested in learning more about Yggdrasil vs. the Internet vs. the LAN, see our [[Network Architecture]] page.&lt;br /&gt;
&lt;br /&gt;
A working mesh node should have several peers. You can see these in the following screen:&lt;br /&gt;
* [[File:Peers.png|frameless|A working mesh node should have several peers.]]&lt;br /&gt;
&lt;br /&gt;
If you don't have any peers, your Yggdrasil screen will look something like this:&lt;br /&gt;
* [[File:No_Peers.png|frameless|If you don't have any peers, your Yggdrasil screen will look something like this.]]&lt;br /&gt;
* Note the &amp;quot;Proto&amp;quot; column.... it says &amp;quot;self,&amp;quot; because the only peer your mesh node has is ... itself!&lt;br /&gt;
&lt;br /&gt;
== The Internet Gateway Page ==&lt;br /&gt;
&lt;br /&gt;
Public Gateway Address: 201:506e:60d6:bd66:e35c:606:4883:ea9a&lt;br /&gt;
&lt;br /&gt;
This can be accomplished in LuCi. Navigate to &amp;quot;Network &amp;gt; Internet Gateway (autoygg).&amp;quot;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Build_infrastructure&amp;diff=1694</id>
		<title>Build infrastructure</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Build_infrastructure&amp;diff=1694"/>
		<updated>2020-06-14T20:07:16Z</updated>

		<summary type="html">&lt;p&gt;Cure: Update README path in glue repo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Build infrastructure ==&lt;br /&gt;
&lt;br /&gt;
MassMesh publishes openwrt packages and device images. These artifacts are generated by free software available from the links below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Repositories&lt;br /&gt;
! Name !! URL !! Description !! Artifacts&lt;br /&gt;
|-&lt;br /&gt;
| mm-toolbox || https://github.com/MassMesh/mm-toolbox || Source code for the Massmesh package builds || https://downloads.massmesh.net/snapshots/packages/&lt;br /&gt;
|-&lt;br /&gt;
| meta-imagebuilder || https://github.com/MassMesh/meta-imagebuilder || Source code for the Massmesh image builds || https://downloads.massmesh.net/snapshots/images/&lt;br /&gt;
|-&lt;br /&gt;
| glue || https://github.com/MassMesh/glue || Source code for the glue scripts that convert the output of the CI pipelines into the image and package repositories ||&lt;br /&gt;
|-&lt;br /&gt;
| autoygg || https://github.com/MassMesh/autoygg || Source code of autoygg ||&lt;br /&gt;
|-&lt;br /&gt;
| mm-cli || https://github.com/MassMesh/mm-cli || Source code of mm-cli ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The artifacts are built by a CI pipeline that runs on CircleCI. The pipeline is defined in the '''''mm-toolbox''''' and '''''meta-imagebuilder''''' repositories in the  '''.circleci/config.yml''' file.&lt;br /&gt;
&lt;br /&gt;
If the build is successful, the CI pipeline uploads the generated artifacts to a staging directory on the '''downloads.massmesh.net''' server. The '''process-uploads''' code in the '''''glue''''' repository then processes those artifacts and generates the [https://downloads.massmesh.net/snapshots/packages/ Package] and [https://downloads.massmesh.net/snapshots/images/ Image] repositories at [https://downloads.massmessh.net downloads.massmesh.net]. This process is described in detail in the [https://github.com/MassMesh/glue/blob/master/process-uploads/README.md README].&lt;br /&gt;
&lt;br /&gt;
Builds from the master branch go to the '''[https://downloads.massmesh.net/snapshots/ snapshots repositories]'''. Builds from other branches go to the '''[https://downloads.massmesh.net/experimental/ experimental repositories]'''. Releases will be published in the '''[https://downloads.massmesh.net/releases/ releases repositories]''', but as of June 2020 no releases are available yet.&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Build_infrastructure&amp;diff=1692</id>
		<title>Build infrastructure</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Build_infrastructure&amp;diff=1692"/>
		<updated>2020-06-13T14:49:52Z</updated>

		<summary type="html">&lt;p&gt;Cure: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Build infrastructure ==&lt;br /&gt;
&lt;br /&gt;
MassMesh publishes openwrt packages and device images. These artifacts are generated by free software available from the links below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Repositories&lt;br /&gt;
! Name !! URL !! Description !! Artifacts&lt;br /&gt;
|-&lt;br /&gt;
| mm-toolbox || https://github.com/MassMesh/mm-toolbox || Source code for the Massmesh package builds || https://downloads.massmesh.net/snapshots/packages/&lt;br /&gt;
|-&lt;br /&gt;
| meta-imagebuilder || https://github.com/MassMesh/meta-imagebuilder || Source code for the Massmesh image builds || https://downloads.massmesh.net/snapshots/images/&lt;br /&gt;
|-&lt;br /&gt;
| glue || https://github.com/MassMesh/glue || Source code for the glue scripts that convert the output of the CI pipelines into the image and package repositories ||&lt;br /&gt;
|-&lt;br /&gt;
| autoygg || https://github.com/MassMesh/autoygg || Source code of autoygg ||&lt;br /&gt;
|-&lt;br /&gt;
| mm-cli || https://github.com/MassMesh/mm-cli || Source code of mm-cli ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The artifacts are built by a CI pipeline that runs on CircleCI. The pipeline is defined in the '''''mm-toolbox''''' and '''''meta-imagebuilder''''' repositories in the  '''.circleci/config.yml''' file.&lt;br /&gt;
&lt;br /&gt;
If the build is successful, the CI pipeline uploads the generated artifacts to a staging directory on the '''downloads.massmesh.net''' server. The '''process-uploads''' code in the '''''glue''''' repository then processes those artifacts and generates the [https://downloads.massmesh.net/snapshots/packages/ Package] and [https://downloads.massmesh.net/snapshots/images/ Image] repositories at [https://downloads.massmessh.net downloads.massmesh.net]. This process is described in detail in the [https://github.com/MassMesh/glue/blob/master/process-uploads/README README].&lt;br /&gt;
&lt;br /&gt;
Builds from the master branch go to the '''[https://downloads.massmesh.net/snapshots/ snapshots repositories]'''. Builds from other branches go to the '''[https://downloads.massmesh.net/experimental/ experimental repositories]'''. Releases will be published in the '''[https://downloads.massmesh.net/releases/ releases repositories]''', but as of June 2020 no releases are available yet.&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Build_infrastructure&amp;diff=1691</id>
		<title>Build infrastructure</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Build_infrastructure&amp;diff=1691"/>
		<updated>2020-06-13T14:48:35Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Build infrastructure */ Add autoygg and mm-cli&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Build infrastructure ==&lt;br /&gt;
&lt;br /&gt;
MassMesh publishes openwrt packages and device images. These artifacts are generated by free software available from the links below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Repositories&lt;br /&gt;
! Name !! URL !! Description !! Artifacts&lt;br /&gt;
|-&lt;br /&gt;
| mm-toolbox || https://github.com/MassMesh/mm-toolbox || Source code for the Massmesh package builds || https://downloads.massmesh.net/snapshots/packages/&lt;br /&gt;
|-&lt;br /&gt;
| meta-imagebuilder || https://github.com/MassMesh/meta-imagebuilder || Source code for the Massmesh image builds || https://downloads.massmesh.net/snapshots/images/&lt;br /&gt;
|-&lt;br /&gt;
| glue || https://github.com/MassMesh/glue || Source code for the glue scripts that convert the output of the CI pipelines into the image and package repositories ||&lt;br /&gt;
|-&lt;br /&gt;
| autoygg || https://github.com/MassMesh/autoygg || Source code for the autoygg package ||&lt;br /&gt;
|-&lt;br /&gt;
| mm-cli || https://github.com/MassMesh/mm-cli || Source code for the mm-cli package ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The artifacts are built by a CI pipeline that runs on CircleCI. The pipeline is defined in the '''''mm-toolbox''''' and '''''meta-imagebuilder''''' repositories in the  '''.circleci/config.yml''' file.&lt;br /&gt;
&lt;br /&gt;
If the build is successful, the CI pipeline uploads the generated artifacts to a staging directory on the '''downloads.massmesh.net''' server. The '''process-uploads''' code in the '''''glue''''' repository then processes those artifacts and generates the [https://downloads.massmesh.net/snapshots/packages/ Package] and [https://downloads.massmesh.net/snapshots/images/ Image] repositories at [https://downloads.massmessh.net downloads.massmesh.net]. This process is described in detail in the [https://github.com/MassMesh/glue/blob/master/process-uploads/README README].&lt;br /&gt;
&lt;br /&gt;
Builds from the master branch go to the '''[https://downloads.massmesh.net/snapshots/ snapshots repositories]'''. Builds from other branches go to the '''[https://downloads.massmesh.net/experimental/ experimental repositories]'''. Releases will be published in the '''[https://downloads.massmesh.net/releases/ releases repositories]''', but as of June 2020 no releases are available yet.&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Build_infrastructure&amp;diff=1690</id>
		<title>Build infrastructure</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Build_infrastructure&amp;diff=1690"/>
		<updated>2020-06-13T14:43:59Z</updated>

		<summary type="html">&lt;p&gt;Cure: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Build infrastructure ==&lt;br /&gt;
&lt;br /&gt;
MassMesh publishes openwrt packages and device images. These artifacts are generated by free software available from the links below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Repositories&lt;br /&gt;
! Name !! URL !! Description !! Artifacts&lt;br /&gt;
|-&lt;br /&gt;
| mm-toolbox || https://github.com/MassMesh/mm-toolbox || Source code for the Massmesh package builds || https://downloads.massmesh.net/snapshots/packages/&lt;br /&gt;
|-&lt;br /&gt;
| meta-imagebuilder || https://github.com/MassMesh/meta-imagebuilder || Source code for the Massmesh image builds || https://downloads.massmesh.net/snapshots/images/&lt;br /&gt;
|-&lt;br /&gt;
| glue || https://github.com/MassMesh/glue || Source code for the glue scripts that convert the output of the CI pipelines into the image and package repositories ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The artifacts are built by a CI pipeline that runs on CircleCI. The pipeline is defined in the '''''mm-toolbox''''' and '''''meta-imagebuilder''''' repositories in the  '''.circleci/config.yml''' file.&lt;br /&gt;
&lt;br /&gt;
If the build is successful, the CI pipeline uploads the generated artifacts to a staging directory on the '''downloads.massmesh.net''' server. The '''process-uploads''' code in the '''''glue''''' repository then processes those artifacts and generates the [https://downloads.massmesh.net/snapshots/packages/ Package] and [https://downloads.massmesh.net/snapshots/images/ Image] repositories at [https://downloads.massmessh.net downloads.massmesh.net]. This process is described in detail in the [https://github.com/MassMesh/glue/blob/master/process-uploads/README README].&lt;br /&gt;
&lt;br /&gt;
Builds from the master branch go to the '''[https://downloads.massmesh.net/snapshots/ snapshots repositories]'''. Builds from other branches go to the '''[https://downloads.massmesh.net/experimental/ experimental repositories]'''. Releases will be published in the '''[https://downloads.massmesh.net/releases/ releases repositories]''', but as of June 2020 no releases are available yet.&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Main_Page&amp;diff=1689</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Main_Page&amp;diff=1689"/>
		<updated>2020-06-13T14:41:06Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Developer Resources */ Add link to the build infrastructure description.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MassMesh is a volunteer-run grassroots project that aims to create community-owned wireless networks. These networks enable low cost, secure, censorship-resilient home Internet access. The purpose of this wiki is to provide you with all of the information you need to set up your own custom router and join the mesh.&lt;br /&gt;
&lt;br /&gt;
Making positive change requires solidarity, so please consider joining us at one of our weekly meetings! Whether you are interested in installing a mesh node, joining our team of volunteers, requesting a demonstration, or even just having a conversation about mesh networks, we want to hear from you.&lt;br /&gt;
&lt;br /&gt;
We have provided all of the information on this site for free because we care about the well-being of all of our communities.&lt;br /&gt;
&lt;br /&gt;
Learn more about what we are doing using the links below.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;archwiki-main-page-columns&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; [[Volunteer Projects]]: Here's what we're working on, and what we could use your help with!&lt;br /&gt;
&lt;br /&gt;
; [[Contact and Meeting Info]]: Information on how to get in touch with us online and in person.&lt;br /&gt;
&lt;br /&gt;
; [[Network Architecture]]: A broad overview of how our neighborhood networks are constructed, how we connect them to the Internet, and how they fit into the global Yggdrasil network.&lt;br /&gt;
&lt;br /&gt;
; [[Node Setup]]: A step-by-step guide to setting up your own mesh node, so that you can form a network with your neighbors.&lt;br /&gt;
&lt;br /&gt;
; [[Neighborhood Captain Pamphlet]]: Read here to learn about starting a network in your neighborhood.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Developer Resources ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;archwiki-main-page-columns&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; [https://github.com/MassMesh Source]: Browse the source code behind our firmware and Yggdrasil convenience tools.&lt;br /&gt;
&lt;br /&gt;
; [[:Category:Devices|Devices]]: A list of our supported devices with their performance stats, costs, and setup tutorials.&lt;br /&gt;
&lt;br /&gt;
; [https://github.com/orgs/MassMesh/projects/1 Tech Team Kanban]: See upcoming development work and find a place to jump in!&lt;br /&gt;
&lt;br /&gt;
; [https://circleci.com/gh/MassMesh/workflows/meta-imagebuilder/tree/master Build Status]: Our firmware's CircleCI.&lt;br /&gt;
&lt;br /&gt;
; [https://downloads.massmesh.net/ Downloads]: Get our latest firmware and packages.&lt;br /&gt;
&lt;br /&gt;
; [[Build infrastructure]]: A description of our build infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installer Resources ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;archwiki-main-page-columns&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; [[Gateway Configuration]]: Steps for configuring gateway servers and clients. This tunnels people off of the Yggdrasil network.&lt;br /&gt;
&lt;br /&gt;
; [[:Category:Devices|Devices]]: A list of our supported devices with their performance stats, costs, and setup tutorials.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Build_infrastructure&amp;diff=1688</id>
		<title>Build infrastructure</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Build_infrastructure&amp;diff=1688"/>
		<updated>2020-06-13T14:40:49Z</updated>

		<summary type="html">&lt;p&gt;Cure: Initial description of the build infrastructure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Build infrastructure ==&lt;br /&gt;
&lt;br /&gt;
MassMesh publishes openwrt packages and device images. These artifacts are generated by free software available from the links below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Repositories&lt;br /&gt;
! Name !! URL !! Description !! Artifacts&lt;br /&gt;
|-&lt;br /&gt;
| mm-toolbox || https://github.com/MassMesh/mm-toolbox || Source code for the Massmesh package builds || https://downloads.massmesh.net/snapshots/packages/&lt;br /&gt;
|-&lt;br /&gt;
| meta-imagebuilder || https://github.com/MassMesh/meta-imagebuilder || Source code for the Massmesh image builds || https://downloads.massmesh.net/snapshots/images/&lt;br /&gt;
|-&lt;br /&gt;
| glue || https://github.com/MassMesh/glue || Source code for the glue scripts that convert the output of the ci pipelines into the image and package repositories ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The artifacts are built by a CI pipeline that runs on CircleCI. The pipeline is defined in the '''''mm-toolbox''''' and '''''meta-imagebuilder''''' repositories in the  '''.circleci/config.yml''' file.&lt;br /&gt;
&lt;br /&gt;
If the build is successful, the CI pipeline uploads the generated artifacts to a staging directory on the '''downloads.massmesh.net''' server. The '''process-uploads''' code in the '''''glue''''' repository then processes those artifacts and generates the [https://downloads.massmesh.net/snapshots/packages/ Package] and [https://downloads.massmesh.net/snapshots/images/ Image] repositories at [https://downloads.massmessh.net downloads.massmesh.net]. This process is described in detail in the [https://github.com/MassMesh/glue/blob/master/process-uploads/README README].&lt;br /&gt;
&lt;br /&gt;
Builds from the master branch go to the '''[https://downloads.massmesh.net/snapshots/ snapshots repositories]'''. Builds from other branches go to the '''[https://downloads.massmesh.net/experimental/ experimental repositories]'''. Releases will be published in the '''[https://downloads.massmesh.net/releases/ releases repositories]''', but as of June 2020 no releases are available yet.&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=RPF_Raspberry_Pi_4_Model_B&amp;diff=1687</id>
		<title>RPF Raspberry Pi 4 Model B</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=RPF_Raspberry_Pi_4_Model_B&amp;diff=1687"/>
		<updated>2020-06-09T23:42:51Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Raspberry Pi Foundation]]&lt;br /&gt;
[[File:Rpf-raspberry-pi-4-model-b.png|thumb|Raspberry Pi 4 Model B]]&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
&lt;br /&gt;
[https://downloads.massmesh.net/snapshots/images/meshnode/rpi-4/openwrt-massmesh-meshnode-bcm27xx-bcm2711-rpi-4-squashfs-factory.img.gz Mass Mesh Firmware (Factory) (Latest snapshot)]&lt;br /&gt;
&lt;br /&gt;
[https://downloads.massmesh.net/snapshots/images/meshnode/rpi-4/openwrt-massmesh-meshnode-bcm27xx-bcm2711-rpi-4-squashfs-sysupgrade.img.gz Mass Mesh Firmware (Sysupgrade) (Latest snapshot)]&lt;br /&gt;
&lt;br /&gt;
[https://downloads.massmesh.net/snapshots/packages/aarch64_cortex-a72/generic/ Mass Mesh Snapshot Package Repository]&lt;br /&gt;
&lt;br /&gt;
[https://downloads.massmesh.net/snapshots/images/meshnode/rpi-4/ Mass Mesh Firmware Snapshot Image Repository]&lt;br /&gt;
&lt;br /&gt;
[https://downloads.openwrt.org/snapshots/targets/bcm27xx/bcm2711/ OpenWrt Snapshot Images Tree]&lt;br /&gt;
&lt;br /&gt;
[https://downloads.openwrt.org/snapshots/targets/bcm27xx/bcm2711/packages/ OpenWrt Snapshot Package Tree]&lt;br /&gt;
&lt;br /&gt;
== Materials ==&lt;br /&gt;
* [https://www.pishop.us/product/raspberry-pi-4-model-b-1gb/ One Raspberry Pi 4 Model B]&lt;br /&gt;
** The official power supply is not required, but strongly recommended.&lt;br /&gt;
** You may choose any memory size option. 1GB is sufficient.&lt;br /&gt;
* One 4GB+ microSD card&lt;br /&gt;
* One or more [https://www.amazon.com/AmazonBasics-Gigabit-Ethernet-Internet-Adapter/dp/B00M77HMU0?psc=1&amp;amp;SubscriptionId=AKIAILSHYYTFIVPWUY6Q&amp;amp;tag=duckduckgo-ffab-20&amp;amp;linkCode=xm2&amp;amp;camp=2025&amp;amp;creative=165953&amp;amp;creativeASIN=B00M77HMU0 USB -&amp;gt; Ethernet adapter(s)]&lt;br /&gt;
&lt;br /&gt;
== Instructions ==&lt;br /&gt;
#Download the &amp;quot;[https://github.com/MassMesh/meta-imagebuilder-artifacts/blob/master/massmesh/meshnode/rpi-4/openwrt-massmesh-meshnode-brcm2708-bcm2711-rpi-4-squashfs-sysupgrade.img.gz Sysupgrade]&amp;quot; file from the Files section.&lt;br /&gt;
#Flash the firmware onto your microSD card using [https://www.balena.io/etcher/ Balena Etcher], or a similar tool.&lt;br /&gt;
##For help with this step, see [[Flashing Removable Media]].&lt;br /&gt;
# Insert the microSD card and connect the Raspberry Pi to power.&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Category:Devices&amp;diff=1686</id>
		<title>Category:Devices</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Category:Devices&amp;diff=1686"/>
		<updated>2020-06-09T23:31:58Z</updated>

		<summary type="html">&lt;p&gt;Cure: Add image download URLs (snapshots)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
In order to mesh with other mesh nodes in your neighborhood network, you will require two main components: a device to run the Mass Mesh firmware and a radio so that you can communicate with other nodes.&lt;br /&gt;
{{Note|We also maintain a helpful list of [[Hardware Bundles]] for your convenience.}}&lt;br /&gt;
{{Warning|Always check the openwrt wiki *and* techdata *and* commit before buying a new device. Flashing OpenWRT can be very difficult on certain routers.}}&lt;br /&gt;
&lt;br /&gt;
== Mesh Node Devices ==&lt;br /&gt;
These are devices that can run the meshing protocol (Yggdrasil.) Once they have the Mass Mesh firmware flashed, you can connect to them for access to the mesh via wifi and/or ethernet. They will also automatically discover and connect to nearby mesh nodes via their [[#Mesh Radio Devices|connected mesh radio]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Supported Devices&lt;br /&gt;
! Brand !! Model !! Vendor Materials !! Yggdrasil Speed !! Mesh Exit Capable !! Built-in Wifi !! Outdoor !! Year !! MSRP !! Images&lt;br /&gt;
|-&lt;br /&gt;
| [[:Category:Raspberry Pi Foundation|Raspberry Pi Foundation]] || [[RPF Raspberry Pi 4 Model B|Raspberry Pi 4 Model B]] || [https://www.raspberrypi.org/documentation/hardware/raspberrypi/README.md Hardware Specifications] || 450 Mbit/s || No&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; || Yes || No&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; || 2019 || $35.00 || https://downloads.massmesh.net/snapshots/images/meshnode/rpi-4/&lt;br /&gt;
|-&lt;br /&gt;
| PC Engines || [[PC Engines APU2|APU2]] || [https://pcengines.ch/pdf/apu2.pdf Owner's Manual], [https://pcengines.ch/apu2c4.htm Product File] || 950 Mbit/s || Yes || No&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; || No&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; || 2016 || $115.00 || https://downloads.massmesh.net/snapshots/images/meshnode/apu2/&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; USB and 2 mini-pcie interfaces available to add one or more wifi interfaces&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Possible with outdoor case&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; Possible with additional adapters&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mesh Radio Devices ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Supported Point-To-Multi-Point (PTMP) Radios&lt;br /&gt;
! Brand !! Model !! Vendor Materials !! Outdoor !! Year !! MSRP !! Images&lt;br /&gt;
|-&lt;br /&gt;
| [[:Category:Ubiquiti|Ubiquiti]] || [[Ubiquiti NanoStation 5AC Loco|NanoStation 5AC Loco]] || [https://dl.ubnt.com/guides/NanoStation_ac/NS-5ACL_QSG.pdf Quick Start Guide], [https://dl.ubnt.com/datasheets/NanoStation_AC/NanoStation_AC_DS.pdf Data Sheet] || Yes || ? || $60.00 || https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_nanostation-ac-loco/&lt;br /&gt;
|-&lt;br /&gt;
| [[:Category:Ubiquiti|Ubiquiti]] || [[Ubiquiti UAP AC Mesh|UAP AC Mesh]] || [http://dl-origin.ubnt.com/guides/UniFi/UniFi_AP-AC-M_QSG.pdf Quick Start Guide], [http://dl-origin.ubnt.com/datasheets/unifi/UniFi_AC_Mesh_DS.pdf Data Sheet] || Yes || 2016 || $120.00 || https://downloads.massmesh.net/snapshots/images/meshradio/ubnt_unifiac-mesh/&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Point-To-Point Radio Devices ==&lt;br /&gt;
PTP radios are devices that provide a direct link between 2 locations, usually over a long range. There is no need for custom firmware on these radios. Simply configure both ends of the link with matching settings and provide line-of-sight between them to connect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Supported Point-To-Point (PTP) Radios&lt;br /&gt;
! Brand !! Model !! Vendor Materials !! Outdoor !! Year !! MSRP&lt;br /&gt;
|-&lt;br /&gt;
| [[:Category:MikroTik|MikroTik]] || [[MikroTik wAP 60G]] || [https://i.mt.lv/cdn/rb_files/1542446763RBwAPG-60ad-h.pdf Quick Start Guide] || Yes || ? || $99&lt;br /&gt;
|-&lt;br /&gt;
| [[:Category:Ubiquiti|Ubiquiti]] || [[Ubiquiti LiteBeam 5AC Gen2|LiteBeam 5AC Gen2]] || [https://dl.ubnt.com/guides/LiteBeam_Gen2/LiteBeam_5AC-Gen2_QSG.pdf Quick Start Guide], [https://dl.ubnt.com/datasheets/LiteBeam/LiteBeam_AC_Gen2_DS.pdf Data Sheet] || Yes || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| [[:Category:Ubiquiti|Ubiquiti]] || [[Ubiquiti NanoBeam 5AC 16|NanoBeam 5AC 16]] || [https://dl.ubnt.com/guides/NanoBeam_ac/NanoBeam_NBE-5AC-16_QSG.pdf Quick Start Guide], [https://dl.ubnt.com/datasheets/NanoBeam_ac/NanoBeam_ac_DS.pdf Data Sheet] || Yes || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Work In Progress Devices ==&lt;br /&gt;
{{Warning| The following devices are unsupported. '''If you are looking to host a node, we recommend that you buy one of the supported devices,''' as it's guaranteed that they will work in the mesh.}}&lt;br /&gt;
{{Note| A great way to help the tech team is to work with us to add support for the WIP devices.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Work In Progress (WIP) Devices&lt;br /&gt;
! Brand !! Model !! Yggdrasil Speed !! Mesh Exit Capable !! Built-in Wifi !! Outdoor !! Year !! MSRP !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[:Category:Globalscale|Globalscale]] || [[Globalscale ESPRESSObin v5|Espressobin v5]] || 300 Mbit/s || Yes || No&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; || No || 2017 || $49.00 || Fails to boot, no longer available for purchase&lt;br /&gt;
|-&lt;br /&gt;
| [[:Category:Linksys|Linksys]] || [[Linksys WRT1900AC|WRT1900AC]] || ? || Yes || Yes || No || 2014 || $149.99 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[:Category:TP-Link|TP-Link]] || [[TP-Link Archer C7 AC1750|Archer C7 AC1750]] || ? || Yes || Yes || No || 2013 || $99.99 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[:Category:TP-Link|TP-Link]] || [[TL-WDR3500]] || ? || Yes || Yes || No || 2012 || $44.99 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[:Category:TP-Link|TP-Link]] || [[TL-WDR4300]] || ? || Yes || Yes || No || 2012 || $109.99 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[:Category:Xiaomi|Xiaomi]] || [[Xiaomi Mi Router 3|Mi Router 3]] || ? || Yes || Yes || No || ? || $30.00 ||&lt;br /&gt;
|-&lt;br /&gt;
| [[:Category:Aerohive|Aerohive]] || [[Aerohive AP330|AP330]] || ? || ? || Yes || No || 2013 || ? || Must flash Open WRT [https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=f2b7d9dc1ca3d33f14961cf2885639f4f9e8965e via UART.]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; USB and mini-pcie interfaces available to add a wifi interface&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1602</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1602"/>
		<updated>2020-01-29T01:46:21Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Reading the chip with flashrom */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
(note: the SPI1 CE0/CE1 pins are not labeled on this image)&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1. We're going to leave the VCC pin on the flash chip disconnected. We are however going to connect a few other pins to our 3.3V source from the raspberry pi, to pull them up.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes!!Color in picture below&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|1||SIO3&lt;br /&gt;
|''we do not use this pin, so we pull it up''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|9||WP#SIO2&lt;br /&gt;
|''put the chip in read/write mode''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|&lt;br /&gt;
|blue&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|&lt;br /&gt;
|orange&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|&lt;br /&gt;
|green&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|&lt;br /&gt;
|brown&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|&lt;br /&gt;
|yellow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:20200127-raspberry-pi-zero-w-with-pomona-clip.jpg|thumb|A Raspberry Pi Zero W with wires connected to the SPI0 pins. There is an unused 3.3V wire visible.]]&lt;br /&gt;
&lt;br /&gt;
==== Reading the chip with flashrom ====&lt;br /&gt;
&lt;br /&gt;
Once the pomona is connected to the raspberry pi, make sure the nanostation is disconnected from power/ethernet. Then clip on the pomona.&lt;br /&gt;
&lt;br /&gt;
Flashrom on the raspberry pi requires us to specify the spi speed for the operation. We also need to specify the exact rom chip model, because there are two models that match:&lt;br /&gt;
&lt;br /&gt;
  $ flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12805D&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Multiple flash chip definitions match the detected chip(s): &amp;quot;MX25L12805D&amp;quot;, &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot;&lt;br /&gt;
  Please specify which chip definition to use with the -c &amp;lt;chipname&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
So here's the final command to read out the chip:&lt;br /&gt;
&lt;br /&gt;
  $ flashrom -c &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Reading flash... done.&lt;br /&gt;
&lt;br /&gt;
It's easy to verify that if the reading worked. If you were reading out the original firmware, binwalk would print something like this:&lt;br /&gt;
&lt;br /&gt;
  $ binwalk proprietary.rom &lt;br /&gt;
&lt;br /&gt;
  DECIMAL       HEXADECIMAL     DESCRIPTION&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  115152        0x1C1D0         Certificate in DER format (x509 v3), header length: 4, sequence length: 64&lt;br /&gt;
  142896        0x22E30         U-Boot version string, &amp;quot;U-Boot 1.1.4-s1100 (Sep  5 2018 - 17:53:00)&amp;quot;&lt;br /&gt;
  143184        0x22F50         CRC32 polynomial table, big endian&lt;br /&gt;
  224396        0x36C8C         CRC32 polynomial table, big endian&lt;br /&gt;
  226924        0x3766C         Ubiquiti end header, header size: 12 bytes, cumulative ~CRC32: 0x454E442E&lt;br /&gt;
  231856        0x389B0         Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTkernel&amp;quot;, base address: 0x00000001, data size: -2147475456 bytes&lt;br /&gt;
  231920        0x389F0         uImage header, header size: 64 bytes, header CRC: 0xE75790E0, created: 2018-11-13 14:36:59, image size: 998847 bytes, Data &lt;br /&gt;
  Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0xAAECA664, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327680        0x50000         uImage header, header size: 64 bytes, header CRC: 0x22425505, created: 2019-02-13 09:09:52, image size: 990770 bytes, Data Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0x8F3B71D3, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327744        0x50040         LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 2836596 bytes&lt;br /&gt;
  1318514       0x141E72        Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTrootfs&amp;quot;, base address: 0x00000002, data size: 0 bytes&lt;br /&gt;
  1318578       0x141EB2        Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 7203018 bytes, 956 inodes, blocksize: 262144 bytes, created: 2019-02-13 09:09:54&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
=== Flash using serial header access ===&lt;br /&gt;
Using small modifications to the radio, direct serial access allows temporarily running OpenWRT in memory and using the temporary environment to flash a full image to the radio's memory.&lt;br /&gt;
&lt;br /&gt;
[[File:Ubnt_ns5acl_serial.jpg|thumb|Click to enlarge pinout]]&lt;br /&gt;
# Using your thumb or a small tool, push the tab in the slot located on the lower rear of the radio and slide the bottom half out of the enclosure&lt;br /&gt;
# Looking at the rear of the board (where all the components are on the opposite side as the antenna), locate the serial headers on the middle left side of the board&lt;br /&gt;
# Solder at least the top 3 pins shown in the picture. The pins from left to right (starting with the square shaped pad that is unpopulated in the image) are 3.3V, RX, TX, and GND. 3.3V is not needed here&lt;br /&gt;
# Connect GND on the board to GND on your FTDI adapter, TX on the board to RX on the FTDI adapter, and RX on the board to TX on the FTDI adapter&lt;br /&gt;
# Make sure your FTDI adapter is in 3.3V mode and attached to your computer, then open the serial port on your computer (ex. &amp;lt;code&amp;gt;minicom -D /dev/ttyUSB0&amp;lt;/code&amp;gt;). Use 115200 8N1 in your terminal settings.&lt;br /&gt;
# Connect the NanoStation and press enter in the console when it says &amp;lt;code&amp;gt;Hit any key to stop autoboot:&amp;lt;/code&amp;gt;. You should be left at a &amp;lt;code&amp;gt;ar7240&amp;gt; &amp;lt;/code&amp;gt; prompt.&lt;br /&gt;
# Connect your laptop to the LAN port of the PoE injector powering the NanoStation and assign a static IP of &amp;lt;code&amp;gt;192.168.1.254&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install a TFTP server and place [https://downloads.openwrt.org/releases/19.07.0/targets/ath79/generic/openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin] in the root folder of the TFTP server (&amp;lt;code&amp;gt;/srv/tftp&amp;lt;/code&amp;gt; for tftp-hpa on Arch).&lt;br /&gt;
# Rename the initramfs-kernel.bin file to &amp;lt;code&amp;gt;1401A8C0.img&amp;lt;/code&amp;gt; and ensure the tftp server / service is started&lt;br /&gt;
# Run &amp;lt;code&amp;gt;tftpboot&amp;lt;/code&amp;gt; in the serial console and wait for it to complete&lt;br /&gt;
# Run &amp;lt;code&amp;gt;bootm&amp;lt;/code&amp;gt; in the serial console to boot the initramfs&lt;br /&gt;
# Once OpenWRT has booted, you can press Enter to enable shell access&lt;br /&gt;
# Ensure you have an IP address in the 192.168.1.x subnet and use scp to transfer the sysupgrade firmware you wish to flash&lt;br /&gt;
# Flash the full firmware to the radio's storage using &amp;lt;code&amp;gt;mtd -r write /tmp/sysupgrade.bin firmware&amp;lt;/code&amp;gt;, replacing &amp;lt;code&amp;gt;sysupgrade.bin&amp;lt;/code&amp;gt; with the full filename of the firmware you are flashing&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1601</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1601"/>
		<updated>2020-01-29T01:45:19Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Reading the chip with flashrom */  update binwalk with latest from stable read&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
(note: the SPI1 CE0/CE1 pins are not labeled on this image)&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1. We're going to leave the VCC pin on the flash chip disconnected. We are however going to connect a few other pins to our 3.3V source from the raspberry pi, to pull them up.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes!!Color in picture below&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|1||SIO3&lt;br /&gt;
|''we do not use this pin, so we pull it up''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|9||WP#SIO2&lt;br /&gt;
|''put the chip in read/write mode''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|&lt;br /&gt;
|blue&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|&lt;br /&gt;
|orange&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|&lt;br /&gt;
|green&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|&lt;br /&gt;
|brown&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|&lt;br /&gt;
|yellow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:20200127-raspberry-pi-zero-w-with-pomona-clip.jpg|thumb|A Raspberry Pi Zero W with wires connected to the SPI0 pins. There is an unused 3.3V wire visible.]]&lt;br /&gt;
&lt;br /&gt;
==== Reading the chip with flashrom ====&lt;br /&gt;
&lt;br /&gt;
Once the pomona is connected to the raspberry pi, make sure the nanostation is disconnected from power/ethernet. Then clip on the pomona.&lt;br /&gt;
&lt;br /&gt;
Flashrom on the raspberry pi requires us to specify the spi speed for the operation. We also need to specify the exact rom chip model, because there are two models that match:&lt;br /&gt;
&lt;br /&gt;
  $ flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12805D&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Multiple flash chip definitions match the detected chip(s): &amp;quot;MX25L12805D&amp;quot;, &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot;&lt;br /&gt;
  Please specify which chip definition to use with the -c &amp;lt;chipname&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
So here's the final command to read out the chip:&lt;br /&gt;
&lt;br /&gt;
  $ flashrom -c &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Reading flash... done.&lt;br /&gt;
&lt;br /&gt;
It's easy to verify that if the reading worked. If you were reading out the original firmware, binwalk would print something like this:&lt;br /&gt;
&lt;br /&gt;
  $ binwalk proprietary.rom &lt;br /&gt;
&lt;br /&gt;
  DECIMAL       HEXADECIMAL     DESCRIPTION&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  115152        0x1C1D0         Certificate in DER format (x509 v3), header length: 4, sequence length: 64&lt;br /&gt;
  142896        0x22E30         U-Boot version string, &amp;quot;U-Boot 1.1.4-s1100 (Sep  5 2018 - 17:53:00)&amp;quot;&lt;br /&gt;
  143184        0x22F50         CRC32 polynomial table, big endian&lt;br /&gt;
  224396        0x36C8C         CRC32 polynomial table, big endian&lt;br /&gt;
  226924        0x3766C         Ubiquiti end header, header size: 12 bytes, cumulative ~CRC32: 0x454E442E&lt;br /&gt;
  231856        0x389B0         Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTkernel&amp;quot;, base address: 0x00000001, data size: -2147475456 bytes&lt;br /&gt;
  231920        0x389F0         uImage header, header size: 64 bytes, header CRC: 0xE75790E0, created: 2018-11-13 14:36:59, image size: 998847 bytes, Data &lt;br /&gt;
  Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0xAAECA664, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327680        0x50000         uImage header, header size: 64 bytes, header CRC: 0x22425505, created: 2019-02-13 09:09:52, image size: 990770 bytes, Data &lt;br /&gt;
Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0x8F3B71D3, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327744        0x50040         LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 2836596 bytes&lt;br /&gt;
  1318514       0x141E72        Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTrootfs&amp;quot;, base address: 0x00000002, data size: 0 bytes&lt;br /&gt;
  1318578       0x141EB2        Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 7203018 bytes, 956 inodes, blocksize: 262144 bytes, created: 2019-02-13 09:09:54&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
=== Flash using serial header access ===&lt;br /&gt;
Using small modifications to the radio, direct serial access allows temporarily running OpenWRT in memory and using the temporary environment to flash a full image to the radio's memory.&lt;br /&gt;
&lt;br /&gt;
[[File:Ubnt_ns5acl_serial.jpg|thumb|Click to enlarge pinout]]&lt;br /&gt;
# Using your thumb or a small tool, push the tab in the slot located on the lower rear of the radio and slide the bottom half out of the enclosure&lt;br /&gt;
# Looking at the rear of the board (where all the components are on the opposite side as the antenna), locate the serial headers on the middle left side of the board&lt;br /&gt;
# Solder at least the top 3 pins shown in the picture. The pins from left to right (starting with the square shaped pad that is unpopulated in the image) are 3.3V, RX, TX, and GND. 3.3V is not needed here&lt;br /&gt;
# Connect GND on the board to GND on your FTDI adapter, TX on the board to RX on the FTDI adapter, and RX on the board to TX on the FTDI adapter&lt;br /&gt;
# Make sure your FTDI adapter is in 3.3V mode and attached to your computer, then open the serial port on your computer (ex. &amp;lt;code&amp;gt;minicom -D /dev/ttyUSB0&amp;lt;/code&amp;gt;). Use 115200 8N1 in your terminal settings.&lt;br /&gt;
# Connect the NanoStation and press enter in the console when it says &amp;lt;code&amp;gt;Hit any key to stop autoboot:&amp;lt;/code&amp;gt;. You should be left at a &amp;lt;code&amp;gt;ar7240&amp;gt; &amp;lt;/code&amp;gt; prompt.&lt;br /&gt;
# Connect your laptop to the LAN port of the PoE injector powering the NanoStation and assign a static IP of &amp;lt;code&amp;gt;192.168.1.254&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install a TFTP server and place [https://downloads.openwrt.org/releases/19.07.0/targets/ath79/generic/openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin] in the root folder of the TFTP server (&amp;lt;code&amp;gt;/srv/tftp&amp;lt;/code&amp;gt; for tftp-hpa on Arch).&lt;br /&gt;
# Rename the initramfs-kernel.bin file to &amp;lt;code&amp;gt;1401A8C0.img&amp;lt;/code&amp;gt; and ensure the tftp server / service is started&lt;br /&gt;
# Run &amp;lt;code&amp;gt;tftpboot&amp;lt;/code&amp;gt; in the serial console and wait for it to complete&lt;br /&gt;
# Run &amp;lt;code&amp;gt;bootm&amp;lt;/code&amp;gt; in the serial console to boot the initramfs&lt;br /&gt;
# Once OpenWRT has booted, you can press Enter to enable shell access&lt;br /&gt;
# Ensure you have an IP address in the 192.168.1.x subnet and use scp to transfer the sysupgrade firmware you wish to flash&lt;br /&gt;
# Flash the full firmware to the radio's storage using &amp;lt;code&amp;gt;mtd -r write /tmp/sysupgrade.bin firmware&amp;lt;/code&amp;gt;, replacing &amp;lt;code&amp;gt;sysupgrade.bin&amp;lt;/code&amp;gt; with the full filename of the firmware you are flashing&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1600</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1600"/>
		<updated>2020-01-29T01:43:24Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Reading the chip with flashrom */ clarify that we're not using nanostation power&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
(note: the SPI1 CE0/CE1 pins are not labeled on this image)&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1. We're going to leave the VCC pin on the flash chip disconnected. We are however going to connect a few other pins to our 3.3V source from the raspberry pi, to pull them up.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes!!Color in picture below&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|1||SIO3&lt;br /&gt;
|''we do not use this pin, so we pull it up''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|9||WP#SIO2&lt;br /&gt;
|''put the chip in read/write mode''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|&lt;br /&gt;
|blue&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|&lt;br /&gt;
|orange&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|&lt;br /&gt;
|green&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|&lt;br /&gt;
|brown&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|&lt;br /&gt;
|yellow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:20200127-raspberry-pi-zero-w-with-pomona-clip.jpg|thumb|A Raspberry Pi Zero W with wires connected to the SPI0 pins. There is an unused 3.3V wire visible.]]&lt;br /&gt;
&lt;br /&gt;
==== Reading the chip with flashrom ====&lt;br /&gt;
&lt;br /&gt;
Once the pomona is connected to the raspberry pi, make sure the nanostation is disconnected from power/ethernet. Then clip on the pomona.&lt;br /&gt;
&lt;br /&gt;
Flashrom on the raspberry pi requires us to specify the spi speed for the operation. We also need to specify the exact rom chip model, because there are two models that match:&lt;br /&gt;
&lt;br /&gt;
  $ flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12805D&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Multiple flash chip definitions match the detected chip(s): &amp;quot;MX25L12805D&amp;quot;, &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot;&lt;br /&gt;
  Please specify which chip definition to use with the -c &amp;lt;chipname&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
So here's the final command to read out the chip:&lt;br /&gt;
&lt;br /&gt;
  $ flashrom -c &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Reading flash... done.&lt;br /&gt;
&lt;br /&gt;
It's easy to verify that if the reading worked. If you were reading out the original firmware, binwalk would print something like this:&lt;br /&gt;
&lt;br /&gt;
  $ binwalk proprietary.rom &lt;br /&gt;
&lt;br /&gt;
  DECIMAL       HEXADECIMAL     DESCRIPTION&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  115152        0x1C1D0         Certificate in DER format (x509 v3), header length: 4, sequence length: 64&lt;br /&gt;
  142896        0x22E30         U-Boot version string, &amp;quot;U-Boot 1.1.4-s1100 (Sep  5 2018 - 17:53:00)&amp;quot;&lt;br /&gt;
  143184        0x22F50         CRC32 polynomial table, big endian&lt;br /&gt;
  224396        0x36C8C         CRC32 polynomial table, big endian&lt;br /&gt;
  226924        0x3766C         Ubiquiti end header, header size: 12 bytes, cumulative ~CRC32: 0x454E442E&lt;br /&gt;
  231856        0x389B0         Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTkernel&amp;quot;, base address: 0x00000001, data size: -2147475456 bytes&lt;br /&gt;
  231920        0x389F0         uImage header, header size: 64 bytes, header CRC: 0xE75790E0, created: 2018-11-13 14:36:59, image size: 998847 bytes, Data Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0xAAECA664, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327680        0x50000         uImage header, header size: 64 bytes, header CRC: 0x22425505, created: 2019-02-13 09:09:52, image size: 990770 bytes, Data Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0x8F3B71D3, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327744        0x50040         LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 2836596 bytes&lt;br /&gt;
  1318514       0x141E72        Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTrootfs&amp;quot;, base address: 0x00000002, data size: 0 bytes&lt;br /&gt;
  1318578       0x141EB2        Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 7203018 bytes, 956 inodes, blocksize: 262144 bytes, created: 2019-02-13 09:09:54&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
=== Flash using serial header access ===&lt;br /&gt;
Using small modifications to the radio, direct serial access allows temporarily running OpenWRT in memory and using the temporary environment to flash a full image to the radio's memory.&lt;br /&gt;
&lt;br /&gt;
[[File:Ubnt_ns5acl_serial.jpg|thumb|Click to enlarge pinout]]&lt;br /&gt;
# Using your thumb or a small tool, push the tab in the slot located on the lower rear of the radio and slide the bottom half out of the enclosure&lt;br /&gt;
# Looking at the rear of the board (where all the components are on the opposite side as the antenna), locate the serial headers on the middle left side of the board&lt;br /&gt;
# Solder at least the top 3 pins shown in the picture. The pins from left to right (starting with the square shaped pad that is unpopulated in the image) are 3.3V, RX, TX, and GND. 3.3V is not needed here&lt;br /&gt;
# Connect GND on the board to GND on your FTDI adapter, TX on the board to RX on the FTDI adapter, and RX on the board to TX on the FTDI adapter&lt;br /&gt;
# Make sure your FTDI adapter is in 3.3V mode and attached to your computer, then open the serial port on your computer (ex. &amp;lt;code&amp;gt;minicom -D /dev/ttyUSB0&amp;lt;/code&amp;gt;). Use 115200 8N1 in your terminal settings.&lt;br /&gt;
# Connect the NanoStation and press enter in the console when it says &amp;lt;code&amp;gt;Hit any key to stop autoboot:&amp;lt;/code&amp;gt;. You should be left at a &amp;lt;code&amp;gt;ar7240&amp;gt; &amp;lt;/code&amp;gt; prompt.&lt;br /&gt;
# Connect your laptop to the LAN port of the PoE injector powering the NanoStation and assign a static IP of &amp;lt;code&amp;gt;192.168.1.254&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install a TFTP server and place [https://downloads.openwrt.org/releases/19.07.0/targets/ath79/generic/openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin] in the root folder of the TFTP server (&amp;lt;code&amp;gt;/srv/tftp&amp;lt;/code&amp;gt; for tftp-hpa on Arch).&lt;br /&gt;
# Rename the initramfs-kernel.bin file to &amp;lt;code&amp;gt;1401A8C0.img&amp;lt;/code&amp;gt; and ensure the tftp server / service is started&lt;br /&gt;
# Run &amp;lt;code&amp;gt;tftpboot&amp;lt;/code&amp;gt; in the serial console and wait for it to complete&lt;br /&gt;
# Run &amp;lt;code&amp;gt;bootm&amp;lt;/code&amp;gt; in the serial console to boot the initramfs&lt;br /&gt;
# Once OpenWRT has booted, you can press Enter to enable shell access&lt;br /&gt;
# Ensure you have an IP address in the 192.168.1.x subnet and use scp to transfer the sysupgrade firmware you wish to flash&lt;br /&gt;
# Flash the full firmware to the radio's storage using &amp;lt;code&amp;gt;mtd -r write /tmp/sysupgrade.bin firmware&amp;lt;/code&amp;gt;, replacing &amp;lt;code&amp;gt;sysupgrade.bin&amp;lt;/code&amp;gt; with the full filename of the firmware you are flashing&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1599</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1599"/>
		<updated>2020-01-29T01:41:25Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Pinouts (please proceed with caution!) */ clarify that we are not using the nanostation power for flashing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
(note: the SPI1 CE0/CE1 pins are not labeled on this image)&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1. We're going to leave the VCC pin on the flash chip disconnected. We are however going to connect a few other pins to our 3.3V source from the raspberry pi, to pull them up.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes!!Color in picture below&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|1||SIO3&lt;br /&gt;
|''we do not use this pin, so we pull it up''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|9||WP#SIO2&lt;br /&gt;
|''put the chip in read/write mode''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|&lt;br /&gt;
|blue&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|&lt;br /&gt;
|orange&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|&lt;br /&gt;
|green&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|&lt;br /&gt;
|brown&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|&lt;br /&gt;
|yellow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:20200127-raspberry-pi-zero-w-with-pomona-clip.jpg|thumb|A Raspberry Pi Zero W with wires connected to the SPI0 pins. There is an unused 3.3V wire visible.]]&lt;br /&gt;
&lt;br /&gt;
==== Reading the chip with flashrom ====&lt;br /&gt;
&lt;br /&gt;
Once the pomona is connected to the raspberry pi, power up the nanostation with its own power supply. Then clip on the pomona. FIXME: describe putting the NS into tftp mode first.&lt;br /&gt;
&lt;br /&gt;
Flashrom on the raspberry pi requires us to specify the spi speed for the operation. We also need to specify the exact rom chip model, because there are two models that match:&lt;br /&gt;
&lt;br /&gt;
  $ flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12805D&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Multiple flash chip definitions match the detected chip(s): &amp;quot;MX25L12805D&amp;quot;, &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot;&lt;br /&gt;
  Please specify which chip definition to use with the -c &amp;lt;chipname&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
So here's the final command to read out the chip:&lt;br /&gt;
&lt;br /&gt;
  $ flashrom -c &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Reading flash... done.&lt;br /&gt;
&lt;br /&gt;
It's easy to verify that if the reading worked. If you were reading out the original firmware, binwalk would print something like this:&lt;br /&gt;
&lt;br /&gt;
  $ binwalk proprietary.rom &lt;br /&gt;
&lt;br /&gt;
  DECIMAL       HEXADECIMAL     DESCRIPTION&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  115152        0x1C1D0         Certificate in DER format (x509 v3), header length: 4, sequence length: 64&lt;br /&gt;
  142896        0x22E30         U-Boot version string, &amp;quot;U-Boot 1.1.4-s1100 (Sep  5 2018 - 17:53:00)&amp;quot;&lt;br /&gt;
  143184        0x22F50         CRC32 polynomial table, big endian&lt;br /&gt;
  224396        0x36C8C         CRC32 polynomial table, big endian&lt;br /&gt;
  226924        0x3766C         Ubiquiti end header, header size: 12 bytes, cumulative ~CRC32: 0x454E442E&lt;br /&gt;
  231856        0x389B0         Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTkernel&amp;quot;, base address: 0x00000001, data size: -2147475456 bytes&lt;br /&gt;
  231920        0x389F0         uImage header, header size: 64 bytes, header CRC: 0xE75790E0, created: 2018-11-13 14:36:59, image size: 998847 bytes, Data Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0xAAECA664, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327680        0x50000         uImage header, header size: 64 bytes, header CRC: 0x22425505, created: 2019-02-13 09:09:52, image size: 990770 bytes, Data Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0x8F3B71D3, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327744        0x50040         LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 2836596 bytes&lt;br /&gt;
  1318514       0x141E72        Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTrootfs&amp;quot;, base address: 0x00000002, data size: 0 bytes&lt;br /&gt;
  1318578       0x141EB2        Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 7203018 bytes, 956 inodes, blocksize: 262144 bytes, created: 2019-02-13 09:09:54&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
=== Flash using serial header access ===&lt;br /&gt;
Using small modifications to the radio, direct serial access allows temporarily running OpenWRT in memory and using the temporary environment to flash a full image to the radio's memory.&lt;br /&gt;
&lt;br /&gt;
[[File:Ubnt_ns5acl_serial.jpg|thumb|Click to enlarge pinout]]&lt;br /&gt;
# Using your thumb or a small tool, push the tab in the slot located on the lower rear of the radio and slide the bottom half out of the enclosure&lt;br /&gt;
# Looking at the rear of the board (where all the components are on the opposite side as the antenna), locate the serial headers on the middle left side of the board&lt;br /&gt;
# Solder at least the top 3 pins shown in the picture. The pins from left to right (starting with the square shaped pad that is unpopulated in the image) are 3.3V, RX, TX, and GND. 3.3V is not needed here&lt;br /&gt;
# Connect GND on the board to GND on your FTDI adapter, TX on the board to RX on the FTDI adapter, and RX on the board to TX on the FTDI adapter&lt;br /&gt;
# Make sure your FTDI adapter is in 3.3V mode and attached to your computer, then open the serial port on your computer (ex. &amp;lt;code&amp;gt;minicom -D /dev/ttyUSB0&amp;lt;/code&amp;gt;). Use 115200 8N1 in your terminal settings.&lt;br /&gt;
# Connect the NanoStation and press enter in the console when it says &amp;lt;code&amp;gt;Hit any key to stop autoboot:&amp;lt;/code&amp;gt;. You should be left at a &amp;lt;code&amp;gt;ar7240&amp;gt; &amp;lt;/code&amp;gt; prompt.&lt;br /&gt;
# Connect your laptop to the LAN port of the PoE injector powering the NanoStation and assign a static IP of &amp;lt;code&amp;gt;192.168.1.254&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install a TFTP server and place [https://downloads.openwrt.org/releases/19.07.0/targets/ath79/generic/openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin] in the root folder of the TFTP server (&amp;lt;code&amp;gt;/srv/tftp&amp;lt;/code&amp;gt; for tftp-hpa on Arch).&lt;br /&gt;
# Rename the initramfs-kernel.bin file to &amp;lt;code&amp;gt;1401A8C0.img&amp;lt;/code&amp;gt; and ensure the tftp server / service is started&lt;br /&gt;
# Run &amp;lt;code&amp;gt;tftpboot&amp;lt;/code&amp;gt; in the serial console and wait for it to complete&lt;br /&gt;
# Run &amp;lt;code&amp;gt;bootm&amp;lt;/code&amp;gt; in the serial console to boot the initramfs&lt;br /&gt;
# Once OpenWRT has booted, you can press Enter to enable shell access&lt;br /&gt;
# Ensure you have an IP address in the 192.168.1.x subnet and use scp to transfer the sysupgrade firmware you wish to flash&lt;br /&gt;
# Flash the full firmware to the radio's storage using &amp;lt;code&amp;gt;mtd -r write /tmp/sysupgrade.bin firmware&amp;lt;/code&amp;gt;, replacing &amp;lt;code&amp;gt;sysupgrade.bin&amp;lt;/code&amp;gt; with the full filename of the firmware you are flashing&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1598</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1598"/>
		<updated>2020-01-28T15:32:38Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Pinouts (please proceed with caution!) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
(note: the SPI1 CE0/CE1 pins are not labeled on this image)&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1. We're going to '''power up the NanoStation with its own power supply''', so we need to leave the VCC pin on the flash chip disconnected. We are however going to connect a few other pins to our 3.3V source from the raspberry pi, to pull them up.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes!!Color in picture below&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|1||SIO3&lt;br /&gt;
|''we do not use this pin, so we pull it up''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|9||WP#SIO2&lt;br /&gt;
|''put the chip in read/write mode''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|&lt;br /&gt;
|blue&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|&lt;br /&gt;
|orange&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|&lt;br /&gt;
|green&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|&lt;br /&gt;
|brown&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|&lt;br /&gt;
|yellow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:20200127-raspberry-pi-zero-w-with-pomona-clip.jpg|thumb|A Raspberry Pi Zero W with wires connected to the SPI0 pins. There is an unused 3.3V wire visible.]]&lt;br /&gt;
&lt;br /&gt;
==== Reading the chip with flashrom ====&lt;br /&gt;
&lt;br /&gt;
Once the pomona is connected to the raspberry pi, power up the nanostation with its own power supply. Then clip on the pomona. FIXME: describe putting the NS into tftp mode first.&lt;br /&gt;
&lt;br /&gt;
Flashrom on the raspberry pi requires us to specify the spi speed for the operation. We also need to specify the exact rom chip model, because there are two models that match:&lt;br /&gt;
&lt;br /&gt;
  $ flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12805D&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Multiple flash chip definitions match the detected chip(s): &amp;quot;MX25L12805D&amp;quot;, &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot;&lt;br /&gt;
  Please specify which chip definition to use with the -c &amp;lt;chipname&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
So here's the final command to read out the chip:&lt;br /&gt;
&lt;br /&gt;
  $ flashrom -c &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Reading flash... done.&lt;br /&gt;
&lt;br /&gt;
It's easy to verify that if the reading worked. If you were reading out the original firmware, binwalk would print something like this:&lt;br /&gt;
&lt;br /&gt;
  $ binwalk proprietary.rom &lt;br /&gt;
&lt;br /&gt;
  DECIMAL       HEXADECIMAL     DESCRIPTION&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  115152        0x1C1D0         Certificate in DER format (x509 v3), header length: 4, sequence length: 64&lt;br /&gt;
  142896        0x22E30         U-Boot version string, &amp;quot;U-Boot 1.1.4-s1100 (Sep  5 2018 - 17:53:00)&amp;quot;&lt;br /&gt;
  143184        0x22F50         CRC32 polynomial table, big endian&lt;br /&gt;
  224396        0x36C8C         CRC32 polynomial table, big endian&lt;br /&gt;
  226924        0x3766C         Ubiquiti end header, header size: 12 bytes, cumulative ~CRC32: 0x454E442E&lt;br /&gt;
  231856        0x389B0         Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTkernel&amp;quot;, base address: 0x00000001, data size: -2147475456 bytes&lt;br /&gt;
  231920        0x389F0         uImage header, header size: 64 bytes, header CRC: 0xE75790E0, created: 2018-11-13 14:36:59, image size: 998847 bytes, Data Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0xAAECA664, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327680        0x50000         uImage header, header size: 64 bytes, header CRC: 0x22425505, created: 2019-02-13 09:09:52, image size: 990770 bytes, Data Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0x8F3B71D3, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327744        0x50040         LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 2836596 bytes&lt;br /&gt;
  1318514       0x141E72        Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTrootfs&amp;quot;, base address: 0x00000002, data size: 0 bytes&lt;br /&gt;
  1318578       0x141EB2        Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 7203018 bytes, 956 inodes, blocksize: 262144 bytes, created: 2019-02-13 09:09:54&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
=== Flash using serial header access ===&lt;br /&gt;
Using small modifications to the radio, direct serial access allows temporarily running OpenWRT in memory and using the temporary environment to flash a full image to the radio's memory.&lt;br /&gt;
&lt;br /&gt;
[[File:Ubnt_ns5acl_serial.jpg|thumb|Click to enlarge pinout]]&lt;br /&gt;
# Using your thumb or a small tool, push the tab in the slot located on the lower rear of the radio and slide the bottom half out of the enclosure&lt;br /&gt;
# Looking at the rear of the board (where all the components are on the opposite side as the antenna), locate the serial headers on the middle left side of the board&lt;br /&gt;
# Solder at least the top 3 pins shown in the picture. The pins from left to right (starting with the square shaped pad that is unpopulated in the image) are 3.3V, RX, TX, and GND. 3.3V is not needed here&lt;br /&gt;
# Connect GND on the board to GND on your FTDI adapter, TX on the board to RX on the FTDI adapter, and RX on the board to TX on the FTDI adapter&lt;br /&gt;
# Make sure your FTDI adapter is in 3.3V mode and attached to your computer, then open the serial port on your computer (ex. &amp;lt;code&amp;gt;minicom -D /dev/ttyUSB0&amp;lt;/code&amp;gt;). Use 115200 8N1 in your terminal settings.&lt;br /&gt;
# Connect the NanoStation and press enter in the console when it says &amp;lt;code&amp;gt;Hit any key to stop autoboot:&amp;lt;/code&amp;gt;. You should be left at a &amp;lt;code&amp;gt;ar7240&amp;gt; &amp;lt;/code&amp;gt; prompt.&lt;br /&gt;
# Connect your laptop to the LAN port of the PoE injector powering the NanoStation and assign a static IP of &amp;lt;code&amp;gt;192.168.1.254&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install a TFTP server and place [https://downloads.openwrt.org/releases/19.07.0/targets/ath79/generic/openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin] in the root folder of the TFTP server (&amp;lt;code&amp;gt;/srv/tftp&amp;lt;/code&amp;gt; for tftp-hpa on Arch).&lt;br /&gt;
# Rename the initramfs-kernel.bin file to &amp;lt;code&amp;gt;1401A8C0.img&amp;lt;/code&amp;gt; and ensure the tftp server / service is started&lt;br /&gt;
# Run &amp;lt;code&amp;gt;tftpboot&amp;lt;/code&amp;gt; in the serial console and wait for it to complete&lt;br /&gt;
# Run &amp;lt;code&amp;gt;bootm&amp;lt;/code&amp;gt; in the serial console to boot the initramfs&lt;br /&gt;
# Once OpenWRT has booted, you can press Enter to enable shell access&lt;br /&gt;
# Ensure you have an IP address in the 192.168.1.x subnet and use scp to transfer the sysupgrade firmware you wish to flash&lt;br /&gt;
# Flash the full firmware to the radio's storage using &amp;lt;code&amp;gt;mtd -r write /tmp/sysupgrade.bin firmware&amp;lt;/code&amp;gt;, replacing &amp;lt;code&amp;gt;sysupgrade.bin&amp;lt;/code&amp;gt; with the full filename of the firmware you are flashing&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1597</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1597"/>
		<updated>2020-01-28T15:30:39Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Pinouts (please proceed with caution!) */ wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
(note: the SPI1 CE0/CE1 pins are not labeled on this image)&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1. We're going to '''power up the NanoStation with its own power supply''', so we need to leave the VCC pin on the flash chip disconnected. We are however going to connect a few other pins to our 3.3V source from the raspberry pi, to pull them up.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes!!Color in picture below&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|1||SIO3&lt;br /&gt;
|''we do not use this pin, so we pull it up''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|9||WP#SIO2&lt;br /&gt;
|''put the chip in read/write mode''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|&lt;br /&gt;
|blue&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|&lt;br /&gt;
|orange&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|&lt;br /&gt;
|green&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|&lt;br /&gt;
|brown&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|&lt;br /&gt;
|yellow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:20200127-raspberry-pi-zero-w-with-pomona-clip.jpg|thumb|A Raspberry Pi Zero W with wires connected to the SPI0 pins. There is an unused 3.3V wire visible.]]&lt;br /&gt;
&lt;br /&gt;
Once the pomona is connected to the raspberry pi, power up the nanostation with its own power supply. Then clip on the pomona.&lt;br /&gt;
&lt;br /&gt;
Flashrom on the raspberry pi requires us to specify the spi speed for the operation. We also need to specify the exact rom chip model, because there are two models that match:&lt;br /&gt;
&lt;br /&gt;
  flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12805D&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Multiple flash chip definitions match the detected chip(s): &amp;quot;MX25L12805D&amp;quot;, &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot;&lt;br /&gt;
  Please specify which chip definition to use with the -c &amp;lt;chipname&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
So here's the final command to read out the chip:&lt;br /&gt;
&lt;br /&gt;
  flashrom -c &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Reading flash... done.&lt;br /&gt;
&lt;br /&gt;
It's easy to verify that if the reading worked. If you were reading out the original firmware, binwalk would print something like this:&lt;br /&gt;
&lt;br /&gt;
  $ binwalk proprietary.rom &lt;br /&gt;
&lt;br /&gt;
  DECIMAL       HEXADECIMAL     DESCRIPTION&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  115152        0x1C1D0         Certificate in DER format (x509 v3), header length: 4, sequence length: 64&lt;br /&gt;
  142896        0x22E30         U-Boot version string, &amp;quot;U-Boot 1.1.4-s1100 (Sep  5 2018 - 17:53:00)&amp;quot;&lt;br /&gt;
  143184        0x22F50         CRC32 polynomial table, big endian&lt;br /&gt;
  224396        0x36C8C         CRC32 polynomial table, big endian&lt;br /&gt;
  226924        0x3766C         Ubiquiti end header, header size: 12 bytes, cumulative ~CRC32: 0x454E442E&lt;br /&gt;
  231856        0x389B0         Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTkernel&amp;quot;, base address: 0x00000001, data size: -2147475456 bytes&lt;br /&gt;
  231920        0x389F0         uImage header, header size: 64 bytes, header CRC: 0xE75790E0, created: 2018-11-13 14:36:59, image size: 998847 bytes, Data Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0xAAECA664, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327680        0x50000         uImage header, header size: 64 bytes, header CRC: 0x22425505, created: 2019-02-13 09:09:52, image size: 990770 bytes, Data Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0x8F3B71D3, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327744        0x50040         LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 2836596 bytes&lt;br /&gt;
  1318514       0x141E72        Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTrootfs&amp;quot;, base address: 0x00000002, data size: 0 bytes&lt;br /&gt;
  1318578       0x141EB2        Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 7203018 bytes, 956 inodes, blocksize: 262144 bytes, created: 2019-02-13 09:09:54&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
=== Flash using serial header access ===&lt;br /&gt;
Using small modifications to the radio, direct serial access allows temporarily running OpenWRT in memory and using the temporary environment to flash a full image to the radio's memory.&lt;br /&gt;
&lt;br /&gt;
[[File:Ubnt_ns5acl_serial.jpg|thumb|Click to enlarge pinout]]&lt;br /&gt;
# Using your thumb or a small tool, push the tab in the slot located on the lower rear of the radio and slide the bottom half out of the enclosure&lt;br /&gt;
# Looking at the rear of the board (where all the components are on the opposite side as the antenna), locate the serial headers on the middle left side of the board&lt;br /&gt;
# Solder at least the top 3 pins shown in the picture. The pins from left to right (starting with the square shaped pad that is unpopulated in the image) are 3.3V, RX, TX, and GND. 3.3V is not needed here&lt;br /&gt;
# Connect GND on the board to GND on your FTDI adapter, TX on the board to RX on the FTDI adapter, and RX on the board to TX on the FTDI adapter&lt;br /&gt;
# Make sure your FTDI adapter is in 3.3V mode and attached to your computer, then open the serial port on your computer (ex. &amp;lt;code&amp;gt;minicom -D /dev/ttyUSB0&amp;lt;/code&amp;gt;). Use 115200 8N1 in your terminal settings.&lt;br /&gt;
# Connect the NanoStation and press enter in the console when it says &amp;lt;code&amp;gt;Hit any key to stop autoboot:&amp;lt;/code&amp;gt;. You should be left at a &amp;lt;code&amp;gt;ar7240&amp;gt; &amp;lt;/code&amp;gt; prompt.&lt;br /&gt;
# Connect your laptop to the LAN port of the PoE injector powering the NanoStation and assign a static IP of &amp;lt;code&amp;gt;192.168.1.254&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install a TFTP server and place [https://downloads.openwrt.org/releases/19.07.0/targets/ath79/generic/openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin] in the root folder of the TFTP server (&amp;lt;code&amp;gt;/srv/tftp&amp;lt;/code&amp;gt; for tftp-hpa on Arch).&lt;br /&gt;
# Rename the initramfs-kernel.bin file to &amp;lt;code&amp;gt;1401A8C0.img&amp;lt;/code&amp;gt; and ensure the tftp server / service is started&lt;br /&gt;
# Run &amp;lt;code&amp;gt;tftpboot&amp;lt;/code&amp;gt; in the serial console and wait for it to complete&lt;br /&gt;
# Run &amp;lt;code&amp;gt;bootm&amp;lt;/code&amp;gt; in the serial console to boot the initramfs&lt;br /&gt;
# Once OpenWRT has booted, you can press Enter to enable shell access&lt;br /&gt;
# Ensure you have an IP address in the 192.168.1.x subnet and use scp to transfer the sysupgrade firmware you wish to flash&lt;br /&gt;
# Flash the full firmware to the radio's storage using &amp;lt;code&amp;gt;mtd -r write /tmp/sysupgrade.bin firmware&amp;lt;/code&amp;gt;, replacing &amp;lt;code&amp;gt;sysupgrade.bin&amp;lt;/code&amp;gt; with the full filename of the firmware you are flashing&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1596</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1596"/>
		<updated>2020-01-28T03:26:16Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Pinouts (please proceed with caution!) */ update picture&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
(note: the SPI1 CE0/CE1 pins are not labeled on this image)&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1. We're going to '''power up the NanoStation with its own power supply''', so we need to leave the VCC pin on the flash chip disconnected. We are however going to connect a few other pins to our 3.3V source from the raspberry pi, to pull them up.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes!!Color in picture below&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|1||SIO3&lt;br /&gt;
|''we do not use this pin, so we pull it up''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|9||WP#SIO2&lt;br /&gt;
|''put the chip in read/write mode''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|&lt;br /&gt;
|blue&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|&lt;br /&gt;
|orange&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|&lt;br /&gt;
|green&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|&lt;br /&gt;
|brown&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|&lt;br /&gt;
|yellow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:20200127-raspberry-pi-zero-w-with-pomona-clip.jpg|thumb|A Raspberry Pi Zero W with wires connected to the SPI0 pins. There is an unused 3.3V pin visible.]]&lt;br /&gt;
&lt;br /&gt;
Once the pomona is connected to the raspberry pi, power up the nanostation with its own power supply. Then clip on the pomona.&lt;br /&gt;
&lt;br /&gt;
Flashrom on the raspberry pi requires us to specify the spi speed for the operation. We also need to specify the exact rom chip model, because there are two models that match:&lt;br /&gt;
&lt;br /&gt;
  flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12805D&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Multiple flash chip definitions match the detected chip(s): &amp;quot;MX25L12805D&amp;quot;, &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot;&lt;br /&gt;
  Please specify which chip definition to use with the -c &amp;lt;chipname&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
So here's the final command to read out the chip:&lt;br /&gt;
&lt;br /&gt;
  flashrom -c &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Reading flash... done.&lt;br /&gt;
&lt;br /&gt;
It's easy to verify that if the reading worked. If you were reading out the original firmware, binwalk would print something like this:&lt;br /&gt;
&lt;br /&gt;
  $ binwalk proprietary.rom &lt;br /&gt;
&lt;br /&gt;
  DECIMAL       HEXADECIMAL     DESCRIPTION&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  115152        0x1C1D0         Certificate in DER format (x509 v3), header length: 4, sequence length: 64&lt;br /&gt;
  142896        0x22E30         U-Boot version string, &amp;quot;U-Boot 1.1.4-s1100 (Sep  5 2018 - 17:53:00)&amp;quot;&lt;br /&gt;
  143184        0x22F50         CRC32 polynomial table, big endian&lt;br /&gt;
  224396        0x36C8C         CRC32 polynomial table, big endian&lt;br /&gt;
  226924        0x3766C         Ubiquiti end header, header size: 12 bytes, cumulative ~CRC32: 0x454E442E&lt;br /&gt;
  231856        0x389B0         Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTkernel&amp;quot;, base address: 0x00000001, data size: -2147475456 bytes&lt;br /&gt;
  231920        0x389F0         uImage header, header size: 64 bytes, header CRC: 0xE75790E0, created: 2018-11-13 14:36:59, image size: 998847 bytes, Data Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0xAAECA664, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327680        0x50000         uImage header, header size: 64 bytes, header CRC: 0x22425505, created: 2019-02-13 09:09:52, image size: 990770 bytes, Data Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0x8F3B71D3, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327744        0x50040         LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 2836596 bytes&lt;br /&gt;
  1318514       0x141E72        Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTrootfs&amp;quot;, base address: 0x00000002, data size: 0 bytes&lt;br /&gt;
  1318578       0x141EB2        Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 7203018 bytes, 956 inodes, blocksize: 262144 bytes, created: 2019-02-13 09:09:54&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
=== Flash using serial header access ===&lt;br /&gt;
Using small modifications to the radio, direct serial access allows temporarily running OpenWRT in memory and using the temporary environment to flash a full image to the radio's memory.&lt;br /&gt;
&lt;br /&gt;
[[File:Ubnt_ns5acl_serial.jpg|thumb|Click to enlarge pinout]]&lt;br /&gt;
# Using your thumb or a small tool, push the tab in the slot located on the lower rear of the radio and slide the bottom half out of the enclosure&lt;br /&gt;
# Looking at the rear of the board (where all the components are on the opposite side as the antenna), locate the serial headers on the middle left side of the board&lt;br /&gt;
# Solder at least the top 3 pins shown in the picture. The pins from left to right (starting with the square shaped pad that is unpopulated in the image) are 3.3V, RX, TX, and GND. 3.3V is not needed here&lt;br /&gt;
# Connect GND on the board to GND on your FTDI adapter, TX on the board to RX on the FTDI adapter, and RX on the board to TX on the FTDI adapter&lt;br /&gt;
# Make sure your FTDI adapter is in 3.3V mode and attached to your computer, then open the serial port on your computer (ex. &amp;lt;code&amp;gt;minicom -D /dev/ttyUSB0&amp;lt;/code&amp;gt;). Use 115200 8N1 in your terminal settings.&lt;br /&gt;
# Connect the NanoStation and press enter in the console when it says &amp;lt;code&amp;gt;Hit any key to stop autoboot:&amp;lt;/code&amp;gt;. You should be left at a &amp;lt;code&amp;gt;ar7240&amp;gt; &amp;lt;/code&amp;gt; prompt.&lt;br /&gt;
# Connect your laptop to the LAN port of the PoE injector powering the NanoStation and assign a static IP of &amp;lt;code&amp;gt;192.168.1.254&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install a TFTP server and place [https://downloads.openwrt.org/releases/19.07.0/targets/ath79/generic/openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin] in the root folder of the TFTP server (&amp;lt;code&amp;gt;/srv/tftp&amp;lt;/code&amp;gt; for tftp-hpa on Arch).&lt;br /&gt;
# Rename the initramfs-kernel.bin file to &amp;lt;code&amp;gt;1401A8C0.img&amp;lt;/code&amp;gt; and ensure the tftp server / service is started&lt;br /&gt;
# Run &amp;lt;code&amp;gt;tftpboot&amp;lt;/code&amp;gt; in the serial console and wait for it to complete&lt;br /&gt;
# Run &amp;lt;code&amp;gt;bootm&amp;lt;/code&amp;gt; in the serial console to boot the initramfs&lt;br /&gt;
# Once OpenWRT has booted, you can press Enter to enable shell access&lt;br /&gt;
# Ensure you have an IP address in the 192.168.1.x subnet and use scp to transfer the sysupgrade firmware you wish to flash&lt;br /&gt;
# Flash the full firmware to the radio's storage using &amp;lt;code&amp;gt;mtd -r write /tmp/sysupgrade.bin firmware&amp;lt;/code&amp;gt;, replacing &amp;lt;code&amp;gt;sysupgrade.bin&amp;lt;/code&amp;gt; with the full filename of the firmware you are flashing&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=File:20200127-raspberry-pi-zero-w-with-pomona-clip.jpg&amp;diff=1595</id>
		<title>File:20200127-raspberry-pi-zero-w-with-pomona-clip.jpg</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=File:20200127-raspberry-pi-zero-w-with-pomona-clip.jpg&amp;diff=1595"/>
		<updated>2020-01-28T03:24:12Z</updated>

		<summary type="html">&lt;p&gt;Cure: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1594</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1594"/>
		<updated>2020-01-28T02:38:15Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Pinouts (please proceed with caution!) */ add binwalk output&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
(note: the SPI1 CE0/CE1 pins are not labeled on this image)&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1. We're going to '''power up the NanoStation with its own power supply''', so we need to leave the VCC pin on the flash chip disconnected. We are however going to connect a few other pins to our 3.3V source from the raspberry pi, to pull them up.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes!!Color in picture below&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|1||SIO3&lt;br /&gt;
|''we do not use this pin, so we pull it up''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|9||WP#SIO2&lt;br /&gt;
|''put the chip in read/write mode''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|&lt;br /&gt;
|blue&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|&lt;br /&gt;
|orange&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|&lt;br /&gt;
|green&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|&lt;br /&gt;
|brown&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|&lt;br /&gt;
|yellow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-spi0-connected.jpg|inline|1024px|A Raspberry Pi Zero W with wires connected to the SPI0 pins]]&lt;br /&gt;
&lt;br /&gt;
Once the pomona is connected to the raspberry pi, power up the nanostation with its own power supply. Then clip on the pomona.&lt;br /&gt;
&lt;br /&gt;
Flashrom on the raspberry pi requires us to specify the spi speed for the operation. We also need to specify the exact rom chip model, because there are two models that match:&lt;br /&gt;
&lt;br /&gt;
  flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12805D&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Multiple flash chip definitions match the detected chip(s): &amp;quot;MX25L12805D&amp;quot;, &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot;&lt;br /&gt;
  Please specify which chip definition to use with the -c &amp;lt;chipname&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
So here's the final command to read out the chip:&lt;br /&gt;
&lt;br /&gt;
  flashrom -c &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Reading flash... done.&lt;br /&gt;
&lt;br /&gt;
It's easy to verify that if the reading worked. If you were reading out the original firmware, binwalk would print something like this:&lt;br /&gt;
&lt;br /&gt;
  $ binwalk proprietary.rom &lt;br /&gt;
&lt;br /&gt;
  DECIMAL       HEXADECIMAL     DESCRIPTION&lt;br /&gt;
  --------------------------------------------------------------------------------&lt;br /&gt;
  115152        0x1C1D0         Certificate in DER format (x509 v3), header length: 4, sequence length: 64&lt;br /&gt;
  142896        0x22E30         U-Boot version string, &amp;quot;U-Boot 1.1.4-s1100 (Sep  5 2018 - 17:53:00)&amp;quot;&lt;br /&gt;
  143184        0x22F50         CRC32 polynomial table, big endian&lt;br /&gt;
  224396        0x36C8C         CRC32 polynomial table, big endian&lt;br /&gt;
  226924        0x3766C         Ubiquiti end header, header size: 12 bytes, cumulative ~CRC32: 0x454E442E&lt;br /&gt;
  231856        0x389B0         Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTkernel&amp;quot;, base address: 0x00000001, data size: -2147475456 bytes&lt;br /&gt;
  231920        0x389F0         uImage header, header size: 64 bytes, header CRC: 0xE75790E0, created: 2018-11-13 14:36:59, image size: 998847 bytes, Data Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0xAAECA664, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327680        0x50000         uImage header, header size: 64 bytes, header CRC: 0x22425505, created: 2019-02-13 09:09:52, image size: 990770 bytes, Data Address: 0x80002000, Entry Point: 0x80002000, data CRC: 0x8F3B71D3, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: &amp;quot;MIPS Ubiquiti Linux-2.6.32.68&amp;quot;&lt;br /&gt;
  327744        0x50040         LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 2836596 bytes&lt;br /&gt;
  1318514       0x141E72        Ubiquiti partition header, header size: 56 bytes, name: &amp;quot;PARTrootfs&amp;quot;, base address: 0x00000002, data size: 0 bytes&lt;br /&gt;
  1318578       0x141EB2        Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 7203018 bytes, 956 inodes, blocksize: 262144 bytes, created: 2019-02-13 09:09:54&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
=== Flash using serial header access ===&lt;br /&gt;
Using small modifications to the radio, direct serial access allows temporarily running OpenWRT in memory and using the temporary environment to flash a full image to the radio's memory.&lt;br /&gt;
&lt;br /&gt;
[[File:Ubnt_ns5acl_serial.jpg|thumb|Click to enlarge pinout]]&lt;br /&gt;
# Using your thumb or a small tool, push the tab in the slot located on the lower rear of the radio and slide the bottom half out of the enclosure&lt;br /&gt;
# Looking at the rear of the board (where all the components are on the opposite side as the antenna), locate the serial headers on the middle left side of the board&lt;br /&gt;
# Solder at least the top 3 pins shown in the picture. The pins from left to right (starting with the square shaped pad that is unpopulated in the image) are 3.3V, RX, TX, and GND. 3.3V is not needed here&lt;br /&gt;
# Connect GND on the board to GND on your FTDI adapter, TX on the board to RX on the FTDI adapter, and RX on the board to TX on the FTDI adapter&lt;br /&gt;
# Make sure your FTDI adapter is in 3.3V mode and attached to your computer, then open the serial port on your computer (ex. &amp;lt;code&amp;gt;minicom -D /dev/ttyUSB0&amp;lt;/code&amp;gt;). Use 115200 8N1 in your terminal settings.&lt;br /&gt;
# Connect the NanoStation and press enter in the console when it says &amp;lt;code&amp;gt;Hit any key to stop autoboot:&amp;lt;/code&amp;gt;. You should be left at a &amp;lt;code&amp;gt;ar7240&amp;gt; &amp;lt;/code&amp;gt; prompt.&lt;br /&gt;
# Connect your laptop to the LAN port of the PoE injector powering the NanoStation and assign a static IP of &amp;lt;code&amp;gt;192.168.1.254&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install a TFTP server and place [https://downloads.openwrt.org/releases/19.07.0/targets/ath79/generic/openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin] in the root folder of the TFTP server (&amp;lt;code&amp;gt;/srv/tftp&amp;lt;/code&amp;gt; for tftp-hpa on Arch).&lt;br /&gt;
# Rename the initramfs-kernel.bin file to &amp;lt;code&amp;gt;1401A8C0.img&amp;lt;/code&amp;gt; and ensure the tftp server / service is started&lt;br /&gt;
# Run &amp;lt;code&amp;gt;tftpboot&amp;lt;/code&amp;gt; in the serial console and wait for it to complete&lt;br /&gt;
# Run &amp;lt;code&amp;gt;bootm&amp;lt;/code&amp;gt; in the serial console to boot the initramfs&lt;br /&gt;
# Once OpenWRT has booted, you can press Enter to enable shell access&lt;br /&gt;
# Ensure you have an IP address in the 192.168.1.x subnet and use scp to transfer the sysupgrade firmware you wish to flash&lt;br /&gt;
# Flash the full firmware to the radio's storage using &amp;lt;code&amp;gt;mtd -r write /tmp/sysupgrade.bin firmware&amp;lt;/code&amp;gt;, replacing &amp;lt;code&amp;gt;sysupgrade.bin&amp;lt;/code&amp;gt; with the full filename of the firmware you are flashing&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1593</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1593"/>
		<updated>2020-01-28T02:32:56Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Downgrade Ubiquiti AirOS With An External Programmer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
(note: the SPI1 CE0/CE1 pins are not labeled on this image)&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1. We're going to '''power up the NanoStation with its own power supply''', so we need to leave the VCC pin on the flash chip disconnected. We are however going to connect a few other pins to our 3.3V source from the raspberry pi, to pull them up.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes!!Color in picture below&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|1||SIO3&lt;br /&gt;
|''we do not use this pin, so we pull it up''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|9||WP#SIO2&lt;br /&gt;
|''put the chip in read/write mode''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|&lt;br /&gt;
|blue&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|&lt;br /&gt;
|orange&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|&lt;br /&gt;
|green&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|&lt;br /&gt;
|brown&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|&lt;br /&gt;
|yellow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-spi0-connected.jpg|inline|1024px|A Raspberry Pi Zero W with wires connected to the SPI0 pins]]&lt;br /&gt;
&lt;br /&gt;
Once the pomona is connected to the raspberry pi, power up the nanostation with its own power supply. Then clip on the pomona.&lt;br /&gt;
&lt;br /&gt;
Flashrom on the raspberry pi requires us to specify the spi speed for the operation. We also need to specify the exact rom chip model, because there are two models that match:&lt;br /&gt;
&lt;br /&gt;
  flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12805D&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Multiple flash chip definitions match the detected chip(s): &amp;quot;MX25L12805D&amp;quot;, &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot;&lt;br /&gt;
  Please specify which chip definition to use with the -c &amp;lt;chipname&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
So here's the final command to read out the chip:&lt;br /&gt;
&lt;br /&gt;
  flashrom -c &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Reading flash... done.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
=== Flash using serial header access ===&lt;br /&gt;
Using small modifications to the radio, direct serial access allows temporarily running OpenWRT in memory and using the temporary environment to flash a full image to the radio's memory.&lt;br /&gt;
&lt;br /&gt;
[[File:Ubnt_ns5acl_serial.jpg|thumb|Click to enlarge pinout]]&lt;br /&gt;
# Using your thumb or a small tool, push the tab in the slot located on the lower rear of the radio and slide the bottom half out of the enclosure&lt;br /&gt;
# Looking at the rear of the board (where all the components are on the opposite side as the antenna), locate the serial headers on the middle left side of the board&lt;br /&gt;
# Solder at least the top 3 pins shown in the picture. The pins from left to right (starting with the square shaped pad that is unpopulated in the image) are 3.3V, RX, TX, and GND. 3.3V is not needed here&lt;br /&gt;
# Connect GND on the board to GND on your FTDI adapter, TX on the board to RX on the FTDI adapter, and RX on the board to TX on the FTDI adapter&lt;br /&gt;
# Make sure your FTDI adapter is in 3.3V mode and attached to your computer, then open the serial port on your computer (ex. &amp;lt;code&amp;gt;minicom -D /dev/ttyUSB0&amp;lt;/code&amp;gt;). Use 115200 8N1 in your terminal settings.&lt;br /&gt;
# Connect the NanoStation and press enter in the console when it says &amp;lt;code&amp;gt;Hit any key to stop autoboot:&amp;lt;/code&amp;gt;. You should be left at a &amp;lt;code&amp;gt;ar7240&amp;gt; &amp;lt;/code&amp;gt; prompt.&lt;br /&gt;
# Connect your laptop to the LAN port of the PoE injector powering the NanoStation and assign a static IP of &amp;lt;code&amp;gt;192.168.1.254&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install a TFTP server and place [https://downloads.openwrt.org/releases/19.07.0/targets/ath79/generic/openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin] in the root folder of the TFTP server (&amp;lt;code&amp;gt;/srv/tftp&amp;lt;/code&amp;gt; for tftp-hpa on Arch).&lt;br /&gt;
# Rename the initramfs-kernel.bin file to &amp;lt;code&amp;gt;1401A8C0.img&amp;lt;/code&amp;gt; and ensure the tftp server / service is started&lt;br /&gt;
# Run &amp;lt;code&amp;gt;tftpboot&amp;lt;/code&amp;gt; in the serial console and wait for it to complete&lt;br /&gt;
# Run &amp;lt;code&amp;gt;bootm&amp;lt;/code&amp;gt; in the serial console to boot the initramfs&lt;br /&gt;
# Once OpenWRT has booted, you can press Enter to enable shell access&lt;br /&gt;
# Ensure you have an IP address in the 192.168.1.x subnet and use scp to transfer the sysupgrade firmware you wish to flash&lt;br /&gt;
# Flash the full firmware to the radio's storage using &amp;lt;code&amp;gt;mtd -r write /tmp/sysupgrade.bin firmware&amp;lt;/code&amp;gt;, replacing &amp;lt;code&amp;gt;sysupgrade.bin&amp;lt;/code&amp;gt; with the full filename of the firmware you are flashing&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1592</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1592"/>
		<updated>2020-01-28T02:30:27Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Downgrade Ubiquiti AirOS With An External Programmer */ update instructions, they are now tested, reading works&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
(note: the SPI1 CE0/CE1 pins are not labeled on this image)&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1. We're going to *power up the NanoStation with its own power supply*, so we are going to leave the VCC pin on the flash chip disconnected. We are however going to connect a few other pins to our 3.3V source from the raspberry pi, to pull them up.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes!!Color in picture below&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|1||SIO3&lt;br /&gt;
|''we do not use this pin, so we pull it up''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|9||WP#SIO2&lt;br /&gt;
|''put the chip in read/write mode''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|&lt;br /&gt;
|blue&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|&lt;br /&gt;
|orange&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|&lt;br /&gt;
|green&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|&lt;br /&gt;
|brown&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|&lt;br /&gt;
|yellow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-spi0-connected.jpg|inline|1024px|A Raspberry Pi Zero W with wires connected to the SPI0 pins]]&lt;br /&gt;
&lt;br /&gt;
Flashrom on the raspberry pi requires us to specify the spi speed for the operation. We also need to specify the exact rom chip model, because there are two models that match:&lt;br /&gt;
&lt;br /&gt;
  flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12805D&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Multiple flash chip definitions match the detected chip(s): &amp;quot;MX25L12805D&amp;quot;, &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot;&lt;br /&gt;
  Please specify which chip definition to use with the -c &amp;lt;chipname&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
So here's the final command to read out the chip:&lt;br /&gt;
&lt;br /&gt;
  flashrom -c &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r proprietary.rom&lt;br /&gt;
  flashrom  on Linux 4.19.75+ (armv6l)&lt;br /&gt;
  flashrom is free software, get the source code at https://flashrom.org&lt;br /&gt;
&lt;br /&gt;
  Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).&lt;br /&gt;
  Found Macronix flash chip &amp;quot;MX25L12835F/MX25L12845E/MX25L12865E&amp;quot; (16384 kB, SPI) on linux_spi.&lt;br /&gt;
  Reading flash... done.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
=== Flash using serial header access ===&lt;br /&gt;
Using small modifications to the radio, direct serial access allows temporarily running OpenWRT in memory and using the temporary environment to flash a full image to the radio's memory.&lt;br /&gt;
&lt;br /&gt;
[[File:Ubnt_ns5acl_serial.jpg|thumb|Click to enlarge pinout]]&lt;br /&gt;
# Using your thumb or a small tool, push the tab in the slot located on the lower rear of the radio and slide the bottom half out of the enclosure&lt;br /&gt;
# Looking at the rear of the board (where all the components are on the opposite side as the antenna), locate the serial headers on the middle left side of the board&lt;br /&gt;
# Solder at least the top 3 pins shown in the picture. The pins from left to right (starting with the square shaped pad that is unpopulated in the image) are 3.3V, RX, TX, and GND. 3.3V is not needed here&lt;br /&gt;
# Connect GND on the board to GND on your FTDI adapter, TX on the board to RX on the FTDI adapter, and RX on the board to TX on the FTDI adapter&lt;br /&gt;
# Make sure your FTDI adapter is in 3.3V mode and attached to your computer, then open the serial port on your computer (ex. &amp;lt;code&amp;gt;minicom -D /dev/ttyUSB0&amp;lt;/code&amp;gt;). Use 115200 8N1 in your terminal settings.&lt;br /&gt;
# Connect the NanoStation and press enter in the console when it says &amp;lt;code&amp;gt;Hit any key to stop autoboot:&amp;lt;/code&amp;gt;. You should be left at a &amp;lt;code&amp;gt;ar7240&amp;gt; &amp;lt;/code&amp;gt; prompt.&lt;br /&gt;
# Connect your laptop to the LAN port of the PoE injector powering the NanoStation and assign a static IP of &amp;lt;code&amp;gt;192.168.1.254&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install a TFTP server and place [https://downloads.openwrt.org/releases/19.07.0/targets/ath79/generic/openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin openwrt-19.07.0-ath79-generic-ubnt_nanostation-ac-loco-initramfs-kernel.bin] in the root folder of the TFTP server (&amp;lt;code&amp;gt;/srv/tftp&amp;lt;/code&amp;gt; for tftp-hpa on Arch).&lt;br /&gt;
# Rename the initramfs-kernel.bin file to &amp;lt;code&amp;gt;1401A8C0.img&amp;lt;/code&amp;gt; and ensure the tftp server / service is started&lt;br /&gt;
# Run &amp;lt;code&amp;gt;tftpboot&amp;lt;/code&amp;gt; in the serial console and wait for it to complete&lt;br /&gt;
# Run &amp;lt;code&amp;gt;bootm&amp;lt;/code&amp;gt; in the serial console to boot the initramfs&lt;br /&gt;
# Once OpenWRT has booted, you can press Enter to enable shell access&lt;br /&gt;
# Ensure you have an IP address in the 192.168.1.x subnet and use scp to transfer the sysupgrade firmware you wish to flash&lt;br /&gt;
# Flash the full firmware to the radio's storage using &amp;lt;code&amp;gt;mtd -r write /tmp/sysupgrade.bin firmware&amp;lt;/code&amp;gt;, replacing &amp;lt;code&amp;gt;sysupgrade.bin&amp;lt;/code&amp;gt; with the full filename of the firmware you are flashing&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1540</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1540"/>
		<updated>2020-01-09T01:00:00Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Pinouts (untested, please proceed with caution!) */ swapped orange and green, that was easier in the cabling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
(note: the SPI1 CE0/CE1 pins are not labeled on this image)&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (untested, please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes!!Color in picture below&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|2||VCC&lt;br /&gt;
|''DO NOT connect the 3.3V/VCC pin if you choose to power the nanostation directly instead!''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|&lt;br /&gt;
|blue&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|&lt;br /&gt;
|orange&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|&lt;br /&gt;
|green&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|&lt;br /&gt;
|brown&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|&lt;br /&gt;
|yellow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-spi0-connected.jpg|inline|1024px|A Raspberry Pi Zero W with wires connected to the SPI0 pins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=File:Raspberry-pi-zero-w-spi0-connected.jpg&amp;diff=1539</id>
		<title>File:Raspberry-pi-zero-w-spi0-connected.jpg</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=File:Raspberry-pi-zero-w-spi0-connected.jpg&amp;diff=1539"/>
		<updated>2020-01-09T00:58:58Z</updated>

		<summary type="html">&lt;p&gt;Cure: Cure uploaded a new version of File:Raspberry-pi-zero-w-spi0-connected.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1538</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1538"/>
		<updated>2020-01-07T21:51:58Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Downgrade Ubiquiti AirOS With An External Programmer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
(note: the SPI1 CE0/CE1 pins are not labeled on this image)&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (untested, please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes!!Color in picture below&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|2||VCC&lt;br /&gt;
|''DO NOT connect the 3.3V/VCC pin if you choose to power the nanostation directly instead!''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|&lt;br /&gt;
|blue&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|&lt;br /&gt;
|green&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|&lt;br /&gt;
|orange&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|&lt;br /&gt;
|brown&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|&lt;br /&gt;
|yellow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-spi0-connected.jpg|inline|1024px|A Raspberry Pi Zero W with wires connected to the SPI0 pins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1537</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1537"/>
		<updated>2020-01-07T21:46:46Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Pinouts (untested, please proceed with caution!) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
A Raspberry Pi Zero W with SPI headers populated:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-with-spi-headers-populated.jpg|inline|1024px|A Raspberry Pi Zero W with SPI headers populated]]&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (untested, please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes!!Color in picture below&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|2||VCC&lt;br /&gt;
|''DO NOT connect the 3.3V/VCC pin if you choose to power the nanostation directly instead!''&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|&lt;br /&gt;
|blue&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|&lt;br /&gt;
|green&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|&lt;br /&gt;
|orange&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|&lt;br /&gt;
|brown&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|&lt;br /&gt;
|yellow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-spi0-connected.jpg|inline|1024px|A Raspberry Pi Zero W with wires connected to the SPI0 pins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=File:Raspberry-pi-zero-w-spi0-connected.jpg&amp;diff=1536</id>
		<title>File:Raspberry-pi-zero-w-spi0-connected.jpg</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=File:Raspberry-pi-zero-w-spi0-connected.jpg&amp;diff=1536"/>
		<updated>2020-01-07T21:43:21Z</updated>

		<summary type="html">&lt;p&gt;Cure: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1535</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1535"/>
		<updated>2020-01-07T21:42:29Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Downgrade Ubiquiti AirOS With An External Programmer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
A Raspberry Pi Zero W with SPI headers populated:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-with-spi-headers-populated.jpg|inline|1024px|A Raspberry Pi Zero W with SPI headers populated]]&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (untested, please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|2||VCC&lt;br /&gt;
|''DO NOT connect the 3.3V/VCC pin if you choose to power the nanostation directly instead!''&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-spi0-connected|inline|1024px|A Raspberry Pi Zero W with wires connected to the SPI0 pins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1534</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1534"/>
		<updated>2020-01-07T21:33:28Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Downgrade Ubiquiti AirOS With An External Programmer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
A Raspberry Pi Zero W with SPI headers populated:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-with-spi-headers-populated.jpg|inline|1024px|A Raspberry Pi Zero W with SPI headers populated]]&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (untested, please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|2||VCC&lt;br /&gt;
|''DO NOT connect the 3.3V/VCC pin if you choose to power the nanostation directly instead!''&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1533</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1533"/>
		<updated>2020-01-07T13:55:47Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Pinouts (untested, please proceed with caution!) */ missing text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
A Raspberry Pi Zero W with SPI headers populated:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-with-spi-headers-populated.jpg|inline|1024px|A Raspberry Pi Zero W with SPI headers populated]]&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (untested, please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the line that reads&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|2||VCC&lt;br /&gt;
|''DO NOT connect the 3.3V/VCC pin if you choose to power the nanostation directly instead!''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1532</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1532"/>
		<updated>2020-01-07T13:50:37Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* Downgrade Ubiquiti AirOS With An External Programmer */ Add pinout and Raspberry Pi details.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
{{ Warning| This is a PoE device. Never connect your computer directly to the PoE injector's red port!!!}}&lt;br /&gt;
&lt;br /&gt;
{{Note| The Nanostation's architecture is '''MIPS 24KC.'''}}&lt;br /&gt;
&lt;br /&gt;
{{ Warning| As of January 1, 2020, brand new Nanostations do not support downgrading the Ubiquiti AirOS firmware. (Even with the patch.)}}&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
{{Note|Mass Mesh mesh radios have a static IP of 192.168.2.1. To access the admin UI, set your computer's ip/netmask to 192.168.2.10/24, then browse to http://192.168.2.1/ in your favorite web browser.}}&lt;br /&gt;
# Download the latest [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh sysupgrade firmware.]&lt;br /&gt;
# Connect to the Nanostation and enter its IP address into your favorite web browser.&lt;br /&gt;
## If you are using another version of OpenWrt, please refer to its documentation for details about its IP address.&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: '''Flash new firmware image.'''&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click '''Flash'''&lt;br /&gt;
# Wait for the device to complete and reboot (This can take up to 5 minutes.)&lt;br /&gt;
&lt;br /&gt;
=== From Stock Firmware (Ubiquiti AirOS)===&lt;br /&gt;
&lt;br /&gt;
==== Downgrade Ubiquiti AirOS ====&lt;br /&gt;
&lt;br /&gt;
# Download the [https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware Image v8.5.0.36727].&lt;br /&gt;
# Power on the Nanostation via a PoE injector. (This is the **red** ethernet port on your injector.)&lt;br /&gt;
# Connect the LAN side of the PoE injector to a computer.&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
## &amp;lt;code&amp;gt;sudo ip addr add 192.168.1.25/24 dev eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
&lt;br /&gt;
==== Install The Mass Mesh OpenWrt Image ====&lt;br /&gt;
&lt;br /&gt;
{{ Note| Additional instructions are available [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWrt's website].}}&lt;br /&gt;
# Download the latest Mass Mesh firmware [https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin here].&lt;br /&gt;
# Copy the firmware onto the nanostation. (We like to put it in the &amp;lt;code&amp;gt;/tmp/&amp;lt;/code&amp;gt; directory.)&lt;br /&gt;
# Open a secure shell on the Nanostation. &amp;lt;code&amp;gt;ssh ubnt@192.168.1.20&amp;lt;/code&amp;gt;&lt;br /&gt;
# Patch the fwupdate.real binary a la the instructions [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco here.]&lt;br /&gt;
# &amp;lt;code&amp;gt;/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Downgrade Ubiquiti AirOS With An External Programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/pinout/spi SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
A Raspberry Pi Zero W with SPI headers populated:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-with-spi-headers-populated.jpg|inline|1024px|A Raspberry Pi Zero W with SPI headers populated]]&lt;br /&gt;
&lt;br /&gt;
==== Pinouts (untested, please proceed with caution!) ====&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi has 2 SPI interfaces, SPI0 and SPI1.&lt;br /&gt;
&lt;br /&gt;
On the Raspberry Pi boot partition, make sure to update config.txt and uncomment the&lt;br /&gt;
&lt;br /&gt;
 dtparam=spi=on&lt;br /&gt;
&lt;br /&gt;
After a reboot, you should see the spi device files:&lt;br /&gt;
&lt;br /&gt;
  root@raspberrypi:/home/pi# ls -laF /dev/spidev0.*&lt;br /&gt;
  crw-rw---- 1 root spi 153, 0 Jan  7 01:44 /dev/spidev0.0&lt;br /&gt;
  crw-rw---- 1 root spi 153, 1 Jan  7 01:44 /dev/spidev0.1&lt;br /&gt;
&lt;br /&gt;
Now connect the Raspberry Pi to the Pomona clip. Choose either SPI0 or SPI1.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|RPi SPI0!!colspan=&amp;quot;2&amp;quot;|RPi SPI1!!colspan=&amp;quot;2&amp;quot;|Pomona Clip!!Notes&lt;br /&gt;
|-&lt;br /&gt;
|19||SPI0 MOSI&lt;br /&gt;
|38||SPI1 MOSI&lt;br /&gt;
|15||SI&lt;br /&gt;
|-&lt;br /&gt;
|21||SPI0 MISO&lt;br /&gt;
|35||SPI1 MISO&lt;br /&gt;
|8||SO&lt;br /&gt;
|-&lt;br /&gt;
|23||SPI0 SCLK&lt;br /&gt;
|40||SPI1 SCLK&lt;br /&gt;
|16||SCLK&lt;br /&gt;
|-&lt;br /&gt;
|25||GND&lt;br /&gt;
|25||GND&lt;br /&gt;
|10||GND&lt;br /&gt;
|-&lt;br /&gt;
|24||SPI0 CE0&lt;br /&gt;
|12||SPI1 CE0&lt;br /&gt;
|7||CS&lt;br /&gt;
|-&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|17||3.3V&lt;br /&gt;
|2||VCC&lt;br /&gt;
|''DO NOT connect the 3.3V/VCC pin if you choose to power the nanostation directly instead!''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=File:Raspberry-pi-zero-w-with-spi-headers-populated.jpg&amp;diff=1531</id>
		<title>File:Raspberry-pi-zero-w-with-spi-headers-populated.jpg</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=File:Raspberry-pi-zero-w-with-spi-headers-populated.jpg&amp;diff=1531"/>
		<updated>2020-01-06T21:34:46Z</updated>

		<summary type="html">&lt;p&gt;Cure: Cure uploaded a new version of File:Raspberry-pi-zero-w-with-spi-headers-populated.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Raspberry Pi zero w with SPI headers populated&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1522</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1522"/>
		<updated>2020-01-05T14:31:47Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* With an external programmer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
If you're in a pickle, and need to download opkg files for an offline NanoStation, the architecture is MIPS 24KC.&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
=== From Stock Firmware ===&lt;br /&gt;
# Download the Stock Firmware Image v8.5.0.36727 from above as well as the MassMesh '''Factory''' image file&lt;br /&gt;
# Power on the NanoStation via a PoE injector and connect the other side of the PoE injector to a computer&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
# Follow the instructions for enabling updates to the firmware [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWRT's website.]&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
# Download the latest MassMesh Sysupgrade firmware file from above&lt;br /&gt;
# Connect to the device and navigate to the IP address of the device&lt;br /&gt;
#:{{Note|MassMesh MeshRadio firmwares use an IP of 192.168.2.1. To access the administration UI, set an ip/netmask of 192.168.2.10/24 and browse to http://192.168.2.1/}}&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: Flash new firmware image&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click Flash&lt;br /&gt;
# Wait for the device to complete and reboot&lt;br /&gt;
&lt;br /&gt;
=== With an external programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip ([https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet]), which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/ SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
A Raspberry Pi Zero W with SPI headers populated:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-with-spi-headers-populated.jpg|inline|1024px|A Raspberry Pi Zero W with SPI headers populated]]&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1521</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1521"/>
		<updated>2020-01-05T03:09:07Z</updated>

		<summary type="html">&lt;p&gt;Cure: /* With an external programmer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
If you're in a pickle, and need to download opkg files for an offline NanoStation, the architecture is MIPS 24KC.&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
=== From Stock Firmware ===&lt;br /&gt;
# Download the Stock Firmware Image v8.5.0.36727 from above as well as the MassMesh '''Factory''' image file&lt;br /&gt;
# Power on the NanoStation via a PoE injector and connect the other side of the PoE injector to a computer&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
# Follow the instructions for enabling updates to the firmware [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWRT's website.]&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
# Download the latest MassMesh Sysupgrade firmware file from above&lt;br /&gt;
# Connect to the device and navigate to the IP address of the device&lt;br /&gt;
#:{{Note|MassMesh MeshRadio firmwares use an IP of 192.168.2.1. To access the administration UI, set an ip/netmask of 192.168.2.10/24 and browse to http://192.168.2.1/}}&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: Flash new firmware image&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click Flash&lt;br /&gt;
# Wait for the device to complete and reboot&lt;br /&gt;
&lt;br /&gt;
=== With an external programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip [https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf datasheet], which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/ SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
A Raspberry Pi Zero W with SPI headers populated:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-with-spi-headers-populated.jpg|inline|1024px|A Raspberry Pi Zero W with SPI headers populated]]&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]]&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1520</id>
		<title>Ubiquiti NanoStation 5AC Loco</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=Ubiquiti_NanoStation_5AC_Loco&amp;diff=1520"/>
		<updated>2020-01-05T03:08:31Z</updated>

		<summary type="html">&lt;p&gt;Cure: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Devices]]&lt;br /&gt;
[[Category:Ubiquiti]]&lt;br /&gt;
[[File:Ubnt-ns-5ac-loco.png|thumb|NanoStation 5AC Loco]]&lt;br /&gt;
&lt;br /&gt;
The NanoStation 5AC Loco is a directional, weather resistant, PoE powered radio with a beam width of 90 degrees and a secondary omnidirectional radio. This makes it useful for simultaneously meshing on one radio while providing an access point for client devices on the other.&lt;br /&gt;
&lt;br /&gt;
If you're in a pickle, and need to download opkg files for an offline NanoStation, the architecture is MIPS 24KC.&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
[https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin Stock Firmware v8.5.0.36727]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin MassMesh Firmware (Factory) (Latest)]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-sysupgrade.bin MassMesh Firmware (Sysupgrade) (Latest)]&lt;br /&gt;
&lt;br /&gt;
== Flashing ==&lt;br /&gt;
=== From Stock Firmware ===&lt;br /&gt;
# Download the Stock Firmware Image v8.5.0.36727 from above as well as the MassMesh '''Factory''' image file&lt;br /&gt;
# Power on the NanoStation via a PoE injector and connect the other side of the PoE injector to a computer&lt;br /&gt;
# Assign a static IP/netmask of &amp;lt;code&amp;gt;192.168.1.25/24&amp;lt;/code&amp;gt; to the computer&lt;br /&gt;
# Use a browser to visit http://192.168.1.20/&lt;br /&gt;
# Login using the set password or default credentials &amp;lt;code&amp;gt;ubnt / ubnt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Navigate to settings and downgrade the stock firmware to v8.5.0.36727 using the downloaded image file&lt;br /&gt;
# Follow the instructions for enabling updates to the firmware [https://openwrt.org/toh/ubiquiti/ubiquiti_nanostation_ac_loco on OpenWRT's website.]&lt;br /&gt;
&lt;br /&gt;
=== From OpenWrt ===&lt;br /&gt;
# Download the latest MassMesh Sysupgrade firmware file from above&lt;br /&gt;
# Connect to the device and navigate to the IP address of the device&lt;br /&gt;
#:{{Note|MassMesh MeshRadio firmwares use an IP of 192.168.2.1. To access the administration UI, set an ip/netmask of 192.168.2.10/24 and browse to http://192.168.2.1/}}&lt;br /&gt;
# Navigate to System → Backup / Flash Firmware → Actions: Flash new firmware image&lt;br /&gt;
# Choose the sysupgrade file previously downloaded and click Flash&lt;br /&gt;
# Wait for the device to complete and reboot&lt;br /&gt;
&lt;br /&gt;
=== With an external programmer===&lt;br /&gt;
&lt;br /&gt;
When your nanostation is bricked, or if the stock firmware won't let you flash our custom firmware, you can use the '''In-System Programming''' (ISP) technique to reflash the device (see also the [https://www.flashrom.org/ISP Flashrom wiki]. You're going to need:&lt;br /&gt;
&lt;br /&gt;
# a Pomona 5252 test clip (https://www.digikey.com/product-detail/en/pomona-electronics/5252/501-2059-ND/745103), ~$16&lt;br /&gt;
# a raspberry pi (e.g. a zero w) ~$10&lt;br /&gt;
# some header pins and prototyping wires to connect everything&lt;br /&gt;
&lt;br /&gt;
The Nanostation has a Macronix MX25L12835F rom chip [datasheet https://www.macronix.com/Lists/Datasheet/Attachments/7397/MX25L12835F,%203V,%20128Mb,%20v1.6.pdf], which is an SPI chip with 16 connectors good for 128 Mbit of storage.&lt;br /&gt;
&lt;br /&gt;
We can use [https://flashrom.org Flashrom] running on a raspberry pi to read and write that chip, if we hook up the Pomona 5252 test clip to the MX25L12835F and connect it to the correct [https://pinout.xyz/ SPI pins] on the pi:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-pinout.png|inline|raspberry pi GPIO pinout]]&lt;br /&gt;
&lt;br /&gt;
A Raspberry Pi Zero W with SPI headers populated:&lt;br /&gt;
&lt;br /&gt;
[[File:raspberry-pi-zero-w-with-spi-headers-populated.jpg|inline|1024px|A Raspberry Pi Zero W with SPI headers populated]]&lt;br /&gt;
&lt;br /&gt;
Useful resources:&lt;br /&gt;
* [https://www.flashrom.org/RaspberryPi Flashrom page on using the Raspberry Pi as a flashing tool]]&lt;br /&gt;
&lt;br /&gt;
== Condensed Command-list ==&lt;br /&gt;
=== Flash The Stock Ubiquiti Firmware via TFTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin&lt;br /&gt;
cp https://dl.ubnt.com/firmwares/XC-fw/v8.5.0/WA.v8.5.0.36727.180118.1314.bin firmware.bin&lt;br /&gt;
sudo apt install tftp&lt;br /&gt;
tftp&lt;br /&gt;
tftp&amp;gt; connect 192.168.1.20&lt;br /&gt;
tftp&amp;gt; rexmt 1&lt;br /&gt;
tftp&amp;gt; timeout 60&lt;br /&gt;
tftp&amp;gt; binary&lt;br /&gt;
tftp&amp;gt; put firmware.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Flash The Mass Mesh Firmware ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://github.com/MassMesh/meta-imagebuilder-artifacts/raw/master/massmesh/meshradio/ubnt_nanostation-ac-loco/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
scp openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin ubnt@192.168.1.20:/tmp&lt;br /&gt;
ssh ubnt@192.168.1.20&lt;br /&gt;
hexdump -Cv /bin/ubntbox | sed 's/14 40 fe fe/00 00 00 00/g' | hexdump -R &amp;gt; /tmp/fwupdate.real&lt;br /&gt;
chmod +x /tmp/fwupdate.real&lt;br /&gt;
/tmp/fwupdate.real -m /tmp/openwrt-massmesh-meshradio-ath79-generic-ubnt_nanostation-ac-loco-squashfs-factory.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=File:Raspberry-pi-zero-w-with-spi-headers-populated.jpg&amp;diff=1519</id>
		<title>File:Raspberry-pi-zero-w-with-spi-headers-populated.jpg</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=File:Raspberry-pi-zero-w-with-spi-headers-populated.jpg&amp;diff=1519"/>
		<updated>2020-01-05T03:05:45Z</updated>

		<summary type="html">&lt;p&gt;Cure: Raspberry Pi zero w with SPI headers populated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Raspberry Pi zero w with SPI headers populated&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
	<entry>
		<id>https://massmesh.org/wiki/index.php?title=File:Raspberry-pi-pinout.png&amp;diff=1518</id>
		<title>File:Raspberry-pi-pinout.png</title>
		<link rel="alternate" type="text/html" href="https://massmesh.org/wiki/index.php?title=File:Raspberry-pi-pinout.png&amp;diff=1518"/>
		<updated>2020-01-05T02:44:53Z</updated>

		<summary type="html">&lt;p&gt;Cure: Raspberry pi GPIO pinout, from https://pinout.xyz/resources/raspberry-pi-pinout.png

CC-BY-NC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Raspberry pi GPIO pinout, from https://pinout.xyz/resources/raspberry-pi-pinout.png&lt;br /&gt;
&lt;br /&gt;
CC-BY-NC&lt;/div&gt;</summary>
		<author><name>Cure</name></author>
		
	</entry>
</feed>