<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://falz.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Falz</id>
	<title>falz.net - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://falz.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Falz"/>
	<link rel="alternate" type="text/html" href="http://falz.net/wiki/Special:Contributions/Falz"/>
	<updated>2026-04-15T05:32:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://falz.net/index.php?title=Starwars_Arcade_Cabinet_-_Status&amp;diff=426</id>
		<title>Starwars Arcade Cabinet - Status</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Starwars_Arcade_Cabinet_-_Status&amp;diff=426"/>
		<updated>2026-01-15T14:27:54Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Video Games]]&lt;br /&gt;
Here&#039;s the status log of the machine, documenting all work done to it.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;Jan 15, 2026&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; valign=&amp;quot;top&amp;quot; | At some point things started flaking out again - video worked but the XY board&#039;s &amp;quot;over voltage&amp;quot; LED would constantly kick in and video would be like a strobe light. This time became aware of [https://www.arcadeshop.com/i/1900/vector-wars-multigame-pcb.htm Vector Wars], which is a full replacement PCB which has additional benefits. Got this and immediately fixed. Leaving old mobo in it for history. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also rebuilt much of the yolk and it now works better than it has in the past.&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;Feb - Sep 2010&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; valign=&amp;quot;top&amp;quot; | Once again has issues - no Video. Send the XY board and Flyback HV board to Chad at https://arcadecup.com/. He got things working great!&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;August ??, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; valign=&amp;quot;top&amp;quot; | Mark comes and gets the entire thing working. It works like a champ! See the [[Starwars Arcade Cabinet - Pictures|pictures]]! &lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;August 6, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; | Mark came to pick up the flyback and HV board to install. Also, I had received my BU406D&#039;s and it shall be replaced as well. He was happy to have all of the documentation that I gave him (thanks to all who wrote the Amplifone guide), so I&#039;m hoping for the best. He should be back to test it this week.&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;July 25, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; | The flyback has arrived in three days indeed! I&#039;ve scanned the [https://falz.net/files/starwars/wintron/ docs that came with it] since I&#039;ve not seen them elsewhere on the internet. I&#039;ve called Mark to come and install the flyback, so it should hopefully be going in shortly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, it seems that the &#039;&#039;BU406D&#039;&#039; transistor likes to go when the flyback does, so I ordered some. Actually, I ordered 10 in case someone else is in need. They were available online from a german music product company- [http://www.banzaieffects.com/parts/transist.htm Banzai Music Products]. They seem to make guitar pedals and such.&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;July 22, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; | I order the flyback from [http://www.wintrontech.com/ Wintrontech]. It should take three days.&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;July 19, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; | I call mark to find out if he&#039;s found anything; unfortunately he has not. He is willing to install the replacement flyback, however. I also let him know that I have a troubleshooting guide which I found on the internet for the HV board. For some reason, he doesn&#039;t use the internet for any information on arcade games. Strange!&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;July 11, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; | Mark comes and installs the parts. Unfortunately, it is still not functional. He beleives that the flyback is bad (it&#039;s the original red one, from what I&#039;ve read, it certainly seems that it should not have lasted this long in the first place). He says he will attempt to find a replacement of the HV board via his contacts. I tell him of the wintrontech replacement, he had never heard of it but beleives that $190 is a rediculous price. He believes that an entire monitor and HV board replacement should be had for that. This is probably true for most other raster games, but obviously not for this specific one.&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;July 3, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; | I track down Mark, the repair guy. Fortunately he still has the parts. He replaced some caps on the HV board hoping that it will fix the problem (&#039;&#039;did I mention that the problem is that it has no video?&#039;&#039;)&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;June 29, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; | The machine comes in to my possession. Its previous owner started a repair attempt, so its HV board and deflector board were missing and are in the possesion of a local repair guy.&lt;br /&gt;
 |}&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=IRC:_ZNC_with_Irssi_and_tmux_Configuration&amp;diff=425</id>
		<title>IRC: ZNC with Irssi and tmux Configuration</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=IRC:_ZNC_with_Irssi_and_tmux_Configuration&amp;diff=425"/>
		<updated>2026-01-14T13:31:41Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Work in progress&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
This is for folks generally proficient at a unix terminal. It is so that you can connect to a terminal via ssh and reconnect to your IRC session without actually &#039;leaving&#039; any IRC networks.&lt;br /&gt;
&lt;br /&gt;
You will always appear online to those on the IRC network, and can choose to look at / log into your terminal when you desire.&lt;br /&gt;
&lt;br /&gt;
This example connects to the libera IRC network. Replace this part and repeat various steps to connect to other networks.&lt;br /&gt;
&lt;br /&gt;
=== Applications ===&lt;br /&gt;
* [https://irssi.org/ irssi] - An IRC client that runs in a terminal. It will connect to ZNC in this use case.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.znc.in/ZNC ZNC] - IRC &amp;quot;bouncer&amp;quot;. This actually connects to IRC networks and will run as a service on your server.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/tmux/tmux/wiki Tmux] - Terminal Multiplexer. This lets you run many applications in one terminal. In this use case we&#039;ll run many irssi IRC clients, each of which connects to a ZNC session and hence a single IRC network&lt;br /&gt;
&lt;br /&gt;
* [https://mosh.org/ Mosh] - Mobile Shell. Auto &#039;roams&#039; and reconnects to your shell session across various networks. If your laptop goes to sleep and wakes up, it will reconnect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
Ubuntu / Debian example. Install some packages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 apt-get install mosh irssi znc tmux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://github.com/awyz/oh-my-znc?tab=readme-ov-file someone&#039;s useful info&lt;br /&gt;
* https://wiki.ircnow.org/index.php?n=Bouncer.Irssi&lt;br /&gt;
* http://edgecase.net/articles/setting_up_irc_irssi_znc_digital_ocean_freenode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====ZNC====&lt;br /&gt;
We are NOT using SSL here as we are binding to localhost only and connecting from localhost only. This is the communication from the IRC client to the IRC bounce. &lt;br /&gt;
&lt;br /&gt;
Getting ZNC and irssi working with ssl and a local cert is a large pain in the butt.&lt;br /&gt;
&lt;br /&gt;
When you connect to an irc network you should use SSL.&lt;br /&gt;
&lt;br /&gt;
* Docs&lt;br /&gt;
** https://wiki.znc.in/Configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Generate an initial config. Run this as your own user (not root) This will place it in &amp;lt;code&amp;gt;~/.znc/configs/znc.conf&amp;lt;/code&amp;gt;. We will be copying this file to the service user&#039;s account after.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 znc --makeconf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Listen on port: &#039;&#039;&#039;6667&#039;&#039;&#039;&lt;br /&gt;
* SSL: &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
* Username: &#039;&#039;&#039;myzncuser&#039;&#039;&#039;&lt;br /&gt;
* Password: &#039;&#039;&#039;&amp;lt;redacted&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;many other questions&#039;&#039;: &#039;&#039;&#039;&amp;lt;chose defaults&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Set up a network? &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
* Launch ZNC now? &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Edit the newly created znc.conf and tell it to bind to localhost by adding &amp;lt;code&amp;gt;Host = 127.0.0.1&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;&amp;lt;Listener l&amp;gt;&amp;lt;/code&amp;gt; section&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Listener l&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  Host = 127.0.0.1&lt;br /&gt;
  ....&lt;br /&gt;
 &amp;lt;/Lisner&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Copy your newly created config (and a crt required for startup) to the ZNC service directory and fix its permissions. The directory &amp;lt;code&amp;gt;/var/lib/znc/&amp;lt;/code&amp;gt; should already exist,  &amp;quot;&#039;&#039;&#039;_znc&#039;&#039;&#039;&amp;quot; is the default user for the service which should already exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/znc/configs/&lt;br /&gt;
 sudo cp ~/.znc/configs/znc.conf /var/lib/znc/configs/&lt;br /&gt;
 sudo cp ~/.znc/znc.pem /var/lib/znc/&lt;br /&gt;
 sudo chown -R _znc:_znc /var/lib/znc/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Enable and start the service (as root user / sudo)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 systemctl enable znc&lt;br /&gt;
 systemctl start znc&lt;br /&gt;
 systemctl status znc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====irssi====&lt;br /&gt;
* Docs&lt;br /&gt;
** https://irssi.org/documentation/help/network/&lt;br /&gt;
** https://irssi.org/documentation/help/server/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
launch &amp;lt;code&amp;gt;irssi&amp;lt;/code&amp;gt; and issue some commands&lt;br /&gt;
&lt;br /&gt;
* Add network called &#039;libera-znc&#039;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 /network add libera-znc -nick myircuser -alternate_nick myircuser_ -user -autosendcmd &#039;^MSG NickServ identify &amp;lt;ircpass&amp;gt;&#039; myzncuser-libera&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Add a server to this newly created network&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 /server add -network libera-znc -auto -4 localhost 6667 myzncuser-libera/libera:&amp;lt;zncpass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using ===&lt;br /&gt;
* https://that.guru/blog/add-another-network-to-znc/&lt;br /&gt;
&lt;br /&gt;
* List which IRC networks ZNC is connected to&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 /znc listnetworks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jump to another server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 /znc jumpnetwork libera&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Starwars_Arcade_Cabinet&amp;diff=424</id>
		<title>Starwars Arcade Cabinet</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Starwars_Arcade_Cabinet&amp;diff=424"/>
		<updated>2026-01-04T18:18:59Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Video Games]]&lt;br /&gt;
I&#039;m a proud owner of a [&#039;&#039;now working&#039;&#039;] Star Wars arcade cabinet.&lt;br /&gt;
[[File:Starwars cabinet smaller.gif|right]]&lt;br /&gt;
I was amazed to find a great deal of information about this machine on the &lt;br /&gt;
[http://www.google.com/ internet] - a lot more than I had expected! I decided to make a copy of all of the useful things regarding this game and its components, as you never know when a link or site will die.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re interested, I&#039;m compiling the [[Starwars Arcade Cabinet - History]] behind my particular machine. I also have [[Starwars Arcade Cabinet - Status]] being documented. &lt;br /&gt;
&lt;br /&gt;
===Useful Things===&lt;br /&gt;
* [http://falz.net/files/starwars All Star Wars Cabinet docs that I could find]&lt;br /&gt;
* [http://300bps.org/gallery3/Users/falz/starwars-cabinet Pictures of the beast]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Star Wars Arcade Links===&lt;br /&gt;
* [http://www.vectorlist.org/ VectorList &amp;amp; Archive]&lt;br /&gt;
* [http://www.flippers.com/vid-tips.html Repairs for XY monitors]&lt;br /&gt;
* [https://wiki.arcadecontrols.com/index.php/Yoke_Rebuild Yoke Rebuild]&lt;br /&gt;
* [https://arcadefixit.com/product-category/atari-parts-1970s-1980s-early-1990s/star-wars-2/ Star Wars parts] for yolk rebuilds&lt;br /&gt;
* [https://lakeside-arcade.com/2025/02/25/amplifone-rebuilds/ Amplifone Rebuilds] by Lakeside Arcade&lt;br /&gt;
* [https://www.amazingarcading.com.au/Star-Wars-Game-Atari-1983.htm Dezbaz Star Wars Repair] Updated pinouts from manuals which are [https://falz.net/files/starwars/pinouts-dezbaz/ mirrored locally here] just in case&lt;br /&gt;
* [http://www.banzaimusic.com/BU406D.html BU406D transistors]&lt;br /&gt;
* [https://www.arcadeshop.com/i/1900/vector-wars-multigame-pcb.htm Vector Wars Multi-game PCB] - Full replacement PCB that supports Star Wars, ESB, Battle Zone, a few more&lt;br /&gt;
* [http://www.multigame.com/ESB.HTM Empire Strikes Back conversion kit ($129)] - Consider Vectorwars instead (no soldering)&lt;br /&gt;
&lt;br /&gt;
====Dead Links====&lt;br /&gt;
* [http://www.wintrontech.com/Atari/ Replacement NEW Flyback Transformer] (&#039;&#039;part #926862802, $190+shipping&#039;&#039;) - Wintron appears to be gone&lt;br /&gt;
* [http://catalog.rell.com/rellecom/scripts/SkuPage.asp?SKU=78710 Replacement color XY monitor ($165)] &lt;br /&gt;
* [http://randyfromm.com/amusements/yellowpages/zanen/ Amplifone Monitor &amp;quot;get well kits&amp;quot; - #410.] &#039;&#039;(Doesn&#039;t seem to be listed anymore!)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===General Arcade Links===&lt;br /&gt;
* [https://arcadecup.com/ Arcadecup / CRTLabs] repair service in Green Bay, WI&lt;br /&gt;
* [https://www.arcade-museum.com/vaps Video Arcade Preservation Society]&lt;br /&gt;
* [https://www.arcade-museum.com/ Killer List Of Video Games Arcade Museum] - All info on all arcade games&lt;br /&gt;
* [https://www.arcade-museum.com/Videogame/star-wars Killer List Of Video Games Star Wars] - Direct to Star Wars Page&lt;br /&gt;
* [https://www.arcade-museum.com/Videogame/star-wars-empire-strikes-back Killer List Of Video Games Empire Strikes Back] - Direct to Empire Strikes Back Page&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Starwars_Arcade_Cabinet&amp;diff=423</id>
		<title>Starwars Arcade Cabinet</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Starwars_Arcade_Cabinet&amp;diff=423"/>
		<updated>2025-12-15T22:54:01Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Video Games]]&lt;br /&gt;
I&#039;m a proud owner of a [&#039;&#039;now working&#039;&#039;] Star Wars arcade cabinet.&lt;br /&gt;
[[File:Starwars cabinet smaller.gif|right]]&lt;br /&gt;
I was amazed to find a great deal of information about this machine on the &lt;br /&gt;
[http://www.google.com/ internet] - a lot more than I had expected! I decided to make a copy of all of the useful things regarding this game and its components, as you never know when a link or site will die.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re interested, I&#039;m compiling the [[Starwars Arcade Cabinet - History]] behind my particular machine. I also have [[Starwars Arcade Cabinet - Status]] being documented. &lt;br /&gt;
&lt;br /&gt;
===Useful Things===&lt;br /&gt;
* [http://falz.net/files/starwars All Star Wars Cabinet docs that I could find]&lt;br /&gt;
* [http://300bps.org/gallery3/Users/falz/starwars-cabinet Pictures of the beast]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Star Wars Arcade Links===&lt;br /&gt;
* [http://www.vectorlist.org/ VectorList &amp;amp; Archive]&lt;br /&gt;
* [http://www.flippers.com/vid-tips.html Repairs for XY monitors]&lt;br /&gt;
* [https://wiki.arcadecontrols.com/index.php/Yoke_Rebuild Yoke Rebuild]&lt;br /&gt;
* [https://arcadefixit.com/product-category/atari-parts-1970s-1980s-early-1990s/star-wars-2/ Star Wars parts] for yolk rebuilds&lt;br /&gt;
* [https://lakeside-arcade.com/2025/02/25/amplifone-rebuilds/ Amplifone Rebuilds] by Lakeside Arcade&lt;br /&gt;
* [http://www.banzaimusic.com/BU406D.html BU406D transistors]&lt;br /&gt;
* [https://www.arcadeshop.com/i/1900/vector-wars-multigame-pcb.htm Vector Wars Multi-game PCB] - Full replacement PCB that supports Star Wars, ESB, Battle Zone, a few more&lt;br /&gt;
* [http://www.multigame.com/ESB.HTM Empire Strikes Back conversion kit ($129)] - Consider Vectorwars instead (no soldering)&lt;br /&gt;
&lt;br /&gt;
====Dead Links====&lt;br /&gt;
* [http://www.wintrontech.com/Atari/ Replacement NEW Flyback Transformer] (&#039;&#039;part #926862802, $190+shipping&#039;&#039;) - Wintron appears to be gone&lt;br /&gt;
* [http://catalog.rell.com/rellecom/scripts/SkuPage.asp?SKU=78710 Replacement color XY monitor ($165)] &lt;br /&gt;
* [http://randyfromm.com/amusements/yellowpages/zanen/ Amplifone Monitor &amp;quot;get well kits&amp;quot; - #410.] &#039;&#039;(Doesn&#039;t seem to be listed anymore!)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===General Arcade Links===&lt;br /&gt;
* [https://arcadecup.com/ Arcadecup / CRTLabs] repair service in Green Bay, WI&lt;br /&gt;
* [https://www.arcade-museum.com/vaps Video Arcade Preservation Society]&lt;br /&gt;
* [https://www.arcade-museum.com/ Killer List Of Video Games Arcade Museum] - All info on all arcade games&lt;br /&gt;
* [https://www.arcade-museum.com/Videogame/star-wars Killer List Of Video Games Star Wars] - Direct to Star Wars Page&lt;br /&gt;
* [https://www.arcade-museum.com/Videogame/star-wars-empire-strikes-back Killer List Of Video Games Empire Strikes Back] - Direct to Empire Strikes Back Page&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Starwars_Arcade_Cabinet&amp;diff=422</id>
		<title>Starwars Arcade Cabinet</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Starwars_Arcade_Cabinet&amp;diff=422"/>
		<updated>2025-12-15T22:40:25Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Video Games]]&lt;br /&gt;
I&#039;m a proud owner of a [&#039;&#039;now working&#039;&#039;] Star Wars arcade cabinet.&lt;br /&gt;
[[File:Starwars cabinet smaller.gif|right]]&lt;br /&gt;
I was amazed to find a great deal of information about this machine on the &lt;br /&gt;
[http://www.google.com/ internet] - a lot more than I had expected! I decided to make a copy of all of the useful things regarding this game and its components, as you never know when a link or site will die.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re interested, I&#039;m compiling the [[Starwars Arcade Cabinet - History]] behind my particular machine. I also have [[Starwars Arcade Cabinet - Status]] being documented. &lt;br /&gt;
&lt;br /&gt;
===Useful Things===&lt;br /&gt;
* [http://falz.net/files/starwars All Star Wars Cabinet docs that I could find]&lt;br /&gt;
* [http://300bps.org/gallery3/Users/falz/starwars-cabinet Pictures of the beast]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Star Wars Arcade Links===&lt;br /&gt;
* [http://www.vectorlist.org/ VectorList &amp;amp; Archive]&lt;br /&gt;
* [http://www.flippers.com/vid-tips.html Repairs for XY monitors]&lt;br /&gt;
* [https://lakeside-arcade.com/2025/02/25/amplifone-rebuilds/ Amplifone Rebuilds] by Lakeside Arcade&lt;br /&gt;
* [http://www.banzaimusic.com/BU406D.html BU406D transistors]&lt;br /&gt;
* [https://www.arcadeshop.com/i/1900/vector-wars-multigame-pcb.htm Vector Wars Multi-game PCB] - Full replacement PCB that supports Star Wars, ESB, Battle Zone, a few more&lt;br /&gt;
* [http://www.multigame.com/ESB.HTM Empire Strikes Back conversion kit ($129)] - Consider Vectorwars instead (no soldering)&lt;br /&gt;
&lt;br /&gt;
====Dead Links====&lt;br /&gt;
* [http://www.wintrontech.com/Atari/ Replacement NEW Flyback Transformer] (&#039;&#039;part #926862802, $190+shipping&#039;&#039;) - Wintron appears to be gone&lt;br /&gt;
* [http://catalog.rell.com/rellecom/scripts/SkuPage.asp?SKU=78710 Replacement color XY monitor ($165)] &lt;br /&gt;
* [http://randyfromm.com/amusements/yellowpages/zanen/ Amplifone Monitor &amp;quot;get well kits&amp;quot; - #410.] &#039;&#039;(Doesn&#039;t seem to be listed anymore!)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===General Arcade Links===&lt;br /&gt;
* [https://arcadecup.com/ Arcadecup / CRTLabs] repair service in Green Bay, WI&lt;br /&gt;
* [https://www.arcade-museum.com/vaps Video Arcade Preservation Society]&lt;br /&gt;
* [https://www.arcade-museum.com/ Killer List Of Video Games Arcade Museum] - All info on all arcade games&lt;br /&gt;
* [https://www.arcade-museum.com/Videogame/star-wars Killer List Of Video Games Star Wars] - Direct to Star Wars Page&lt;br /&gt;
* [https://www.arcade-museum.com/Videogame/star-wars-empire-strikes-back Killer List Of Video Games Empire Strikes Back] - Direct to Empire Strikes Back Page&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Starwars_Arcade_Cabinet_-_Pictures&amp;diff=421</id>
		<title>Starwars Arcade Cabinet - Pictures</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Starwars_Arcade_Cabinet_-_Pictures&amp;diff=421"/>
		<updated>2025-11-24T16:35:03Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Old photos from 2002 after getting this working. &lt;br /&gt;
&lt;br /&gt;
See [[Starwars Arcade Cabinet]]&lt;br /&gt;
[[File:Aaa.jpg]]&lt;br /&gt;
[[File:Aad.jpg]]&lt;br /&gt;
[[File:Aae.jpg]]&lt;br /&gt;
[[File:Aaf.jpg]]&lt;br /&gt;
[[File:Aag.jpg]]&lt;br /&gt;
[[File:Aai.jpg]]&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Starwars_Arcade_Cabinet_-_Status&amp;diff=420</id>
		<title>Starwars Arcade Cabinet - Status</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Starwars_Arcade_Cabinet_-_Status&amp;diff=420"/>
		<updated>2025-11-24T16:34:59Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Video Games]]&lt;br /&gt;
Here&#039;s the status log of the machine, documenting all work done to it.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;August ??, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; valign=&amp;quot;top&amp;quot; | Mark comes and gets the entire thing working. It works like a champ! See the [[Starwars Arcade Cabinet - Pictures|pictures]]! &lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;August 6, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; | Mark came to pick up the flyback and HV board to install. Also, I had received my BU406D&#039;s and it shall be replaced as well. He was happy to have all of the documentation that I gave him (thanks to all who wrote the Amplifone guide), so I&#039;m hoping for the best. He should be back to test it this week.&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;July 25, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; | The flyback has arrived in three days indeed! I&#039;ve scanned the [https://falz.net/files/starwars/wintron/ docs that came with it] since I&#039;ve not seen them elsewhere on the internet. I&#039;ve called Mark to come and install the flyback, so it should hopefully be going in shortly. Also, it seems that the &#039;&#039;BU406D&#039;&#039; transistor likes to go when the flyback does, so I ordered some. Actually, I ordered 10 in case someone else is in need. They were available online from a german music product company- [http://www.banzaieffects.com/parts/transist.htm Banzai Music Products]. They seem to make guitar pedals and such.&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;July 22, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; | I order the flyback from [http://www.wintrontech.com/ Wintrontech]. It should take three days.&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;July 19, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; | I call mark to find out if he&#039;s found anything; unfortunately he has not. He is willing to install the replacement flyback, however. I also let him know that I have a troubleshooting guide which I found on the internet for the HV board. For some reason, he doesn&#039;t use the internet for any information on arcade games. Strange!&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;July 11, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; | Mark comes and installs the parts. Unfortunately, it is still not functional. He beleives that the flyback is bad (it&#039;s the original red one, from what I&#039;ve read, it certainly seems that it should not have lasted this long in the first place). He says he will attempt to find a replacement of the HV board via his contacts. I tell him of the wintrontech replacement, he had never heard of it but beleives that $190 is a rediculous price. He believes that an entire monitor and HV board replacement should be had for that. This is probably true for most other raster games, but obviously not for this specific one.&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;July 3, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; | I track down Mark, the repair guy. Fortunately he still has the parts. He replaced some caps on the HV board hoping that it will fix the problem (&#039;&#039;did I mention that the problem is that it has no video?&#039;&#039;)&lt;br /&gt;
 |-&lt;br /&gt;
 | width=&amp;quot;15%&amp;quot; align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; | &#039;&#039;June 29, 2002&#039;&#039;&lt;br /&gt;
 | width=&amp;quot;85%&amp;quot; | The machine comes in to my possession. Its previous owner started a repair attempt, so its HV board and deflector board were missing and are in the possesion of a local repair guy.&lt;br /&gt;
 |}&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Starwars_Arcade_Cabinet_-_Pictures&amp;diff=419</id>
		<title>Starwars Arcade Cabinet - Pictures</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Starwars_Arcade_Cabinet_-_Pictures&amp;diff=419"/>
		<updated>2025-11-24T16:33:02Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Aaa.jpg]]&lt;br /&gt;
[[File:Aad.jpg]]&lt;br /&gt;
[[File:Aae.jpg]]&lt;br /&gt;
[[File:Aaf.jpg]]&lt;br /&gt;
[[File:Aag.jpg]]&lt;br /&gt;
[[File:Aai.jpg]]&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Starwars_Arcade_Cabinet_-_Pictures&amp;diff=418</id>
		<title>Starwars Arcade Cabinet - Pictures</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Starwars_Arcade_Cabinet_-_Pictures&amp;diff=418"/>
		<updated>2025-11-24T16:32:34Z</updated>

		<summary type="html">&lt;p&gt;Falz: Created page with &amp;quot;thumb thumb thumb thumb thumb thumb&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Aaa.jpg|thumb]]&lt;br /&gt;
[[File:Aad.jpg|thumb]]&lt;br /&gt;
[[File:Aae.jpg|thumb]]&lt;br /&gt;
[[File:Aaf.jpg|thumb]]&lt;br /&gt;
[[File:Aag.jpg|thumb]]&lt;br /&gt;
[[File:Aai.jpg|thumb]]&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Aal.jpg&amp;diff=417</id>
		<title>File:Aal.jpg</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Aal.jpg&amp;diff=417"/>
		<updated>2025-11-24T16:30:54Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Aai.jpg&amp;diff=416</id>
		<title>File:Aai.jpg</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Aai.jpg&amp;diff=416"/>
		<updated>2025-11-24T16:30:54Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Aag.jpg&amp;diff=415</id>
		<title>File:Aag.jpg</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Aag.jpg&amp;diff=415"/>
		<updated>2025-11-24T16:30:53Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Aaf.jpg&amp;diff=414</id>
		<title>File:Aaf.jpg</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Aaf.jpg&amp;diff=414"/>
		<updated>2025-11-24T16:30:53Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Aae.jpg&amp;diff=413</id>
		<title>File:Aae.jpg</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Aae.jpg&amp;diff=413"/>
		<updated>2025-11-24T16:30:53Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Aad.jpg&amp;diff=412</id>
		<title>File:Aad.jpg</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Aad.jpg&amp;diff=412"/>
		<updated>2025-11-24T16:30:52Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Aac.jpg&amp;diff=411</id>
		<title>File:Aac.jpg</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Aac.jpg&amp;diff=411"/>
		<updated>2025-11-24T16:30:51Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Aab.jpg&amp;diff=410</id>
		<title>File:Aab.jpg</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Aab.jpg&amp;diff=410"/>
		<updated>2025-11-24T16:30:51Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Aaa.jpg&amp;diff=409</id>
		<title>File:Aaa.jpg</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Aaa.jpg&amp;diff=409"/>
		<updated>2025-11-24T16:29:16Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arcade Cab photo 2002&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Rotary_Phone_POTS_VoIP_Line&amp;diff=408</id>
		<title>Rotary Phone POTS VoIP Line</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Rotary_Phone_POTS_VoIP_Line&amp;diff=408"/>
		<updated>2025-06-26T15:22:51Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Lulz]]&lt;br /&gt;
When ditching land lines many moons ago, i created the [[Phone System Using VOIP and Bluetooth]] page to make land lines work with your cell phone via bluetooth.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now let&#039;s do something more simple - make a Rotary POTS phone (or I suppose any phone, but where&#039;s the fun in that) function in the year 2020. This is honestly so simple that it barely requires documentation, all of the work is done by an ATA (Analogue Telephone Adapter) device that supports pulse dialing - Grandstream HT801 in my case. Some nerdier folks than I also compiled a list of other [http://www.classicrotaryphones.com/forum/index.php?topic=20386.0 compatible ATAs here].&lt;br /&gt;
&lt;br /&gt;
[[File:Phone1.jpg|border|400px|right]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Diagram ===&lt;br /&gt;
              (Callcentric.com)&lt;br /&gt;
                    |&lt;br /&gt;
                    | &#039;&#039;Series of tubes&#039;&#039;&lt;br /&gt;
                    |&lt;br /&gt;
              [Home Router]&lt;br /&gt;
                    |&lt;br /&gt;
                    | &#039;&#039;Ethernet&#039;&#039;&lt;br /&gt;
                    |&lt;br /&gt;
              [Grandsteream HT801]&lt;br /&gt;
                    |&lt;br /&gt;
                    | &#039;&#039;Existing House Phone Wiring&#039;&#039;&lt;br /&gt;
                    |&lt;br /&gt;
              [Rotary Phone(s)]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
This cost me ~$50 for hardware and about $2/month for the phone service. This of course assumes you have Internet as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Rotary Phone - I came came across a pair at a garage sale for $20. I bought them simply to cover the phone plate on the wall as decor, but then decided that hey, why not make it work too.&lt;br /&gt;
&lt;br /&gt;
* [http://www.grandstream.com/products/gateways-and-atas/analog-telephone-adaptors/product/ht801 Grandstream HT801 ATA] - ~$30 or so [https://www.amazon.com/dp/B06XW1BQHC/ from Amazon]. Do NOT get a Vonage version or it will be locked. You can find Vonage branded HT802 (2 phone line) on Ebay all day for $10, but unless you want to do some soldering, don&#039;t bother. Grandstream also make a lot of these devices, most of them support pulse dialing. Other models that would work -HT802, HT702, HT502. I actually had a HT502 already from my previous land line experimenting but it no longer produces a dialtone. &lt;br /&gt;
&lt;br /&gt;
* Internet VOIP provider. I use https://www.callcentric.com/ as it&#039;s really cheap. You pay per minute used, and if you want a DID (actual dial in number) it&#039;s $1.95/month. So my bill is about $2/month. If you want 911, it&#039;s another $2/month.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
[[File:Phone2.jpg|border|400px|right]]&lt;br /&gt;
&lt;br /&gt;
* Take a standard phone cord, cut it in half. Strip the wires back, and connect the red and green to red and green of your house&#039;s demarc. My 80s house has screw terminals and whatnot and was pretty simple.&lt;br /&gt;
&lt;br /&gt;
* Configure your ATA. Callcentric has solid docs to make it work with them. Create an account on their website, then just follow [https://www.callcentric.com/support/device/grandstream/ht802 their instructions]. The screenshot is overwhelming, just skip to the part that has the table of settings/values.&lt;br /&gt;
** I did make one tweak here, which was to the dialplan. I wanted it to work like traditional phone lines where you don&#039;t have to dial your area code if local. IF you use their default, you&#039;d have to always dial the full 10 digit code. So, instead of the default &#039;&#039;&#039;{[x*]+}&#039;&#039;&#039;, I used &#039;&#039;&#039;{[49]11|&amp;lt;=1608&amp;gt;[2-9]xxxxxx|1[2-9]xxxxxxxxx|011[2-9]xx.|*x+}&#039;&#039;&#039;, which means&lt;br /&gt;
*** &#039;&#039;&#039;[49]11&#039;&#039;&#039; - allow you to dial 411 or 911 normally&lt;br /&gt;
*** &#039;&#039;&#039;&amp;lt;=1608&amp;gt;[2-9]xxxxxx&#039;&#039;&#039; - prepend 1608 when the number starts with 2 through 9 and has six more digits. Replace this with your local area code.&lt;br /&gt;
*** &#039;&#039;&#039;1[2-9]xxxxxxxxx&#039;&#039;&#039; - Numbers starting with 1 then 2 through 9 and eight more digits dial normally&lt;br /&gt;
*** &#039;&#039;&#039;011[2-9]xx.&#039;&#039;&#039; - Numbers starting with 011 then 2 through 9 and any further length dial normally. This is for international calls.&lt;br /&gt;
*** &#039;&#039;&#039;*x+&#039;&#039;&#039; - I believe this is just a wildcard for anything else&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Test. If you just have the ATA connected and configured, its web interface should show if it is registered to your VoiP provider, as well as indicate when ringing. I&#039;d connect a phone directly to it before your house wiring.&lt;br /&gt;
&lt;br /&gt;
* Connect output of the ATA to your phone wiring at your demarc area, which is perhaps in your basement. Disconnect any existing wires coming from the phone company first. &lt;br /&gt;
&lt;br /&gt;
* Connect your phone to existing jacks.&lt;br /&gt;
&lt;br /&gt;
* Call your grandmother and reminisce.&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=IRC:_ZNC_with_Irssi_and_tmux_Configuration&amp;diff=407</id>
		<title>IRC: ZNC with Irssi and tmux Configuration</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=IRC:_ZNC_with_Irssi_and_tmux_Configuration&amp;diff=407"/>
		<updated>2025-06-04T00:51:58Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Work in progress&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
This is for folks generally proficient at a unix terminal. It is so that you can connect to a terminal via ssh and reconnect to your IRC session without actually &#039;leaving&#039; any IRC networks.&lt;br /&gt;
&lt;br /&gt;
You will always appear online to those on the IRC network, and can choose to look at / log into your terminal when you desire.&lt;br /&gt;
&lt;br /&gt;
This example connects to the libera IRC network. Replace this part and repeat various steps to connect to other networks.&lt;br /&gt;
&lt;br /&gt;
=== Applications ===&lt;br /&gt;
* [https://irssi.org/ irssi] - An IRC client that runs in a terminal. It will connect to ZNC in this use case.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.znc.in/ZNC ZNC] - IRC &amp;quot;bouncer&amp;quot;. This actually connects to IRC networks and will run as a service on your server.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/tmux/tmux/wiki Tmux] - Terminal Multiplexer. This lets you run many applications in one terminal. In this use case we&#039;ll run many irssi IRC clients, each of which connects to a ZNC session and hence a single IRC network&lt;br /&gt;
&lt;br /&gt;
* [https://mosh.org/ Mosh] - Mobile Shell. Auto &#039;roams&#039; and reconnects to your shell session across various networks. If your laptop goes to sleep and wakes up, it will reconnect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
Ubuntu / Debian example. Install some packages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 apt-get install mosh irssi znc tmux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://github.com/awyz/oh-my-znc?tab=readme-ov-file someone&#039;s useful info&lt;br /&gt;
* https://wiki.ircnow.org/index.php?n=Bouncer.Irssi&lt;br /&gt;
* http://edgecase.net/articles/setting_up_irc_irssi_znc_digital_ocean_freenode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====ZNC====&lt;br /&gt;
We are NOT using SSL here as we are binding to localhost only and connecting from localhost only. This is the communication from the IRC client to the IRC bounce. &lt;br /&gt;
&lt;br /&gt;
Getting ZNC and irssi working with ssl and a local cert is a large pain in the butt.&lt;br /&gt;
&lt;br /&gt;
When you connect to an irc network you should use SSL.&lt;br /&gt;
&lt;br /&gt;
* Docs&lt;br /&gt;
** https://wiki.znc.in/Configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Generate an initial config. Run this as your own user (not root) This will place it in &amp;lt;code&amp;gt;~/.znc/configs/znc.conf&amp;lt;/code&amp;gt;. We will be copying this file to the service user&#039;s account after.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 znc --makeconf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Listen on port: &#039;&#039;&#039;6667&#039;&#039;&#039;&lt;br /&gt;
* SSL: &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
* Username: &#039;&#039;&#039;myzncuser&#039;&#039;&#039;&lt;br /&gt;
* Password: &#039;&#039;&#039;&amp;lt;redacted&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;many other questions&#039;&#039;: &#039;&#039;&#039;&amp;lt;chose defaults&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Set up a network? &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
* Launch ZNC now? &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Edit the newly created znc.conf and tell it to bind to localhost by adding &amp;lt;code&amp;gt;Host = 127.0.0.1&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;&amp;lt;Listener l&amp;gt;&amp;lt;/code&amp;gt; section&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Listener l&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  Host = 127.0.0.1&lt;br /&gt;
  ....&lt;br /&gt;
 &amp;lt;/Lisner&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Copy your newly created config (and a crt required for startup) to the ZNC service directory and fix its permissions. The directory &amp;lt;code&amp;gt;/var/lib/znc/&amp;lt;/code&amp;gt; should already exist,  &amp;quot;&#039;&#039;&#039;_znc&#039;&#039;&#039;&amp;quot; is the default user for the service which should already exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/znc/configs/&lt;br /&gt;
 sudo cp ~/.znc/configs/znc.conf /var/lib/znc/configs/&lt;br /&gt;
 sudo cp ~/.znc/znc.pem /var/lib/znc/&lt;br /&gt;
 sudo chown -R _znc:_znc /var/lib/znc/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Enable and start the service (as root user / sudo)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 systemctl enable znc&lt;br /&gt;
 systemctl start znc&lt;br /&gt;
 systemctl status znc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====irssi====&lt;br /&gt;
* Docs&lt;br /&gt;
** https://irssi.org/documentation/help/network/&lt;br /&gt;
** https://irssi.org/documentation/help/server/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
launch &amp;lt;code&amp;gt;irssi&amp;lt;/code&amp;gt; and issue some commands&lt;br /&gt;
&lt;br /&gt;
* Add network called &#039;libera-znc&#039;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 /network add libera-znc -nick myircuser -alternate_nick myircuser_ -user -autosendcmd &#039;^MSG NickServ identify &amp;lt;ircpass&amp;gt;&#039; myzncuser-libera&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Add a server to this newly created network&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 /server add -network libera-znc -auto -4 localhost 6667 myzncuser-libera/libera:&amp;lt;zncpass&amp;gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=IRC:_ZNC_with_Irssi_and_tmux_Configuration&amp;diff=406</id>
		<title>IRC: ZNC with Irssi and tmux Configuration</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=IRC:_ZNC_with_Irssi_and_tmux_Configuration&amp;diff=406"/>
		<updated>2025-05-30T17:34:36Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Work in progress&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
This is for folks generally proficient at a unix terminal. It is so that you can connect to a terminal via ssh and reconnect to your IRC session without actually &#039;leaving&#039; any IRC networks.&lt;br /&gt;
&lt;br /&gt;
You will always appear online to those on the IRC network, and can choose to look at / log into your terminal when you desire.&lt;br /&gt;
&lt;br /&gt;
This example connects to the libera IRC network. Replace this part and repeat various steps to connect to other networks.&lt;br /&gt;
&lt;br /&gt;
=== Applications ===&lt;br /&gt;
* [https://irssi.org/ irssi] - An IRC client that runs in a terminal. It will connect to ZNC in this use case.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.znc.in/ZNC ZNC] - IRC &amp;quot;bouncer&amp;quot;. This actually connects to IRC networks and will run as a service on your server.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/tmux/tmux/wiki Tmux] - Terminal Multiplexer. This lets you run many applications in one terminal. In this use case we&#039;ll run many irssi IRC clients, each of which connects to a ZNC session and hence a single IRC network&lt;br /&gt;
&lt;br /&gt;
* [https://mosh.org/ Mosh] - Mobile Shell. Auto &#039;roams&#039; and reconnects to your shell session across various networks. If your laptop goes to sleep and wakes up, it will reconnect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
Ubuntu / Debian example. Install some packages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 apt-get install mosh irssi znc tmux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====ZNC====&lt;br /&gt;
We are NOT using SSL here as we are binding to localhost only and connecting from localhost only. This is the communication from the IRC client to the IRC bounce. &lt;br /&gt;
&lt;br /&gt;
Getting ZNC and irssi working with ssl and a local cert is a large pain in the butt.&lt;br /&gt;
&lt;br /&gt;
When you connect to an irc network you should use SSL.&lt;br /&gt;
&lt;br /&gt;
* Docs&lt;br /&gt;
** https://wiki.znc.in/Configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Generate an initial config. Run this as your own user (not root) This will place it in &amp;lt;code&amp;gt;~/.znc/configs/znc.conf&amp;lt;/code&amp;gt;. We will be copying this file to the service user&#039;s account after.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 znc --makeconf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Listen on port: &#039;&#039;&#039;6667&#039;&#039;&#039;&lt;br /&gt;
* SSL: &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
* Username: &#039;&#039;&#039;myzncuser&#039;&#039;&#039;&lt;br /&gt;
* Password: &#039;&#039;&#039;&amp;lt;redacted&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;many other questions&#039;&#039;: &#039;&#039;&#039;&amp;lt;chose defaults&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Set up a network? &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
* Launch ZNC now? &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Edit the newly created znc.conf and tell it to bind to localhost by adding &amp;lt;code&amp;gt;Host = 127.0.0.1&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;&amp;lt;Listener l&amp;gt;&amp;lt;/code&amp;gt; section&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Listener l&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  Host = 127.0.0.1&lt;br /&gt;
  ....&lt;br /&gt;
 &amp;lt;/Lisner&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Copy your newly created config (and a crt required for startup) to the ZNC service directory and fix its permissions. The directory &amp;lt;code&amp;gt;/var/lib/znc/&amp;lt;/code&amp;gt; should already exist,  &amp;quot;&#039;&#039;&#039;_znc&#039;&#039;&#039;&amp;quot; is the default user for the service which should already exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/znc/configs/&lt;br /&gt;
 sudo cp ~/.znc/configs/znc.conf /var/lib/znc/configs/&lt;br /&gt;
 sudo cp ~/.znc/znc.pem /var/lib/znc/&lt;br /&gt;
 sudo chown -R _znc:_znc /var/lib/znc/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Enable and start the service (as root user / sudo)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 systemctl enable znc&lt;br /&gt;
 systemctl start znc&lt;br /&gt;
 systemctl status znc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====irssi====&lt;br /&gt;
* Docs&lt;br /&gt;
** https://irssi.org/documentation/help/network/&lt;br /&gt;
** https://irssi.org/documentation/help/server/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
launch &amp;lt;code&amp;gt;irssi&amp;lt;/code&amp;gt; and issue some commands&lt;br /&gt;
&lt;br /&gt;
* Add network called &#039;libera-znc&#039;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 /network add libera-znc -nick myircuser -alternate_nick myircuser_ -user -autosendcmd &#039;^MSG NickServ identify &amp;lt;ircpass&amp;gt;&#039; myzncuser-libera&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Add a server to this newly created network&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 /server add -network libera-znc -auto -4 localhost 6667 myzncuser-libera/libera:&amp;lt;zncpass&amp;gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=IRC:_ZNC_with_Irssi_and_tmux_Configuration&amp;diff=405</id>
		<title>IRC: ZNC with Irssi and tmux Configuration</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=IRC:_ZNC_with_Irssi_and_tmux_Configuration&amp;diff=405"/>
		<updated>2025-05-30T16:07:40Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Work in progress&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
This is for folks generally proficient at a unix terminal. It is so that you can connect to a terminal via ssh and reconnect to your IRC session without actually &#039;leaving&#039; any IRC networks.&lt;br /&gt;
&lt;br /&gt;
You will always appear online to those on the IRC network, and can choose to look at / log into your terminal when you desire.&lt;br /&gt;
&lt;br /&gt;
This example connects to the libera IRC network. Replace this part and repeat various steps to connect to other networks.&lt;br /&gt;
&lt;br /&gt;
=== Applications ===&lt;br /&gt;
* [https://irssi.org/ irssi] - An IRC client that runs in a terminal. It will connect to ZNC in this use case.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.znc.in/ZNC ZNC] - IRC &amp;quot;bouncer&amp;quot;. This actually connects to IRC networks and will run as a service on your server.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/tmux/tmux/wiki Tmux] - Terminal Multiplexer. This lets you run many applications in one terminal. In this use case we&#039;ll run many irssi IRC clients, each of which connects to a ZNC session and hence a single IRC network&lt;br /&gt;
&lt;br /&gt;
* [https://mosh.org/ Mosh] - Mobile Shell. Auto &#039;roams&#039; and reconnects to your shell session across various networks. If your laptop goes to sleep and wakes up, it will reconnect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
Ubuntu / Debian example. Install some packages:&lt;br /&gt;
 apt-get install mosh irssi znc tmux&lt;br /&gt;
&lt;br /&gt;
====ZNC====&lt;br /&gt;
We are NOT using SSL here as we are binding to localhost only and connecting from localhost only. This is the communication from the IRC client to the IRC bounce. &lt;br /&gt;
&lt;br /&gt;
Getting ZNC and irssi working with ssl and a local cert is a large pain in the butt.&lt;br /&gt;
&lt;br /&gt;
When you connect to an irc network you should use SSL.&lt;br /&gt;
&lt;br /&gt;
* Docs&lt;br /&gt;
** https://wiki.znc.in/Configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Generate an initial config. Run this as your own user (not root) This will place it in &amp;lt;code&amp;gt;~/.znc/configs/znc.conf&amp;lt;/code&amp;gt;. We will be copying this file to the service user&#039;s account after.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 znc --makeconf&lt;br /&gt;
&lt;br /&gt;
* Listen on port: &#039;&#039;&#039;6667&#039;&#039;&#039;&lt;br /&gt;
* SSL: &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
* Username: &#039;&#039;&#039;myzncuser&#039;&#039;&#039;&lt;br /&gt;
* Password: &#039;&#039;&#039;&amp;lt;redacted&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;many other questions&#039;&#039;: &#039;&#039;&#039;&amp;lt;chose defaults&#039;&#039;&#039;&lt;br /&gt;
* Set up a network? &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
* Launch ZNC now? &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Edit the newly created znc.conf and tell it to bind to localhost - add this to the top in the main section (not nested in any &amp;lt;section&amp;gt;)&lt;br /&gt;
 BindHost = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Copy your newly created config to the ZNC service directory and fix its permissions. The directory &amp;lt;code&amp;gt;/var/lib/znc/&amp;lt;/code&amp;gt; should already exist,  &amp;quot;&#039;&#039;&#039;_znc&#039;&#039;&#039;&amp;quot; is the default user for the service which should already exist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/znc/configs/&lt;br /&gt;
 sudo cp ~/.znc/configs/znc.conf /var/lib/znc/configs/&lt;br /&gt;
 sudo chown -R _znc:_znc /var/lib/znc/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Enable and start the service&lt;br /&gt;
 systemctl enable znc&lt;br /&gt;
 systemctl start znc&lt;br /&gt;
 systemctl status znc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====irssi====&lt;br /&gt;
* Docs&lt;br /&gt;
** https://irssi.org/documentation/help/network/&lt;br /&gt;
** https://irssi.org/documentation/help/server/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
launch &amp;lt;code&amp;gt;irssi&amp;lt;/code&amp;gt; and issue some commands&lt;br /&gt;
&lt;br /&gt;
* Add network called &#039;libera-znc&#039;. &lt;br /&gt;
 /network add libera-znc -nick myircuser -alternate_nick myircuser_ -user -autosendcmd &#039;^MSG NickServ identify &amp;lt;ircpass&amp;gt;&#039; myzncuser-libera&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Add a server to this newly created network&lt;br /&gt;
 /server add -network libera-znc -auto -4 localhost 6667 myzncuser-libera/libera:&amp;lt;zncpass&amp;gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=IRC:_ZNC_with_Irssi_and_tmux_Configuration&amp;diff=404</id>
		<title>IRC: ZNC with Irssi and tmux Configuration</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=IRC:_ZNC_with_Irssi_and_tmux_Configuration&amp;diff=404"/>
		<updated>2025-05-30T16:04:49Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Work in progress&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
This is for folks generally proficient at a unix terminal. It is so that you can connect to a terminal via ssh and reconnect to your IRC session without actually &#039;leaving&#039; any IRC networks.&lt;br /&gt;
&lt;br /&gt;
You will always appear online to those on the IRC network, and can choose to look at / log into your terminal when you desire.&lt;br /&gt;
&lt;br /&gt;
This example connects to the libera IRC network. Replace this part and repeat various steps to connect to other networks.&lt;br /&gt;
&lt;br /&gt;
=== Applications ===&lt;br /&gt;
* [https://irssi.org/ irssi] - An IRC client that runs in a terminal. It will connect to ZNC in this use case.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.znc.in/ZNC ZNC] - IRC &amp;quot;bouncer&amp;quot;. This actually connects to IRC networks and will run as a service on your server.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/tmux/tmux/wiki Tmux] - Terminal Multiplexer. This lets you run many applications in one terminal. In this use case we&#039;ll run many irssi IRC clients, each of which connects to a ZNC session and hence a single IRC network&lt;br /&gt;
&lt;br /&gt;
* [https://mosh.org/ Mosh] - Mobile Shell. Auto &#039;roams&#039; and reconnects to your shell session across various networks. If your laptop goes to sleep and wakes up, it will reconnect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
Ubuntu / Debian example. Install some packages:&lt;br /&gt;
 apt-get install mosh irssi znc tmux&lt;br /&gt;
&lt;br /&gt;
====ZNC====&lt;br /&gt;
We are NOT using SSL here as we are binding to localhost only and connecting from localhost only. This is the communication from the IRC client to the IRC bounce. &lt;br /&gt;
&lt;br /&gt;
Getting ZNC and irssi working with ssl and a local cert is a large pain in the butt.&lt;br /&gt;
&lt;br /&gt;
When you connect to an irc network you should use SSL.&lt;br /&gt;
&lt;br /&gt;
* Docs&lt;br /&gt;
** https://wiki.znc.in/Configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Generate an initial config. Run this as your own user (not root) This will place it in &amp;lt;code&amp;gt;~/.znc/configs/znc.conf&amp;lt;/code&amp;gt;. We will be copying this file to the service user&#039;s account after.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 znc --makeconf&lt;br /&gt;
&lt;br /&gt;
* Listen on port: &#039;&#039;&#039;6667&#039;&#039;&#039;&lt;br /&gt;
* SSL: &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
* Username: &#039;&#039;&#039;myzncuser&#039;&#039;&#039;&lt;br /&gt;
* Password: &#039;&#039;&#039;&amp;lt;redacted&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;many other questions&#039;&#039;: &#039;&#039;&#039;&amp;lt;chose defaults&#039;&#039;&#039;&lt;br /&gt;
* Set up a network? &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
* Launch ZNC now? &#039;&#039;&#039;No&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Edit the newly created znc.conf and tell it to bind to localhost - add this to the top in the main section (not nested in any &amp;lt;section&amp;gt;)&lt;br /&gt;
 BindHost = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Copy your newly created config to the ZNC service directory and fix its permissions - &amp;quot;&#039;&#039;&#039;_znc&#039;&#039;&#039;&amp;quot; is the default user for the service which should already exist.&lt;br /&gt;
 sudo mkdir -p /var/lib/znc/configs/&lt;br /&gt;
 sudo cp ~/.znc/configs/znc.conf /var/lib/znc/&lt;br /&gt;
 sudo chown -R _znc:_znc /var/lib/znc/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Enable and start the service&lt;br /&gt;
 systemctl enable znc&lt;br /&gt;
 systemctl start znc&lt;br /&gt;
 systemctl status znc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====irssi====&lt;br /&gt;
* Docs&lt;br /&gt;
** https://irssi.org/documentation/help/network/&lt;br /&gt;
** https://irssi.org/documentation/help/server/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
launch &amp;lt;code&amp;gt;irssi&amp;lt;/code&amp;gt; and issue some commands&lt;br /&gt;
&lt;br /&gt;
* Add network called &#039;libera-znc&#039;. &lt;br /&gt;
 /network add libera-znc -nick myircuser -alternate_nick myircuser_ -user -autosendcmd &#039;^MSG NickServ identify &amp;lt;ircpass&amp;gt;&#039; myzncuser-libera&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Add a server to this newly created network&lt;br /&gt;
 /server add -network libera-znc -auto -4 localhost 6667 myzncuser-libera/libera:&amp;lt;zncpass&amp;gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=IRC:_ZNC_with_Irssi_and_tmux_Configuration&amp;diff=403</id>
		<title>IRC: ZNC with Irssi and tmux Configuration</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=IRC:_ZNC_with_Irssi_and_tmux_Configuration&amp;diff=403"/>
		<updated>2025-05-30T15:33:09Z</updated>

		<summary type="html">&lt;p&gt;Falz: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Work in progress&amp;#039;&amp;#039;&amp;#039;  === Description === This is for folks generally proficient at a unix terminal. It is so that you can connect to a terminal via ssh and reconnect to your IRC session without actually &amp;#039;leaving&amp;#039; any IRC networks.  You will always appear online to those on the IRC network, and can choose to look at / log into your terminal when you desire.  This example connects to the libera IRC network.  === Applications === * [https://irssi.org/ irssi] - An IRC cli...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Work in progress&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
This is for folks generally proficient at a unix terminal. It is so that you can connect to a terminal via ssh and reconnect to your IRC session without actually &#039;leaving&#039; any IRC networks.&lt;br /&gt;
&lt;br /&gt;
You will always appear online to those on the IRC network, and can choose to look at / log into your terminal when you desire.&lt;br /&gt;
&lt;br /&gt;
This example connects to the libera IRC network.&lt;br /&gt;
&lt;br /&gt;
=== Applications ===&lt;br /&gt;
* [https://irssi.org/ irssi] - An IRC client that runs in a terminal. It will connect to ZNC in this use case.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.znc.in/ZNC ZNC] - IRC &amp;quot;bouncer&amp;quot;. This actually connects to IRC networks and will run as a service on your server.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/tmux/tmux/wiki Tmux] - Terminal Multiplexer. This lets you run many applications in one terminal. In this use case we&#039;ll run many irssi IRC clients, each of which connects to a ZNC session and hence a single IRC network&lt;br /&gt;
&lt;br /&gt;
* [https://mosh.org/ Mosh] - Mobile Shell. Auto &#039;roams&#039; and reconnects to your shell session across various networks. If your laptop goes to sleep and wakes up, it will reconnect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
Ubuntu / Debian example. Install some packages:&lt;br /&gt;
 apt-get install mosh irssi znc tmux&lt;br /&gt;
&lt;br /&gt;
====ZNC====&lt;br /&gt;
* Configure as a service (todo). &amp;quot;myzncuser&amp;quot; is auth between the IRC client (irssi) and ZNC, it is NOT your actual IRC username.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====irssi====&lt;br /&gt;
launch &amp;lt;code&amp;gt;irssi&amp;lt;/code&amp;gt; and issue some commands&lt;br /&gt;
&lt;br /&gt;
* Add network called &#039;libera-znc&#039;. &lt;br /&gt;
 /network add libera-znc -nick myircuser -alternate_nick myircuser_ -user -autosendcmd &#039;^MSG NickServ identify &amp;lt;ircpass&amp;gt;&#039; myzncuser-libera&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Add a server to this newly created network&lt;br /&gt;
 /server add -network libera-znc -auto -4 localhost 6667 myzncuser-libera/libera:&amp;lt;zncpass&amp;gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Ubuntu_Fix_Annoying_Things&amp;diff=400</id>
		<title>Ubuntu Fix Annoying Things</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Ubuntu_Fix_Annoying_Things&amp;diff=400"/>
		<updated>2023-09-06T12:35:23Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here lies some steps of things to unfuck some default settings from Ubuntu and or its default applications, desktops, etc that I find awful. Note that these are the opinions of someone who expects to mostly navigate by keyboard, and has not used Windows since Win2k or so, primarily switching to XFCE for many years, which mostly has the same behavior of classic windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Why aren&#039;t I still running XFCE then? On my current work laptop - Dell XPS 13 9370 - many things simply didnt work properly - touchpad, power management, etc. After months of frustration and realizing that a coworkers laptop had no issues with stock Ubuntu LTS, I switched, only to find many issues that seem mind bogglingly incorrect. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are my fixes, mainly for my own documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keyboard Shortcuts ===&lt;br /&gt;
&lt;br /&gt;
==== Super+R &amp;quot;Run&amp;quot; Behavior ====&lt;br /&gt;
* Expectation: Mimic Windows &#039;run&#039; behavior with Super (aka windows key) + R Key combo:&lt;br /&gt;
* Reality: nah&lt;br /&gt;
* Fix: Settings -&amp;gt; Keyboard -&amp;gt; Shortcuts, &#039;&#039;&#039;Show the run prompt&#039;&#039;&#039; map to &#039;&#039;&#039;Super+R&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Alt-Tab ====&lt;br /&gt;
* Expectation: Switch between windows including important visual cues (highlight window, show a popup of windows)&lt;br /&gt;
* Reality: By default, it switches between app groups, not windows (like OSX does)&lt;br /&gt;
* Fix: Nothing great, &#039;&#039;&#039;Settings -&amp;gt; Keyboard -&amp;gt; Shortcuts&#039;&#039;&#039;, re-map key to use the &#039;&#039;&#039;Alt-Esc&#039;&#039;&#039; method instead (which highlights borders but does not show pop up)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: Alt-Tab is instant&lt;br /&gt;
* Reality: Ubuntu 18 [http://ubuntuhandbook.org/index.php/2019/08/speed-up-alt-tab-ubuntu-18-04/ introduced intentional lag] because ???&lt;br /&gt;
* Fix: Install and run &#039;&#039;&#039;gnome-tweaks&#039;&#039;&#039;, Extensions -&amp;gt; &#039;&#039;&#039;Alt-Tab switcher popup delay removal: On&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: Alt+Shift+Tab goes back in list&lt;br /&gt;
* Reality: Nah&lt;br /&gt;
* Fix: ??&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UI and Desktop ===&lt;br /&gt;
* Expectation: Touchpad works (this is more of a hw issue with Dell XPS 9730?)&lt;br /&gt;
* Reality: detects palm touches, jumps all over, deletes text:&lt;br /&gt;
* Fix: https://www.dell.com/support/kbdoc/en-ca/000150104/precision-xps-ubuntu-general-touchpad-mouse-issue-fix ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: Moving a window isnt 1fps&lt;br /&gt;
* Reality: It&#039;s slow and laggy, Windows95 was faster&lt;br /&gt;
* Fix: Consider a different display manager such as lubuntu-desktop:&lt;br /&gt;
 sudo apt-get install lubuntu-desktop lubuntu-gtk-core lubuntu-gtk-desktop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: You can see a list of apps&lt;br /&gt;
* Reality: you have to know what apps exist first because you have to start typing it&lt;br /&gt;
* Fix: Use Dash to Panel extension. Install per below, log out/in and then run &#039;&#039;&#039;gnome-tweaks&#039;&#039;&#039;, Extensions -&amp;gt; &#039;&#039;&#039;Applications Menu: On&#039;&#039;&#039;. Makes it win95-like.&lt;br /&gt;
 sudo apt-get install gnome-shell-extensions gnome-shell-extension-dash-to-panel gnome-tweaks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: Have one main menu bar with applications, status icons, etc&lt;br /&gt;
* Reality: Nah here&#039;s a bar on the left and a bar on the top, both containing half of these things and wasting space&lt;br /&gt;
* Fix: Use Dash to Panel extension. Install per below, log out/in and then run &#039;&#039;&#039;gnome-tweaks&#039;&#039;&#039;, Extensions -&amp;gt; &#039;&#039;&#039;[https://extensions.gnome.org/extension/1160/dash-to-panel/ Dash to Panel]: On&#039;&#039;&#039;. I further went in to settings to move it to the top&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: A suspend button exists, somewhere, literally anywhere&lt;br /&gt;
* Reality: It&#039;s hiding &amp;quot;behind&amp;quot; the power button on the dropdown, visible when one presses &#039;&#039;&#039;alt&#039;&#039;&#039;, and you&#039;d have no way to know this in advance.&lt;br /&gt;
* Fix: Since above is stupid, install [https://extensions.gnome.org/extension/826/suspend-button/ Suspend Button] extension, requires logging off/on or a reboot.&lt;br /&gt;
 sudo apt-get install gnome-shell-extension-suspend-button&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== File manager ===&lt;br /&gt;
* Expectation: When browsing a list of files, start typing to skip to that section of the list instantly&lt;br /&gt;
* Reality: When you start typing it starts doing a filesystem search of your current directory, slowly. Your intended item may or may not be at the top.&lt;br /&gt;
* Fix: Replace the default Nautilus file manager with [https://launchpad.net/~lubomir-brindza/+archive/ubuntu/nautilus-typeahead nautilus-typeahead]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminal ===&lt;br /&gt;
* Expectation: Have reasonable shortcuts to open new tabs, set tab titles, and cycle through them&lt;br /&gt;
* Reality: Nah (cant set tab titles at all), shortctuts are different than expected&lt;br /&gt;
* Fix: Use &#039;&#039;&#039;xfce4-terminal&#039;&#039;&#039; instead&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=RANCID_for_Infinera_Coriant_Groove&amp;diff=399</id>
		<title>RANCID for Infinera Coriant Groove</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=RANCID_for_Infinera_Coriant_Groove&amp;diff=399"/>
		<updated>2023-07-10T18:40:25Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hacked in support for Coriant G30 groove for RANCID. If you&#039;re instead running Oxidized instead of RANCID, [https://github.com/ytti/oxidized/blob/master/lib/oxidized/model/coriantgroove.rb it supports this natively].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This has come up on the [https://shrubbery.net/mailman/listinfo/rancid-discuss rancid-discuss] list a few times:&lt;br /&gt;
&lt;br /&gt;
* [https://shrubbery.net/pipermail/rancid-discuss/2017-December/010013.html Coriant Groove platform support] (2018)&lt;br /&gt;
* [https://shrubbery.net/pipermail/rancid-discuss/2023-January/011262.html Support for Coriant Groove - has been discussed on-list before] (2023) - me asking for others&#039; code. Didn&#039;t hear back, hence my hacks below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New Files===&lt;br /&gt;
Place files in appropriate locations:&lt;br /&gt;
&lt;br /&gt;
* [https://falz.net/static/coriant.pm coriant.pm] - Based on &#039;&#039;&#039;wavesvros.pm&#039;&#039;&#039; - goes in &#039;&#039;&#039;lib&#039;&#039;&#039; with &#039;&#039;&#039;ios.pm&#039;&#039;&#039; and whatnot&lt;br /&gt;
* [https://falz.net/static/corlogin corlogin] - Based on &#039;&#039;&#039;hlogin&#039;&#039;&#039; - goes in &#039;&#039;&#039;bin&#039;&#039;&#039; with &#039;&#039;&#039;clogin&#039;&#039;&#039;, &#039;&#039;&#039;rancid-run&#039;&#039;&#039;, so on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modifications ===&lt;br /&gt;
Modifications to &#039;&#039;&#039;rancid.types.conf&#039;&#039;&#039;&lt;br /&gt;
 coriant;script;rancid -t coriant&lt;br /&gt;
 coriant;login;corlogin&lt;br /&gt;
 coriant;module;coriant&lt;br /&gt;
 coriant;inloop;coriant::inloop&lt;br /&gt;
 coriant;command;coriant::GenericCmd;set -f cli-config cli-columns 4000&lt;br /&gt;
 # &#039;show shelf&#039; has a varying temp in it, omit for now&lt;br /&gt;
 #coriant;command;coriant::GenericCmd;show shelf&lt;br /&gt;
 coriant;command;coriant::GenericCmd;show inventory&lt;br /&gt;
 coriant;command;coriant::GenericCmd;show softwareload&lt;br /&gt;
 coriant;command;coriant::GenericCmd;show alarm&lt;br /&gt;
 coriant;command;coriant::WriteTerm;show config | display commands&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
* Displaying the entire config this way takes a long time if pmstats are enabled (which they should be!). Could consider splitting up &#039;&#039;&#039;show config&#039;&#039;&#039; to a ton of different commands to avoid this.&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=RANCID_for_Infinera_Coriant_Groove&amp;diff=398</id>
		<title>RANCID for Infinera Coriant Groove</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=RANCID_for_Infinera_Coriant_Groove&amp;diff=398"/>
		<updated>2023-07-10T18:29:12Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hacked in support for Coriant G30 groove for RANCID. If you&#039;re instead running Oxidized instead of rancid, [https://github.com/ytti/oxidized/blob/master/lib/oxidized/model/coriantgroove.rb it supports this natively].&lt;br /&gt;
&lt;br /&gt;
This has come up on the [https://shrubbery.net/mailman/listinfo/rancid-discuss rancid-discuss] list a few times&lt;br /&gt;
* [https://shrubbery.net/pipermail/rancid-discuss/2017-December/010013.html Coriant Groove platform support] (2018)&lt;br /&gt;
* [https://shrubbery.net/pipermail/rancid-discuss/2023-January/011262.html Support for Coriant Groove - has been discussed on-list before] (2023) - me asking for others&#039; code. Didn&#039;t hear back, hence my hacks below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New Files===&lt;br /&gt;
Place files in appropriate locations &lt;br /&gt;
&lt;br /&gt;
* [https://falz.net/static/coriant.pm coriant.pm] - Based on &#039;&#039;&#039;wavesvros.pm&#039;&#039;&#039; - goes in &#039;&#039;&#039;lib&#039;&#039;&#039; with &#039;&#039;&#039;ios.pm&#039;&#039;&#039; and whatnot&lt;br /&gt;
* [https://falz.net/static/corlogin corlogin] - Based on &#039;&#039;&#039;hlogin&#039;&#039;&#039; - goes in &#039;&#039;&#039;bin&#039;&#039;&#039; with &#039;&#039;&#039;clogin&#039;&#039;&#039;, &#039;&#039;&#039;rancid-run&#039;&#039;&#039;, so on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modifications ===&lt;br /&gt;
Modifications to &#039;&#039;&#039;rancid.types.conf&#039;&#039;&#039;&lt;br /&gt;
 coriant;script;rancid -t coriant&lt;br /&gt;
 coriant;login;corlogin&lt;br /&gt;
 coriant;module;coriant&lt;br /&gt;
 coriant;inloop;coriant::inloop&lt;br /&gt;
 coriant;command;coriant::GenericCmd;set -f cli-config cli-columns 4000&lt;br /&gt;
 # &#039;show shelf&#039; has a varying temp in it, omit for now&lt;br /&gt;
 #coriant;command;coriant::GenericCmd;show shelf&lt;br /&gt;
 coriant;command;coriant::GenericCmd;show inventory&lt;br /&gt;
 coriant;command;coriant::GenericCmd;show softwareload&lt;br /&gt;
 coriant;command;coriant::GenericCmd;show alarm&lt;br /&gt;
 coriant;command;coriant::WriteTerm;show config | display commands&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
* Displaying the entire config this way takes a long time if pmstats are enabled (which they should be!). Could consider splitting up &#039;&#039;&#039;show config&#039;&#039;&#039; to a ton of different commands to avoid this.&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=RANCID_for_Infinera_Coriant_Groove&amp;diff=397</id>
		<title>RANCID for Infinera Coriant Groove</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=RANCID_for_Infinera_Coriant_Groove&amp;diff=397"/>
		<updated>2023-07-10T18:25:49Z</updated>

		<summary type="html">&lt;p&gt;Falz: Created page with &amp;quot;Hacked in support for Coriant G30 groove for RANCID. If you&amp;#039;re instead running Oxidized instead of rancid, [https://github.com/ytti/oxidized/blob/master/lib/oxidized/model/cor...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hacked in support for Coriant G30 groove for RANCID. If you&#039;re instead running Oxidized instead of rancid, [https://github.com/ytti/oxidized/blob/master/lib/oxidized/model/coriantgroove.rb it supports this natively].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Files to download===&lt;br /&gt;
Place files in appropriate locations &lt;br /&gt;
&lt;br /&gt;
* [https://falz.net/static/coriant.pm coriant.pm] - Based on &#039;&#039;&#039;wavesvros.pm&#039;&#039;&#039; - goes in &#039;&#039;&#039;lib&#039;&#039;&#039; with &#039;&#039;&#039;ios.pm&#039;&#039;&#039; and whatnot&lt;br /&gt;
* [https://falz.net/static/corlogin corlogin] - Based on &#039;&#039;&#039;hlogin&#039;&#039;&#039; - goes in &#039;&#039;&#039;bin&#039;&#039;&#039; with &#039;&#039;&#039;clogin&#039;&#039;&#039;, &#039;&#039;&#039;rancid-run&#039;&#039;&#039;, so on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modifications ===&lt;br /&gt;
Modifications to &#039;&#039;&#039;rancid.types.conf&#039;&#039;&#039;&lt;br /&gt;
 coriant;script;rancid -t coriant&lt;br /&gt;
 coriant;login;corlogin&lt;br /&gt;
 coriant;module;coriant&lt;br /&gt;
 coriant;inloop;coriant::inloop&lt;br /&gt;
 coriant;command;coriant::GenericCmd;set -f cli-config cli-columns 4000&lt;br /&gt;
 # &#039;show shelf&#039; has a varying temp in it, omit for now&lt;br /&gt;
 #coriant;command;coriant::GenericCmd;show shelf&lt;br /&gt;
 coriant;command;coriant::GenericCmd;show inventory&lt;br /&gt;
 coriant;command;coriant::GenericCmd;show softwareload&lt;br /&gt;
 coriant;command;coriant::GenericCmd;show alarm&lt;br /&gt;
 coriant;command;coriant::WriteTerm;show config | display commands&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
* Displaying the entire config this way takes a long time if pmstats are enabled (which they should be!). Could consider splitting up &#039;&#039;&#039;show config&#039;&#039;&#039; to a ton of different commands to avoid this.&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Home_Assistant:_Configuring_%22Salt_Sentry%22_using_MQTT_protocol&amp;diff=396</id>
		<title>Home Assistant: Configuring &quot;Salt Sentry&quot; using MQTT protocol</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Home_Assistant:_Configuring_%22Salt_Sentry%22_using_MQTT_protocol&amp;diff=396"/>
		<updated>2023-01-29T20:49:48Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Dev]]&lt;br /&gt;
[[Category:Unix]]&lt;br /&gt;
&lt;br /&gt;
===Background===&lt;br /&gt;
About a week ago I had never heard of Home Assistant, Salt Sentry, nor MQTT. If you&#039;re here, maybe this is true for you too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just before that, I replaced a water softener. This reminded me that you also have to add salt to said water softener. I never remember to do this and thought it would be keen if something could tell me when to do so by measuring the physical salt level.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A bit of googling revealed a few home dev style solutions (buy some parts, solder some things) but the most complete of these appeared to be a product called &amp;quot;[https://www.tindie.com/products/ErikLemcke/salt-sentry-water-softener-monitor/ Salt Sentry]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It works by using a small software development board which contains a [https://www.st.com/en/imaging-and-photonics-solutions/vl53l0x.html VL53L0X] sensor which is some magical device that can measure distance with accuracy of 2mm when just pointing it into the ether. 🤷 cool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To use this, you need to integrate it with something else, there are a few options, but the most popular one seemed to be called &amp;quot;Home Assistant&amp;quot;. While I was waiting for the Salt Sentry to arrive, i thought I&#039;d get ahead of things and install Home Assistant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Home Assistant ===&lt;br /&gt;
[https://www.home-assistant.io/ Home Assistant] ([https://en.wikipedia.org/wiki/Home_Assistant wikipedia]) is something one can run on a Raspberry Pi or other similar hardware. I happened to have a few Pi&#039;s laying around unused so i thought I&#039;d give it a shot:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Quote|&amp;quot;Home Assistant is free and open-source software for home automation designed to be a central control system for smart home devices with a focus on local control and privacy.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
I ended up installing this by [https://www.home-assistant.io/installation/ downloading] and using `dd` to image it to an SD card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dd if=haos_rpi3-64-9.4.img of=/dev/sdb bs=4M &amp;amp;&amp;amp; sync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plug it in, boot it up, and i highly recommend creating a local DNS record for &#039;homeassistant.local&#039; as most of the docs use that and may even link to it. [https://www.home-assistant.io/getting-started/ Configuring it] is outside of the scope of this page but it&#039;s pretty simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On its own with no config it auto discovered some Devices, which it calls &amp;quot;Integrations&amp;quot; on its own:&lt;br /&gt;
&lt;br /&gt;
* Ecobee thermostat + remote sensor&lt;br /&gt;
* Roku&lt;br /&gt;
* Onkyo A/V receiver&lt;br /&gt;
* Mobile phone (once app installed)&lt;br /&gt;
* Outdoor Weather&lt;br /&gt;
* The literal Sun&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All of this was super easy, didn&#039;t require any CLI changes, it just was clicky clicky from a quick web UI. Cool, that&#039;ll be the same with MQTT too? no.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MQTT===&lt;br /&gt;
[https://www.home-assistant.io/docs/mqtt/ MQTT] ([https://en.wikipedia.org/wiki/MQTT wikipedia]) stands for &amp;quot;MQ Telemetry Transport&amp;quot;. What does MQ stand for? Apparently it came from IBM thing called &amp;quot;MQSeries&amp;quot; where it stood for Message Queing, wikipedia says it stands for nothing. We&#039;re off to a great start.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you go to Settings -&amp;gt; Devices and Services -&amp;gt; [http://homeassistant.local:8123/config/integrations Integrations] and choose to add MQTT, it just asks for your broker and you&#039;re just kinda stuck.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To use MQTT with Home Assitant, you must use something called &amp;quot;[https://github.com/home-assistant/addons/tree/master/mosquitto Mosquitto Broker]&amp;quot;. Why? I don&#039;t know, but you need it. Install it from Settings -&amp;gt; [http://homeassistant.local:8123/hassio/dashboard Add-Ons] -&amp;gt; Add-on store. It will take several minutes to install. I would recommend rebooting after as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Mosquito-settings.png|border|300px|right]]&lt;br /&gt;
Once it&#039;s installed.. this is where you hit question marks. What&#039;s next? [https://github.com/home-assistant/addons/blob/master/mosquitto/DOCS.md The docs] just say that it should show up as a discovered integraiton, but it didn&#039;t for me. So I rebooted Home Assistant, and then MQTT appeared as discovered after a bit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before going further, go and add a new user to Home assistant itsself, and configure Mosquitto to use it. This made it a lot easier to get the device to talk to it. I used &amp;quot;mosquitto&amp;quot; as username, use what you want. Record the password&lt;br /&gt;
&lt;br /&gt;
* Settings -&amp;gt; People -&amp;gt; [http://homeassistant.local:8123/config/users Users] -&amp;gt; Add user&lt;br /&gt;
** Display name / Username: mosquitto&lt;br /&gt;
** Password: &amp;lt;redacted&amp;gt;&lt;br /&gt;
** Create&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now go in to the MQTT settings and tell it &lt;br /&gt;
* Settings -&amp;gt; [http://homeassistant.local:8123/config/integrations Devices and Services] -&amp;gt; MQTT Configure&lt;br /&gt;
** Re-Configure MQTT&lt;br /&gt;
** Username: mosquitto&lt;br /&gt;
** Password: &amp;lt;redacted&amp;gt;&lt;br /&gt;
** Next (until finished).&lt;br /&gt;
** It may ask you to reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Saltsentry-connected.png|border|300px|right]]&lt;br /&gt;
===Salt Sentry===&lt;br /&gt;
Configure the [https://github.com/Lemcke-solutions/SaltSentryManuals device per the manual]. On its settings page set:&lt;br /&gt;
&lt;br /&gt;
* mqtt server: &amp;lt;ip of your home assistant server&amp;gt;&lt;br /&gt;
* mqtt username: mosquitto&lt;br /&gt;
* mqtt password: &amp;lt;redacted, same as MQTT&amp;gt;&lt;br /&gt;
* mqtt topic: saltsentry&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have this in, the Salt Sentry should finally show as connected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Mqtt-homeassistant.png|border|300px|right]]&lt;br /&gt;
Do a sanity check.&lt;br /&gt;
* Settings -&amp;gt; [http://homeassistant.local:8123/config/integrations Devices and Services] -&amp;gt; MQTT Configure&lt;br /&gt;
** Listen to a topic: saltsentry&lt;br /&gt;
** Start Listening&lt;br /&gt;
&lt;br /&gt;
You should see a message received at the current timestamp. This is percentage full. You may also listen to the topic `saltsentry_distance` as another check, which is the distance in centimeters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sensors===&lt;br /&gt;
Finally, things are talking. But none of these things you just &#039;listened&#039; for anywhere appear anywhere. This is where you have to manually edit a YAML file. I did this by going installing the [https://github.com/home-assistant/addons/tree/master/configurator File Editor add-on]. (Settings -&amp;gt; [http://homeassistant.local:8123/hassio/dashboard Add-Ons] -&amp;gt; Add-on store). Once installed I&#039;d suggest toggling &#039;show in sidebar&#039; to find it easier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the File Editor, Browse to &#039;&#039;/config/configuration.yaml&#039;&#039; by clicking the &amp;quot;Folder&amp;quot; icon in top left. Then paste this in at the bottom. Note the Salt Sentry manual suggests something here but it&#039;s wrong as of the time of writing (upper case S in sensor, the wrong quotes, multiple of the same lines)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 mqtt:&lt;br /&gt;
  sensor:&lt;br /&gt;
  - name: &amp;quot;Salt Sentry percent&amp;quot;&lt;br /&gt;
    state_topic: &amp;quot;saltsentry&amp;quot;&lt;br /&gt;
    unit_of_measurement: &amp;quot;%&amp;quot;&lt;br /&gt;
  - name: &amp;quot;Salt Sentry distance&amp;quot;&lt;br /&gt;
    state_topic: &amp;quot;saltsentry_distance&amp;quot;&lt;br /&gt;
    unit_of_measurement: &amp;quot;cm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Homeview.png|border|300px|right]]&lt;br /&gt;
This gives you two new sensors that will be visible to pull data from in your dashboard. They&#039;ll use the names above, but ONLY after you restart the MQTT service.. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Settings -&amp;gt; [http://homeassistant.local:8123/config/integrations Devices and Services] -&amp;gt; MQTT -&amp;gt; ⋮ -&amp;gt; Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the reload fails, it generally means there was an issue with the configuration.yaml file. It will download logs which hopefully help.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Basemenet.png|border|300px|right]]&lt;br /&gt;
You may now add these to a dashboard. I went to edit mode of dashboard, chose Add Card, then By entity tab, then typed &#039;sentry&#039; and added all based on its suggestion. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, you may do what you originally wanted to do, which is notify when the salt level is low. This is done via &amp;quot;Automations&amp;quot;.. which I&#039;m too burned out to figure out at the moment.&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Home_Assistant:_Configuring_%22Salt_Sentry%22_using_MQTT_protocol&amp;diff=395</id>
		<title>Home Assistant: Configuring &quot;Salt Sentry&quot; using MQTT protocol</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Home_Assistant:_Configuring_%22Salt_Sentry%22_using_MQTT_protocol&amp;diff=395"/>
		<updated>2023-01-28T22:04:30Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Dev]]&lt;br /&gt;
[[Category:Unix]]&lt;br /&gt;
&lt;br /&gt;
===Background===&lt;br /&gt;
About a week ago I had never heard of Home Assistant, Salt Sentry, nor MQTT. If you&#039;re hear, maybe this is fully or partially true for you too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just before that, I replaced a water softener. This reminded me that you also have to add salt to said water softener. I never remember to do this and thought it would be keen if something could tell me when to do so by measuring the physical salt level.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A bit of googling revealed a few home dev style solutions (buy some parts, solder some things) but the most complete of these appeared to be a product called &amp;quot;[https://www.tindie.com/products/ErikLemcke/salt-sentry-water-softener-monitor/ Salt Sentry]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It works by using a small software development board which contains a [https://www.st.com/en/imaging-and-photonics-solutions/vl53l0x.html VL53L0X] sensor which is some magical device that can measure distance with accuracy of 2mm when just pointing it into the ether. 🤷 cool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To use this, you need to integrate it with something else, there are a few options, but the most popular one seemed to be called &amp;quot;Home Assistant&amp;quot;. While I was waiting for the Salt Sentry to arrive, i thought I&#039;d get ahead of things and install Home Assistant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Home Assistant ===&lt;br /&gt;
[https://www.home-assistant.io/ Home Assistant] ([https://en.wikipedia.org/wiki/Home_Assistant wikipedia]) is something one can run on a Raspberry Pi or other similar hardware. I happened to have a few Pi&#039;s laying around unused so i thought I&#039;d give it a shot:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Quote|&amp;quot;Home Assistant is free and open-source software for home automation designed to be a central control system for smart home devices with a focus on local control and privacy.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
I ended up installing this by [https://www.home-assistant.io/installation/ downloading] and using `dd` to image it to an SD card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dd if=haos_rpi3-64-9.4.img of=/dev/sdb bs=4M &amp;amp;&amp;amp; sync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plug it in, boot it up, and i highly recommend creating a local DNS record for &#039;homeassistant.local&#039; as most of the docs use that and may even link to it. [https://www.home-assistant.io/getting-started/ Configuring it] is outside of the scope of this page but it&#039;s pretty simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On its own with no config it auto discovered some Devices, which it calls &amp;quot;Integrations&amp;quot; on its own:&lt;br /&gt;
&lt;br /&gt;
* Ecobee thermostat + remote sensor&lt;br /&gt;
* Roku&lt;br /&gt;
* Onkyo A/V receiver&lt;br /&gt;
* Mobile phone (once app installed)&lt;br /&gt;
* Outdoor Weather&lt;br /&gt;
* The literal Sun&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All of this was super easy, didn&#039;t require any CLI changes, it just was clicky clicky from a quick web UI. Cool, that&#039;ll be the same with MQTT too? no.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MQTT===&lt;br /&gt;
[https://www.home-assistant.io/docs/mqtt/ MQTT] ([https://en.wikipedia.org/wiki/MQTT wikipedia]) stands for &amp;quot;MQ Telemetry Transport&amp;quot;. What does MQ stand for? Apparently it came from IBM thing called &amp;quot;MQSeries&amp;quot; where it stood for Message Queing, wikipedia says it stands for nothing. We&#039;re off to a great start.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you go to Settings -&amp;gt; Devices and Services -&amp;gt; [http://homeassistant.local:8123/config/integrations Integrations] and choose to add MQTT, it just asks for your broker and you&#039;re just kinda stuck.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To use MQTT with Home Assitant, you must use something called &amp;quot;[https://github.com/home-assistant/addons/tree/master/mosquitto Mosquitto Broker]&amp;quot;. Why? I don&#039;t know, but you need it. Install it from Settings -&amp;gt; [http://homeassistant.local:8123/hassio/dashboard Add-Ons] -&amp;gt; Add-on store. It will take several minutes to install. I would recommend rebooting after as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Mosquito-settings.png|border|300px|right]]&lt;br /&gt;
Once it&#039;s installed.. this is where you hit question marks. What&#039;s next? [https://github.com/home-assistant/addons/blob/master/mosquitto/DOCS.md The docs] just say that it should show up as a discovered integraiton, but it didn&#039;t for me. So I rebooted Home Assistant, and then MQTT appeared as discovered after a bit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before going further, go and add a new user to Home assistant itsself, and configure Mosquitto to use it. This made it a lot easier to get the device to talk to it. I used &amp;quot;mosquitto&amp;quot; as username, use what you want. Record the password&lt;br /&gt;
&lt;br /&gt;
* Settings -&amp;gt; People -&amp;gt; [http://homeassistant.local:8123/config/users Users] -&amp;gt; Add user&lt;br /&gt;
** Display name / Username: mosquitto&lt;br /&gt;
** Password: &amp;lt;redacted&amp;gt;&lt;br /&gt;
** Create&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now go in to the MQTT settings and tell it &lt;br /&gt;
* Settings -&amp;gt; [http://homeassistant.local:8123/config/integrations Devices and Services] -&amp;gt; MQTT Configure&lt;br /&gt;
** Re-Configure MQTT&lt;br /&gt;
** Username: mosquitto&lt;br /&gt;
** Password: &amp;lt;redacted&amp;gt;&lt;br /&gt;
** Next (until finished).&lt;br /&gt;
** It may ask you to reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Saltsentry-connected.png|border|300px|right]]&lt;br /&gt;
===Salt Sentry===&lt;br /&gt;
Configure the [https://github.com/Lemcke-solutions/SaltSentryManuals device per the manual]. On its settings page set:&lt;br /&gt;
&lt;br /&gt;
* mqtt server: &amp;lt;ip of your home assistant server&amp;gt;&lt;br /&gt;
* mqtt username: mosquitto&lt;br /&gt;
* mqtt password: &amp;lt;redacted, same as MQTT&amp;gt;&lt;br /&gt;
* mqtt topic: saltsentry&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have this in, the Salt Sentry should finally show as connected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Mqtt-homeassistant.png|border|300px|right]]&lt;br /&gt;
Do a sanity check.&lt;br /&gt;
* Settings -&amp;gt; [http://homeassistant.local:8123/config/integrations Devices and Services] -&amp;gt; MQTT Configure&lt;br /&gt;
** Listen to a topic: saltsentry&lt;br /&gt;
** Start Listening&lt;br /&gt;
&lt;br /&gt;
You should see a message received at the current timestamp. This is percentage full. You may also listen to the topic `saltsentry_distance` as another check, which is the distance in centimeters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sensors===&lt;br /&gt;
Finally, things are talking. But none of these things you just &#039;listened&#039; for anywhere appear anywhere. This is where you have to manually edit a YAML file. I did this by going installing the [https://github.com/home-assistant/addons/tree/master/configurator File Editor add-on]. (Settings -&amp;gt; [http://homeassistant.local:8123/hassio/dashboard Add-Ons] -&amp;gt; Add-on store). Once installed I&#039;d suggest toggling &#039;show in sidebar&#039; to find it easier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the File Editor, Browse to &#039;&#039;/config/configuration.yaml&#039;&#039; by clicking the &amp;quot;Folder&amp;quot; icon in top left. Then paste this in at the bottom. Note the Salt Sentry manual suggests something here but it&#039;s wrong as of the time of writing (upper case S in sensor, the wrong quotes, multiple of the same lines)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 mqtt:&lt;br /&gt;
  sensor:&lt;br /&gt;
  - name: &amp;quot;Salt Sentry percent&amp;quot;&lt;br /&gt;
    state_topic: &amp;quot;saltsentry&amp;quot;&lt;br /&gt;
    unit_of_measurement: &amp;quot;%&amp;quot;&lt;br /&gt;
  - name: &amp;quot;Salt Sentry distance&amp;quot;&lt;br /&gt;
    state_topic: &amp;quot;saltsentry_distance&amp;quot;&lt;br /&gt;
    unit_of_measurement: &amp;quot;cm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Homeview.png|border|300px|right]]&lt;br /&gt;
This gives you two new sensors that will be visible to pull data from in your dashboard. They&#039;ll use the names above, but ONLY after you restart the MQTT service.. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Settings -&amp;gt; [http://homeassistant.local:8123/config/integrations Devices and Services] -&amp;gt; MQTT -&amp;gt; ⋮ -&amp;gt; Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the reload fails, it generally means there was an issue with the configuration.yaml file. It will download logs which hopefully help.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Basemenet.png|border|300px|right]]&lt;br /&gt;
You may now add these to a dashboard. I went to edit mode of dashboard, chose Add Card, then By entity tab, then typed &#039;sentry&#039; and added all based on its suggestion. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, you may do what you originally wanted to do, which is notify when the salt level is low. This is done via &amp;quot;Automations&amp;quot;.. which I&#039;m too burned out to figure out at the moment.&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Basemenet.png&amp;diff=394</id>
		<title>File:Basemenet.png</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Basemenet.png&amp;diff=394"/>
		<updated>2023-01-28T21:58:20Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Homeview.png&amp;diff=393</id>
		<title>File:Homeview.png</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Homeview.png&amp;diff=393"/>
		<updated>2023-01-28T21:58:20Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Home_Assistant:_Configuring_%22Salt_Sentry%22_using_MQTT_protocol&amp;diff=392</id>
		<title>Home Assistant: Configuring &quot;Salt Sentry&quot; using MQTT protocol</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Home_Assistant:_Configuring_%22Salt_Sentry%22_using_MQTT_protocol&amp;diff=392"/>
		<updated>2023-01-28T21:52:16Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Dev]]&lt;br /&gt;
[[Category:Unix]]&lt;br /&gt;
&lt;br /&gt;
===Background===&lt;br /&gt;
About a week ago I had never heard of Home Assistant, Salt Sentry, nor MQTT. If you&#039;re hear, maybe this is fully or partially true for you too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just before that, I replaced a water softener. This reminded me that you also have to add salt to said water softener. I never remember to do this and thought it would be keen if something could tell me when to do so by measuring the physical salt level.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A bit of googling revealed a few home dev style solutions (buy some parts, solder some things) but the most complete of these appeared to be a product called &amp;quot;[https://www.tindie.com/products/ErikLemcke/salt-sentry-water-softener-monitor/ Salt Sentry]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It works by using a small software development board which contains a [https://www.st.com/en/imaging-and-photonics-solutions/vl53l0x.html VL53L0X] sensor which is some magical device that can measure distance with accuracy of 2mm when just pointing it into the ether. 🤷 cool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To use this, you need to integrate it with something else, there are a few options, but the most popular one seemed to be called &amp;quot;Home Assistant&amp;quot;. While I was waiting for the Salt Sentry to arrive, i thought I&#039;d get ahead of things and install Home Assistant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Home Assistant ===&lt;br /&gt;
[https://www.home-assistant.io/ Home Assistant] ([https://en.wikipedia.org/wiki/Home_Assistant wikipedia]) is something one can run on a Raspberry Pi or other similar hardware. I happened to have a few Pi&#039;s laying around unused so i thought I&#039;d give it a shot:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Quote|&amp;quot;Home Assistant is free and open-source software for home automation designed to be a central control system for smart home devices with a focus on local control and privacy.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
I ended up installing this by [https://www.home-assistant.io/installation/ downloading] and using `dd` to image it to an SD card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dd if=haos_rpi3-64-9.4.img of=/dev/sdb bs=4M &amp;amp;&amp;amp; sync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plug it in, boot it up, and i highly recommend creating a local DNS record for &#039;homeassistant.local&#039; as most of the docs use that and may even link to it. [https://www.home-assistant.io/getting-started/ Configuring it] is outside of the scope of this page but it&#039;s pretty simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On its own with no config it auto discovered some Devices, which it calls &amp;quot;Integrations&amp;quot; on its own:&lt;br /&gt;
&lt;br /&gt;
* Ecobee thermostat + remote sensor&lt;br /&gt;
* Roku&lt;br /&gt;
* Onkyo A/V receiver&lt;br /&gt;
* Mobile phone (once app installed)&lt;br /&gt;
* Outdoor Weather&lt;br /&gt;
* The literal Sun&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All of this was super easy, didn&#039;t require any CLI changes, it just was clicky clicky from a quick web UI. Cool, that&#039;ll be the same with MQTT too? no.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MQTT===&lt;br /&gt;
[https://www.home-assistant.io/docs/mqtt/ MQTT] ([https://en.wikipedia.org/wiki/MQTT wikipedia]) stands for &amp;quot;MQ Telemetry Transport&amp;quot;. What does MQ stand for? Apparently it came from IBM thing called &amp;quot;MQSeries&amp;quot; where it stood for Message Queing, wikipedia says it stands for nothing. We&#039;re off to a great start.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you go to Settings -&amp;gt; Devices and Services -&amp;gt; [http://homeassistant.local:8123/config/integrations Integrations] and choose to add MQTT, it just asks for your broker and you&#039;re just kinda stuck.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To use MQTT with Home Assitant, you must use something called &amp;quot;[https://github.com/home-assistant/addons/tree/master/mosquitto Mosquitto Broker]&amp;quot;. Why? I don&#039;t know, but you need it. Install it from Settings -&amp;gt; [http://homeassistant.local:8123/hassio/dashboard Add-Ons] -&amp;gt; Add-on store. It will take several minutes to install. I would recommend rebooting after as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Mosquito-settings.png|border|300px|right]]&lt;br /&gt;
Once it&#039;s installed.. this is where you hit question marks. What&#039;s next? [https://github.com/home-assistant/addons/blob/master/mosquitto/DOCS.md The docs] just say that it should show up as a discovered integraiton, but it didn&#039;t for me. So I rebooted Home Assistant, and then MQTT appeared as discovered after a bit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before going further, go and add a new user to Home assistant itsself, and configure Mosquitto to use it. This made it a lot easier to get the device to talk to it. I used &amp;quot;mosquitto&amp;quot; as username, use what you want. Record the password&lt;br /&gt;
&lt;br /&gt;
* Settings -&amp;gt; People -&amp;gt; [http://homeassistant.local:8123/config/users Users] -&amp;gt; Add user&lt;br /&gt;
** Display name / Username: mosquitto&lt;br /&gt;
** Password: &amp;lt;redacted&amp;gt;&lt;br /&gt;
** Create&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now go in to the MQTT settings and tell it &lt;br /&gt;
* Settings -&amp;gt; [http://homeassistant.local:8123/config/integrations Devices and Services] -&amp;gt; MQTT Configure&lt;br /&gt;
** Re-Configure MQTT&lt;br /&gt;
** Username: mosquitto&lt;br /&gt;
** Password: &amp;lt;redacted&amp;gt;&lt;br /&gt;
** Next (until finished).&lt;br /&gt;
** It may ask you to reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Saltsentry-connected.png|border|300px|right]]&lt;br /&gt;
===Salt Sentry===&lt;br /&gt;
Configure the [https://github.com/Lemcke-solutions/SaltSentryManuals device per the manual]. On its settings page set:&lt;br /&gt;
&lt;br /&gt;
* mqtt server: &amp;lt;ip of your home assistant server&amp;gt;&lt;br /&gt;
* mqtt username: mosquitto&lt;br /&gt;
* mqtt password: &amp;lt;redacted, same as MQTT&amp;gt;&lt;br /&gt;
* mqtt topic: saltsentry&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have this in, the Salt Sentry should finally show as connected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Mqtt-homeassistant.png|border|300px|right]]&lt;br /&gt;
Do a sanity check.&lt;br /&gt;
* Settings -&amp;gt; [http://homeassistant.local:8123/config/integrations Devices and Services] -&amp;gt; MQTT Configure&lt;br /&gt;
** Listen to a topic: saltsentry&lt;br /&gt;
** Start Listening&lt;br /&gt;
&lt;br /&gt;
You should see a message received at the current timestamp. This is percentage full. You may also listen to the topic `saltsentry_distance` as another check, which is the distance in centimeters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sensors===&lt;br /&gt;
Finally, things are talking. But none of these things you just &#039;listened&#039; for anywhere appear anywhere. This is where you have to manually edit a YAML file. I did this by going installing the [https://github.com/home-assistant/addons/tree/master/configurator File Editor add-on]. (Settings -&amp;gt; [http://homeassistant.local:8123/hassio/dashboard Add-Ons] -&amp;gt; Add-on store). Once installed I&#039;d suggest toggling &#039;show in sidebar&#039; to find it easier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the File Editor, Browse to &#039;&#039;/config/configuration.yaml&#039;&#039; by clicking the &amp;quot;Folder&amp;quot; icon in top left. Then paste this in at the bottom. Note the Salt Sentry manual suggests something here but it&#039;s wrong as of the time of writing (upper case S in sensor, the wrong quotes, multiple of the same lines)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 mqtt:&lt;br /&gt;
  sensor:&lt;br /&gt;
  - name: &amp;quot;Salt Sentry percent&amp;quot;&lt;br /&gt;
    state_topic: &amp;quot;saltsentry&amp;quot;&lt;br /&gt;
    unit_of_measurement: &amp;quot;%&amp;quot;&lt;br /&gt;
  - name: &amp;quot;Salt Sentry distance&amp;quot;&lt;br /&gt;
    state_topic: &amp;quot;saltsentry_distance&amp;quot;&lt;br /&gt;
    unit_of_measurement: &amp;quot;cm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This gives you two new sensors that will be visible to pull data from in your dashboard. They&#039;ll use the names above, but ONLY after you restart the MQTT service.. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Settings -&amp;gt; [http://homeassistant.local:8123/config/integrations Devices and Services] -&amp;gt; MQTT -&amp;gt; ⋮ -&amp;gt; Reload.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the reload fails it will download logs which hopefully help.&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Home_Assistant:_Configuring_%22Salt_Sentry%22_using_MQTT_protocol&amp;diff=391</id>
		<title>Home Assistant: Configuring &quot;Salt Sentry&quot; using MQTT protocol</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Home_Assistant:_Configuring_%22Salt_Sentry%22_using_MQTT_protocol&amp;diff=391"/>
		<updated>2023-01-28T21:24:23Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Dev]]&lt;br /&gt;
[[Category:Unix]]&lt;br /&gt;
&lt;br /&gt;
===Background===&lt;br /&gt;
About a week ago I had never heard of Home Assistant, Salt Sentry, nor MQTT. If you&#039;re hear, maybe this is fully or partially true for you too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just before that, I replaced a water softener. This reminded me that you also have to add salt to said water softener. I never remember to do this and thought it would be keen if something could tell me when to do so by measuring the physical salt level.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A bit of googling revealed a few home dev style solutions (buy some parts, solder some things) but the most complete of these appeared to be a product called &amp;quot;[https://www.tindie.com/products/ErikLemcke/salt-sentry-water-softener-monitor/ Salt Sentry]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It works by using a small software development board which contains a [https://www.st.com/en/imaging-and-photonics-solutions/vl53l0x.html VL53L0X] sensor which is some magical device that can measure distance with accuracy of 2mm when just pointing it into the ether. 🤷 cool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To use this, you need to integrate it with something else, there are a few options, but the most popular one seemed to be called &amp;quot;Home Assistant&amp;quot;. While I was waiting for the Salt Sentry to arrive, i thought I&#039;d get ahead of things and install Home Assistant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Home Assistant ===&lt;br /&gt;
[https://www.home-assistant.io/ Home Assistant] ([https://en.wikipedia.org/wiki/Home_Assistant wikipedia]) is something one can run on a Raspberry Pi or other similar hardware. I happened to have a few Pi&#039;s laying around unused so i thought I&#039;d give it a shot:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Quote|&amp;quot;Home Assistant is free and open-source software for home automation designed to be a central control system for smart home devices with a focus on local control and privacy.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
I ended up installing this by [https://www.home-assistant.io/installation/ downloading] and using `dd` to image it to an SD card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dd if=haos_rpi3-64-9.4.img of=/dev/sdb bs=4M &amp;amp;&amp;amp; sync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plug it in, boot it up, and i highly recommend creating a local DNS record for &#039;homeassistant.local&#039; as most of the docs use that and may even link to it. [https://www.home-assistant.io/getting-started/ Configuring it] is outside of the scope of this page but it&#039;s pretty simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On its own with no config it auto discovered some Devices, which it calls &amp;quot;Integrations&amp;quot; on its own:&lt;br /&gt;
&lt;br /&gt;
* Ecobee thermostat + remote sensor&lt;br /&gt;
* Roku&lt;br /&gt;
* Onkyo A/V receiver&lt;br /&gt;
* Mobile phone (once app installed)&lt;br /&gt;
* Outdoor Weather&lt;br /&gt;
* The literal Sun&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All of this was super easy, didn&#039;t require any CLI changes, it just was clicky clicky from a quick web UI. Cool, that&#039;ll be the same with MQTT too? no.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MQTT===&lt;br /&gt;
[https://www.home-assistant.io/docs/mqtt/ MQTT] ([https://en.wikipedia.org/wiki/MQTT wikipedia] stands for &amp;quot;MQ Telemetry Transport&amp;quot;. What does MQ stand for? Apparently it came from IBM thing called &amp;quot;MQSeries&amp;quot; where it stood for Message Queing, wikipedia says it stands for nothing. We&#039;re off to a great start.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you go to Settings -&amp;gt; Devices and Services -&amp;gt; [http://homeassistant.local:8123/config/integrations Integrations] and choose to add MQTT, it just asks for your broker and you&#039;re just kinda stuck.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To use MQTT with Home Assitant, you must use something called &amp;quot;[https://github.com/home-assistant/addons/tree/master/mosquitto Mosquitto Broker]&amp;quot;. Why? I don&#039;t know, but you need it. Install it from Settings -&amp;gt; [http://homeassistant.local:8123/hassio/dashboard Add-Ons] -&amp;gt; Add-on store. It will take several minutes to install. I would recommend rebooting after as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Mosquito-settings.png|border|300px|right]]&lt;br /&gt;
Once it&#039;s installed.. this is where you hit question marks. What&#039;s next? [https://github.com/home-assistant/addons/blob/master/mosquitto/DOCS.md The docs] just say that it should show up as a discovered integraiton, but it didn&#039;t for me. So I rebooted Home Assistant, and then MQTT appeared as discovered after a bit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before going further, go and add a new user to Home assistant itsself, and configure Mosquitto to use it. This made it a lot easier to get the device to talk to it. I used &amp;quot;mosquitto&amp;quot; as username, use what you want. Record the password&lt;br /&gt;
&lt;br /&gt;
* Settings -&amp;gt; People -&amp;gt; [http://homeassistant.local:8123/config/users Users] -&amp;gt; Add user&lt;br /&gt;
** Display name / Username: mosquitto&lt;br /&gt;
** Password: &amp;lt;redacted&amp;gt;&lt;br /&gt;
** Create&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now go in to the MQTT settings and tell it &lt;br /&gt;
* Settings -&amp;gt; [http://homeassistant.local:8123/config/integrations Devices and Services] -&amp;gt; MQTT Configure&lt;br /&gt;
** Re-Configure MQTT&lt;br /&gt;
** Username: mosquitto&lt;br /&gt;
** Password: &amp;lt;redacted&amp;gt;&lt;br /&gt;
** Next (until finished).&lt;br /&gt;
** It may ask you to reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Saltsentry-connected.png|border|300px|right]]&lt;br /&gt;
===Salt Sentry===&lt;br /&gt;
Configure the [https://github.com/Lemcke-solutions/SaltSentryManuals device per the manual]. On its settings page set:&lt;br /&gt;
&lt;br /&gt;
* mqtt server: &amp;lt;ip of your home assistant server&amp;gt;&lt;br /&gt;
* mqtt username: mosquitto&lt;br /&gt;
* mqtt password: &amp;lt;redacted, same as MQTT&amp;gt;&lt;br /&gt;
* mqtt topic: saltsentry&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have this in, the Salt Sentry should finally show as connected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Mqtt-homeassistant.png|border|300px|right]]&lt;br /&gt;
Do a sanity check.&lt;br /&gt;
* Settings -&amp;gt; [http://homeassistant.local:8123/config/integrations Devices and Services] -&amp;gt; MQTT Configure&lt;br /&gt;
** Listen to a topic: saltsentry&lt;br /&gt;
** Start Listening&lt;br /&gt;
&lt;br /&gt;
You should see a message received at the current timestamp.&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Mosquito-settings.png&amp;diff=390</id>
		<title>File:Mosquito-settings.png</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Mosquito-settings.png&amp;diff=390"/>
		<updated>2023-01-28T21:07:41Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Saltsentry-connected.png&amp;diff=389</id>
		<title>File:Saltsentry-connected.png</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Saltsentry-connected.png&amp;diff=389"/>
		<updated>2023-01-28T21:07:41Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Mqtt-homeassistant.png&amp;diff=388</id>
		<title>File:Mqtt-homeassistant.png</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Mqtt-homeassistant.png&amp;diff=388"/>
		<updated>2023-01-28T21:07:41Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Home_Assistant:_Configuring_%22Salt_Sentry%22_using_MQTT_protocol&amp;diff=387</id>
		<title>Home Assistant: Configuring &quot;Salt Sentry&quot; using MQTT protocol</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Home_Assistant:_Configuring_%22Salt_Sentry%22_using_MQTT_protocol&amp;diff=387"/>
		<updated>2023-01-28T21:01:02Z</updated>

		<summary type="html">&lt;p&gt;Falz: Created page with &amp;quot;Category:Dev Category:Unix  ===Background=== About a week ago I had never heard of Home Assistant, Salt Sentry, nor MQTT.  Just before that, I replaced a water softene...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Dev]]&lt;br /&gt;
[[Category:Unix]]&lt;br /&gt;
&lt;br /&gt;
===Background===&lt;br /&gt;
About a week ago I had never heard of Home Assistant, Salt Sentry, nor MQTT.&lt;br /&gt;
&lt;br /&gt;
Just before that, I replaced a water softener. This reminded me that you also have to add salt to said water softener. This reminded me that I never remember, and would like to know, automatically, what the level is and if I need to add more.&lt;br /&gt;
&lt;br /&gt;
A bit of googling revealed a few home dev style solutions (buy some parts, solder some things) but the most complete of these appeared to be a product called &amp;quot;[https://www.tindie.com/products/ErikLemcke/salt-sentry-water-softener-monitor/ Salt Sentry]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
It works by using a small software development board which contains a [https://www.st.com/en/imaging-and-photonics-solutions/vl53l0x.html VL53L0X] sensor which is some magical device that can measure distance with accuracy of 2mm when just pointing it into the ether. 🤷 cool.&lt;br /&gt;
&lt;br /&gt;
To use this, you need to integrate it with something else, there are a few options, but the most popular one seemed to be called &amp;quot;Home Assistant&amp;quot;. While I was waiting for the Salt Sentry to arrive, i thought I&#039;d get ahead of things and install Home Assistant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Home Assistant ===&lt;br /&gt;
[https://www.home-assistant.io/ Home Assistant] ([https://en.wikipedia.org/wiki/Home_Assistant wikipedia]) is something one can run on a Raspberry Pi or other similar hardware. I happened to have a few Pi&#039;s laying around unused so i thought I&#039;d give it a shot:&lt;br /&gt;
&lt;br /&gt;
{{Quote|&amp;quot;Home Assistant is free and open-source software for home automation designed to be a central control system for smart home devices with a focus on local control and privacy.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
I ended up installing this by [https://www.home-assistant.io/installation/ downloading] and using `dd` to image it to an SD card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dd if=haos_rpi3-64-9.4.img of=/dev/sdb bs=4M &amp;amp;&amp;amp; sync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plug it in, boot it up, and i highly recommend creating a local DNS record for &#039;homeassistant.local&#039; as most of the docs use that and may even link to it. [https://www.home-assistant.io/getting-started/ Configuring it] is outside of the scope of this page but it&#039;s pretty simple.&lt;br /&gt;
&lt;br /&gt;
On its own with no config it auto discovered some Devices, which it calls &amp;quot;Integrations&amp;quot; on its own:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Ecobee thermostat + remote sensor&lt;br /&gt;
* ROKU&lt;br /&gt;
* Onkyo A/V receiver&lt;br /&gt;
* Outdoor Weather&lt;br /&gt;
* Mobile phone (once app installed)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All of this was super easy, didn&#039;t require any CLI changes, it just was clicky clicky from a quick web UI. Cool, that&#039;ll be the same with MQTT too? no.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MQTT===&lt;br /&gt;
[https://www.home-assistant.io/docs/mqtt/ MQTT] ([https://en.wikipedia.org/wiki/MQTT wikipedia] stands for &amp;quot;MQ Telemetry Transport&amp;quot;. What does MQ stand for? Apparently it came from IBM thing called &amp;quot;MQSeries&amp;quot; where it stood for Message Queing, wikipedia says it stands for nothing. We&#039;re off to a great start.&lt;br /&gt;
&lt;br /&gt;
If you go to Settings -&amp;gt; Devices and Services -&amp;gt; [http://homeassistant.local:8123/config/integrations Integrations] and choose to add MQTT, it just asks for your broker and you&#039;re just kinda stuck.&lt;br /&gt;
&lt;br /&gt;
To use MQTT with Home Assitant, you must use something called &amp;quot;[https://github.com/home-assistant/addons/tree/master/mosquitto Mosquitto Broker]&amp;quot;. Why? I don&#039;t know, but you need it. Install it from Settings -&amp;gt; [http://homeassistant.local:8123/hassio/dashboard Add-Ons] -&amp;gt; Add-on store. It will take several minutes to install. I would recommend rebooting after as well.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed.. this is where you hit question marks. What&#039;s next? [https://github.com/home-assistant/addons/blob/master/mosquitto/DOCS.md The docs] just say that it should show up as a discovered integraiton, but it didn&#039;t for me. So I rebooted Home Assistant, and then MQTT appeared as discovered after a bit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Salt Sentry===&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Template:Quote&amp;diff=386</id>
		<title>Template:Quote</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Template:Quote&amp;diff=386"/>
		<updated>2023-01-28T20:37:00Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;blockquote style=&amp;quot;color: lightgrey; border: none;&amp;quot;&amp;gt;&lt;br /&gt;
    {{{1}}}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Template:Quote&amp;diff=385</id>
		<title>Template:Quote</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Template:Quote&amp;diff=385"/>
		<updated>2023-01-28T20:36:13Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;blockquote style=&amp;quot;color: lightgrey; border: solid thin gray;&amp;quot;&amp;gt;&lt;br /&gt;
    {{{1}}}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Template:Quote&amp;diff=384</id>
		<title>Template:Quote</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Template:Quote&amp;diff=384"/>
		<updated>2023-01-28T20:35:28Z</updated>

		<summary type="html">&lt;p&gt;Falz: Created page with &amp;quot;&amp;lt;div style=&amp;quot;background-color: #ddf5eb; border-style: dotted;&amp;quot;&amp;gt; {{{1}}} &amp;lt;/div&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #ddf5eb; border-style: dotted;&amp;quot;&amp;gt;&lt;br /&gt;
{{{1}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Ubuntu_Fix_Annoying_Things&amp;diff=383</id>
		<title>Ubuntu Fix Annoying Things</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Ubuntu_Fix_Annoying_Things&amp;diff=383"/>
		<updated>2022-08-16T11:25:54Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here lies some steps of things to unfuck some default settings from Ubuntu and or its default applications, desktops, etc that I find awful. Note that these are the opinions of someone who expects to mostly navigate by keyboard, and has not used Windows since Win2k or so, primarily switching to XFCE for many years, which mostly has the same behavior of classic windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Why aren&#039;t I still running XFCE then? On my current work laptop - Dell XPS 13 9370 - many things simply didnt work properly - touchpad, power management, etc. After months of frustration and realizing that a coworkers laptop had no issues with stock Ubuntu LTS, I switched, only to find many issues that seem mind bogglingly incorrect. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are my fixes, mainly for my own documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keyboard Shortcuts ===&lt;br /&gt;
&lt;br /&gt;
==== Super+R &amp;quot;Run&amp;quot; Behavior ====&lt;br /&gt;
* Expectation: Mimic Windows &#039;run&#039; behavior with Super (aka windows key) + R Key combo:&lt;br /&gt;
* Reality: nah&lt;br /&gt;
* Fix: Settings -&amp;gt; Keyboard -&amp;gt; Shortcuts, &#039;&#039;&#039;Show the run prompt&#039;&#039;&#039; map to &#039;&#039;&#039;Super+R&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Alt-Tab ====&lt;br /&gt;
* Expectation: Switch between windows including important visual cues (highlight window, show a popup of windows)&lt;br /&gt;
* Reality: By default, it switches between app groups, not windows (like OSX does)&lt;br /&gt;
* Fix: Nothing great, &#039;&#039;&#039;Settings -&amp;gt; Keyboard -&amp;gt; Shortcuts&#039;&#039;&#039;, re-map key to use the &#039;&#039;&#039;Alt-Esc&#039;&#039;&#039; method instead (which highlights borders but does not show pop up)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: Alt-Tab is instant&lt;br /&gt;
* Reality: Ubuntu 18 [http://ubuntuhandbook.org/index.php/2019/08/speed-up-alt-tab-ubuntu-18-04/ introduced intentional lag] because ???&lt;br /&gt;
* Fix: Install and run &#039;&#039;&#039;gnome-tweaks&#039;&#039;&#039;, Extensions -&amp;gt; &#039;&#039;&#039;Alt-Tab switcher popup delay removal: On&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: Alt+Shift+Tab goes back in list&lt;br /&gt;
* Reality: Nah&lt;br /&gt;
* Fix: ??&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UI and Desktop ===&lt;br /&gt;
* Expectation: Touchpad works (this is more of a hw issue with Dell XPS 9730?)&lt;br /&gt;
* Reality: detects palm touches, jumps all over, deletes text:&lt;br /&gt;
* Fix: https://www.dell.com/support/kbdoc/en-ca/000150104/precision-xps-ubuntu-general-touchpad-mouse-issue-fix ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: Moving a window isnt 1fps&lt;br /&gt;
* Reality: It&#039;s slow and laggy, Windows95 was faster&lt;br /&gt;
* Fix: Consider a different display manager such as lubuntu-desktop:&lt;br /&gt;
 sudo apt-get install lubuntu-desktop lubuntu-gtk-core lubuntu-gtk-desktop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: You can see a list of apps&lt;br /&gt;
* Reality: you have to know what apps exist first because you have to start typing it&lt;br /&gt;
* Fix: Use Dash to Panel extension. Install per below, log out/in and then run &#039;&#039;&#039;gnome-tweaks&#039;&#039;&#039;, Extensions -&amp;gt; &#039;&#039;&#039;Applications Menu: On&#039;&#039;&#039;. Makes it win95-like.&lt;br /&gt;
 sudo apt-get install gnome-shell-extensions gnome-shell-extension-dash-to-panel gnome-tweaks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: Have one main menu bar with applications, status icons, etc&lt;br /&gt;
* Reality: Nah here&#039;s a bar on the left and a bar on the top, both containing half of these things and wasting space&lt;br /&gt;
* Fix: Use Dash to Panel extension. Install per below, log out/in and then run &#039;&#039;&#039;gnome-tweaks&#039;&#039;&#039;, Extensions -&amp;gt; &#039;&#039;&#039;Dash to Panel: On&#039;&#039;&#039;. I further went in to settings to move it to the top&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: A suspend button exists, somewhere, literally anywhere&lt;br /&gt;
* Reality: It&#039;s hiding &amp;quot;behind&amp;quot; the power button on the dropdown, visible when one presses &#039;&#039;&#039;alt&#039;&#039;&#039;, and you&#039;d have no way to know this in advance.&lt;br /&gt;
* Fix: Since above is stupid, install [https://extensions.gnome.org/extension/826/suspend-button/ Suspend Button] extension, requires logging off/on or a reboot.&lt;br /&gt;
 sudo apt-get install gnome-shell-extension-suspend-button&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== File manager ===&lt;br /&gt;
* Expectation: When browsing a list of files, start typing to skip to that section of the list instantly&lt;br /&gt;
* Reality: When you start typing it starts doing a filesystem search of your current directory, slowly. Your intended item may or may not be at the top.&lt;br /&gt;
* Fix: Replace the default Nautilus file manager with [https://launchpad.net/~lubomir-brindza/+archive/ubuntu/nautilus-typeahead nautilus-typeahead]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminal ===&lt;br /&gt;
* Expectation: Have reasonable shortcuts to open new tabs, set tab titles, and cycle through them&lt;br /&gt;
* Reality: Nah (cant set tab titles at all), shortctuts are different than expected&lt;br /&gt;
* Fix: Use &#039;&#039;&#039;xfce4-terminal&#039;&#039;&#039; instead&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Ubuntu_Fix_Annoying_Things&amp;diff=382</id>
		<title>Ubuntu Fix Annoying Things</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Ubuntu_Fix_Annoying_Things&amp;diff=382"/>
		<updated>2022-08-15T13:28:23Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here lies some steps of things to unfuck some default settings from Ubuntu and or its default applications, desktops, etc that I find awful. Note that these are the opinions of someone who expects to mostly navigate by keyboard, and has not used Windows since Win2k or so, primarily switching to XFCE for many years, which mostly has the same behavior of classic windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Why aren&#039;t I still running XFCE then? On my current work laptop - Dell XPS 13 9370 - many things simply didnt work properly - touchpad, power management, etc. After months of frustration and realizing that a coworkers laptop had no issues with stock Ubuntu LTS, I switched, only to find many issues that seem mind bogglingly incorrect. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are my fixes, mainly for my own documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keyboard Shortcuts ===&lt;br /&gt;
&lt;br /&gt;
==== Super+R &amp;quot;Run&amp;quot; Behavior ====&lt;br /&gt;
* Expectation: Mimic Windows &#039;run&#039; behavior with Super (aka windows key) + R Key combo:&lt;br /&gt;
* Reality: nah&lt;br /&gt;
* Fix: Settings -&amp;gt; Keyboard -&amp;gt; Shortcuts, &#039;&#039;&#039;Show the run prompt&#039;&#039;&#039; map to &#039;&#039;&#039;Super+R&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Alt-Tab ====&lt;br /&gt;
* Expectation: Switch between windows including important visual cues (highlight window, show a popup of windows)&lt;br /&gt;
* Reality: By default, it switches between app groups, not windows (like OSX does)&lt;br /&gt;
* Fix: Nothing great, &#039;&#039;&#039;Settings -&amp;gt; Keyboard -&amp;gt; Shortcuts&#039;&#039;&#039;, re-map key to use the &#039;&#039;&#039;Alt-Esc&#039;&#039;&#039; method instead (which highlights borders but does not show pop up)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: Alt-Tab is instant&lt;br /&gt;
* Reality: Ubuntu 18 [http://ubuntuhandbook.org/index.php/2019/08/speed-up-alt-tab-ubuntu-18-04/ introduced intentional lag] because ???&lt;br /&gt;
* Fix: Install and run &#039;&#039;&#039;gnome-tweaks&#039;&#039;&#039;, Extensions -&amp;gt; &#039;&#039;&#039;Alt-Tab switcher popup delay removal: On&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: Alt+Shift+Tab goes back in list&lt;br /&gt;
* Reality: Nah&lt;br /&gt;
* Fix: ??&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UI and Desktop ===&lt;br /&gt;
* Expectation: Moving a window isnt 1fps&lt;br /&gt;
* Reality: It&#039;s slow and laggy, Windows95 was faster&lt;br /&gt;
* Fix: Consider a different display manager such as lubuntu-desktop:&lt;br /&gt;
 sudo apt-get install lubuntu-desktop lubuntu-gtk-core lubuntu-gtk-desktop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: You can see a list of apps&lt;br /&gt;
* Reality: you have to know what apps exist first because you have to start typing it&lt;br /&gt;
* Fix: Use Dash to Panel extension. Install per below, log out/in and then run &#039;&#039;&#039;gnome-tweaks&#039;&#039;&#039;, Extensions -&amp;gt; &#039;&#039;&#039;Applications Menu: On&#039;&#039;&#039;. Makes it win95-like.&lt;br /&gt;
 sudo apt-get install gnome-shell-extensions gnome-shell-extension-dash-to-panel gnome-tweaks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: Have one main menu bar with applications, status icons, etc&lt;br /&gt;
* Reality: Nah here&#039;s a bar on the left and a bar on the top, both containing half of these things and wasting space&lt;br /&gt;
* Fix: Use Dash to Panel extension. Install per below, log out/in and then run &#039;&#039;&#039;gnome-tweaks&#039;&#039;&#039;, Extensions -&amp;gt; &#039;&#039;&#039;Dash to Panel: On&#039;&#039;&#039;. I further went in to settings to move it to the top&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Expectation: A suspend button exists, somewhere, literally anywhere&lt;br /&gt;
* Reality: It&#039;s hiding &amp;quot;behind&amp;quot; the power button on the dropdown, visible when one presses &#039;&#039;&#039;alt&#039;&#039;&#039;, and you&#039;d have no way to know this in advance.&lt;br /&gt;
* Fix: Since above is stupid, install [https://extensions.gnome.org/extension/826/suspend-button/ Suspend Button] extension, requires logging off/on or a reboot.&lt;br /&gt;
 sudo apt-get install gnome-shell-extension-suspend-button&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== File manager ===&lt;br /&gt;
* Expectation: When browsing a list of files, start typing to skip to that section of the list instantly&lt;br /&gt;
* Reality: When you start typing it starts doing a filesystem search of your current directory, slowly. Your intended item may or may not be at the top.&lt;br /&gt;
* Fix: Replace the default Nautilus file manager with [https://launchpad.net/~lubomir-brindza/+archive/ubuntu/nautilus-typeahead nautilus-typeahead]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Terminal ===&lt;br /&gt;
* Expectation: Have reasonable shortcuts to open new tabs, set tab titles, and cycle through them&lt;br /&gt;
* Reality: Nah (cant set tab titles at all), shortctuts are different than expected&lt;br /&gt;
* Fix: Use &#039;&#039;&#039;xfce4-terminal&#039;&#039;&#039; instead&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=PowerDNS:_use_dnsdist_to_send_NOTIFY_packets_to_hidden_primary&amp;diff=381</id>
		<title>PowerDNS: use dnsdist to send NOTIFY packets to hidden primary</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=PowerDNS:_use_dnsdist_to_send_NOTIFY_packets_to_hidden_primary&amp;diff=381"/>
		<updated>2021-11-15T12:05:43Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Overview===&lt;br /&gt;
This shows how to use [https://dnsdist.org/ dnsdist], which is a dns proxy from the good folks at [https://www.powerdns.com/ PowerDNS]&lt;br /&gt;
&lt;br /&gt;
The use case here is a DNS layout which has 3 servers&lt;br /&gt;
* ns0 - hidden primary (formerly known as master). &lt;br /&gt;
* ns1 / ns2 - nameservers in use, listed on whois records.&lt;br /&gt;
&lt;br /&gt;
This is using the MySQL backend with MariaDB replication, so ns0 is the only one that can write to the database. ns1/ns2 intentionally have read only MySQL passwords.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The Issue===&lt;br /&gt;
This all would work fine if all zones you host are NATIVE powerdns format, in that you use MySQL replication to get data to sync between servers. The issue arises if you are SECONDARY (formerly known as slave) to zones, where the PRIMARY is out of your control.&lt;br /&gt;
&lt;br /&gt;
Primary servers will follow [https://datatracker.ietf.org/doc/html/rfc1996 RFC1996] and send NOTIFY packets to ns1/ns2 as they&#039;re the NS records on the domain. Those servers are ready only, so what can they do with said packets? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The Fix===&lt;br /&gt;
dnsdist can be setup [https://en.wikipedia.org/wiki/EDNS_Client_Subnet EDNS Client Subject (ECS) extensions] to forward the packets to the hidden primary. Without ECS, the packets are not spoofed so stats on the target server will just show a lot of source packets coming from your nameservers, NOT the original source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks to everyone in the [https://www.powerdns.com/opensource.html PowerDNS IRC channel] to help figure this all out. (Yes IRC still exists)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our Layout is&lt;br /&gt;
* ns0 - powerdns running natively on port 53. The primary DNS server must allow AXFR from this IP as we&#039;re not doing anything special to reroute this request back via ns1/ns2.&lt;br /&gt;
* ns1 / ns2 - powerdns running on port 5353, i&#039;ve left this on the public ip but firewalled off so we can query it directly, remotely. dnsdist is running on 53.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====PowerDNS Config====&lt;br /&gt;
PowerDNS is running on a nonstandard port on the public nameservers ns1/ns2. primary=no and secondary=no are set as ns1/ns2 should not process NOTIFY requests as they have read only SQL access to their databases.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Relevant contents of &#039;&#039;/etc/pdns/pdns.conf&#039;&#039;: on ns1/ns2&lt;br /&gt;
 local-port=5353&lt;br /&gt;
 edns-subnet-processing=yes&lt;br /&gt;
 trusted-notification-proxy=10.20.108.53, 2001:db80:108:1::53, 10.30.163.53, 2001:db80:2:163::53&lt;br /&gt;
 primary=no&lt;br /&gt;
 secondary=no &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== dnsdist Config ====&lt;br /&gt;
This dnsdist config is slightly longer than it may need to be, but I wanted to keep ipv4 and ipv6 traffic separate. By default, pools can send ipv6 clients to an ipv4 pool and vice versa. I wanted to have better tabs on what real level of ipv4/ipv6 traffic was coming in.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I find the web interface to be incredibly useful to troubleshoot real time as well, so left that part in as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Entire contents of &#039;&#039;/etc/dnsdist/dnsdist.conf&#039;&#039;. This may be harder to read as we&#039;re using Lua variables which makes it easier to copy between servers. (variable string concatenation in lua is the &#039;&#039;.. &#039;:&#039; ..&#039;&#039; stuff)&lt;br /&gt;
&lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
 -- BEGIN CONFIG OPTIONS&lt;br /&gt;
 my_v4 = &amp;quot;10.20.163.53&amp;quot;&lt;br /&gt;
 my_v6 = &amp;quot;[2001:0db8:163::53]&amp;quot;&lt;br /&gt;
 my_port_dnsdist = &amp;quot;53&amp;quot;&lt;br /&gt;
 my_port_powerdns = &amp;quot;5353&amp;quot;&lt;br /&gt;
 my_port_web = &amp;quot;8083&amp;quot;&lt;br /&gt;
 my_pass_web_user = &amp;quot;&amp;lt;redacted&amp;gt;&amp;quot;&lt;br /&gt;
 my_pass_web_api = &amp;quot;&amp;lt;redacted&amp;gt;&amp;quot;&lt;br /&gt;
 my_web_sources = &amp;quot;10.10.47.0/24, !192.0.2.1&amp;quot;&lt;br /&gt;
 -- where is the real ns0 server&lt;br /&gt;
 ns0_v4 = &amp;quot;10.20.18.53&amp;quot;&lt;br /&gt;
 ns0_v6 = &amp;quot;[2001:0db8:18::53]&amp;quot;&lt;br /&gt;
 -- END CONFIG OPTIONS&lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
 -- STATIC SETTINGS, KEEP SAME ON NS1/NS2&lt;br /&gt;
 &lt;br /&gt;
 -- which IPs may query us, all types&lt;br /&gt;
 setACL({&#039;0.0.0.0/0&#039;, &#039;::/0&#039;})&lt;br /&gt;
  &lt;br /&gt;
 setLocal(my_v4 .. &#039;:&#039; .. my_port_dnsdist)&lt;br /&gt;
 addLocal(my_v6 .. &#039;:&#039; .. my_port_dnsdist)&lt;br /&gt;
  &lt;br /&gt;
 -- Webserver has useful stats, comment to not use it&lt;br /&gt;
 setWebserverConfig({password=my_pass_web_user, apiKey=my_pass_web_api, acl=my_web_sources, statsRequireAuthentication=TRUE})&lt;br /&gt;
 webserver(my_v4 .. &#039;:&#039; .. my_port_web)&lt;br /&gt;
  &lt;br /&gt;
 -- load balance policy to use. Doesn&#039;t do much if only a single server in pool, if commented it uses &amp;quot;leastOutstanding&amp;quot;&lt;br /&gt;
 -- setServerPolicy(firstAvailable)&lt;br /&gt;
  &lt;br /&gt;
 -- local powerdns service&lt;br /&gt;
 newServer({address=my_v4 .. &#039;:&#039; .. my_port_powerdns, source=my_v4, name=&#039;self_v4&#039;, pool=&#039;self_v4&#039;, order=1})&lt;br /&gt;
 newServer({address=my_v6 .. &#039;:&#039; .. my_port_powerdns, source=my_v6, name=&#039;self_v6&#039;, pool=&#039;self_v6&#039;, order=1})&lt;br /&gt;
  &lt;br /&gt;
 -- create &amp;quot;ns0&amp;quot; server pool, which supports ECS. last 3 flags below enable ECS from dnsdist&lt;br /&gt;
 newServer({address=ns0_v4 .. &#039;:53&#039;, source=my_v4, name=&amp;quot;ns0_v4&amp;quot;, pool=&amp;quot;ns0_v4&amp;quot;, useClientSubnet=true, setECSSourcePrefixV4(32), setECSSourcePrefixV6(128) })&lt;br /&gt;
 newServer({address=ns0_v6 .. &#039;:53&#039;, source=my_v6, name=&amp;quot;ns0_v6&amp;quot;, pool=&amp;quot;ns0_v6&amp;quot;, useClientSubnet=true, setECSSourcePrefixV4(32), setECSSourcePrefixV6(128) })&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
 -- BEGIN NOTIFY REQUESTS&lt;br /&gt;
  &lt;br /&gt;
 -- rule to send ALL NOTIFY packets. Here as a backup since we&#039;re using the next rule&lt;br /&gt;
 addAction(AndRule({&lt;br /&gt;
     makeRule(&#039;0.0.0.0/0&#039;),&lt;br /&gt;
     OpcodeRule(DNSOpcode.Notify),&lt;br /&gt;
     }),&lt;br /&gt;
     PoolAction(&#039;ns0_v4&#039;)&lt;br /&gt;
 )&lt;br /&gt;
 addAction(AndRule({&lt;br /&gt;
     makeRule(&#039;::/0&#039;),&lt;br /&gt;
     OpcodeRule(DNSOpcode.Notify),&lt;br /&gt;
     }),&lt;br /&gt;
     PoolAction(&#039;ns0_v6&#039;)&lt;br /&gt;
 )&lt;br /&gt;
  &lt;br /&gt;
 -- END NOTIFY REQUESTS&lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
  &lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
 -- NORMAL TRAFFIC leave at end of file&lt;br /&gt;
  &lt;br /&gt;
 addAction(makeRule(&#039;0.0.0.0/0&#039;), PoolAction(&#039;self_v4&#039;))&lt;br /&gt;
 addAction(makeRule(&#039;::/0&#039;),      PoolAction(&#039;self_v6&#039;))&lt;br /&gt;
  &lt;br /&gt;
 -- these should never get hit, but just in case&lt;br /&gt;
 addAction(AllRule(), PoolAction(&#039;self_v4&#039;))&lt;br /&gt;
 addAction(AllRule(), PoolAction(&#039;self_v6&#039;))&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=PowerDNS:_use_dnsdist_to_send_NOTIFY_packets_to_hidden_primary&amp;diff=380</id>
		<title>PowerDNS: use dnsdist to send NOTIFY packets to hidden primary</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=PowerDNS:_use_dnsdist_to_send_NOTIFY_packets_to_hidden_primary&amp;diff=380"/>
		<updated>2021-08-04T13:23:55Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Overview===&lt;br /&gt;
This shows how to use [https://dnsdist.org/ dnsdist], which is a dns proxy from the good folks at [https://www.powerdns.com/ PowerDNS]&lt;br /&gt;
&lt;br /&gt;
The use case here is a DNS layout which has 3 servers&lt;br /&gt;
* ns0 - hidden primary (formerly known as master). &lt;br /&gt;
* ns1 / ns2 - nameservers in use, listed on whois records.&lt;br /&gt;
&lt;br /&gt;
This is using the MySQL backend with MariaDB replication, so ns0 is the only one that can write to the database. ns1/ns2 intentionally have read only MySQL passwords.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The Issue===&lt;br /&gt;
This all would work fine if all zones you host are NATIVE powerdns format, in that you use MySQL replication to get data to sync between servers. The issue arises if you are SECONDARY (formerly known as slave) to zones, where the PRIMARY is out of your control.&lt;br /&gt;
&lt;br /&gt;
Primary servers will follow [https://datatracker.ietf.org/doc/html/rfc1996 RFC1996] and send NOTIFY packets to ns1/ns2 as they&#039;re the NS records on the domain. Those servers are ready only, so what can they do with said packets? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The Fix===&lt;br /&gt;
dnsdist can be setup [https://en.wikipedia.org/wiki/EDNS_Client_Subnet EDNS Client Subject (ECS) extensions] to forward the packets to the hidden primary. Without ECS, the packets are not spoofed so stats on the target server will just show a lot of source packets coming from your nameservers, NOT the original source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks to everyone in the [https://www.powerdns.com/opensource.html PowerDNS IRC channel] to help figure this all out. (Yes IRC still exists)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our Layout is&lt;br /&gt;
* ns0 - powerdns running natively on port 53. The primary DNS server must allow AXFR from this IP as we&#039;re not doing anything special to reroute this request back via ns1/ns2.&lt;br /&gt;
* ns1 / ns2 - powerdns running on port 5353, i&#039;ve left this on the public ip but firewalled off so we can query it directly, remotely. dnsdist is running on 53.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====PowerDNS Config====&lt;br /&gt;
PowerDNS is running on a nonstandard port on the public nameservers ns1/ns2. primary=yes is still set here as it has to send DNS notifies on zones where we&#039;re PRIMARY (not NATIVE or SECONDARY), which isn&#039;t covered here. secondary=no is set as it should not process NOTIFY requests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Relevant contents of &#039;&#039;/etc/pdns/pdns.conf&#039;&#039;: on ns1/ns2&lt;br /&gt;
 local-port=5353&lt;br /&gt;
 edns-subnet-processing=yes&lt;br /&gt;
 trusted-notification-proxy=10.20.108.53, 2001:db80:108:1::53, 10.30.163.53, 2001:db80:2:163::53&lt;br /&gt;
 primary=yes&lt;br /&gt;
 secondary=no &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== dnsdist Config ====&lt;br /&gt;
This dnsdist config is slightly longer than it may need to be, but I wanted to keep ipv4 and ipv6 traffic separate. By default, pools can send ipv6 clients to an ipv4 pool and vice versa. I wanted to have better tabs on what real level of ipv4/ipv6 traffic was coming in.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I find the web interface to be incredibly useful to troubleshoot real time as well, so left that part in as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Entire contents of &#039;&#039;/etc/dnsdist/dnsdist.conf&#039;&#039;. This may be harder to read as we&#039;re using Lua variables which makes it easier to copy between servers. (variable string concatenation in lua is the &#039;&#039;.. &#039;:&#039; ..&#039;&#039; stuff)&lt;br /&gt;
&lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
 -- BEGIN CONFIG OPTIONS&lt;br /&gt;
 my_v4 = &amp;quot;10.20.163.53&amp;quot;&lt;br /&gt;
 my_v6 = &amp;quot;[2001:0db8:163::53]&amp;quot;&lt;br /&gt;
 my_port_dnsdist = &amp;quot;53&amp;quot;&lt;br /&gt;
 my_port_powerdns = &amp;quot;5353&amp;quot;&lt;br /&gt;
 my_port_web = &amp;quot;8083&amp;quot;&lt;br /&gt;
 my_pass_web_user = &amp;quot;&amp;lt;redacted&amp;gt;&amp;quot;&lt;br /&gt;
 my_pass_web_api = &amp;quot;&amp;lt;redacted&amp;gt;&amp;quot;&lt;br /&gt;
 my_web_sources = &amp;quot;10.10.47.0/24, !192.0.2.1&amp;quot;&lt;br /&gt;
 -- where is the real ns0 server&lt;br /&gt;
 ns0_v4 = &amp;quot;10.20.18.53&amp;quot;&lt;br /&gt;
 ns0_v6 = &amp;quot;[2001:0db8:18::53]&amp;quot;&lt;br /&gt;
 -- END CONFIG OPTIONS&lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
 -- STATIC SETTINGS, KEEP SAME ON NS1/NS2&lt;br /&gt;
 &lt;br /&gt;
 -- which IPs may query us, all types&lt;br /&gt;
 setACL({&#039;0.0.0.0/0&#039;, &#039;::/0&#039;})&lt;br /&gt;
  &lt;br /&gt;
 setLocal(my_v4 .. &#039;:&#039; .. my_port_dnsdist)&lt;br /&gt;
 addLocal(my_v6 .. &#039;:&#039; .. my_port_dnsdist)&lt;br /&gt;
  &lt;br /&gt;
 -- Webserver has useful stats, comment to not use it&lt;br /&gt;
 setWebserverConfig({password=my_pass_web_user, apiKey=my_pass_web_api, acl=my_web_sources, statsRequireAuthentication=TRUE})&lt;br /&gt;
 webserver(my_v4 .. &#039;:&#039; .. my_port_web)&lt;br /&gt;
  &lt;br /&gt;
 -- load balance policy to use. Doesn&#039;t do much if only a single server in pool, if commented it uses &amp;quot;leastOutstanding&amp;quot;&lt;br /&gt;
 -- setServerPolicy(firstAvailable)&lt;br /&gt;
  &lt;br /&gt;
 -- local powerdns service&lt;br /&gt;
 newServer({address=my_v4 .. &#039;:&#039; .. my_port_powerdns, source=my_v4, name=&#039;self_v4&#039;, pool=&#039;self_v4&#039;, order=1})&lt;br /&gt;
 newServer({address=my_v6 .. &#039;:&#039; .. my_port_powerdns, source=my_v6, name=&#039;self_v6&#039;, pool=&#039;self_v6&#039;, order=1})&lt;br /&gt;
  &lt;br /&gt;
 -- create &amp;quot;ns0&amp;quot; server pool, which supports ECS. last 3 flags below enable ECS from dnsdist&lt;br /&gt;
 newServer({address=ns0_v4 .. &#039;:53&#039;, source=my_v4, name=&amp;quot;ns0_v4&amp;quot;, pool=&amp;quot;ns0_v4&amp;quot;, useClientSubnet=true, setECSSourcePrefixV4(32), setECSSourcePrefixV6(128) })&lt;br /&gt;
 newServer({address=ns0_v6 .. &#039;:53&#039;, source=my_v6, name=&amp;quot;ns0_v6&amp;quot;, pool=&amp;quot;ns0_v6&amp;quot;, useClientSubnet=true, setECSSourcePrefixV4(32), setECSSourcePrefixV6(128) })&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
 -- BEGIN NOTIFY REQUESTS&lt;br /&gt;
  &lt;br /&gt;
 -- rule to send ALL NOTIFY packets. Here as a backup since we&#039;re using the next rule&lt;br /&gt;
 addAction(AndRule({&lt;br /&gt;
     makeRule(&#039;0.0.0.0/0&#039;),&lt;br /&gt;
     OpcodeRule(DNSOpcode.Notify),&lt;br /&gt;
     }),&lt;br /&gt;
     PoolAction(&#039;ns0_v4&#039;)&lt;br /&gt;
 )&lt;br /&gt;
 addAction(AndRule({&lt;br /&gt;
     makeRule(&#039;::/0&#039;),&lt;br /&gt;
     OpcodeRule(DNSOpcode.Notify),&lt;br /&gt;
     }),&lt;br /&gt;
     PoolAction(&#039;ns0_v6&#039;)&lt;br /&gt;
 )&lt;br /&gt;
  &lt;br /&gt;
 -- END NOTIFY REQUESTS&lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
  &lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
 -- NORMAL TRAFFIC leave at end of file&lt;br /&gt;
  &lt;br /&gt;
 addAction(makeRule(&#039;0.0.0.0/0&#039;), PoolAction(&#039;self_v4&#039;))&lt;br /&gt;
 addAction(makeRule(&#039;::/0&#039;),      PoolAction(&#039;self_v6&#039;))&lt;br /&gt;
  &lt;br /&gt;
 -- these should never get hit, but just in case&lt;br /&gt;
 addAction(AllRule(), PoolAction(&#039;self_v4&#039;))&lt;br /&gt;
 addAction(AllRule(), PoolAction(&#039;self_v6&#039;))&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=PowerDNS:_use_dnsdist_to_send_NOTIFY_packets_to_hidden_primary&amp;diff=379</id>
		<title>PowerDNS: use dnsdist to send NOTIFY packets to hidden primary</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=PowerDNS:_use_dnsdist_to_send_NOTIFY_packets_to_hidden_primary&amp;diff=379"/>
		<updated>2021-08-03T16:31:01Z</updated>

		<summary type="html">&lt;p&gt;Falz: Created page with &amp;quot;===Overview=== This shows how to use [https://dnsdist.org/ dnsdist], which is a dns proxy from the good folks at [https://www.powerdns.com/ PowerDNS]  The use case here is a D...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Overview===&lt;br /&gt;
This shows how to use [https://dnsdist.org/ dnsdist], which is a dns proxy from the good folks at [https://www.powerdns.com/ PowerDNS]&lt;br /&gt;
&lt;br /&gt;
The use case here is a DNS layout which has 3 servers&lt;br /&gt;
* ns0 - hidden primary (formerly known as master)&lt;br /&gt;
* ns1 / ns2 - nameservers in use, listed on whois records.&lt;br /&gt;
&lt;br /&gt;
This is using the MySQL backend with MariaDB replication, so ns0 is the only one that can write to the database. ns1/ns2 intentionally have read only MySQL passwords.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The Issue===&lt;br /&gt;
This all would work fine if all zones you host are NATIVE powerdns format, in that you use MySQL replication to get data to sync between servers. The issue arises if you are SECONDARY (formerly known as slave) to zones, where the PRIMARY is out of your control.&lt;br /&gt;
&lt;br /&gt;
Primary servers will follow [https://datatracker.ietf.org/doc/html/rfc1996 RFC1996] and send NOTIFY packets to ns1/ns2 as they&#039;re the NS records on the domain. Those servers are ready only, so what can they do with said packets? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The Fix===&lt;br /&gt;
dnsdist can be setup [https://en.wikipedia.org/wiki/EDNS_Client_Subnet EDNS Client Subject (ECS) extensions] to forward the packets to the hidden primary. Without ECS, the packets are not spoofed so stats on the target server will just show a lot of source packets coming from your nameservers, NOT the original source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks to everyone in the [https://www.powerdns.com/opensource.html PowerDNS IRC channel] to help figure this all out. (Yes IRC still exists)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our Layout is&lt;br /&gt;
* ns0 - powerdns running natively on port 53&lt;br /&gt;
* ns1 / ns2 - powerdns running on port 5353, i&#039;ve left this on the public ip but firewalled off so we can query it directly, remotely. dnsdist is running on 53.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====PowerDNS Config====&lt;br /&gt;
PowerDNS is running on a nonstandard port on the public nameservers ns1/ns2. primary=yes is still set here as it has to send DNS notifies on zones where we&#039;re PRIMARY (not NATIVE or SECONDARY), which isn&#039;t covered here. secondary=no is set as it should not process NOTIFY requests.&lt;br /&gt;
&lt;br /&gt;
* Relevant contents of &#039;&#039;/etc/pdns/pdns.conf&#039;&#039;: on ns1/ns2&lt;br /&gt;
 local-port=5353&lt;br /&gt;
 edns-subnet-processing=yes&lt;br /&gt;
 trusted-notification-proxy=10.20.108.53, 2001:db80:108:1::53, 10.30.163.53, 2001:db80:2:163::53&lt;br /&gt;
 primary=yes&lt;br /&gt;
 secondary=no &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== dnsdist Config ====&lt;br /&gt;
This dnsdist config is slightly longer than it may need to be, but I wanted to keep ipv4 and ipv6 traffic separate. By default, pools can send ipv6 clients to an ipv4 pool and vice versa. I wanted to have better tabs on what real level of ipv4/ipv6 traffic was coming in.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I find the web interface to be incredibly useful to troubleshoot real time as well, so left that part in as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Entire contents of &#039;&#039;/etc/dnsdist/dnsdist.conf&#039;&#039;. This may be harder to read as we&#039;re using Lua variables which makes it easier to copy between servers. (variable string concatenation in lua is the &#039;&#039;.. &#039;:&#039; ..&#039;&#039; stuff)&lt;br /&gt;
&lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
 -- BEGIN CONFIG OPTIONS&lt;br /&gt;
 my_v4 = &amp;quot;10.20.163.53&amp;quot;&lt;br /&gt;
 my_v6 = &amp;quot;[2001:0db8:163::53]&amp;quot;&lt;br /&gt;
 my_port_dnsdist = &amp;quot;53&amp;quot;&lt;br /&gt;
 my_port_powerdns = &amp;quot;5353&amp;quot;&lt;br /&gt;
 my_port_web = &amp;quot;8083&amp;quot;&lt;br /&gt;
 my_pass_web_user = &amp;quot;&amp;lt;redacted&amp;gt;&amp;quot;&lt;br /&gt;
 my_pass_web_api = &amp;quot;&amp;lt;redacted&amp;gt;&amp;quot;&lt;br /&gt;
 my_web_sources = &amp;quot;10.10.47.0/24, !192.0.2.1&amp;quot;&lt;br /&gt;
 -- where is the real ns0 server&lt;br /&gt;
 ns0_v4 = &amp;quot;10.20.18.53&amp;quot;&lt;br /&gt;
 ns0_v6 = &amp;quot;[2001:0db8:18::53]&amp;quot;&lt;br /&gt;
 -- END CONFIG OPTIONS&lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
 -- STATIC SETTINGS, KEEP SAME ON NS1/NS2&lt;br /&gt;
 &lt;br /&gt;
 -- which IPs may query us, all types&lt;br /&gt;
 setACL({&#039;0.0.0.0/0&#039;, &#039;::/0&#039;})&lt;br /&gt;
  &lt;br /&gt;
 setLocal(my_v4 .. &#039;:&#039; .. my_port_dnsdist)&lt;br /&gt;
 addLocal(my_v6 .. &#039;:&#039; .. my_port_dnsdist)&lt;br /&gt;
  &lt;br /&gt;
 -- Webserver has useful stats, comment to not use it&lt;br /&gt;
 setWebserverConfig({password=my_pass_web_user, apiKey=my_pass_web_api, acl=my_web_sources, statsRequireAuthentication=TRUE})&lt;br /&gt;
 webserver(my_v4 .. &#039;:&#039; .. my_port_web)&lt;br /&gt;
  &lt;br /&gt;
 -- load balance policy to use. Doesn&#039;t do much if only a single server in pool, if commented it uses &amp;quot;leastOutstanding&amp;quot;&lt;br /&gt;
 -- setServerPolicy(firstAvailable)&lt;br /&gt;
  &lt;br /&gt;
 -- local powerdns service&lt;br /&gt;
 newServer({address=my_v4 .. &#039;:&#039; .. my_port_powerdns, source=my_v4, name=&#039;self_v4&#039;, pool=&#039;self_v4&#039;, order=1})&lt;br /&gt;
 newServer({address=my_v6 .. &#039;:&#039; .. my_port_powerdns, source=my_v6, name=&#039;self_v6&#039;, pool=&#039;self_v6&#039;, order=1})&lt;br /&gt;
  &lt;br /&gt;
 -- create &amp;quot;ns0&amp;quot; server pool, which supports ECS. last 3 flags below enable ECS from dnsdist&lt;br /&gt;
 newServer({address=ns0_v4 .. &#039;:53&#039;, source=my_v4, name=&amp;quot;ns0_v4&amp;quot;, pool=&amp;quot;ns0_v4&amp;quot;, useClientSubnet=true, setECSSourcePrefixV4(32), setECSSourcePrefixV6(128) })&lt;br /&gt;
 newServer({address=ns0_v6 .. &#039;:53&#039;, source=my_v6, name=&amp;quot;ns0_v6&amp;quot;, pool=&amp;quot;ns0_v6&amp;quot;, useClientSubnet=true, setECSSourcePrefixV4(32), setECSSourcePrefixV6(128) })&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
 -- BEGIN NOTIFY REQUESTS&lt;br /&gt;
  &lt;br /&gt;
 -- rule to send ALL NOTIFY packets. Here as a backup since we&#039;re using the next rule&lt;br /&gt;
 addAction(AndRule({&lt;br /&gt;
     makeRule(&#039;0.0.0.0/0&#039;),&lt;br /&gt;
     OpcodeRule(DNSOpcode.Notify),&lt;br /&gt;
     }),&lt;br /&gt;
     PoolAction(&#039;ns0_v4&#039;)&lt;br /&gt;
 )&lt;br /&gt;
 addAction(AndRule({&lt;br /&gt;
     makeRule(&#039;::/0&#039;),&lt;br /&gt;
     OpcodeRule(DNSOpcode.Notify),&lt;br /&gt;
     }),&lt;br /&gt;
     PoolAction(&#039;ns0_v6&#039;)&lt;br /&gt;
 )&lt;br /&gt;
  &lt;br /&gt;
 -- END NOTIFY REQUESTS&lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
  &lt;br /&gt;
 ------------------------------------------&lt;br /&gt;
 -- NORMAL TRAFFIC leave at end of file&lt;br /&gt;
  &lt;br /&gt;
 addAction(makeRule(&#039;0.0.0.0/0&#039;), PoolAction(&#039;self_v4&#039;))&lt;br /&gt;
 addAction(makeRule(&#039;::/0&#039;),      PoolAction(&#039;self_v6&#039;))&lt;br /&gt;
  &lt;br /&gt;
 -- these should never get hit, but just in case&lt;br /&gt;
 addAction(AllRule(), PoolAction(&#039;self_v4&#039;))&lt;br /&gt;
 addAction(AllRule(), PoolAction(&#039;self_v6&#039;))&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Transfer_data_from_Android_Google_Pixel_with_broken_display_but_working_touch&amp;diff=378</id>
		<title>Transfer data from Android Google Pixel with broken display but working touch</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Transfer_data_from_Android_Google_Pixel_with_broken_display_but_working_touch&amp;diff=378"/>
		<updated>2021-05-11T21:57:47Z</updated>

		<summary type="html">&lt;p&gt;Falz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Issue ==&lt;br /&gt;
The phone screen on my Google Pixel 4a stopped displaying, but the touch sensor still worked. One can long press the power button to turn it off, short press to turn it on. It asks the pin code with a pad on lower half-ish of screen, if careful enough you can enter it to finish booting.&lt;br /&gt;
&lt;br /&gt;
I did this, got a new phone (another Pixel 4a) and wanted to be able to transfer data with a USB C cable between them. Doing so requires you to confirm something on the broken phone. I couldn&#039;t find any screenshots of what it wanted, was pressing all over the right side of the screen but never found it until..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
# Set everything up from scratch. Would have spent a few more hours futzing and come back to this&lt;br /&gt;
# https://www.reddit.com/r/GooglePixel/comments/8zrvlb/how_do_i_transfer_data_from_a_broken_screen/ - Use AirDroid (only works if you already had it installed, which I didn&#039;t)&lt;br /&gt;
# Laptop with ADB command line to control screen - won&#039;t work because phones are directly connected&lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reality ==&lt;br /&gt;
I came to the realization that Google Photos was still auto syncing on this phone. When you unlock, you can get a screenshot with &#039;&#039;VOL- and POWER&#039;&#039;. So the fix was easy - do this, wait a few minutes to it to sync, check https://photos.google.com/, press the area of the screen that seemed right.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
This is Android 11 from May 2021.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=&amp;quot;360px&amp;quot;&amp;gt;&lt;br /&gt;
Pixel1.png|First screen, wait a few minutes here.&lt;br /&gt;
Pixel2.png|Continue from lower right corner&lt;br /&gt;
Pixel3.png|Telling me to do something on working destination phone&lt;br /&gt;
Pixel4.png|&lt;br /&gt;
Pixel5.png|itshappening.gif&lt;br /&gt;
Pixel6.png|Complete&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Pixel6.png&amp;diff=377</id>
		<title>File:Pixel6.png</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Pixel6.png&amp;diff=377"/>
		<updated>2021-05-11T21:56:30Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=Transfer_data_from_Android_Google_Pixel_with_broken_display_but_working_touch&amp;diff=376</id>
		<title>Transfer data from Android Google Pixel with broken display but working touch</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=Transfer_data_from_Android_Google_Pixel_with_broken_display_but_working_touch&amp;diff=376"/>
		<updated>2021-05-11T21:53:24Z</updated>

		<summary type="html">&lt;p&gt;Falz: Created page with &amp;quot;== The Issue == The phone screen on my Google Pixel 4a stopped displaying, but the touch sensor still worked. One can long press the power button to turn it off, short press t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Issue ==&lt;br /&gt;
The phone screen on my Google Pixel 4a stopped displaying, but the touch sensor still worked. One can long press the power button to turn it off, short press to turn it on. It asks the pin code with a pad on lower half-ish of screen, if careful enough you can enter it to finish booting.&lt;br /&gt;
&lt;br /&gt;
I did this, got a new phone (another Pixel 4a) and wanted to be able to transfer data with a USB C cable between them. Doing so requires you to confirm something on the broken phone. I couldn&#039;t find any screenshots of what it wanted, was pressing all over the right side of the screen but never found it until..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
# Set everything up from scratch. Would have spent a few more hours futzing and come back to this&lt;br /&gt;
# https://www.reddit.com/r/GooglePixel/comments/8zrvlb/how_do_i_transfer_data_from_a_broken_screen/ - Use AirDroid (only works if you already had it installed, which I didn&#039;t)&lt;br /&gt;
# Laptop with ADB command line to control screen - won&#039;t work because phones are directly connected&lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reality ==&lt;br /&gt;
I came to the realization that Google Photos was still auto syncing on this phone. When you unlock, you can get a screenshot with &#039;&#039;VOL- and POWER&#039;&#039;. So the fix was easy - do this, wait a few minutes to it to sync, check https://photos.google.com/, press the area of the screen that seemed right.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
Pixel1.png|First screen, wait a few minutes here.&lt;br /&gt;
Pixel2.png|Continue from lower right corner&lt;br /&gt;
Pixel3.png|Telling me to do something on working destination phone&lt;br /&gt;
Pixel4.png|&lt;br /&gt;
Pixel5.png|itshappening.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
	<entry>
		<id>http://falz.net/index.php?title=File:Pixel4.png&amp;diff=375</id>
		<title>File:Pixel4.png</title>
		<link rel="alternate" type="text/html" href="http://falz.net/index.php?title=File:Pixel4.png&amp;diff=375"/>
		<updated>2021-05-11T21:45:12Z</updated>

		<summary type="html">&lt;p&gt;Falz: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Falz</name></author>
	</entry>
</feed>