<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-830606417501151526</id><updated>2026-07-24T13:37:15.239-07:00</updated><category term="Mac"/><category term="Windows"/><category term="Workspace ONE Access"/><category term="Humour"/><category term="Script"/><category term="Workspace ONE"/><category term="vIDM"/><category term="ThinApp"/><category term="Apple"/><category term="VMware"/><category term="WS1"/><category term="microsoft"/><category term="Citrix"/><category term="Identity"/><category term="Snow Leopard"/><category term="Time Capsule"/><category term="iPad"/><category term="macOS"/><category term="pfSense"/><category term="vSphere"/><category term="AI"/><category term="Audio"/><category term="Backup"/><category term="Claude Code"/><category term="Home Automation"/><category term="KiX"/><category term="Login Script"/><category term="Skype"/><category term="3rd Party IdP"/><category term="Astaro"/><category term="Catalina"/><category term="Cell"/><category term="Chrome"/><category term="Cisco VPN"/><category term="Codes"/><category term="Cross Org Identity Brokering"/><category term="DNS"/><category term="Dell"/><category term="FAIL"/><category term="Firewall"/><category term="Google"/><category term="Home Assistant"/><category term="Honeywell"/><category term="IIS"/><category term="IPMI"/><category term="Internet Explorer"/><category term="It Doesn&#39;t Just Work"/><category term="Malware"/><category term="Medical"/><category term="Microsoft Teams"/><category term="Mobile"/><category term="Mountain Lion"/><category term="No Audio"/><category term="No Device"/><category term="Numbers"/><category term="O365"/><category term="OBS"/><category term="Password Cloud Deployment"/><category term="Phone"/><category term="Print Spooler"/><category term="Routing"/><category term="SQL"/><category term="SQL Script"/><category term="Server Management"/><category term="Service"/><category term="Software Update"/><category term="Sophos"/><category term="Tools"/><category term="VBS"/><category term="Virtual Camera"/><category term="XBox"/><category term="XenServer"/><category term="XenSource"/><category term="games"/><category term="iPhone"/><category term="vCenter"/><title type='text'>T3CHNOT3S</title><subtitle type='html'>My technical notes on the topics and areas of interest in which I&#39;ve had experience.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://technotes.flaming.ws/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>65</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-8079870446691587737</id><published>2026-06-12T12:47:09.703-07:00</published><updated>2026-06-12T13:08:33.855-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="Claude Code"/><category scheme="http://www.blogger.com/atom/ns#" term="pfSense"/><title type='text'>How I Used AI to Audit My pfSense HA Firewall Pair – Part 2</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;b style=&quot;font-family: Arial, sans-serif; text-align: center;&quot;&gt;&lt;span style=&quot;color: #2e75b6; font-size: 24pt;&quot;&gt;How I Used AI to Audit My pfSense HA Firewall Pair – Part 2&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 6pt; text-align: center;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 18pt;&quot;&gt;The Follow-Up Session: Syslog Crashes, ARP Conflicts, and a Mystery Device&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 3pt; text-align: center;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #595959; font-size: 12pt;&quot;&gt;Session Dates: May 30 – June 2, 2026&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; font-size: 11pt; margin: 0px 0px 20pt; text-align: center;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;Published by &lt;a href=&quot;https://www.blogger.com/profile/03997666976897141179&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Dean Flaming&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;h1 style=&quot;color: #2e75b6; font-family: Arial, sans-serif; font-size: 16pt; margin: 15pt 0px 6pt;&quot;&gt;Introduction&lt;/h1&gt;&lt;p style=&quot;margin: 0px 0px 12pt;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;In &lt;a href=&quot;https://technotes.flaming.ws/2026/05/how-i-used-ai-to-audit-my-pfsense-ha.html&quot; target=&quot;_blank&quot;&gt;Part 1&lt;/a&gt;, I connected Claude Code to my pfSense Community Edition high-availability firewall pair and used it to perform a full infrastructure audit. The session uncovered stale firewall rules, an Unbound DNS deadlock, and a hidden DNS dependency between HA nodes. It also answered a question I had going into the project: could an AI assistant perform a meaningful infrastructure review? The answer was yes.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 12pt;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;After publishing &lt;a href=&quot;https://technotes.flaming.ws/2026/05/how-i-used-ai-to-audit-my-pfsense-ha.html&quot; target=&quot;_blank&quot;&gt;Part 1&lt;/a&gt;, I kept using the same Claude Code + MCP workflow. What followed was not another audit. Instead, it became a series of investigations into issues hiding in plain sight. Some had existed quietly for years. Others pointed in one direction while the root cause lived somewhere completely different.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 12pt;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;This article covers several findings from those follow-up sessions, including a syslog daemon crash loop, a mystery device appearing in ARP tables, and an IP conflict involving a consumer appliance impersonating a production server.&lt;/span&gt;&lt;/p&gt;&lt;h1 style=&quot;color: #2e75b6; font-family: Arial, sans-serif; font-size: 16pt; margin: 15pt 0px 6pt;&quot;&gt;Part 1 vs Part 2&lt;/h1&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;&lt;a href=&quot;https://technotes.flaming.ws/2026/05/how-i-used-ai-to-audit-my-pfsense-ha.html&quot; target=&quot;_blank&quot;&gt;Part 1&lt;/a&gt; focused on auditing configuration.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Part 2 focuses on understanding behavior.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 6pt;&quot;&gt;Audits answer questions like:&lt;/p&gt;&lt;ul style=&quot;font-family: Arial, sans-serif;&quot;&gt;&lt;li&gt;Is this rule still needed?&lt;/li&gt;&lt;li&gt;Why is this interface configured this way?&lt;/li&gt;&lt;li&gt;Are these settings still appropriate?&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 12pt 0px 6pt;&quot;&gt;Investigations answer different questions:&lt;/p&gt;&lt;ul style=&quot;font-family: Arial, sans-serif;&quot;&gt;&lt;li&gt;Why does this service keep crashing?&lt;/li&gt;&lt;li&gt;Why does this system occasionally disappear?&lt;/li&gt;&lt;li&gt;Why does everything look healthy even when it isn’t?&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 12pt 0px;&quot;&gt;As it turns out, those questions led to some interesting places.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 12pt 0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 style=&quot;color: #2e75b6; font-family: Arial, sans-serif; font-size: 16pt; margin: 15pt 0px 6pt;&quot;&gt;Finding #1 – The Syslog Crash Nobody Noticed&lt;/h1&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;The first clue came from centralized logging.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Both firewall nodes appeared healthy. CARP was stable. DNS was stable. Firewall processing was normal. Nothing obvious pointed toward a problem.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Yet syslog delivery would occasionally stop after boot.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;At first glance, the issue looked like a Graylog problem. Logs would stop flowing, eventually resume, and then behave normally until the next reboot. Nothing in the firewall dashboard suggested a failure.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;A closer look revealed something unexpected.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;The syslog daemon (syslogd) on both pfSense nodes was crashing approximately two minutes after every reboot.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Even more interesting, it eventually recovered on its own.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Because recovery occurred automatically, the issue never stayed visible long enough to attract attention. The environment continued operating normally most of the time, masking the underlying problem.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;color: #1f3864; font-family: Arial, sans-serif; font-size: 14pt; margin: 12pt 0px 6pt;&quot;&gt;Root Cause&lt;/h2&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Claude Code began reviewing startup behavior and syslog configuration.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;The culprit turned out to be an obscure pfSense logging option called &lt;b&gt;logall&lt;/b&gt;.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;When enabled, pfSense inserts a catch-all forwarding rule in addition to individual facility-based forwarding rules already configured for remote logging.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Effectively, every log message was forwarded twice.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Under normal conditions, the duplication wasn’t obvious.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Under heavy pfBlockerNG DNS logging volume, the doubled UDP stream combined with pfSense’s boot-time service restart sequence created a race condition which consistently crashed syslogd.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 6pt;&quot;&gt;The result:&lt;/p&gt;&lt;ul style=&quot;font-family: Arial, sans-serif;&quot;&gt;&lt;li&gt;Duplicate log traffic&lt;/li&gt;&lt;li&gt;Unnecessary network load&lt;/li&gt;&lt;li&gt;A predictable service crash after every reboot&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 12pt 0px 6pt;&quot;&gt;The fix was straightforward:&lt;/p&gt;&lt;ul style=&quot;font-family: Arial, sans-serif;&quot;&gt;&lt;li&gt;Disable logall&lt;/li&gt;&lt;li&gt;Re-enable explicit facility forwarding&lt;/li&gt;&lt;li&gt;Validate remote logging&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 12pt 0px;&quot;&gt;Immediately afterward, duplicate logging disappeared and syslogd remained stable through multiple reboots.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;The central log server saw roughly a fifty percent reduction in incoming UDP traffic.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Sometimes the hardest problems are not caused by broken components.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Sometimes a component does exactly what it was configured to do.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 style=&quot;color: #2e75b6; font-family: Arial, sans-serif; font-size: 16pt; margin: 15pt 0px 6pt;&quot;&gt;Finding #2 – The Mystery Device&lt;/h1&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;While reviewing logs and network activity, Claude Code identified an unknown device appearing periodically in ARP tables.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 6pt;&quot;&gt;The device had:&lt;/p&gt;&lt;ul style=&quot;font-family: Arial, sans-serif;&quot;&gt;&lt;li&gt;No DHCP lease&lt;/li&gt;&lt;li&gt;Minimal network activity&lt;/li&gt;&lt;li&gt;No obvious hostname&lt;/li&gt;&lt;li&gt;No open ports worth investigating&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 12pt 0px;&quot;&gt;At first glance, it looked like an abandoned static-IP device quietly sitting on the network.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;OUI analysis told a different story.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;The hardware vendor belonged to a major consumer smart-home appliance manufacturer.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Interesting, but not particularly useful.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Then the IP address entered the picture.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;The device was using the same IP assigned to the centralized syslog server.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Things got much more interesting.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; font-size: 11pt; margin: 0px 0px 12pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 style=&quot;color: #2e75b6; font-family: Arial, sans-serif; font-size: 16pt; margin: 15pt 0px 6pt;&quot;&gt;Finding #3 – The ARP Conflict&lt;/h1&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Further investigation revealed a surprisingly simple problem.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Every time the appliance booted, it announced ownership of the syslog server address through gratuitous ARP updates.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Those announcements occasionally replaced the legitimate ARP entry maintained by the firewall.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;For brief periods, traffic intended for the syslog server was redirected toward the appliance instead.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;The symptom appeared as intermittent logging failures.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;The root cause turned out to be an IP conflict involving a device most people would never suspect.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Once the connection became clear, the fix was straightforward.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;color: #1f3864; font-family: Arial, sans-serif; font-size: 14pt; margin: 12pt 0px 6pt;&quot;&gt;Resolution&lt;/h2&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 6pt;&quot;&gt;Two complementary controls were implemented:&lt;/p&gt;&lt;ul style=&quot;font-family: Arial, sans-serif;&quot;&gt;&lt;li&gt;Static DHCP mapping for the appliance&lt;/li&gt;&lt;li&gt;Static ARP enforcement for both the appliance and the syslog server&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 12pt 0px;&quot;&gt;Together, those changes permanently anchored each device to the correct address.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;ARP instability disappeared immediately.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;This investigation was particularly satisfying because the original symptom involved logging.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;The root cause involved a consumer appliance quietly impersonating a production server.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Without tracing relationships between systems, the connection would have been easy to miss.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 style=&quot;color: #2e75b6; font-family: Arial, sans-serif; font-size: 16pt; margin: 15pt 0px 6pt;&quot;&gt;Finding #4 – A Filesystem Check Years Overdue&lt;/h1&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;One item carried forward from the previous session was a full offline filesystem check.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;This wasn’t exciting work.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;No outage.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;No mysterious error.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;No dramatic root cause.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Just maintenance.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Both nodes were rebooted into single-user mode and subjected to a complete fsck validation.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 6pt;&quot;&gt;The result was exactly what I hoped to find:&lt;/p&gt;&lt;ul style=&quot;font-family: Arial, sans-serif;&quot;&gt;&lt;li&gt;No filesystem corruption&lt;/li&gt;&lt;li&gt;No pending repairs&lt;/li&gt;&lt;li&gt;No inconsistencies&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 12pt 0px;&quot;&gt;Sometimes confirmation is the outcome.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Not every investigation needs to discover something broken.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 style=&quot;color: #2e75b6; font-family: Arial, sans-serif; font-size: 16pt; margin: 15pt 0px 6pt;&quot;&gt;A Story for Another Day&lt;/h1&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;Not every investigation from this session made it into this article.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;One ongoing effort began with a routine health check on downstream infrastructure and eventually led to discovery of an undocumented routing dependency involving the pfSense HA pair.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;The findings deserve their own write-up.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;I’ll cover this story separately once the work is complete.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 style=&quot;color: #2e75b6; font-family: Arial, sans-serif; font-size: 16pt; margin: 15pt 0px 6pt;&quot;&gt;What Claude Code Did Not Do&lt;/h1&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;One topic generated a fair amount of discussion after Part 1 was published.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;How much of this work was actually performed by Claude Code?&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; margin: 0px 0px 12pt;&quot;&gt;The answer is both more and less than some people expect.&lt;/p&gt;&lt;ul style=&quot;font-family: Arial, sans-serif; margin-bottom: 0in; margin-top: 0in;&quot;&gt;&lt;li&gt;&lt;b&gt;Human Approval Required –&lt;/b&gt; Claude Code did not autonomously change anything. Every finding came with a recommendation. Every recommendation waited for explicit approval before implementation. The session was collaborative by design: Claude Code as analyst, operator as decision-maker.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;font-family: Arial, sans-serif; margin-bottom: 0in; margin-top: 0in;&quot;&gt;&lt;li&gt;&lt;b&gt;No Understanding of Business Intent –&lt;/b&gt; Claude Code did not understand business intent behind every rule. It could identify technically redundant rules, questionable configurations, or opportunities for cleanup. It could not determine whether a rule existed because of a contractual requirement, a legacy integration, or a deliberate architectural decision. Technical analysis and business context are not the same thing.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;font-family: Arial, sans-serif; margin-bottom: 0in; margin-top: 0in;&quot;&gt;&lt;li&gt;&lt;b&gt;Validation and Testing Still Matter –&lt;/b&gt; Claude Code did not replace validation or testing. Changes were reviewed before implementation. CARP health was checked afterward. pfsync health was checked afterward. Services were validated afterward. Finding a problem and safely correcting a problem remain two different skills.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;font-family: Arial, sans-serif; margin-bottom: 0in; margin-top: 0in;&quot;&gt;&lt;li&gt;&lt;b&gt;Architectural Context Required Human Knowledge –&lt;/b&gt; Claude Code did not identify architectural context without guidance. Several findings required institutional knowledge unavailable to the AI. Understanding why something exists often matters more than understanding how it works.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;margin-bottom: 0in; margin-top: 0in;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;b&gt;Deferred Items Still Required Operator Judgment –&lt;/b&gt; Several items remain open. Not because they were missed. Not because the AI failed to identify them. Because the correct solution requires planning, scheduling, additional data, or a maintenance window. Knowing when not to make a change is just as important as knowing what to change.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;h1 style=&quot;color: #2e75b6; font-family: Arial, sans-serif; font-size: 16pt; margin: 15pt 0px 6pt;&quot;&gt;Takeaways&lt;/h1&gt;&lt;p style=&quot;font-family: Arial, sans-serif; font-size: 11pt; margin: 0px 0px 12pt;&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;a href=&quot;https://technotes.flaming.ws/2026/05/how-i-used-ai-to-audit-my-pfsense-ha.html&quot; target=&quot;_blank&quot;&gt;Part 1&lt;/a&gt; proved AI could perform a meaningful infrastructure audit.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Part 2 demonstrated something different.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;AI can also be an effective investigation partner.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;The most valuable discoveries from this session were not firewall rules or package updates.&amp;nbsp; They were hidden relationships between systems:&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-family: arial;&quot;&gt;A logging option causing service crashes&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-family: arial;&quot;&gt;A consumer appliance interfering with a server&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-family: arial;&quot;&gt;Infrastructure components quietly compensating for one another&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-family: arial;&quot;&gt;Operational issues hidden because everything appeared healthy&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;What impressed me most was not Claude Code’s ability to suggest fixes.&amp;nbsp;&amp;nbsp;&lt;span&gt;It was its ability to keep asking questions.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Why is this service crashing?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Why does this device exist?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Why does this behavior occur?&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;All of this is where I continue to find value in AI-assisted operations - by not replacing expertise, not replacing judgment.&amp;nbsp;&lt;span face=&quot;Arial, sans-serif&quot;&gt;Not replacing accountability.&amp;nbsp;&lt;/span&gt;&lt;span face=&quot;Arial, sans-serif&quot;&gt;Instead, accelerating investigation and surfacing relationships humans often overlook when systems appear healthy.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 12pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;The firewall pair is healthier than it was at the start of the session.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 12pt;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;More importantly, I understand it better than before.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, sans-serif; font-size: 11pt; margin: 24pt 0px 12pt; text-align: center;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #595959; font-size: 9pt;&quot;&gt;Generated with Claude Code (Anthropic) — June 2026&lt;br /&gt;Reviewed and approved by Dean Flaming – June 2026&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/8079870446691587737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/8079870446691587737'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2026/06/how-i-used-ai-to-audit-my-pfsense-ha.html' title='How I Used AI to Audit My pfSense HA Firewall Pair – Part 2'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-7040421562211480840</id><published>2026-05-26T16:28:34.836-07:00</published><updated>2026-06-12T12:54:52.197-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="Claude Code"/><category scheme="http://www.blogger.com/atom/ns#" term="pfSense"/><title type='text'>How I Used AI to Audit My pfSense HA Firewall Pair - Part 1</title><content type='html'>&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;a name=&quot;OLE_LINK11&quot; style=&quot;font-family: Arial, sans-serif; font-size: 11pt; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #2e75b6; font-size: 24pt;&quot;&gt;How I Used AI to Audit My pfSense HA Firewall Pair&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;style class=&quot;WebKit-mso-list-quirks-style&quot;&gt;
&lt;!--
/* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:&quot;&quot;;
	margin:0in;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:&quot;Arial&quot;,sans-serif;
	mso-fareast-font-family:Arial;}
h1
	{mso-style-priority:9;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:&quot;&quot;;
	mso-style-link:&quot;Heading 1 Char&quot;;
	margin-top:15.0pt;
	margin-right:0in;
	margin-bottom:6.0pt;
	margin-left:0in;
	mso-pagination:widow-orphan;
	mso-outline-level:1;
	font-size:16.0pt;
	font-family:&quot;Arial&quot;,sans-serif;
	color:#2E75B6;
	mso-font-kerning:0pt;}
h2
	{mso-style-priority:9;
	mso-style-qformat:yes;
	mso-style-parent:&quot;&quot;;
	mso-style-link:&quot;Heading 2 Char&quot;;
	margin-top:12.0pt;
	margin-right:0in;
	margin-bottom:6.0pt;
	margin-left:0in;
	mso-pagination:widow-orphan;
	mso-outline-level:2;
	font-size:14.0pt;
	font-family:&quot;Arial&quot;,sans-serif;
	color:#1F3864;}
h3
	{mso-style-priority:9;
	mso-style-qformat:yes;
	mso-style-parent:&quot;&quot;;
	mso-style-link:&quot;Heading 3 Char&quot;;
	margin-top:9.0pt;
	margin-right:0in;
	margin-bottom:3.0pt;
	margin-left:0in;
	mso-pagination:widow-orphan;
	mso-outline-level:3;
	font-size:12.0pt;
	font-family:&quot;Arial&quot;,sans-serif;
	color:#2E75B6;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:&quot;&quot;;
	margin:0in;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:&quot;Arial&quot;,sans-serif;
	mso-fareast-font-family:Arial;}
span.Heading1Char
	{mso-style-name:&quot;Heading 1 Char&quot;;
	mso-style-priority:9;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:&quot;Heading 1&quot;;
	mso-ansi-font-size:16.0pt;
	mso-bidi-font-size:16.0pt;
	color:#2E75B6;
	font-weight:bold;}
span.Heading2Char
	{mso-style-name:&quot;Heading 2 Char&quot;;
	mso-style-priority:9;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:&quot;Heading 2&quot;;
	mso-ansi-font-size:14.0pt;
	mso-bidi-font-size:14.0pt;
	color:#1F3864;
	font-weight:bold;}
span.Heading3Char
	{mso-style-name:&quot;Heading 3 Char&quot;;
	mso-style-priority:9;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:&quot;Heading 3&quot;;
	mso-ansi-font-size:12.0pt;
	mso-bidi-font-size:12.0pt;
	color:#2E75B6;
	font-weight:bold;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:11.0pt;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:&quot;Arial&quot;,sans-serif;
	mso-ascii-font-family:Arial;
	mso-fareast-font-family:Arial;
	mso-hansi-font-family:Arial;
	mso-bidi-font-family:Arial;
	mso-font-kerning:0pt;
	mso-ligatures:none;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;
	mso-header-margin:35.4pt;
	mso-footer-margin:35.4pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
 /* List Definitions */
 @list l0
	{mso-list-id:213784524;
	mso-list-type:hybrid;
	mso-list-template-ids:620277216 179626192 929568374 442519128 -543113800 -623061580 -487932312 1174550272 -2068404422 -847084524;}
@list l0:level1
	{mso-level-number-format:bullet;
	mso-level-text:✓;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l0:level2
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l0:level3
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l0:level4
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l0:level5
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l0:level6
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l0:level7
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l0:level8
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l0:level9
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1
	{mso-list-id:975523020;
	mso-list-type:hybrid;
	mso-list-template-ids:-818795544 -932421490 -1728285954 -256885198 1320467642 -511439482 1119263216 145019064 -1416853116 96773618;}
@list l1:level1
	{mso-level-number-format:bullet;
	mso-level-text:•;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l1:level2
	{mso-level-number-format:bullet;
	mso-level-text:◦;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:.75in;
	text-indent:-.25in;}
@list l1:level3
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1:level4
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1:level5
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1:level6
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1:level7
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1:level8
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1:level9
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l2
	{mso-list-id:1330601275;
	mso-list-type:hybrid;
	mso-list-template-ids:-804062606 -1751863688 -1555911786 427950916 -1250800244 1329875558 2134537038 84440896 1910660490 349848966;}
@list l2:level1
	{mso-level-number-format:bullet;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:0in;}
@list l2:level2
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l2:level3
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l2:level4
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l2:level5
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l2:level6
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l2:level7
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l2:level8
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l2:level9
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l3
	{mso-list-id:2016419169;
	mso-list-template-ids:1917454386;}
@list l3:level1
	{mso-level-number-format:bullet;
	mso-level-text:;
	mso-level-tab-stop:.5in;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l3:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:1.0in;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-ansi-font-size:10.0pt;
	font-family:&quot;Courier New&quot;;
	mso-bidi-font-family:&quot;Times New Roman&quot;;}
@list l3:level3
	{mso-level-number-format:bullet;
	mso-level-text:;
	mso-level-tab-stop:1.5in;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l3:level4
	{mso-level-number-format:bullet;
	mso-level-text:;
	mso-level-tab-stop:2.0in;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l3:level5
	{mso-level-number-format:bullet;
	mso-level-text:;
	mso-level-tab-stop:2.5in;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l3:level6
	{mso-level-number-format:bullet;
	mso-level-text:;
	mso-level-tab-stop:3.0in;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l3:level7
	{mso-level-number-format:bullet;
	mso-level-text:;
	mso-level-tab-stop:3.5in;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l3:level8
	{mso-level-number-format:bullet;
	mso-level-text:;
	mso-level-tab-stop:4.0in;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l3:level9
	{mso-level-number-format:bullet;
	mso-level-text:;
	mso-level-tab-stop:4.5in;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}

--&gt;
&lt;/style&gt;&lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 6pt; text-align: center;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 18pt;&quot;&gt;A Real-World Claude Code + MCP Integration Story&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 3pt; text-align: center;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #595959; font-size: 12pt;&quot;&gt;Session Date: May 25–26, 2026&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 20pt; text-align: center;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;Published by &lt;a href=&quot;https://www.blogger.com/profile/03997666976897141179&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Dean Flaming&lt;/a&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;h1&gt;Introduction&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;p class=&quot;MsoNormal&quot;&gt;I’ve been running a pfSense CE high-availability firewall pair at home for years. When Anthropic released Claude Code with MCP (Model Context Protocol) support, I wondered: could I point an AI assistant directly at my firewalls and have it conduct a real security audit? The answer turned out to be yes — and the process surfaced issues I hadn’t noticed in years of hands-on management, plus two unexpected infrastructure crises which made the session much more interesting than anticipated.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;This post walks through the full story: setting up the integration, running the audit, and everything going sideways along the way. All environment-specific values (IPs, hostnames, domain names) have been replaced with generic examples so you can adapt this to your own setup.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKADrtfjRKyYjHkebS8vjUy9TpamHSrkghkDJsJ-_jw1eCX-vB4LShtt_NxphaQ7Z_VxV1zcOOcVRY-9szoGKl4DYzNnan6C4r_0xKXwwT0PZ6oiHXWIeXHmOKCktPE266GrGKAygOMeDP6-nOPS_vpx_xQMsAHQ1ooOuW5qJiXFrxKRMWSOuFp9YCLpQ/s1800/Found%20Issues.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;784&quot; data-original-width=&quot;1800&quot; height=&quot;278&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKADrtfjRKyYjHkebS8vjUy9TpamHSrkghkDJsJ-_jw1eCX-vB4LShtt_NxphaQ7Z_VxV1zcOOcVRY-9szoGKl4DYzNnan6C4r_0xKXwwT0PZ6oiHXWIeXHmOKCktPE266GrGKAygOMeDP6-nOPS_vpx_xQMsAHQ1ooOuW5qJiXFrxKRMWSOuFp9YCLpQ/w640-h278/Found%20Issues.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h2&gt;&lt;a name=&quot;OLE_LINK7&quot;&gt;Notes&lt;o:p&gt;&lt;/o:p&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;One housekeeping note before diving in: everything in this post is real — the commands, the&amp;nbsp;findings, the detours, the fixes. What isn&#39;t real are the specifics. All IP addresses, hostnames, domain names, and usernames have been replaced with generic examples to keep the actual environment private. The story is accurate; the “names” (and IPs) have been changed “to protect the innocent.”&amp;nbsp;&lt;span style=&quot;font-family: &amp;quot;Apple Color Emoji&amp;quot;;&quot;&gt;😉&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;i&gt;Important:&lt;/i&gt;&lt;/b&gt;&amp;nbsp;This session was performed against a home lab environment with full backups and HA failover available. Direct AI access to infrastructure should always begin with read-only permissions and staged validation before allowing configuration changes in production environments.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1&gt;Part 1: Wiring Claude Code to pfSense&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Before any analysis could happen, I needed to give Claude Code a way to reach the firewalls. The integration uses two channels: SSH for interactive shell access and raw diagnostics, and the pfSense REST API for structured read/write operations. An MCP server running locally on my Mac bridges Claude Code to both.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Integration Architecture&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Claude Code runs on macOS and communicates with pfSense through two channels:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;SSH (via MCP SSH server) — interactive shell access, pfctl commands, log inspection, low-level diagnostics&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;pfSense REST API (pfSense-pkg-RESTAPI) — structured read/write access to firewall rules, aliases, NAT, interfaces, and packages&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-indent: -0.25in;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The MCP server runs as a local process on the Mac and exposes SSH operations as typed tools Claude Code can invoke during a session. No agent or daemon is required on pfSense itself.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Step 1 — macOS Prerequisites&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The MCP SSH server bridging Claude Code to pfSense is a Node.js package — Node.js is the runtime it needs to execute. This walkthrough is written from a macOS + Terminal perspective, but the same integration works on other platforms with minor path differences. On Windows, npm installs globals to a path under %APPDATA% rather than /opt/homebrew/bin, and you’d use PowerShell or WSL instead of Terminal. On Linux, the paths follow your distro’s package manager conventions. The commands themselves are the same; only the install locations differ.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h3&gt;1a. Node.js and npm&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The MCP SSH server requires Node.js. Verify both are present:&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;node --version&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;npm --version&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;If not installed, use Homebrew:&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;brew install node&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #595959; font-size: 10pt;&quot;&gt;Note: This setup uses Apple Silicon (M-series Mac). The Homebrew prefix is /opt/homebrew rather than /usr/local. All paths below reflect this.&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h3&gt;1b. Install the MCP SSH Manager&lt;/h3&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;npm install -g @iflow-mcp/mcp-ssh-manager&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;On Apple Silicon the binary installs to /opt/homebrew/bin/ as mcp-ssh-manager. Confirm:&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;npm root -g&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;ls /opt/homebrew/bin/ | grep ssh&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h3&gt;1c. Create the Project Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot;&gt;All session files live in a single project directory. Claude Code auto-loads .mcp.json and .claude/settings.local.json when launched from this directory:&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;cd &quot;~/projects/pfsense-tuneup&quot;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #595959; font-size: 10pt;&quot;&gt;Note: Finder blocks creation of dot-prefixed folders (e.g. .claude) with an error. Use Terminal instead: mkdir -p .claude&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Step 2 — Project Configuration Files&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Claude Code is project-aware. When you launch it from a directory, it automatically reads a small set of configuration files from the directory if they exist. These files are how you tell Claude Code which tools to connect to, which operations are permitted, and what context to carry into the session. Without them, Claude Code starts with no knowledge of your environment and no way to reach pfSense. With them, every session picks up right where you left off — no re-explaining, no re-wiring.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Three files are involved: .mcp.json tells Claude Code which external servers (tools) to load. settings.local.json defines a permission boundary — what Claude Code is and isn’t allowed to do with your system. CLAUDE.md is a plain text file giving Claude Code persistent context about your environment: node roles, credentials, IP addresses, rules of engagement. Think of CLAUDE.md as a briefing document Claude reads at the start of every session.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h3&gt;2a. .mcp.json&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Registers the pfSense SSH MCP server. Auto-loaded by Claude Code on startup:&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;{&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&quot;mcpServers&quot;: {&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;pfsense-ssh&quot;: {&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;command&quot;: &quot;/opt/homebrew/bin/mcp-ssh-manager&quot;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;env&quot;: {&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;SSH_CONFIG_PATH&quot;: &quot;/Users/localuser/.claude/pfsense-hosts.toml&quot;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;}&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h3&gt;2b. .claude/settings.local.json&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Defines allowed and denied Bash operations. The CARP VIP is explicitly blocked for SSH writes to prevent split-brain if the VIP floats mid-session:&amp;nbsp;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;{&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&quot;permissions&quot;: {&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;allow&quot;: [&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Bash(ssh * fw1.example.com:*)&quot;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Bash(ssh * 10.0.1.1:*)&quot;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Bash(ssh * fw2.example.com:*)&quot;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Bash(ssh * 10.0.1.2:*)&quot;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Bash(diff:*)&quot;, &quot;Bash(cat:*)&quot;, &quot;Bash(grep:*)&quot;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;],&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;deny&quot;: [&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Bash(ssh * fw.example.com:*)&quot;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Bash(ssh * 10.0.1.254:*)&quot;,&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Bash(rm:*)&quot;, &quot;Bash(curl:*)&quot;, &quot;Bash(wget:*)&quot;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;]&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;}&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h3&gt;2c. ~/.claude/pfsense-hosts.toml&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot;&gt;SSH host definitions for the MCP server. Stored in the home .claude/ directory so the MCP daemon finds it regardless of working directory:&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;[hosts.pf1]&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &quot;fw1.example.com&quot;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;user&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &quot;pfadmin&quot;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;key&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &quot;/Users/localuser/.ssh/pfsense_ed25519&quot;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;alias&amp;nbsp;&amp;nbsp;&amp;nbsp;= &quot;pf1&quot;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;notes&amp;nbsp;&amp;nbsp;&amp;nbsp;= &quot;Primary / CARP master&quot;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;[hosts.pf2]&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &quot;fw2.example.com&quot;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;user&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &quot;pfadmin&quot;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;key&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &quot;/Users/localuser/.ssh/pfsense_ed25519&quot;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;alias&amp;nbsp;&amp;nbsp;&amp;nbsp;= &quot;pf2&quot;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;notes&amp;nbsp;&amp;nbsp;&amp;nbsp;= &quot;Secondary / CARP backup&quot;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Step 3 — SSH Key Setup&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The MCP server runs unattended — when Claude Code needs to run a command on pfSense, it connects automatically in the background without any human at the keyboard. A password-based connection requires interactive input every time, which breaks automation entirely. An SSH key pair solves this: the private key stays on your Mac and authenticates silently, while the public key lives on pfSense and validates the connection.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Key-based auth is also more secure than passwords for remote access. Once you’ve confirmed keys work, you can disable password auth on pfSense entirely — at which point there’s nothing for a brute-force attack to guess.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The ~/.ssh/config file avoids specifying the key path and connection options on every ssh command. It also handles a pfSense-specific quirk: pfSense 2.8.1 ships with an older OpenSSH advertising key exchange algorithms with an @libssh.org suffix newer macOS SSH clients don’t automatically negotiate. Without the config entry, every connection attempt throws a &quot;no matching key exchange method found&quot; error.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h3&gt;3a. Generate a Passphrase-Free Key&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot;&gt;A passphrase-free ed25519 key is required for unattended MCP automation:&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;ssh-keygen -t ed25519 -C &quot;claude-code-pfsense&quot; -f /Users/localuser/.ssh/pfsense_ed25519 -N &quot;&quot;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #595959; font-size: 10pt;&quot;&gt;Note: The -N &quot;&quot; flag sets an empty passphrase. Without this, the MCP server cannot authenticate unattended. If you prefer a passphrase, use ssh-add --apple-use-keychain on macOS and add UseKeychain yes to ~/.ssh/config.&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h3&gt;3b. Add the Public Key to pfSense&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Navigate to System → User Manager → [your SSH user] → Edit on each node directly (not via the VIP) and paste the contents of:&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;cat /Users/localuser/.ssh/pfsense_ed25519.pub&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;into the Authorized SSH Keys field. Save on each node.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #595959; font-size: 10pt;&quot;&gt;Note: HA config sync (XMLRPC) does not replicate SSH authorized keys. The key must be added manually on both nodes.&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h3&gt;3c. Configure macOS SSH Client&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Create ~/.ssh/config if it does not exist (touch ~/.ssh/config &amp;amp;&amp;amp; chmod 600 ~/.ssh/config), then add:&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;Host fw1.example.com fw2.example.com&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;User pfadmin&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IdentityFile /Users/localuser/.ssh/pfsense_ed25519&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #595959; font-size: 10pt;&quot;&gt;Note: The @libssh.org suffix on curve25519-sha256 is required. pfSense 2.8.1 uses the suffixed variant. Without it you will get: no matching key exchange method found.&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h3&gt;3d. Enable SSH on pfSense&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot;&gt;On each node: System → Advanced → Admin Access → Secure Shell:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Enable Secure Shell: checked&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;SSHd Key Only: Public Key Only (set after confirming key auth works)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;SSH Port: 22&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-indent: -0.25in;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Verify no inbound WAN firewall rule exists for port 22 before enabling. pfSense does not create one by default, but confirm under Firewall → Rules → WAN.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h3&gt;3e. Required User Privilege&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The SSH user account requires the User — System: Shell account access privilege. Without it, pfSense drops the connection immediately after key authentication. Verify under System → User Manager → [user] → Edit → Effective Privileges.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h3&gt;3f. Login Protection Settings&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Tightened on both nodes (System → Advanced → Admin Access → Login Protection):&lt;/p&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border-color: currentcolor; border-image: initial; border-style: none; border-width: medium; border: medium; color: black; font-variant-caps: normal; width: 624px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border: 1pt solid rgb(204, 204, 204); padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Threshold&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(204, 204, 204) rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-image: none 100% / 1 / 0 stretch; border-style: solid solid solid none; border-width: 1pt 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;20 (block after 2 failed attempts; most attacks score 10 each)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Blocktime&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;300 seconds&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Detection time&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;3600 seconds&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Pass list&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #595959; font-size: 10pt;&quot;&gt;Note: Internal subnets on the pass list bypass login protection. This prevents Claude Code’s MCP automation from triggering brute-force blocking during rapid-fire SSH operations.&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Step 4 — pfSense REST API Package&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;pfSense does not ship with a REST API. Out of the box, the only programmatic interfaces are the web UI (requiring screen-scraping) and the SSH shell. SSH alone is workable — you can run pfctl commands, read config.xml, and parse output — but it’s fragile. Shell output changes format, XML parsing is error-prone, and there’s no transactional safety net if something goes wrong mid-operation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;It should be noted, the pfSense-pkg-RESTAPI package is a community-maintained, open-source extension and is not part of the default Netgate-supported pfSense CE installation.&amp;nbsp;&amp;nbsp;Use of it adds a proper REST and GraphQL API with over 200 endpoints covering every aspect of pfSense configuration. This gives Claude Code structured, typed access to firewall rules, aliases, NAT entries, interfaces, and packages — the difference between asking &quot;what does this output mean?&quot; and making a direct API call returning clean JSON. It also supports a dry_run parameter, letting Claude Code propose changes and show you exactly what would be modified before anything is applied.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Install on each node independently via SSH. This package is not replicated by XMLRPC sync:&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;ssh fw1.example.com&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;pkg-static add https://github.com/pfrest/pfSense-pkg-RESTAPI/releases/latest/download/pfSense-2.8.1-pkg-RESTAPI.pkg&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;ssh fw2.example.com&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;pkg-static add https://github.com/pfrest/pfSense-pkg-RESTAPI/releases/latest/download/pfSense-2.8.1-pkg-RESTAPI.pkg&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;After install: System → REST API for configuration, and:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Swagger docs: https://fw1.example.com:4444/api/v2/docs&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;REST API base: https://fw1.example.com:4444/api/v2&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-indent: -0.25in;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Step 5 — MCP Server Validation&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The MCP server is a local process on your Mac Claude Code spawns at startup. If .mcp.json is misconfigured, the binary path is wrong, or the hosts TOML file can’t be found, the server either fails silently or starts but can’t reach pfSense. Claude Code will still work — it just won’t have the pfSense tools available, and you’d get confusing &quot;I don’t have a tool for this&quot; responses rather than a clear error. Validating upfront with /mcp confirms the full chain is working: Claude Code loaded the server, the server started, and the SSH tools are registered and ready.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Launch Claude Code from the project directory and verify MCP connectivity:&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;cd &quot;~/projects/pfsense-tuneup&quot;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l2 level1 lfo2; text-indent: 0in;&quot;&gt;&lt;span style=&quot;color: #1f3864; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt;&quot;&gt;claude&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Inside the session, run /mcp. Expected output:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;pfsense-ssh · ✓ connected · 37 tools&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-indent: -24px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p class=&quot;MsoNormal&quot;&gt;With all of this confirmed, I was ready to start the actual audit.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h1&gt;Part 2: The Environment&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;p class=&quot;MsoNormal&quot;&gt;My home lab runs a pfSense CE 2.8.1 HA pair. The setup is more complex than a typical home lab — multiple internal subnets for different AD domains, a DMZ for externally-accessible servers, and 16 CARP VIPs spread across all interfaces. Here’s the layout:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Nodes&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border-color: currentcolor; border-image: initial; border-style: none; border-width: medium; border: medium; color: black; font-variant-caps: normal; width: 624px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border: 1pt solid rgb(204, 204, 204); padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Primary (CARP Master)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(204, 204, 204) rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-image: none 100% / 1 / 0 stretch; border-style: solid solid solid none; border-width: 1pt 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;fw1.example.com — 10.0.1.1&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Secondary (CARP Backup)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;fw2.example.com — 10.0.1.2&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Virtual IP (Load Balanced)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;fw.example.com — 10.0.1.254&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Platform&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;pfSense Community Edition 2.8.1 (amd64)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;HA Sync&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;pfsync + XMLRPC over dedicated virtual interface (172.16.0.0/24)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Network Interfaces&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border-color: currentcolor; border-image: initial; border-style: none; border-width: medium; border: medium; color: black; font-variant-caps: normal; width: 624px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border: 1pt solid rgb(204, 204, 204); padding: 4pt 6pt; width: 85.45pt;&quot; valign=&quot;top&quot; width=&quot;114&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;WAN (em0)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(204, 204, 204) rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-image: none 100% / 1 / 0 stretch; border-style: solid solid solid none; border-width: 1pt 1pt 1pt medium; padding: 4pt 6pt; width: 382.55pt;&quot; valign=&quot;top&quot; width=&quot;510&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;INTERNET — 203.0.113.16/28 (static block) –&amp;nbsp;&lt;i&gt;not my actual IP addresses&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 85.45pt;&quot; valign=&quot;top&quot; width=&quot;114&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;LAN (em1)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 382.55pt;&quot; valign=&quot;top&quot; width=&quot;510&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;INSIDE — 10.0.1.0/24 (primary trusted network)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 85.45pt;&quot; valign=&quot;top&quot; width=&quot;114&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;opt1 (em2)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 382.55pt;&quot; valign=&quot;top&quot; width=&quot;510&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;CORP1_NET — 10.0.2.0/24 (AD domain: CORP1.LOCAL)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 85.45pt;&quot; valign=&quot;top&quot; width=&quot;114&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;opt2 (em3)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 382.55pt;&quot; valign=&quot;top&quot; width=&quot;510&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;CORP2_NET — 10.0.3.0/24 (AD domain: CORP2.LOCAL)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 85.45pt;&quot; valign=&quot;top&quot; width=&quot;114&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;opt3 (em4)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 382.55pt;&quot; valign=&quot;top&quot; width=&quot;510&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;HA — 172.16.0.0/24 (dedicated pfsync/XMLRPC link)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 85.45pt;&quot; valign=&quot;top&quot; width=&quot;114&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;opt4 (em5)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 382.55pt;&quot; valign=&quot;top&quot; width=&quot;510&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;GUEST — 10.0.10.0/24 (guest WiFi/captive portal)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 85.45pt;&quot; valign=&quot;top&quot; width=&quot;114&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;opt5 (em6)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 382.55pt;&quot; valign=&quot;top&quot; width=&quot;510&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;DMZ — 10.0.50.0/24 (externally-facing servers)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 85.45pt;&quot; valign=&quot;top&quot; width=&quot;114&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;opt6&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 382.55pt;&quot; valign=&quot;top&quot; width=&quot;510&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;TMobile — DHCP (secondary ISP, outbound only)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 85.45pt;&quot; valign=&quot;top&quot; width=&quot;114&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;opt7&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 382.55pt;&quot; valign=&quot;top&quot; width=&quot;510&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;IOT — unconfigured (intentionally deferred)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Installed Packages&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-indent: -0.25in;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;pfBlockerNG-devel 3.2.14_1 — DNSBL + IP geo-blocking&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;HAProxy 0.63_11 — load balancing&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;ntopng 6.2.0 — traffic analytics&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;System_Patches 2.2.27 (upgraded to 2.2.29 this session)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Avahi, Backup, bandwidthd, Open-VM-Tools&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;CARP Configuration&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;16 CARP VIPs spread across WAN, LAN, CORP1_NET, CORP2_NET, GUEST, DMZ&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;preempt=1 on both nodes (primary re-asserts master after recovery)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;pfsync syncok=1 on both nodes throughout session&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;XMLRPC config sync: primary pushes all changes to secondary automatically&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-indent: -0.25in;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h1&gt;Part 3: Setting Up pfBlockerNG DNSBL&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Before the main audit, I had Claude Code configure pfBlockerNG DNSBL — the DNS-based blocklist engine intercepting every DNS query and checking it against threat feeds. This turned out to be its own mini-adventure.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;DNSBL Architecture&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;pfBlockerNG DNSBL works by injecting a Python module (pfb_unbound.py) into Unbound DNS resolver. Every DNS query passes through the Python module, which checks against downloaded blocklists. Blocked domains are redirected to a loopback VIP where a lighttpd instance serves a block page.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Loopback VIP&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The DNSBL block page server requires a dedicated IP alias on the loopback interface (lo0). IP: 10.200.200.1/8. The pfSense REST API does not accept &quot;lo0&quot; as a valid interface name for Virtual IP creation — this must be created manually via the Web UI: Firewall → Virtual IPs → Type=IP Alias, Interface=Localhost.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Feed Cleanup&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Several feed sources were dead or incorrect:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;RansomwareTracker (abuse.ch) — feed discontinued in 2019, removed&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;feodotracker.abuse.ch/downloads/domainblocklist.txt — does not exist; Feodo is IP-based only&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;sslbl.abuse.ch/blacklist/dstdomains.txt — does not exist; SSLBL is certificate/IP-based&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-indent: -0.25in;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Replacement feeds added:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;URLhaus (abuse.ch) — real-time malware URL feed (typically 0–50 entries; aggressive removal is expected behavior, not a config error)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Hagezi Threat Intelligence Feeds — 1.4 million entries&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Phishing Army — 78,000+ phishing domains&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;EasyList and EasyPrivacy — ad/tracker domains&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Adaway — mobile ad domains&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-indent: -0.25in;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;DNS Redirect NAT Rules&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Five NAT port forward rules were created to intercept all DNS queries and redirect them through pfSense’s own Unbound resolver, ensuring every client — regardless of hardcoded DNS settings — passes through DNSBL:&lt;/p&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border-color: currentcolor; border-image: initial; border-style: none; border-width: medium; border: medium; color: black; font-variant-caps: normal; width: 624px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border: 1pt solid rgb(204, 204, 204); padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;INSIDE (LAN)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(204, 204, 204) rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-image: none 100% / 1 / 0 stretch; border-style: solid solid solid none; border-width: 1pt 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Redirect port 53 → 10.0.1.1&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;CORP1_NET (opt1)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Redirect port 53 → [opt1 CARP VIP]&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;CORP2_NET (opt2)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Redirect port 53 → [opt2 CARP VIP]&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;GUEST (opt4)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Redirect port 53 → [guest CARP VIP]&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;DMZ (opt5)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Redirect port 53 → [DMZ CARP VIP]&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Each rule uses a negated destination (!pfSense_IP) so queries already directed at pfSense pass through unaffected.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h1&gt;Part 4: The Audit — What Claude Found&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;p class=&quot;MsoNormal&quot;&gt;With connectivity established, I asked Claude Code to run a full audit: examine firewall rules, NAT rules, packages, CARP status, and DNS configuration on both nodes. Here’s what it surfaced, prioritized by severity:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Priority 1 — Critical&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;System_Patches update available: 2.2.27 → 2.2.29 on both nodes&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;DNS resolver cross-dependency: each node used the other as primary DNS, creating a hidden single point of failure&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-indent: -0.25in;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Priority 2 — High Security&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Rules 48/49: Dead WAN rules for DC DNS traffic on the wrong interface, mislabeled as “DHCP” when port was 53&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Rules 73/74: Duplicate HZN HTTP redirect WAN rules, one always shadowed&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Rules 70/72: Production UAG/Horizon WAN rules with logging disabled&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Rule 137: HA Sync interface running any-to-any with inet46&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-indent: -0.25in;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Priority 3 — Medium&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Rule 109: Internal network group rule using inet46 despite no IPv6 deployment&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Rule 89: LAN rule labeled “Allow STEAM Traffic” but actually opening IM ports&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Rule 139: GUEST DNS rule allowing any destination on port 53, undermining DNS redirect enforcement&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-indent: -0.25in;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Priority 4 — Housekeeping&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Six disabled “ALLOW ALL TRAFFIC - DO NOT USE” test rules across all interfaces&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Disabled GUEST to LAN captive portal rule, superseded by newer rules&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;WAN Horizon rule with dst=any (deferred pending log research)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;NAT port forward duplicates for Horizon (noted for future review)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h1&gt;Part 5: The Saga — A “Simple” Package Update Goes Wrong&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;p class=&quot;MsoNormal&quot;&gt;What should have been a two-minute package upgrade turned into a two-hour debugging session, revealing a configuration flaw silently lurking for years. This was the most interesting part of the session.&amp;nbsp;&amp;nbsp;And, dare I say, one of the more frustrating parts of the audit.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Attempt 1: Package Manager UI&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Clicked Confirm on the System_Patches upgrade screen. The page appeared to hang. SSH investigation showed upgrade processes running in the background, but the Unix socket streaming progress to the browser was never created, leaving the UI frozen. After several minutes with no progress, PF1 was rebooted.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;PF2 seamlessly assumed CARP master status for all 16 VIPs during the reboot — confirming HA was functioning correctly. PF1 recovered and resumed master.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Attempt 2: Diagnostics &amp;gt; Command Prompt&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Ran pkg upgrade -y pfSense-pkg-System_Patches directly from Diagnostics → Command Prompt. The browser loading bar partially advanced and stalled indefinitely. The command eventually errored out.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;Root Cause: Unbound DNS Deadlock&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;SSH investigation revealed the true cause: Unbound DNS resolver on PF1 was running — process visible, all ports bound and listening — but not answering any queries. The pkg tool, which needs to resolve pkg.pfsense.org to download packages, was hanging indefinitely waiting for DNS never coming.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The culprit: pfBlockerNG injects a Python module (pfb_unbound.py) into Unbound’s query processing pipeline. After the reboot, the module deadlocked during initialization, leaving Unbound’s process alive but unable to process queries.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;The Hidden Time Bomb: Cross-Referenced DNS&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;This is where it got interesting. Comparing the DNS configuration on both nodes revealed something silently present for years:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;PF1&#39;s /etc/resolv.conf: first nameserver = 10.0.1.2 (PF2&#39;s physical LAN IP)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;PF2&#39;s /etc/resolv.conf: first nameserver = 10.0.1.1 (PF1&#39;s physical LAN IP)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Each node was using the other as its primary DNS server. This design, likely intended for redundancy, actually created a cascading failure: when PF1’s Unbound deadlocked, it took PF1’s own DNS resolution down. PF2 appeared healthy only because it was outsourcing DNS to PF1.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;On closer inspection, PF2’s Unbound was also deadlocked — it just hadn’t been noticed because PF2 was leaning on PF1. The only reason anything had been working at all was a prior-running Unbound instance on PF1’s CARP VIP.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Claude Code caught this. I hadn’t.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Resolution&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Services → DNS Resolver → Restart DNS Resolver on both nodes — cleared the Python module deadlock&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;System → General Setup → DNS Servers — PF1 now uses 10.0.1.1 first; PF2 uses 10.0.1.2 first&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;MsoNormal&quot;&gt;After these changes, both nodes resolved DNS independently. The System_Patches upgrade completed on both nodes without issue.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Long-Term Consideration&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The pfBlockerNG Python module deadlock appears to occur when Unbound is restarted while the module is mid-initialization — most commonly when loading a large blocklist like the 1.4 million-entry Hagezi TIF feed. The restart fix is straightforward and reliable, but the deeper issue is detectability.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;As for the detectability, a deadlocked Unbound looks healthy from the outside: the process is running, ports are bound, and nothing in the logs indicates a problem. Standard process-based monitoring will miss it entirely. What&#39;s needed is a query-level health check — something actively testing whether Unbound is answering DNS, not just whether it&#39;s running.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;As a practical runbook item: if pkg operations hang at the download stage, or browser-based commands in the pfSense web UI stall with no progress, the first step is always to restart DNS Resolver before assuming anything else is wrong.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h1&gt;Part 6: The Rule Cleanup&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;p class=&quot;MsoNormal&quot;&gt;With DNS stable and packages current on both nodes, the session moved into the firewall rule findings. Claude Code worked through each item methodically — explaining the issue, the risk, and the recommended fix before making any change. Eight rules were modified or removed in total, ranging from dead rules on the wrong interface to logging gaps on production inbound traffic.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;1. Rules 48 &amp;amp; 49 Deleted — Dead DC DNS Rules (154→152)&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Two rules from 2019 on the WAN interface matching Domain Controller source addresses with destination port 53. Problems: DC traffic enters on opt1/opt2, never on WAN so these rules could never match. Both were mislabeled “Outbound DHCP Requests” but port was 53 (DNS, not DHCP 68). Additionally redundant since DNS redirect NAT rules already intercept DC DNS on the correct interfaces.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;2. Rules 71 &amp;amp; 72 Deleted — Duplicate HZN HTTP Redirect (152→150)&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Two WAN pass rules both matching tcp any → 10.0.50.24:80 with slightly different descriptions, indicating one was a copy of the other. Doubly redundant: a broader Horizon WAN rule already covered port 80 as part of the Horizon_Ports alias.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;3. Logging Enabled on UAG WAN Rules 68 &amp;amp; 70&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Two production WAN pass rules handling inbound external traffic to the UAG reverse proxy (10.0.50.27) had logging disabled. These rules handle external user access to enterprise remote access infrastructure. Logging is essential for incident detection on production inbound rules.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;4. HA Sync Rule 133 Tightened&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The HA sync interface rule was running as any/any with inet46. The HA interface is a virtual point-to-point link (172.16.0.0/24) existing only inside the hypervisor. Changes: inet46 → inet (no IPv6 on this interface), source/destination scoped to 172.16.0.0/24. pfsync and XMLRPC sync verified healthy immediately after.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;5. Rule 105 — Internal Group inet46 → inet&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The pass-all rule on the trusted internal interface group was configured for inet46 — both IPv4 and IPv6 — despite no IPv6 deployment in the environment. This matters because even without a routable IPv6 address, every modern device auto-assigns a link-local address in the fe80::/10 range. With inet46 in place, those addresses flow through pfSense under the same pass-all policy, bypassing pfBlockerNG geo-IP enforcement entirely since it operates on IPv4 only. Changed to inet. No functional impact to users or services, but a meaningful reduction in policy bypass surface.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;6. Rule 85 — Mislabeled STEAM Rule Corrected&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;A LAN rule labeled “Allow STEAM Traffic to Internet” was actually using the IM_Ports alias (5190/AIM, 5222/XMPP, 6667/IRC, 5050/Yahoo). The correct Steam rule was a separate entry using the Steam_Services alias. Description corrected to “Allow Instant Messaging Traffic to Internet.”&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;7. Rule 135 — GUEST DNS Tightened&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;GUEST DNS pass rule had dst=any on port 53. The DNS redirect NAT rule already forces all GUEST DNS to pfSense’s resolver, but dst=any on the firewall rule meant the NAT could be bypassed without the firewall noticing. Changed dst=any → dst=10.0.10.X (pfSense resolver VIP). The NAT and firewall rule now independently enforce the same policy — defence in depth.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;8. Rule 97 Deleted — Superseded Captive Portal Rule (150→149)&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;A disabled LAN rule allowing GUEST traffic to the UniFi controller at 10.0.1.50:8880. Placed on the wrong interface (LAN instead of GUEST). Two active, correctly-configured replacements on the GUEST interface already covered this. Rule deleted.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h1&gt;Part 7: Deferred Items&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;p class=&quot;MsoNormal&quot;&gt;A good audit produces two lists: what got fixed and what needs more thought before touching. The items below fall into the second category — either because the right fix requires log research first, or because the scope is larger than a single session should bite off.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;WAN Horizon Rule — Destination Tightening&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;WAN pass rule covering Horizon Ports (443, 8443, 22443, 4172, 9427, 32111, 50002) has dst=any. Correct destination is 10.0.50.24. Before tightening: pull firewall logs for this rule’s tracker to confirm all legitimate destination IPs, then scope to an alias. Do not change dst=any blindly.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;NAT Port Forward Duplicates for Horizon&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Apparent duplicate NAT rules for Horizon traffic (two rules for each of several port forwards). Needs log research to identify which set is actively used before removing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;IOT Interface&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoNormal&quot;&gt;opt7 has no IP or rules and is intentionally deferred. Planned design: no internet access, no DMZ access, INSIDE may reach IOT devices.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;pfBlockerNG Unbound Deadlock Monitoring&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Add monitoring check for Unbound query responsiveness (not just process existence)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Check if a pfBlockerNG-devel update addresses the initialization deadlock&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;Runbook: if pkg or browser commands hang, restart DNS Resolver first&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-indent: -0.25in;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h1&gt;What Claude Code Did Not Do&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;ul style=&quot;margin-bottom: 0in; margin-top: 0in;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Human Approval Required -&lt;/b&gt;&amp;nbsp;Claude Code did not autonomously change anything. Every finding came with a recommendation, and every recommendation waited for explicit approval before anything was applied. The session was collaborative by design — Claude Code as analyst, operator as decision-maker.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;margin-bottom: 0in; margin-top: 0in;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Limited Understanding of Business Intent –&lt;/b&gt;&amp;nbsp;Claude Code did not understand business intent behind every rule. It could identify a rule as technically redundant or incorrectly scoped, but it had no way of knowing whether a rule existed for a contractual reason, a legacy integration, or a deliberate architectural decision. Several items were flagged as candidates for removal and then left in place after context was provided. For example, having what appeared to be redundant rules were potentially different rules – one firewall rule allowing traffic from one subnet to another and another firewall rule allowing traffic to/from the Internet. Providing added context allowed for Claude Code to better understand intent of why these existed and were not merely duplicates.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;margin-bottom: 0in; margin-top: 0in;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Validation and Testing STILL Matter -&lt;/b&gt;&amp;nbsp;It did not replace validation or testing. Changes were reviewed before being applied, and CARP and pfsync health were checked after each one. The audit surfaced the findings; verifying nothing broke was still an operator responsibility.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;margin-bottom: 0in; margin-top: 0in;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Architectural Context Requires Human Knowledge -&lt;/b&gt;&amp;nbsp;Claude Code did not identify architectural context without some level of human guidance. The IOT interface, the BIG-IP NAT rules, the WatchGuard entry — Claude Code flagged these as worth reviewing, but understanding why they exist and whether they should stay required institutional knowledge the AI simply doesn&#39;t have access to.&amp;nbsp;&amp;nbsp;I will say, once Claude Code was provided some business use-case context, it immediately updated recommendations in a number of places and linked the added context to multiple rules and configurations without issue.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;margin-bottom: 0in; margin-top: 0in;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Deferred Items Still Require Operator Judgment –&lt;/b&gt;&amp;nbsp;Claude Code still required operator judgment for the deferred items. The Horizon destination tightening, the NAT duplicate cleanup, the Unbound monitoring gap — none of these were left open because Claude Code missed them. They were left open because the right fix requires additional data, extended planning, or a dedicated change window. Knowing when not to change something is just as important as knowing what to change.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&amp;nbsp;&lt;/p&gt;&lt;h1&gt;Results&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The session surfaced more than expected — not just stale rules and housekeeping items, but&amp;nbsp;two infrastructure issues hiding in plain sight. What follows is the complete list of changes made, in the order they were addressed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwVQxdR8FwmASrrpFRtu3EW1wOZfmKTD0KQmmApt4rhdY7CUTxBoqqpPWMIQvyx0SK9oGx2L4Jzy6dlD9CclG2VHg5oEbAvQ1K1KbVyPjL04e1nXLekzr4x-xM-6Hwoqnt6CicJzi-Dd1nC3D2grtHlBSnQDZkARw9f6wS6a4gNDDUXNQRXq0xt_rhK58/s1744/Resolved%20Issues.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;946&quot; data-original-width=&quot;1744&quot; height=&quot;348&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwVQxdR8FwmASrrpFRtu3EW1wOZfmKTD0KQmmApt4rhdY7CUTxBoqqpPWMIQvyx0SK9oGx2L4Jzy6dlD9CclG2VHg5oEbAvQ1K1KbVyPjL04e1nXLekzr4x-xM-6Hwoqnt6CicJzi-Dd1nC3D2grtHlBSnQDZkARw9f6wS6a4gNDDUXNQRXq0xt_rhK58/w640-h348/Resolved%20Issues.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h2&gt;Packages&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l0 level1 lfo3; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;✓&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variant: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;System_Patches upgraded: 2.2.27 → 2.2.29 on both nodes&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Configuration&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l0 level1 lfo3; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;✓&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variant: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;DNS Resolver restarted on both nodes to clear Python module deadlock&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l0 level1 lfo3; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;✓&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variant: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;Both nodes now use own IP as first DNS server (eliminated cross-dependency)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l0 level1 lfo3; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;✓&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variant: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;5 DNS redirect NAT rules created across all internal interfaces&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l0 level1 lfo3; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;✓&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variant: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;pfBlockerNG DNSBL feeds updated: dead feeds removed, URLhaus/Hagezi/Phishing Army added&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Firewall Rules&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l0 level1 lfo3; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;✓&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variant: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;Rules 48/49 deleted: dead DC DNS rules on wrong interface (154→152)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l0 level1 lfo3; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;✓&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variant: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;Rules 71/72 deleted: duplicate HZN HTTP redirect WAN rules (152→150)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l0 level1 lfo3; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;✓&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variant: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;Rules 68/70 patched: logging enabled on UAG/Horizon WAN rules&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l0 level1 lfo3; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;✓&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variant: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;Rule 133 patched: HA Sync scoped to HA subnet, inet46→inet&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l0 level1 lfo3; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;✓&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variant: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;Rule 105 patched: Internal group inet46→inet&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l0 level1 lfo3; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;✓&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variant: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;Rule 85 patched: description corrected to match actual alias (IM_Ports, not Steam)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l0 level1 lfo3; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;✓&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variant: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;Rule 135 patched: GUEST DNS dst=any→dst=pfSense resolver VIP&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l0 level1 lfo3; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;✓&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variant: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;Rule 97 deleted: superseded captive portal rule (150→149)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h2&gt;Final State&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border-color: currentcolor; border-image: initial; border-style: none; border-width: medium; border: medium; color: black; font-variant-caps: normal; width: 624px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border: 1pt solid rgb(204, 204, 204); padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Total firewall rules&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: rgb(204, 204, 204) rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-image: none 100% / 1 / 0 stretch; border-style: solid solid solid none; border-width: 1pt 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;154 → 149 (5 removed, 0 added)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Packages&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;All current, no updates pending&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Notices&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;0 on both nodes&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;CARP&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;16 VIPs MASTER on primary, 16 BACKUP on secondary&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;pfsync&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;syncok=1 on both nodes&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: 0% 0% repeat rgb(235, 243, 251); border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204); border-image: none 100% / 1 / 0 stretch; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 4pt 6pt; width: 160pt;&quot; valign=&quot;top&quot; width=&quot;213&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;XMLRPC&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-color: currentcolor rgb(204, 204, 204) rgb(204, 204, 204) currentcolor; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 4pt 6pt; width: 308pt;&quot; valign=&quot;top&quot; width=&quot;411&quot;&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Config identical on both nodes&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;h1&gt;Takeaways&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;p class=&quot;MsoNormal&quot;&gt;A few things stood out from this session:&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;The cross-referenced DNS configuration is the kind of design decision which looks reasonable at the time — each node pointing to the other for redundancy.&amp;nbsp;&amp;nbsp;However, this hides a potential cascading failure with DNS. It took an unrelated Unbound deadlock to surface it, and an audit with no prior assumptions to flag it.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;The inet46 rules were a real finding. With pfBlockerNG geo-IP operating on IPv4 only, leaving inet46 on internal trust rules creates a bypass path for any device auto-configuring a link-local IPv6 address. This is easy to miss.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;The mislabeled rule (STEAM vs IM_Ports) had presumably been wrong for years. No one catches these in day-to-day operations. Automated review with no prior assumptions found it immediately.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;text-indent: -0.25in;&quot;&gt;MCP + Claude Code as an audit platform works well. The 37 SSH tools gave Claude Code full access to pfctl output, config.xml, log data, and package state — enough to conduct a genuine infrastructure review, not just a surface-level scan.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-align: left; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-left: 0.5in; mso-list: l1 level1 lfo1; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The full setup — from installing the MCP SSH server on macOS through to validating the /mcp connection in Claude Code — took about 45 minutes. The audit session itself ran several hours, mostly because of the DNS deadlock detour, with some breaks to let Claude Code run.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;Running this against a live firewall — even a home lab one — does require some trust in the process. I was pleasantly surprised at how much structure Claude Code brought to each issue: what was found, why it mattered, and why the recommendation was the right call. All-in-all, an excellent experience and a great way to use AI in a supplemental capacity to achieve a real goal.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;I&#39;ll be making this a regular cadence — at least quarterly or semi-annually — to ensure unused rules and configurations are disabled or removed completely..&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1&gt;Update: Downstream Consequences Worth Noting&lt;/h1&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Shortly after publishing this post, one of my four Horizon VDI servers went offline. No amount of rebooting or service restarts brought it back. Two things stood out immediately: the certificate loaded on the host had expired, and the host was reporting no Internet connectivity&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The certificate expiration explained why Horizon services weren’t functioning on the host — a renewal missed during maintenance the week prior. Replacing the certificate and restarting services, however, still didn’t bring it back online.&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The Internet connectivity issue traced back to DNS. The specific subnet’s AD DNS was configured to route outbound resolution through the public-facing side of the pfSense firewalls rather than through pfSense’s own DNS resolver. This was one of the misconfigurations corrected during the audit session — because in its original form, it allowed a complete bypass of pfBlockerNG DNSBL outbound. Not a catastrophic security gap, but not intentional either.&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The DNS redirect NAT rules put in place during the session enforced resolver routing properly, and the host in question was the first to feel it. The other Horizon hosts hadn’t propagated the change yet — but it was only a matter of time.&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The fix was straightforward once the cause was clear. The audit created the condition; understanding the audit made diagnosing it fast.&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Home Labs are Fun! &amp;nbsp;😂&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;See &lt;a href=&quot;https://technotes.flaming.ws/2026/06/how-i-used-ai-to-audit-my-pfsense-ha.html&quot; target=&quot;_blank&quot;&gt;Part 2 for the continuation of the story&lt;/a&gt;!&lt;/p&gt;&lt;p align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #595959; font-size: 9pt;&quot;&gt;Generated with Claude Code (Anthropic) — May 2026&lt;br /&gt;Reviewed and approved by Dean Flaming – May 2026&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/7040421562211480840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/7040421562211480840'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2026/05/how-i-used-ai-to-audit-my-pfsense-ha.html' title='How I Used AI to Audit My pfSense HA Firewall Pair - Part 1'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKADrtfjRKyYjHkebS8vjUy9TpamHSrkghkDJsJ-_jw1eCX-vB4LShtt_NxphaQ7Z_VxV1zcOOcVRY-9szoGKl4DYzNnan6C4r_0xKXwwT0PZ6oiHXWIeXHmOKCktPE266GrGKAygOMeDP6-nOPS_vpx_xQMsAHQ1ooOuW5qJiXFrxKRMWSOuFp9YCLpQ/s72-w640-h278-c/Found%20Issues.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-7905647323466050017</id><published>2025-09-21T13:39:00.000-07:00</published><updated>2025-10-30T06:37:04.220-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="macOS"/><title type='text'>macOS Terminal Commands to Add Spaces to the Dock</title><content type='html'>&lt;h1 style=&quot;text-align: left;&quot;&gt;Adding Spaces to macOS Dock&lt;/h1&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Have you ever wanted to have spaces on your macOS Dock? &amp;nbsp;I know, some would argue, &quot;You&#39;re using it wrong!&quot; &amp;nbsp;Quite simply, that&#39;s not how tech folks should think. &amp;nbsp;Remember, users should be able to make their computer conform to the their own habits - not the user conforming to the computer (more specifically, the software engineers who don&#39;t ever think about the end user experience or their solution&#39;s usability).&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;And, if you&#39;re like me, I detest LaunchPad, Widgets on my desktop (in Tahoe or newer), Stage Manager, and the new &quot;Applications&quot; menu in macOS Tahoe. I find them useless while I know others love them &amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Additionally, while everyone wants you to &quot;buy my cheap tool/use my free tool&quot; (which, let&#39;s face it, needs far too many permissions and probably opens too many security holes), there is an easier, free way built right into macOS.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;So how do we add spaces to the Dock?&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Types of Spaces on macOS Dock&lt;/h2&gt;&lt;div&gt;First, we need to understand, there are two main sides to the dock. &amp;nbsp;You can easily see this with the vertical separator bar between static apps and running apps (if you don&#39;t minimize apps to their icon).&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;blob:https://www.blogger.com/8a40ab8b-c131-4e4d-be74-6ad29586e93c&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This means, when adding a space, you need to define which side of this vertical separator bar you wish for the space to be one.&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Prerequisites:&lt;/h4&gt;&lt;div&gt;One thing to note up front:&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Be semi-comfortable in macOS Terminal&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Adding a Space to the Left Side of the macOS Dock&lt;/h3&gt;&lt;div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Open Terminal&lt;/li&gt;&lt;li&gt;Execute the following command:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;defaults write com.apple.dock &lt;b&gt;persistent-apps&lt;/b&gt; -array-add &#39;{tile-data={}; tile-type=&quot;spacer-tile&quot;;}&#39; &amp;amp;&amp;amp; killall Dock&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;NOTE: You do not need to execute this as &quot;sudo&quot; (Super User &#39;do&#39;). &amp;nbsp;Additionally, you will see the Dock disappear and reappear with the space added just to the left of the vertical separator bar.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Once the space is added, you can click and hold on the space area to drag it around or remove it if desired.&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;Adding a Space to the Right Side of the macOS Dock&lt;/h3&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Open Terminal&lt;/li&gt;&lt;li&gt;Execute the following command:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;defaults write com.apple.dock &lt;b&gt;persistent-others&lt;/b&gt; -array-add &#39;{tile-data={}; tile-type=&quot;spacer-tile&quot;;}&#39; &amp;amp;&amp;amp; killall Dock&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;NOTE: You do not need to execute this as &quot;sudo&quot; (Super User &#39;do&#39;). &amp;nbsp;Additionally, you will see the Dock disappear and reappear with the space added just to the right of the vertical separator bar.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Once the space is added, you can click and hold on the space area to drag it around or remove it if desired.&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Done!&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/7905647323466050017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/7905647323466050017'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2025/09/macos-terminal-commands-to-add-spaces.html' title='macOS Terminal Commands to Add Spaces to the Dock'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-2502123309886815716</id><published>2025-07-05T09:31:00.000-07:00</published><updated>2025-07-05T09:54:33.587-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DNS"/><category scheme="http://www.blogger.com/atom/ns#" term="Firewall"/><category scheme="http://www.blogger.com/atom/ns#" term="Home Automation"/><category scheme="http://www.blogger.com/atom/ns#" term="Honeywell"/><category scheme="http://www.blogger.com/atom/ns#" term="pfSense"/><category scheme="http://www.blogger.com/atom/ns#" term="Routing"/><title type='text'>Honeywell Wi-Fi Thermostat or RedLINK Gateway and Outbound Internet Connectivity Failures</title><content type='html'>&lt;h2&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody;&quot;&gt;Problem&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;:&lt;/span&gt;&lt;/h2&gt;&lt;p class=&quot;p1&quot; style=&quot;-webkit-text-size-adjust: auto; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;The Honeywell Wi-Fi Thermostats and RedLINK Gateways fail to route outbound, even when they have an internally resolvable IP address provided by DHCP, when the router/gateway does not also handle DNS requests on the same IP.&amp;nbsp;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;This is due to (poor) internal coding of the Honeywell devices ignoring all DNS and other secondary DHCP provided resources except the gateway IP.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;-webkit-text-size-adjust: auto; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;-webkit-text-size-adjust: auto; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody; font-weight: bold;&quot;&gt;Symptoms&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;:&lt;/span&gt;&lt;/h2&gt;&lt;p class=&quot;p1&quot; style=&quot;-webkit-text-size-adjust: auto; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul class=&quot;ul1&quot; style=&quot;-webkit-text-size-adjust: auto; text-align: left;&quot;&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s3&quot; face=&quot;Menlo-Regular&quot; style=&quot;font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;The Honeywell Wi-Fi thermostat or RedLINK gateway may indicate it does not have the ability to contact the Internet even though the Internet connection is up, the Honeywell device has a DHCP assigned IP address (for Honeywell Wi-Fi thermostats, see the Wi-Fi screen), and other devices can communicate outbound and to the device.&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s3&quot; face=&quot;Menlo-Regular&quot; style=&quot;font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;The mytotalconnectcomfort.com website shows an error that it has lost connectivity with the device.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;257&quot; data-original-width=&quot;1765&quot; height=&quot;85&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1BYgAFKkb7KmysRgp1ppSa6AJSJ_poD9fNDTDJWH4rKsxU4Fzyxav9W_93V2WT3tSBui2GmchSCKL8MUxbR0t6mJ8DUJE6IlFyk_CeCGsHv5IG5RMcENVrHSNTwvwwiK_ArSnNZjKC_W97O68W2yZY383m068ttFp6yjHpx5E7JPYAS5y2m0bTA8MepM/w591-h85/IMG_0158.jpeg&quot; style=&quot;-webkit-text-size-adjust: auto; font-size: 17px;&quot; width=&quot;591&quot; /&gt;&lt;/div&gt;&lt;ul class=&quot;ul1&quot; style=&quot;-webkit-text-size-adjust: auto;&quot;&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;For Honeywell Wi-Fi thermostats, they show error such as “Internet Connection Lost” or “Waiting for Updates”.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkOTH3arhi041ElcRidpJWdtvk4TRY7UHBj7TGtUZRnJWyc2NpcxiORTupS552blm9AtfhiOPtjD2b-kxWgriDxJtJC4XdsYXTYn25591QkJT1gj7Wi2KhRDn1Tut8F8JrBDGu24mkY9Z2CfGNAWkqoz0SNxgksJjRPFBpSO0k2VhSeK5-P3wv803FxjI/s3154/IMG_5985.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1774&quot; data-original-width=&quot;3154&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkOTH3arhi041ElcRidpJWdtvk4TRY7UHBj7TGtUZRnJWyc2NpcxiORTupS552blm9AtfhiOPtjD2b-kxWgriDxJtJC4XdsYXTYn25591QkJT1gj7Wi2KhRDn1Tut8F8JrBDGu24mkY9Z2CfGNAWkqoz0SNxgksJjRPFBpSO0k2VhSeK5-P3wv803FxjI/w400-h225/IMG_5985.jpeg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 17px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;!--more--&gt;&lt;/span&gt;&lt;h2&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody;&quot;&gt;Environment&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;:&lt;/span&gt;&lt;/h2&gt;&lt;p class=&quot;p1&quot; style=&quot;-webkit-text-size-adjust: auto; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;In my case, I have two pfSense Firewalls/Gateways operating in an HA configuration.&lt;/span&gt;&lt;/p&gt;&lt;ul class=&quot;ul1&quot; style=&quot;-webkit-text-size-adjust: auto;&quot;&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s3&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody; font-weight: bold;&quot;&gt;Primary pfSense Firewall IP:&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;&amp;nbsp;192.168.1.252 (example)&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s3&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody; font-weight: bold;&quot;&gt;Secondary pfSense Firewall IP:&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;&amp;nbsp;192.168.1.253 (example)&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s3&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody; font-weight: bold;&quot;&gt;CARP Virtual IP (VIP):&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;&amp;nbsp;192.168.1.254 (example address - used as default gateway and DNS server for clients)&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s3&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;DHCP assigned address provides:&lt;/span&gt;&lt;/li&gt;&lt;ul class=&quot;ul1&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s3&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;Gateway&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s3&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;DNS&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s3&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;NTP&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s3&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody; font-weight: bold;&quot;&gt;Honeywell Wi-Fi Thermostats and/or RedLINK Gateway requires outbound DNS resolution to:&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;&amp;nbsp;mytotalconnectcomfort.com&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;!--more--&gt;&lt;/span&gt;&lt;h2&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody;&quot;&gt;Solution&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;:&lt;/span&gt;&lt;/h2&gt;&lt;p class=&quot;p1&quot; style=&quot;-webkit-text-size-adjust: auto; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;Assuming the Honeywell device is actually connecting to Wi-Fi and getting a DHCP provided IP address and other devices on that same network subnet can communicate (i.e. Ping) the Honeywell device… AND other devices on that same network subnet can browse outbound to the mytotalconnectcomfort.com website, then the issue is likely to be DNS resolution.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s3&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedItalicBody; font-style: italic; font-weight: bold;&quot;&gt;Allow DNS resolution on internal Gateway address.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot; style=&quot;-webkit-text-size-adjust: auto; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 22px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;s4&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody; font-weight: bold; text-decoration: underline;&quot;&gt;pfSense with HA Specific Solution&lt;/span&gt;&lt;/h3&gt;&lt;p class=&quot;p1&quot; style=&quot;-webkit-text-size-adjust: auto; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;In my case, I have two HA configured pfSense routers/firewalls which I had forgotten to bind DNS Resolver to the CARP (LB VIP) address.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot; style=&quot;-webkit-text-size-adjust: auto; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 22px;&quot;&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody; font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody; font-weight: bold;&quot;&gt;Configure Unbound (DNS Resolver) to Listen on the CARP VIP&lt;/span&gt;&lt;/h4&gt;&lt;ol class=&quot;ol1&quot; style=&quot;-webkit-text-size-adjust: auto;&quot;&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;Login to pfSense Web GUI (typically at 192.168.1.252 for the primary pfSense and 253 for the secondary pfSense)&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;Navigate to Services → DNS Resolver&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;In the&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody; font-weight: bold;&quot;&gt;Network Interfaces&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;&amp;nbsp;section:&lt;/span&gt;&lt;/li&gt;&lt;ul class=&quot;ul1&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s5&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;Select the following interfaces:&lt;/span&gt;&lt;/li&gt;&lt;ul class=&quot;ul1&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s5&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;LAN (includes .252 and .253)&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s5&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;192.168.1.254 (CARP VIP)&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s5&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;Localhost (optional)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s5&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;This ensures that Unbound listens on:&lt;/span&gt;&lt;/li&gt;&lt;ul class=&quot;ul1&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s5&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;192.168.1.252 (Primary)&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s5&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;192.168.1.253 (Secondary, when in MASTER state)&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s5&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;192.168.1.254 (CARP VIP, used by clients and devices like RedLINK)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody; font-weight: bold;&quot;&gt;Save&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;&amp;nbsp;and&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody; font-weight: bold;&quot;&gt;Apply Changes&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p class=&quot;p2&quot; style=&quot;-webkit-text-size-adjust: auto; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 22px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot; style=&quot;-webkit-text-size-adjust: auto; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;NOTE: You may need to “reboot” the thermostat after you apply any changes to network resolution and routing settings.&amp;nbsp;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;The Honeywell Wi-Fi thermostat and RedLINK devices aren’t exactly smart and have a limited code configuration so restarting them may be the quickest option to allow testing.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;!--more--&gt;&lt;/span&gt;&lt;h2&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody;&quot;&gt;Results&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;:&lt;/span&gt;&lt;/h2&gt;&lt;ul class=&quot;ul1&quot; style=&quot;-webkit-text-size-adjust: auto;&quot;&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s3&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;DNS requests to 192.168.1.254 (CARP VIP) are answered by Unbound on the MASTER firewall.&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s3&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;Honeywell Wi-Fi or RedLINK Gateway successfully resolves mytotalconnectcomfort.com and establishes outbound communication.&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s3&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;Failover between .252 and .253 does not interrupt DNS functionality, as only the MASTER firewall owns .254.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;!--more--&gt;&lt;/span&gt;&lt;p class=&quot;p1&quot; style=&quot;-webkit-text-size-adjust: auto; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: UICTFontTextStyleEmphasizedBody; font-weight: bold;&quot;&gt;References:&lt;/span&gt;&lt;/p&gt;&lt;ul class=&quot;ul1&quot; style=&quot;-webkit-text-size-adjust: auto;&quot;&gt;&lt;li class=&quot;li1&quot; style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 17px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span class=&quot;s2&quot; style=&quot;font-family: Menlo-Regular; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s3&quot; style=&quot;font-family: UICTFontTextStyleBody;&quot;&gt;Reddit Thread:&amp;nbsp;&lt;a href=&quot;https://www.reddit.com/r/Ubiquiti/comments/d93e9z/honeywell_thermostat_connection_issue/&quot;&gt;https://www.reddit.com/r/Ubiquiti/comments/d93e9z/honeywell_thermostat_connection_issue/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/2502123309886815716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/2502123309886815716'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2025/07/honeywell-wi-fi-thermostat-or-redlink.html' title='Honeywell Wi-Fi Thermostat or RedLINK Gateway and Outbound Internet Connectivity Failures'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1BYgAFKkb7KmysRgp1ppSa6AJSJ_poD9fNDTDJWH4rKsxU4Fzyxav9W_93V2WT3tSBui2GmchSCKL8MUxbR0t6mJ8DUJE6IlFyk_CeCGsHv5IG5RMcENVrHSNTwvwwiK_ArSnNZjKC_W97O68W2yZY383m068ttFp6yjHpx5E7JPYAS5y2m0bTA8MepM/s72-w591-h85-c/IMG_0158.jpeg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-3925013123498660055</id><published>2025-06-08T12:26:00.000-07:00</published><updated>2025-06-09T14:56:39.212-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Home Assistant"/><category scheme="http://www.blogger.com/atom/ns#" term="Home Automation"/><title type='text'>Setting Up the Broadlink RM4 Mini with Home Assistant (Without the Broadlink App)</title><content type='html'>&lt;p&gt;&lt;b style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-size: 16px;&quot;&gt;Introduction:&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;This guide outlines the current (as of writing) process for setting up a new Broadlink RM4 Mini with Home Assistant—without relying on Broadlink’s mobile apps or cloud services.&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 16px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px 0px 2px;&quot;&gt;&lt;b&gt;References:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Menlo; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 9px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&lt;/span&gt;Everything Smart Home YouTube Video - &lt;a href=&quot;https://youtu.be/jEOyTGaKwaQ&quot;&gt;Control IR Devices with Home Assistant EASILY - Broadlink RM4 Pro&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Menlo; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 9px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&lt;/span&gt;MJG59 Python Broadlink - &lt;a href=&quot;https://github.com/mjg59/python-broadlink&quot;&gt;Git Repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 16px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px 0px 2px;&quot;&gt;&lt;b&gt;Notes:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Menlo; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 9px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&lt;/span&gt;Double quotes are used below for readability—do not include them when entering Python commands.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Menlo; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 9px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&lt;/span&gt;Single quotes will &lt;b&gt;&lt;i&gt;likely NOT&lt;/i&gt;&lt;/b&gt; copy correctly (as the correct ASCII input) so please replace all single quotes by manually typing them on the command line if using copy/paste.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Menlo; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 9px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&lt;/span&gt;Some commands may differ depending on your system or environment—refer to the GitHub repository for alternatives.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Menlo; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 9px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&lt;/span&gt;This guide is based on macOS, but most steps work on Windows with minor adjustments:&lt;/li&gt;
&lt;ul style=&quot;list-style-type: disc;&quot;&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Menlo; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 9px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&lt;/span&gt;Use `python`/`pip` instead of `python3`/`pip3` may be required.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Menlo; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 9px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&lt;/span&gt;`broadlink.xdiscover()` may not work on Windows due to firewall/network configurations. Use `broadlink.hello(‘RM4_IP_ADDRESS&#39;)` instead.&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;span style=&quot;font-width: normal;&quot;&gt;&lt;span style=&quot;font-family: Menlo; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 9px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;Calling “broadlink.hello(‘RM4_IP_ADDRESS&#39;)” or “broadlink.discovery()” or any of the python commands from the Git repository directly &lt;b&gt;&lt;i&gt;without&lt;/i&gt;&lt;/b&gt; piping it to a variable (i.e. &lt;b&gt;not using&lt;/b&gt; “variable = “ in front of the command) will port the output to screen instead of a variable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 16px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px 0px 2px;&quot;&gt;&lt;b&gt;Preparations:&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Download and install Python if necessary&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Install Python if you need to.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;b&gt;macOS:&lt;/b&gt; Use Brew to install Python (‘brew install python’).&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;b&gt;Windows:&lt;/b&gt; Download python from &lt;a href=&quot;http://Python.org&quot;&gt;Python.org&lt;/a&gt; and install.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;After Python is installed, install &lt;a href=&quot;https://github.com/mjg59/python-broadlink&quot;&gt;Python-Broadlink&lt;/a&gt; from Github&lt;/li&gt;&lt;ol&gt;&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Follow the instructions on the Github repository to install.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-size: 13px;&quot;&gt;Use “pip3 install broadlink” or “pip install broadlink” commands based on your OS configurations.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;/ol&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 16px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px 0px 2px;&quot;&gt;&lt;b&gt;Instructions:&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;b&gt;Discovering, Connecting, Configuring The RM4 Mini:&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;After unboxing, connect the RM4 Mini to power.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;It should blink rapidly 4 times…then pause.&amp;nbsp; Then repeat.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;This means the RM4 Mini is in AP mode.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;If it is not blinking rapidly 4 times then pausing, it is not in AP Mode.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;There are several ways to get it into AP mode, the easiest being long-press for 10 seconds and it should become available to join via Wi-Fi.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE Long pressing 3-4 seconds just resets it.&amp;nbsp; Continuing to hold for 10 seconds forces it into AP mode.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;From your computer where Python and the Broadlink GIT repository are installed, join the Broadlink wifi (something like “Broadlink_Wifi_device” or similar).&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE: It helps to have both wired and wireless network connections so you can scan your network to see when it joins wifi (assuming wifi and wired are on the same subnet or reachable from each other if on different subnets).&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE: There is no password.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Launch Python&lt;/li&gt;&lt;ol&gt;&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;macOS Terminal: python3&lt;/li&gt;&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE: As stated under initial notes, this guide is based on use of macOS Terminal.&lt;/li&gt;&lt;ol&gt;&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;For Windows, refer to the notes section above for use of Python and Pip on Windows.&lt;/li&gt;&lt;/ol&gt;
&lt;/ol&gt;

&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Import Broadlink libraries&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Python Command “import broadlink&quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Check your Wi-Fi IP address.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;It should be a “192.168.10.100” and the “router” should be “192.168.10.1”&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;The “router” address is the IP of the RM4 Mini you just plugged in.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE: This is what I was seeing on my RM4 minis. They may change based on environment or software updates.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;From the Python command line, initiate a discover command.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;See the GitHub page for various options here.&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;I had to define my local IP address in the command.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Command “devices = broadlink.discover(local_ip_address=‘COMPUTER_IP_ADDRESS’)”.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Scan the network (Optional)&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;If you can scan the network you should only see the following:&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Your computer’s Wi-Fi IP of 192.168.10.100&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;The RM4 Mini’s IP of 192.168.10.1&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Send the Wifi Configuration Command (YES, you send the wifi command before connecting to configure other settings)&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Use the following command to setup wifi on the RM4 Mini&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Command: “broadlink.setup(‘SSID’, ‘PASSWORD’, 3, ip_address=‘BROADCAST_IP_ADDRESS’)” (i.e. the broadcast address of the Broadlink wifi AP).&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE: See the Git page for details.&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;I had to use the broadcast address to configure the device.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;If correctly done, the device will configure itself and reboot and your computer will drop off the wifi.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Your RM4 mini should have rebooted and joined the wifi which was previously defined.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;If not, do a long reset and reconfigure.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Initiate another device discovery but use your network’s broadcast address.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Command: “devices = broadlink.discover(discover_ip_address=‘BROADCAST_IP_ADDRESS’)” where the broadcast address is &lt;b&gt;&lt;i&gt;now &lt;/i&gt;&lt;/b&gt;the&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;broadcast address of the current network - assuming your RM4 mini is rebooted and joined your wifi network.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Conduct a search for all devices by initiating the following Python Commands&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Commands:&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;“for device in broadlink.xdiscover():”&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;“&amp;nbsp; &amp;nbsp; print(device)”&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE: The print command is an example action. Do whatever you want or issue all of the commands up front for the discovered device(s).&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE: When you type out a “for” command and hit enter after the first line, it will take you to a “. . . “ line.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Press ENTER at the end of the first line to go to the second line.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Press TAB and type the second line.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Press ENTER at the end of the second line.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Press ENTER one more time.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;You will see a list of all RM4 mini devices on your network.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Conduct a “Hello” to link to the specific one in question.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Send the command “device = broadlink.hello(’RM4_IP_ADDRESS’)” to define the RM4 mini address.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE the single quotes may not copy correctly.&amp;nbsp; Retype if needed.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Authenticate to the device.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Use “device.auth()” to authenticate to the device in question.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Set the device name.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Command: “device.set_name(‘Master Bedroom Remote’)&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE: This is ONLY done so when you add more devices via this process, you know which ones are already configured.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE: These names mean nothing to Home Assistant as it stores names within itself.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Unlock the device.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Command: “device.set_lock(False)&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Check device lock state.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Command: “device.is_locked”&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE: This should return false.&amp;nbsp; If set to true, ensure you are authenticated (rerun “device.auth()” if necessary) then rerun “device.set_lock(False)”&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;You are now ready to join it to Home Assistant.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;b&gt;Adding the RM4 Mini to Home Assistant:&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Helvetica Neue; font-size: x-small;&quot;&gt;If you have troubles here, please check out &lt;b&gt;Everything Smart Home&lt;/b&gt;&#39;s YouTube video linked at the top.&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Open Home Assistant and browse to SETTINGS &amp;gt; DEVICES AND SERVICES.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Within there a new device should appear.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Click ADD.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Set the Home Assistant Name for the device.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE: I suggest making it the same as the name set above on the Broadlink configurations.&amp;nbsp; This way it is easier to reference later.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Define the Home Assistant location.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Turn on the RM4 Mini device in Home Assistant.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Go to the RM4 mini device in Home Assistant (SETTINGS &amp;gt; DEVICES AND SERVICES &amp;gt; BROADLINK) and select the RM4 mini device and within its controls, click the switch to turn it on in Home Assistant.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;The device is now added to Home Assistant.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;You are ready to start “learning” IR and RF codes.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE: If I’m importing learned codes from another RM4 Mini, I like to learn one code first to autogenerate the file(s) necessary in Home Assistant.&amp;nbsp; This is super beneficial for multiple of the same device, such as multiple mini-split AC units with the same remote and commands, but each in different areas of the house.&amp;nbsp; See the “Modifying the Broadlink Remote Codes Files” section below.&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;b&gt;Learning Codes in Home Assistant for a Device:&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Within Home Assistant, browse to DEVELOPER TOOLS &amp;gt; ACTIONS&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Under Actions, select REMOTE: LEARN COMMAND&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Click ENTITY and select the RM4 MINI you just configured.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;For DEVICE, check the box and type in the simple name of the device you are “learning” commands for.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE: If you are learning multiple commands for a device, ensure you are using the same name for each command.&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;For COMMAND, check the box and type in a name for the command to be learned (e.g. “power” or “power_on”).&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;For COMMAND TYPE, check the box and ensure the correct type is set (i.e. IR or RF).&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;If using a toggle button which has multiple commands (i.e. Power button has one command for power on and another command for power off), then you can check the box and ENABLE the switch.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;This is optional&lt;/li&gt;
&lt;/ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Timeout is optional&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Click the PERFORM ACTION button and the light on the RM4 Mini should light up.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Press the specific button (perform the action on the remote) which you want to record.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;The PERFORM ACTION will go green with a check mark if successful in recording the command.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;b&gt;Testing Learned Codes in Home Assistant:&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Within Home Assistant, browse to DEVELOPER TOOLS &amp;gt; ACTIONS&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Under Actions, select REMOTE: SEND COMMAND&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Click ENTITY and select the RM4 MINI you just configured.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;For DEVICE, check the box and type in the simple name of the device you previously “learned” commands for.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;For COMMAND, check the box and type in a name for the command which was learned (e.g. “power” or “power_on”).&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;For COMMAND TYPE, check the box and ensure the correct type is set (i.e. IR or RF).&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Repeats, Delays, and Hold are optional.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Click the PERFORM ACTION button and see if the device responds accordingly.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;&lt;b&gt;Modifying the Broadlink Remote Codes Files:&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;NOTE: If you modify the “/config/.storage/broadlink_remote_XXXXXXXXXX_codes” file for the RM4 mini device by pasting in additional commands/codes, make sure you do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Save the file and close it.&lt;/li&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;Reload the device in Home Assistant SETTINGS &amp;gt; DEVICES &amp;amp; SERVICES &amp;gt; BROADLINK page by clicking the 3 vertical dots and selecting RELOAD.&lt;/li&gt;
&lt;ol&gt;
&lt;li style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;This will reload the commands file.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px; min-height: 15px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 16px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px 0px 2px;&quot;&gt;&lt;b&gt;Conclusion:&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 13px; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;&quot;&gt;You’re now fully set up to control IR/RF devices with your Broadlink RM4 Mini in Home Assistant. Enjoy building your smart home automations!&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/3925013123498660055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/3925013123498660055'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2025/06/setting-up-broadlink-rm4-mini-with-home.html' title='Setting Up the Broadlink RM4 Mini with Home Assistant (Without the Broadlink App)'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-7777223049994409970</id><published>2024-12-09T12:52:00.006-08:00</published><updated>2026-07-24T13:37:15.239-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OBS"/><category scheme="http://www.blogger.com/atom/ns#" term="Virtual Camera"/><title type='text'>Fix the OBS &quot;Could Not Find the Virtual Camera System Process&quot; Error on macOS Without Logging Out</title><content type='html'>&lt;h1 style=&quot;text-align: left;&quot;&gt;&lt;style class=&quot;WebKit-mso-list-quirks-style&quot;&gt;
&lt;!--
/* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:&quot;&quot;;
	margin:0in;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:&quot;Calibri&quot;,sans-serif;
	mso-fareast-font-family:Calibri;}
h1
	{mso-style-priority:9;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:&quot;&quot;;
	mso-style-link:&quot;Heading 1 Char&quot;;
	margin:0in;
	mso-pagination:widow-orphan;
	mso-outline-level:1;
	font-size:16.0pt;
	font-family:&quot;Calibri&quot;,sans-serif;
	color:#2E74B5;
	mso-font-kerning:0pt;
	font-weight:normal;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	mso-style-parent:&quot;&quot;;
	color:#0563C1;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:#96607D;
	mso-themecolor:followedhyperlink;
	text-decoration:underline;
	text-underline:single;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:&quot;&quot;;
	margin:0in;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:&quot;Calibri&quot;,sans-serif;
	mso-fareast-font-family:Calibri;}
span.Heading1Char
	{mso-style-name:&quot;Heading 1 Char&quot;;
	mso-style-priority:9;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:&quot;Heading 1&quot;;
	mso-ansi-font-size:16.0pt;
	mso-bidi-font-size:16.0pt;
	color:#2E74B5;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:11.0pt;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:&quot;Calibri&quot;,sans-serif;
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;
	mso-bidi-font-family:Calibri;
	mso-font-kerning:0pt;
	mso-ligatures:none;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;
	mso-header-margin:35.4pt;
	mso-footer-margin:35.4pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
 /* List Definitions */
 @list l0
	{mso-list-id:227763347;
	mso-list-type:hybrid;
	mso-list-template-ids:1062615664 1716007678 -1322484504 1886056972 1727952166 -938977336 282786778 -1764979632 2089048670 1160819910;}
@list l0:level1
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:.35in;
	text-indent:-.25in;}
@list l0:level2
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l0:level3
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l0:level4
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l0:level5
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l0:level6
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l0:level7
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l0:level8
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l0:level9
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1
	{mso-list-id:1137331932;
	mso-list-type:hybrid;
	mso-list-template-ids:1014811320 1916975824 1236149006 1227505342 1549805866 2069009662 1584180490 -649273052 -1188277776 -1246332752;}
@list l1:level1
	{mso-level-number-format:bullet;
	mso-level-text:•;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:.35in;
	text-indent:-.25in;}
@list l1:level2
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1:level3
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1:level4
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1:level5
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1:level6
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1:level7
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1:level8
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}
@list l1:level9
	{mso-level-start-at:0;
	mso-level-text:&quot;&quot;;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:0in;
	text-indent:0in;}

--&gt;
&lt;/style&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;caret-color: rgb(0, 0, 0); color: black; margin-bottom: 8pt;&quot;&gt;If you run OBS Studio on macOS as a virtual camera, sooner or later you will hit this error at the worst possible time:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div style=&quot;border-color: currentcolor currentcolor currentcolor rgb(187, 187, 187); border-image: none; border-style: none none none solid; border-width: medium medium medium 1.5pt; caret-color: rgb(0, 0, 0); color: black; margin-left: 0.4in; margin-right: 0in; padding: 0in 0in 0in 8pt;&quot;&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;border: medium; margin-bottom: 8pt; padding: 0in;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #555555;&quot;&gt;Could not find the virtual camera system process. This may be resolved by logging out of and back into your macOS user account, or by restarting your computer.&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;caret-color: rgb(0, 0, 0); color: black; margin-bottom: 8pt;&quot;&gt;The dialog is technically correct. A logout or restart clears it. Both also kill every open app and session, usually five minutes before a meeting starts. The good news: you can reset the virtual camera in place, no logout required.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/h1&gt;&lt;h1 style=&quot;margin-bottom: 8pt; margin-top: 12pt;&quot;&gt;Why It Happens&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;h1&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;caret-color: rgb(0, 0, 0); color: black; margin-bottom: 8pt;&quot;&gt;Modern OBS builds run the macOS virtual camera as a CoreMedia I/O (CMIO) camera extension managed by the operating system. The extension process occasionally dies or fails to re-register after an OBS or macOS update, and OBS loses track of it. Extensions normally register at session start, which is why the dialog points you toward a logout. Toggling the extension in System Settings forces an immediate re-registration instead.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/h1&gt;&lt;h1 style=&quot;margin-bottom: 8pt; margin-top: 12pt;&quot;&gt;The Fix&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;h1&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;caret-color: rgb(0, 0, 0); color: black; margin-bottom: 8pt;&quot;&gt;The order of operations matters here, so follow the sequence exactly.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-bottom: 6pt; margin-left: 0.35in; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;color: black;&quot;&gt;1.&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Quit OBS:&amp;nbsp;&lt;/b&gt;Fully quit with Cmd+Q. The reset will not take effect while OBS is running.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-bottom: 6pt; margin-left: 0.35in; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;color: black;&quot;&gt;2.&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Open Camera Extensions:&amp;nbsp;&lt;/b&gt;Go to System Settings &amp;gt; General &amp;gt; Login Items &amp;amp; Extensions and scroll down to the Camera Extensions section.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-bottom: 6pt; margin-left: 0.35in; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;color: black;&quot;&gt;3.&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Toggle the OBS extension off:&amp;nbsp;&lt;/b&gt;Uncheck the toggle for the OBS camera extension. This unloads the stuck instance from your session.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-bottom: 6pt; margin-left: 0.35in; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;color: black;&quot;&gt;4.&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Open OBS, then quit it again:&amp;nbsp;&lt;/b&gt;Launch OBS briefly with the extension disabled, then quit. This clears its handle to the old extension.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-bottom: 6pt; margin-left: 0.35in; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;color: black;&quot;&gt;5.&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Toggle the extension back on:&amp;nbsp;&lt;/b&gt;Recheck the toggle. macOS re-registers the extension immediately.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-bottom: 6pt; margin-left: 0.35in; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;color: black;&quot;&gt;6.&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Start the virtual camera:&amp;nbsp;&lt;/b&gt;Open OBS and click Start Virtual Camera. The error should be gone.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/h1&gt;&lt;h1 style=&quot;margin-bottom: 8pt; margin-top: 12pt;&quot;&gt;Two Follow-Up Notes&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;h1&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-bottom: 6pt; margin-left: 0.35in; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;color: black; font-family: inherit;&quot;&gt;•&lt;span style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;App refresh:&amp;nbsp;&lt;/b&gt;If Zoom, Teams, or a browser was already running and no longer lists OBS Virtual Camera in its device picker, restart the app so it re-enumerates cameras.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoListParagraph&quot; style=&quot;margin-bottom: 6pt; margin-left: 0.35in; text-indent: -0.25in;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;color: black; font-family: inherit;&quot;&gt;•&lt;span style=&quot;font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 7pt; font-style: normal; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Legacy plugin conflict:&amp;nbsp;&lt;/b&gt;If the toggle sequence still fails, look in /Library/CoreMediaIO/Plug-Ins/DAL/ for an old DAL-style plugin left over from a legacy OBS install. Remove it, since it conflicts with the modern camera extension.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/h1&gt;&lt;h1 style=&quot;margin-bottom: 8pt; margin-top: 12pt;&quot;&gt;Credit&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;h1&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;caret-color: rgb(0, 0, 0); color: black; margin-bottom: 8pt;&quot;&gt;Credit where due: Roman Zipp documented this toggle sequence on&amp;nbsp;&lt;a href=&quot;https://romanzipp.com/blog/fix-obs-could-not-find-the-virtual-camera-system-process-on-macos&quot;&gt;his blog&lt;/a&gt;, and it has held up across multiple OBS releases. His post saved me a logout cycle, and hopefully this one saves you the same.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/h1&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/7777223049994409970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/7777223049994409970'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2024/12/fix-obs-virtual-camera.html' title='Fix the OBS &quot;Could Not Find the Virtual Camera System Process&quot; Error on macOS Without Logging Out'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-2780968446702312013</id><published>2021-02-24T14:54:00.005-08:00</published><updated>2021-02-24T14:58:00.539-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Identity"/><category scheme="http://www.blogger.com/atom/ns#" term="microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="O365"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware"/><category scheme="http://www.blogger.com/atom/ns#" term="Workspace ONE"/><category scheme="http://www.blogger.com/atom/ns#" term="Workspace ONE Access"/><title type='text'>Workspace ONE Access and Office 365 Integration with Azure AD and Tear Down Notes</title><content type='html'>&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;u&gt;INTRODUCTION:&lt;/u&gt;&lt;/h2&gt;&lt;p&gt;This is a simple whitepaper and procedures on integration of Workspace ONE Access with MS Office 365 (and Azure AD) as well &quot;tear down&quot; steps for a lab environment. &amp;nbsp;It is designed to help someone go through all of the major steps with integration of a VMware Workspace ONE Access tenant with a Microsoft Azure &amp;amp; Office 365 tenant in order to fully test out the integration process as well as being able to tear everything back down and reset both tenants in order to repeat the process.&lt;/p&gt;&lt;p&gt;This is just one of the ways in which integration CAN work but not the only way. &amp;nbsp;Each customer environment is very unique and will be different in some or many aspects. &amp;nbsp;These procedures mainly focus on use of Workspace ONE Access to provide Single Sign-On into O365 resources and NOT provide provisioning (a.k.a. user account creation) in O365 nor automatically define license levels.&lt;/p&gt;&lt;p&gt;For additional details and resources see &lt;a href=&quot;https://theidentityguy.ca/2021/02/23/integrating-workspace-one-access-with-microsoft-office-365/&quot; target=&quot;_blank&quot;&gt;Steve the Identity Guy&#39;s blog on O365 integration&lt;/a&gt;.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm9QwfsUGylBV71oIPyC14MFUV2zVR0qhOTlUiD039Nbkaqgdyub3YbpnBfUgJVFC0CIP5EVC42I_BN8ymgjSZehY3qDeccAvk3wlsv9VzZ4fxQ_pEAvftjDc5iJeofsieu0kiremfCWU/s960/1+-+O365+Deployment+Model.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;540&quot; data-original-width=&quot;960&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm9QwfsUGylBV71oIPyC14MFUV2zVR0qhOTlUiD039Nbkaqgdyub3YbpnBfUgJVFC0CIP5EVC42I_BN8ymgjSZehY3qDeccAvk3wlsv9VzZ4fxQ_pEAvftjDc5iJeofsieu0kiremfCWU/w640-h360/1+-+O365+Deployment+Model.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;u&gt;PREREQUISITES:&lt;/u&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Workspace ONE Access tenant (either on-premises or cloud will work)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Service FQDN (i.e. &amp;lt;tenant&amp;gt;.vmwareidentity.com)&lt;/li&gt;&lt;li&gt;Administrative Login Info&lt;/li&gt;&lt;li&gt;Globally Unique Issuer Name (e.g. &amp;lt;tenant&amp;gt;.vmwareidentity.com or &amp;lt;tenant&amp;gt;.workspaceoneaccess.com or &quot;&amp;lt;tenant&amp;gt;.company.com&quot;).&lt;/li&gt;&lt;li&gt;UPN and ImmutableID User Attributes (MS ImmutableID = Source Anchor and is either objectGUID or mS-DS-ConsistencyGuid)&lt;br /&gt;&lt;br /&gt;NOTE: Within newer Workspace ONE Access tenants, there is a &quot;sourceAnchor&quot; user attribute which can be used to define whether &quot;objectGUID&quot; or &quot;mS-DS-ConsistencyGuid&quot; is the mapped value for easy changing of Microsoft&#39;s ImmutableID (a.k.a. Source Anchor). In the case this doesn&#39;t exist, create this within the Admin UI under Identity &amp;amp; Access Management &amp;gt; Setup &amp;gt; User Attributes prior to creating the Directory and then ensure when setting up the tenant Directory (to an on-premises Active Directory via AD-IWA), ensure the desired User Attribute mappings are defined properly.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A.D. Synchronized – Leave UPN as $(user.userPrincipalName)&lt;/li&gt;&lt;li&gt;Workspace ONE Access Connector installed and activated on Domain Member&lt;/li&gt;&lt;li&gt;Domain Integration with defined Source Anchor AND userPrincipalName&lt;/li&gt;&lt;ul&gt;&lt;li&gt;$(user.sourceAnchor) = objectGUID or mS-DS-ConsistencyGuid&lt;br /&gt;NOTE: SEE SETTING UP SOURCE ANCHOR IN WORKSPACE ONE ACCESS SECTION&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;O365/Azure tenant&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Customer must have O365 Premium Business account&lt;/li&gt;&lt;li&gt;Customer O365 Registered Domain (e.g. company.com)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Customer O365 Admin credentials&lt;/li&gt;&lt;li&gt;Issuer Uri (e.g. vidm.company.com or whatever is set in O365 VMware Identity Manager/Workspace ONE Access Apps)&lt;/li&gt;&lt;li&gt;Customer’s desired Federation Brand Name (e.g. “VMware, Inc.”)&lt;/li&gt;&lt;li&gt;Passive Logon Uri (i.e. “https://&amp;lt;IDM_FQDN&amp;gt;/SAAS/API/1.0/POST/sso”)&lt;/li&gt;&lt;li&gt;Active Logon Uri (i.e. “https://&amp;lt;IDM_FQDN&amp;gt;/SAAS/auth/wsfed/activelogon”)&lt;/li&gt;&lt;li&gt;Logoff Uri (i.e. “https://login.microsoftonline.com/logout.srf”)&lt;/li&gt;&lt;li&gt;Metadata Exchange Uri (i.e. “https://&amp;lt;IDM_FQDN&amp;gt;/SAAS/auth/wsfed/services/mex”)&lt;/li&gt;&lt;li&gt;SAML Signing Certificate (without spaces, carriage returns, “-----BEGIN CERTIFICATE-----”,or “-----END CERTIFICATE-----”)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Licensing&lt;/li&gt;&lt;ul&gt;&lt;li&gt;MS Office 365 Business Premium licenses (even just one will do for testing)&lt;/li&gt;&lt;li&gt;VMware Workspace ONE Access (SaaS or On-Premises) will work without a license&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;u&gt;WORKSPACE ONE UEM NOTES:&lt;/u&gt;&lt;/h2&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;For Workspace ONE UEM, so long as Workspace ONE Access is defined for Enrollment Authentication at the Company OG, &amp;nbsp;Workspace ONE UEM does NOT need to know anything about mS-DS-ConsistencyGuid or sourceAnchor. &amp;nbsp;Knowledge of these attributes can be handled solely within Workspace ONE Access. &amp;nbsp;Enrollment Authentication is set within Workspace ONE UEM Admin Settings &amp;gt; Devices &amp;amp; Users &amp;gt; General &amp;gt; Enrollment under the Authentication tab on the Customer OG.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1uZ3UWuQvK1wPT_MGra8XHbzolToyUj4YunLGeo-zvNXDkfQvv16K-9kLhP8a-u4AS4zQDPz605UAbeOPj3H6avwmDbVM8UA7uwnMzzVehhvmXaZvc4Jjz_rg5jzSRqb2VLdZNxjaQDk/s1331/2+-+Workspace+ONE+UEM+Enrollment+AuthN+to+Access.png&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;727&quot; data-original-width=&quot;1331&quot; height=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1uZ3UWuQvK1wPT_MGra8XHbzolToyUj4YunLGeo-zvNXDkfQvv16K-9kLhP8a-u4AS4zQDPz605UAbeOPj3H6avwmDbVM8UA7uwnMzzVehhvmXaZvc4Jjz_rg5jzSRqb2VLdZNxjaQDk/w611-h350/2+-+Workspace+ONE+UEM+Enrollment+AuthN+to+Access.png&quot; title=&quot;Workspace ONE UEM Company OG Enrollment Authentication Settings&quot; width=&quot;611&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;For Hub Services within Workspace ONE to work properly, both Workspace ONE Access and Workspace ONE UEM do need to know about objectGUID and its specific mappings. &amp;nbsp;This means, if using sourceAnchor in Workspace ONE Access, one must ALSO set &quot;objectGUID&quot; to a mapping of &quot;objectGUID&quot; in the Workspace ONE Access global User Attributes and in Directory settings under Mapped Attributes for synching into Workspace ONE Access (See screenshots within the SETTING UP SOURCE ANCHOR IN WORKSPACE ONE ACCESS procedure further below) as well as also having &quot;Object Identifier&quot; within the Workspace ONE UEM Settings &amp;gt; System &amp;gt; Enterprise Integrations &amp;gt; Directory Services section of the Customer OG where &quot;Object Identifier&quot; is mapped to &quot;objectGUID&quot;. &amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCIk1MsyOAo7GegY_k889lUK1URrXnuXCVAInD0FA2Pm23XyYrP2QU99qlFny9mXS4uhhVvW7Txdp4zbfYSoJIh3ooU_CSX94dyulZLrl-3ynZ55WvHYP34S27J_Y96WMSIK47pgMPxLw/s1671/3+-+Directory+Services+objectGUID+Mapping.png&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1131&quot; data-original-width=&quot;1671&quot; height=&quot;434&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCIk1MsyOAo7GegY_k889lUK1URrXnuXCVAInD0FA2Pm23XyYrP2QU99qlFny9mXS4uhhVvW7Txdp4zbfYSoJIh3ooU_CSX94dyulZLrl-3ynZ55WvHYP34S27J_Y96WMSIK47pgMPxLw/w606-h434/3+-+Directory+Services+objectGUID+Mapping.png&quot; title=&quot;Enterprise Integrations - Directory Services - User Attribute&quot; width=&quot;606&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;NOTE: &amp;nbsp;It should again be noted, having objectGUID mapped into both Workspace ONE Access and Workspace ONE UEM are NOT required for O365 integrations unless specifically using the older objectGUID mappings for O365. &amp;nbsp;Having objectGUID mappings in both Access and UEM ARE REQUIRED for Workspace ONE Hub Services to properly function. &amp;nbsp;This is different than what is needed for O365 functionality.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;span&gt;&lt;!--more--&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;u&gt;STAND-UP (INTEGRATION) STEPS FOR A LAB:&lt;/u&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj35siAWJwB8Dmhbp218_NQcssYpN1zlF3H5Jj2GuRBcsGAgvgcONAdBStUWyqGi__b23B7sophyphenhyphenDpsSf2kFDsusTEqdlh0NEKQXLsHWbi1JyfXIHy5dznQtTlm1wXgwi45vVQdxm9B9-c/s960/4+-+O365+Access+Integration+Flow.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;540&quot; data-original-width=&quot;960&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj35siAWJwB8Dmhbp218_NQcssYpN1zlF3H5Jj2GuRBcsGAgvgcONAdBStUWyqGi__b23B7sophyphenhyphenDpsSf2kFDsusTEqdlh0NEKQXLsHWbi1JyfXIHy5dznQtTlm1wXgwi45vVQdxm9B9-c/w640-h360/4+-+O365+Access+Integration+Flow.png&quot; title=&quot;Workspace ONE Access / O365 - Integration Walkthrough&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Use O365 or Azure Domain Admin Console to enable Active Directory sync&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Office 365 Admin Console:&lt;/b&gt; &amp;nbsp;&lt;a href=&quot;https://portal.office.com&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://portal.office.com&lt;/a&gt; or &lt;a href=&quot;https://login.microsoft.com&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://login.microsoft.com&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Azure Admin Console:&lt;/b&gt; &lt;a href=&quot;https://manage.windowsazure.com&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://manage.windowsazure.com&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;2. Use O365 or Azure Domain Admin Console to create Azure Domain within Azure Tenant&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;3. Activate Sync in O365 or Azure Domain Admin console&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;4. Install Azure AD Connect tools on a Domain Member server&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;5. Walk through initial configurations of AAD Connect and conduct sync of On-premises Active Directory to Azure AD&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;NOTE: This is a wizard procedure within AAD Connect tools&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;6. Open PowerShell command prompt on member server where Azure AD Connect tools are installed and connect to Azure or &amp;nbsp;O365 tenant&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Command:&lt;/b&gt; &lt;span style=&quot;font-family: courier;&quot;&gt;Connect-MsolService&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;7. In PowerShell, list the Azure Domains&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Command:&lt;/b&gt; &lt;span style=&quot;font-family: courier;&quot;&gt;Get-MsolDomain&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;8. Now it is time to convert the Azure Domain if it is not already converted&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;NOTE: &amp;nbsp;When Using Azure Admin Console and wizard options, the domain is already converted to Federated (Skip step 8. and 8.a. and go to step 9.)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;8.a. To convert an Azure Domain created through the O365 Admin Console, use the following command within PowerShell on the AD Domain Member Server where AAD Connect tools are installed.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Command Template:&lt;/b&gt; &amp;nbsp;&lt;span style=&quot;font-family: courier;&quot;&gt;Set-MsolDomainAuthentication -DomainName &amp;lt;domain&amp;gt; -Authentication Federated -IssuerUri &amp;lt;&quot;Outlook Tenant Issuer&quot;&amp;gt; -FederationBrandName &amp;lt;&quot;My Company, Inc.&quot;&amp;gt; -PassiveLogOnUri &quot;https://&amp;lt;Identity Manager Tenant FQDN&amp;gt;/SAAS/API/1.0/POST/sso&quot; -ActiveLogOnUri &quot;https://&amp;lt;Identity Manager Tenant FQDN&amp;gt;/SAAS/auth/wsfed/active/logon&quot; -LogOffUri &quot;https://login.microsoftonline.com/logout.srf&quot; -MetadataExchangeUri &quot;https://&amp;lt;Identity Manager Tenant FQDN&amp;gt;/SAAS/auth/wsfed/services/mex&quot; -SigningCertificate &amp;lt;Get this from VMware Identity Manager / Workspace ONE Access admin UI&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Command Example: &amp;nbsp;&lt;/b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;Set-MsolDomainAuthentication -DomainName test.com -Authentication Federated -IssuerUri &quot;test.vmwareidentity.com&quot; -FederationBrandName &quot;Test.com&quot; -PassiveLogOnUri &quot;https://test.vmwareidentity.com/SAAS/API/1.0/POST/sso&quot; -ActiveLogOnUri &quot;https://test.vmwareidentity.com/SAAS/auth/wsfed/active/logon&quot; -LogOffUri &quot;https://login.microsoftonline.com/logout.srf&quot; -MetadataExchangeUri &quot;https://test.vmwareidentity.com/SAAS/auth/wsfed/services/mex&quot; -SigningCertificate MIIDHTCCAgWgAwIBAgIHRzGnzeX6CTANBgkqhkiG9w0BAQUFADBGMSAwHgYDVQQDDBdWTXdhcmUgSWRlbnRpdHkgTWFuYWdlcjEVMBMGA1UECgwMRkxBTUlOR1RFU1QxMQswCQYDVQQGEwJVUzAeFw0xNTA2MDIyMDE1MjhaFw0yNTA1MzAyMDE1MjhaMEYxIDAeBgNVBAMMF1ZNd2FyZSBJZGVudGl0eSBNYW5hZ2VyMRUwEwYDVQQKDKxGTEFNSU5HVEVTVDExCzAJBgNVBAYTAlVTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvPTLdMe5VlWVmZq783oAAJcMipdJ5I1qw9k08sdy9kBTDj0zxGX9e3Pjokrk4ySB0F9gjDl5eb/DpOoyvMtmH8vEQe/w35pfxURJVnvT/qW0QqLiPllk1AyR0+j/1O0jO0IAZ4zVmsUCjtWt0FUTEHrBMEVE273bve7KExfLuuwxXDtaPwJ5cNFeB6f1SeZp+esEbP42MM7dQRsVwF+sUIgE5iU6jj0bMxM1Cp+cpusDwQoM9R+CfrcqWOZcN0SD+XhMtleCWKbRLYuqHgk1eVEHcR2oZCEj2dAHxT67T1U94nbue901brLN75Uw3rCH89K2flHDmoRj3ZwFymifZQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCNLzLgkISAroUFZc0pXb0E7YPPMLcVDXAqdiF+v1j9nnvay4EhZgGFGzZgkAl0hEstMhQTVz5WL+0PiiXma+jxpAdnulwWIHz8rWs20fyT76LQpw1BWFyX3/EdIFPLB3Lt2Ji9tkfwjLoOZm7xQoBQWds2ABriS9r7nbDcY6fcDknxZyziwusSpwcbvaeL534WNJKo4flTMTiPhSR2xfz8WfgZlTICnWoeYLzT18uXZ9qbkCWiiOrchZK6VBL7b66E0Dm/YAyjie3DLbR8r965qmaxgNDFMakASHd/rIo5FL0jna94tGvICAQo8zrxKNcdVc04MykSgssGERPw5VzU&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXDQu3P7tJhHaApgtP5hu_iLMZ08E6NrogGQgWzgViu0aNu6WqFKZsJcGifjEVN5MsWiCojhyphenhyphenowgQt2VFTrZUmX3XlCQAUFAmORu1TDEeNlSF8NHlhtrATOqjTkik3QlYwglx5SH8FxWw/s1916/5+-+Run+Set-MsolDomainAuthentication+CMDLET.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;740&quot; data-original-width=&quot;1916&quot; height=&quot;248&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXDQu3P7tJhHaApgtP5hu_iLMZ08E6NrogGQgWzgViu0aNu6WqFKZsJcGifjEVN5MsWiCojhyphenhyphenowgQt2VFTrZUmX3XlCQAUFAmORu1TDEeNlSF8NHlhtrATOqjTkik3QlYwglx5SH8FxWw/w640-h248/5+-+Run+Set-MsolDomainAuthentication+CMDLET.png&quot; title=&quot;PowerShell Command Line Entry for Set-MsolDomainAuthentication&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;9. To verify a domain created and converted to &quot;federated&quot; through the Azure Admin console, use the following verification commands in PowerShell on the AD Domain Member Server where AAD Connect is installed and configured.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;NOTE: &amp;nbsp;THE FOLLOWING POWERSHELL COMMANDS ARE USED TO VERIFY THE DOMAIN CREATED THROUGH THE AZURE ADMIN CONSOLE ONLY. If you completed step 8. and 8a. then skip step 9.a. and 9.b. and go to step 10.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;9.a. Get the DNS (or TXT) domain record verifications for the actual owned domain (the one matching the Azure/O365 domain name created in the MS Azure tenant).&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Command:&lt;/b&gt; &amp;nbsp;&lt;span style=&quot;font-family: courier;&quot;&gt;Get-MsolDomainVerificationDns -Domainname [domain] [-mode ,domainverificationmode.] [-tenantid ,guid.] [,commonparameters.]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Command Example: &lt;/b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;Get-MsolDomainVerificationDns -Domainname test.com -Mode dnstxtrecord&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;9.b. Using the PowerShell Command Prompt on the AD Member Server where the AAD Connect tools are installed, run the following command to confirm the federation of the Azure Domain to the VMware Identity Manager / Workspace ONE Access Identity Provider (IdP).&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;NOTE: In order to confirm ownership of the actual domain, a custom TXT or MX DNS record must be added to the root domain entry. &amp;nbsp;This would have been accomplished within the Azure Admin Console.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Command:&lt;/b&gt; &lt;span style=&quot;font-family: courier;&quot;&gt;Confirm-MsolDomain -DomainName &amp;lt;string&amp;gt; [-ActiveLogOnUri &amp;lt;string&amp;gt;] [-DefaultInteractiveAuthenticationMethod &amp;lt;string&amp;gt;] [-FederationBrandName &amp;lt;string&amp;gt;] [-IssuerUri &amp;lt;string&amp;gt;] [-LogOffUri &amp;lt;string&amp;gt;] [-MetadataExchangeUri &amp;lt;string&amp;gt;] [-NextSigningCertificate &amp;lt;string&amp;gt;] [-OpenIDConnectDisoveryEndpoint &amp;lt;string&amp;gt;] [-PassiveLogOnUri &amp;lt;string&amp;gt;] [-SigningCertificate &amp;lt;string&amp;gt;] [-SupportsMFA &amp;lt;boolean&amp;gt;] [-TenantId &amp;lt;Guid&amp;gt;] [&amp;lt;CommonParameters&amp;gt;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Command Example:&lt;/b&gt; &amp;nbsp;&lt;span style=&quot;font-family: courier;&quot;&gt;Confirm-MsolDomain -DomainName test.com -ActiveLogOnUri &quot;https://test.vmwareidentity.com/SAAS/auth/wsfed/active/logon&quot; -DefaultInteractiveAuthenticationMethod Federated -FederationBrandName &quot;Test.com&quot; -IssuerUri test.vmwareidentity.com -LogOffUri &quot;https://login.microsoftonline.com/logout.srf&quot; -MetadataExchangeUri &quot;https://test.vmwareidentity.com/SAAS/auth/wsfed/services/mex&quot; -PassiveLogOnUri &quot;https://test.vmwareidentity.com/SAAS/API/1.0/POST/sso&quot; -SigningCertificate MIIDHTCCAgWgAwIBAgIHRzGnzeX6CTANBgkqhkiG9w0BAQUFADBGMSAwHgYDVQQDDBdWTXdhcmUgSWRlbnRpdHkgTWFuYWdlcjEVMBMGA1UECgwMRkxBTUlOR1RFU1QxMQswCQYDVQQGEwJVUzAeFw0xNTA2MDIyMDE1MjhaFw0yNTA1MzAyMDE1MjhaMEYxIDAeBgNVBAMMF1ZNd2FyZSBJZGVudGl0eSBNYW5hZ2VyMRUwEwYDVQQKDKxGTEFNSU5HVEVTVDExCzAJBgNVBAYTAlVTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvPTLdMe5VlWVmZq783oAAJcMipdJ5I1qw9k08sdy9kBTDj0zxGX9e3Pjokrk4ySB0F9gjDl5eb/DpOoyvMtmH8vEQe/w35pfxURJVnvT/qW0QqLiPllk1AyR0+j/1O0jO0IAZ4zVmsUCjtWt0FUTEHrBMEVE273bve7KExfLuuwxXDtaPwJ5cNFeB6f1SeZp+esEbP42MM7dQRsVwF+sUIgE5iU6jj0bMxM1Cp+cpusDwQoM9R+CfrcqWOZcN0SD+XhMtleCWKbRLYuqHgk1eVEHcR2oZCEj2dAHxT67T1U94nbue901brLN75Uw3rCH89K2flHDmoRj3ZwFymifZQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCNLzLgkISAroUFZc0pXb0E7YPPMLcVDXAqdiF+v1j9nnvay4EhZgGFGzZgkAl0hEstMhQTVz5WL+0PiiXma+jxpAdnulwWIHz8rWs20fyT76LQpw1BWFyX3/EdIFPLB3Lt2Ji9tkfwjLoOZm7xQoBQWds2ABriS9r7nbDcY6fcDknxZyziwusSpwcbvaeL534WNJKo4flTMTiPhSR2xfz8WfgZlTICnWoeYLzT18uXZ9qbkCWiiOrchZK6VBL7b66E0Dm/YAyjie3DLbR8r965qmaxgNDFMakASHd/rIo5FL0jna94tGvICAQo8zrxKNcdVc04MykSgssGERPw5VzU&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;NOTE: The command looks very similar to that of the image shown in step 8.a.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;10. Within VMware Identity Manager / Workspace ONE Access admin UI, create the O365 resources using the &quot;Office365 Portal&quot; from the VMware Catalog (i.e. type &quot;Office365 Portal&quot; in the Search field when creating a new SaaS Application in the VMware Identity Manager/Workspace ONE Access Catalog).&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg377CBaD2YjEBwYPOC8IywGJnZ-Rkc1GCzB2P9QmCGKO6vtnqmcR4dgtgQ6AqaXNPVy3OXiWAZM5no5Yfp9qtKUl0kvF-a2_UK1lu9522FxKgBsBBeSUuqUVoZMjI4K3QwEnfvJvSdfo/s960/6+-+Access+O365+App+Settings.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;540&quot; data-original-width=&quot;960&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg377CBaD2YjEBwYPOC8IywGJnZ-Rkc1GCzB2P9QmCGKO6vtnqmcR4dgtgQ6AqaXNPVy3OXiWAZM5no5Yfp9qtKUl0kvF-a2_UK1lu9522FxKgBsBBeSUuqUVoZMjI4K3QwEnfvJvSdfo/w640-h360/6+-+Access+O365+App+Settings.png&quot; title=&quot;Setup of O365 in Workspace ONE Access&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;11. &amp;nbsp;DONE.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;!--more--&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;u&gt;TEARDOWN STEPS FOR A LAB:&lt;/u&gt;&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;1. &amp;nbsp;First we must connect to Azure AD within PowerShell. &amp;nbsp;Using the PowerShell Command Prompt on the AD Member Server where the AAD Connect tools are installed, run the following commands to connect to the Azure tenant&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Command:&lt;/b&gt; &amp;nbsp;&lt;span style=&quot;font-family: courier;&quot;&gt;Connect-MsolService&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.a. To list the Azure Domains within PowerShell use the following command:&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;		&lt;/span&gt;&lt;b&gt;Command:&lt;/b&gt; &lt;span style=&quot;font-family: courier;&quot;&gt;Get-MsolDomain&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;2. &amp;nbsp;Now we must convert the existing FEDERATED Azure Domain to a SYNC domain. Using the PowerShell Command Prompt on the AD Member Server where the AAD Connect tools are installed, run the following command to convert the federated domain back to a sync domain.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Command:&lt;/b&gt; &lt;span style=&quot;font-family: courier;&quot;&gt;Convert-MSOLDomainToStandard –DomainName &amp;lt;federated domain name&amp;gt; -SkipUserConversion $false -PasswordFile &amp;lt;file&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Command Example:&lt;/b&gt; &amp;nbsp;&lt;span style=&quot;font-family: courier;&quot;&gt;Convert-MsolDomainToStandard -DomainName test.com -SkipUserConversion $false -PasswordFile &quot;C:\userpasswords.txt&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;NOTES: Operation cannot overwrite existing file. &amp;nbsp;Additionally, the users must be converted during the domain conversion in order for the user accounts to be deleted (i.e. Use &quot;-SkipUserConversion $false&quot; to ensure users are converted).&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;a href=&quot;https://msdn.microsoft.com/en-us/library/dn194122.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://msdn.microsoft.com/en-us/library/dn194122.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;3. &amp;nbsp;Assuming we are completely tearing down the Azure Domain Integration with an IDP and the Azure Domain Federation, After converting the Azure Domain to SYNC, we can now deactivate the Azure Domain with Active Directory sync using one of the two following selections:&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;3.a. VIA MS CONSOLES&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;		&lt;/span&gt;&lt;b&gt;O365 ADMIN - &lt;/b&gt;Click USERS, SET UP next to ACTIVE DIRECTORY, and disable synchronization.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;		&lt;/span&gt;&lt;b&gt;AZURE ADMIN -&lt;/b&gt; Select your tenant, Click on DIRECTORY INTEGRATION, click DEACTIVATE.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;		&lt;/span&gt;&lt;b&gt;AZURE PREVIEW ADMIN -&lt;/b&gt; Select INTEGRATION, click DEPLOY DIRECTORY SYNC, then proceed to next step to deactivate.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;3. b. POWERSHELL&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;		&lt;/span&gt;Essentially we use the below command to set directory sync to false.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;			&lt;/span&gt;&lt;b&gt;Command:&lt;/b&gt; &lt;span style=&quot;font-family: courier;&quot;&gt;Set-MsolDirSyncEnabled -EnableDirSync $false&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;		&lt;/span&gt;To check this occurred, use the following PowerShell command to validate&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;			&lt;/span&gt;&lt;b&gt;Command:&lt;/b&gt; &lt;span style=&quot;font-family: courier;&quot;&gt;Get-MsolCompanyInformation&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;			&lt;/span&gt;NOTE: &amp;nbsp;Within the results, look to the value for DirectorySynchronizationEnabled - it should be false.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;			&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	Reference: &lt;/span&gt;&lt;a href=&quot;https://msdn.microsoft.com/en-us/library/azure/dn144760.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://msdn.microsoft.com/en-us/library/azure/dn144760.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;4. Again, assuming we are completely tearing down the Azure Domain Integration, we can now delete all users via one of the Azure or O365 Admin Consoles.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;WARNING: DO NOT DELETE ADMIN ACCOUNTS!&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;NOTE: &amp;nbsp;This may take multiple attempts to delete all users. Additionally, the AD Sync account may need to have the &quot;User name&quot; renamed from &quot;Sync_&amp;lt;TENANT_ID&amp;gt;&quot; to something like &quot;Disabled&quot; before it can be deleted.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;5. Again, assuming we are completely tearing down the Azure Domain Integration, we can now delete the Azure/O365 Domain via one of the Azure or O365 Admin Consoles or via PowerShell on the AD Domain Member where AAD Connect tools are installed. (see below for powershell)&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Command: &lt;/b&gt;&amp;nbsp;&lt;span style=&quot;font-family: courier;&quot;&gt;Remove-MsolFederatedDomain -DomainName &amp;lt;string&amp;gt; [-SupportMulitpleDomain &amp;lt;Boolean&amp;gt;] [-Confirm] [-WhatIf] [&amp;lt;CommonParameters&amp;gt;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;6. Again, assuming we are completely tearing down the Azure Domain Integration, you may now uninstall the Azure AD Connect tools from the Activce Directory Domain member where they were installed. &amp;nbsp;This is commonly listed as &quot;Microsoft Azure AD Connect&quot; in the Windows Add/Remove Programs wizard/applet.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;NOTE: If the uninstall occurs correctly, this will remove all Azure tools and Azure PowerShell tools.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Once done, also remove any cached data within the registry of the AD member server where AAD Connect tools were installed (in the event you wish to redo the test from scratch).&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;6.a. Delete &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&quot;%LOCALAPPDATA%\AADCONNECT&quot;&lt;/span&gt;&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;6.b. Delete registry settings&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;font-family: courier;&quot;&gt; &lt;b&gt;&quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADHealthAgent&quot;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt; &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Azure AD Connect&quot;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;7. At any point during this whole deactivation process, we can also delete any/all O365 apps from VMware Identity Manager / Workspace ONE Access which were initially created during this test process.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;8. We must now wait for the Azure Domain deactivation to complete. &amp;nbsp;This can take up to 24hrs but can be as quickly as an hour.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;9. Again, assuming we are completely tearing down the Azure Domain Integration, we can also remove any TXT or MX records within the actual domain root DNS records. &amp;nbsp;This is subject to Public DNS synchronization and DNS TTLs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;10. DONE&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;!--more--&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;u&gt;ADDITIONAL NOTES AND OPTIONS:&lt;/u&gt;&lt;/h2&gt;&lt;div&gt;&lt;b&gt;VMware Docs:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;TechZone -&lt;/b&gt; &lt;a href=&quot;https://techzone.vmware.com/understanding-microsoft-office-365-integration&quot; target=&quot;_blank&quot;&gt;https://techzone.vmware.com/understanding-microsoft-office-365-integration&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;O365 SAML -&lt;/b&gt; &lt;a href=&quot;https://www.vmware.com/pdf/vidm-office365-saml.pdf&quot; target=&quot;_blank&quot;&gt;https://www.vmware.com/pdf/vidm-office365-saml.pdf&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;SAML Integrations Docs -&lt;/b&gt; &lt;a href=&quot;https://www.vmware.com/support/pubs/vidm_webapp_sso.html&quot; target=&quot;_blank&quot;&gt;https://www.vmware.com/support/pubs/vidm_webapp_sso.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;VMware Personal Blogs on Azure&amp;lt;&amp;gt;O365:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Workspace ONE and Azure AD: Part 1 -&lt;/b&gt; &lt;a href=&quot;https://blog.virtualprivateer.com/workspace-one-and-azure-ad-1/&quot; target=&quot;_blank&quot;&gt;https://blog.virtualprivateer.com/workspace-one-and-azure-ad-1/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Workspace ONE and Azure AD: Part 2 -&lt;/b&gt; &lt;a href=&quot;https://blog.virtualprivateer.com/workspace-one-and-azure-ad-2/&quot; target=&quot;_blank&quot;&gt;https://blog.virtualprivateer.com/workspace-one-and-azure-ad-2/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;b&gt;Workspace ONE and Azure AD: Part 3 -&lt;/b&gt; &lt;a href=&quot;https://blog.virtualprivateer.com/workspace-one-and-azure-ad-3/&quot; target=&quot;_blank&quot;&gt;https://blog.virtualprivateer.com/workspace-one-and-azure-ad-3/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Azure AD Connect: Design Concepts (Using objectGUID or ms-DS-ConsistencyGuid and when to use one vs. the other and how to switch):&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/azure/active-directory/hybrid/plan-connect-design-concepts&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://docs.microsoft.com/en-us/azure/active-directory/hybrid/plan-connect-design-concepts&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;NOTE: &amp;nbsp;When installing Azure AD Connect with Express mode, the Azure AD Connect wizard automatically determines the most appropriate AD attribute to use as the sourceAnchor attribute&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;How to Bulk Convert Users if Keeping Azure Domain:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;a href=&quot;http://blog.bittitan.com/2012/01/24/office-365-powershell-tip-bulk-change-upns/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://blog.bittitan.com/2012/01/24/office-365-powershell-tip-bulk-change-upns/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;Get-MsolUser -all | Where { -Not $_.UserPrincipalName.ToLower().StartsWith(“admin@”) } | ForEach { Set-MsolUserPrincipalName -ObjectId $_.ObjectId -NewUserPrincipalName ($_.UserPrincipalName.Split(“@”)[0] + “@example.com”) }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;MS Technet - DirSync: How To Switch From Single Sign-On To Password Sync:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://social.technet.microsoft.com/wiki/contents/articles/17857.dirsync-how-to-switch-from-single-sign-on-to-password-sync.aspx#sample-script-to-manually-convert-all-users-in-a-domain&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://social.technet.microsoft.com/wiki/contents/articles/17857.dirsync-how-to-switch-from-single-sign-on-to-password-sync.aspx#sample-script-to-manually-convert-all-users-in-a-domain&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&amp;nbsp;Azure Active Directory:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- &lt;a href=&quot;https://www.microsoft.com/en-us/download/details.aspx?id=55271&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://www.microsoft.com/en-us/download/details.aspx?id=55271&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- &lt;a href=&quot;https://msdn.microsoft.com/library/azure/jj151815.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://msdn.microsoft.com/library/azure/jj151815.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;u&gt;SETTING UP SOURCE ANCHOR IN WORKSPACE ONE ACCESS:&lt;/u&gt;&lt;/h2&gt;&lt;div&gt;When using sourceAnchor instead of objectGUID, prior to the directory in WS1 Access being configured, the User Attributes under Identity &amp;amp; Access Management &amp;gt; Setup &amp;gt; User Attributes need to have sourceAnchor defined and mapped to the correct Source Anchor / ImuutableID (i.e. objectGUID or mS-DS-ConsistencyGuid).&lt;/div&gt;&lt;div&gt;1. Within the Workspace ONE Access Admin Console, browse to Identity &amp;amp; Access Management &amp;gt; Setup &amp;gt; User Attributes and ensure &quot;sourceAnchor&quot; is defined there.&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;NOTE: &amp;nbsp;It is possible &quot;sourceAnchor&quot; may not be there in some versions of Workspace ONE Access or VMware Identity Manager. &amp;nbsp;If not, it can be manually added by clicking one of the green &quot;+&quot; signs.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjin80gUldtle9X4kZ-mCTzPjQMljCqpWxJGOwQ6mMZi2JCByQnAh-04jw3y2YB0u8ejv6JesHAisfTvCXRC6aGScfhQkDtKxZo8PCnyGGoM244M0Vhbfcoxh09PGxDm-TiyOBQGKkgUk0/s1303/7+-+Access+sourceAnchor.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1303&quot; data-original-width=&quot;881&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjin80gUldtle9X4kZ-mCTzPjQMljCqpWxJGOwQ6mMZi2JCByQnAh-04jw3y2YB0u8ejv6JesHAisfTvCXRC6aGScfhQkDtKxZo8PCnyGGoM244M0Vhbfcoxh09PGxDm-TiyOBQGKkgUk0/w432-h640/7+-+Access+sourceAnchor.png&quot; title=&quot;Workspace ONE Access Source Anchor&quot; width=&quot;432&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;2. Now, when creating the Directory within Workspace ONE Access, ensure the mapped attribute for &quot;sourceAnchor&quot; is defined to either &quot;objectGUID&quot; or &quot;mS-DS-ConsistencyGuid&quot;. &amp;nbsp;Which is used will be based upon the on-premises Active Directory settings and Azure AD Connect synchronization settings defined.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;WARNING: It is recommended to do User Attribute changes within Workspace ONE Access PRIOR to creating a Workspace ONE Access Directory linked to Active Directory as making any attribute a REQUIRED attribute or removing ANY attribute will not be an option until the Workspace ONE Access Directory is deleted (and subsequently recreated after the User Attribute changes take place)!&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;a. Browse to Identity &amp;amp; Access Management &amp;gt; Manage &amp;gt; Directory and if no directory exists, create a new directory (ADD DIRECTORY) and ensure on the User Attributes/Mapped Attributes section has the following attributes mapped.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;		&lt;/span&gt;1. &lt;b&gt;userPrincipalName&lt;/b&gt; -&amp;gt; &lt;b&gt;userPrincipalName&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;		&lt;/span&gt; &amp;nbsp; NOTE: &amp;nbsp;This is needed by O365/Azure domains along with the Source Anchor (below).&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;		&lt;/span&gt;2. &lt;b&gt;sourceAnchor&lt;/b&gt; -&amp;gt; (either &lt;b&gt;objectGUID&lt;/b&gt; or &lt;b&gt;ms-DS-ConsistencyGuid&lt;/b&gt;)&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;		&lt;/span&gt; &amp;nbsp; NOTE: &amp;nbsp;Most of the Identity Industry defines this as Source Anchor while Microsoft defines this as ImmutableID. They are the same thing.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1GTsZaX_aSmfpmxt3GFuJ6spzrznV9YNLmF-dhWO_8TUFZWTIHTuuCFSG1Kc_UF96RX6P5DxXK5Hv7YplW14n5Curr21f-QRQp-LDj-XJtrmkYwWxpZePB_ieC9vCwA523LQVkd8PXps/s1054/8+-+Access+Mapped+Attributes.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1054&quot; data-original-width=&quot;901&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1GTsZaX_aSmfpmxt3GFuJ6spzrznV9YNLmF-dhWO_8TUFZWTIHTuuCFSG1Kc_UF96RX6P5DxXK5Hv7YplW14n5Curr21f-QRQp-LDj-XJtrmkYwWxpZePB_ieC9vCwA523LQVkd8PXps/w548-h640/8+-+Access+Mapped+Attributes.png&quot; title=&quot;Workspace ONE Access objectGUID and mS-DS-ConsistencyGuid&quot; width=&quot;548&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;2. Finish any additional mapping settings to create or update the directory and click SAVE/NEXT/SYNC on whichever wizard in order to finish confirmation of the settings to add in the above desired attributes.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;3. DONE&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;u&gt;MICROSOFT DOCUMENTED SMART LINKS / DEEP LINKS:&lt;/u&gt;&lt;/h2&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo8B7hEPxFhqyrspbITHC9mVepAIZHPKwLbVxyb0KX2ax3HDrwtQVgB9ZBpl6_Bj8hpjLpw9dgUworLK49L3nZ6Ka2aCKbzabB7weZ2tJTu4i1hg5GZleWRxq_YzeUmPCx-ARt2tKzQew/s1375/9+-+O365+Deep+Links.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;811&quot; data-original-width=&quot;1375&quot; height=&quot;378&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo8B7hEPxFhqyrspbITHC9mVepAIZHPKwLbVxyb0KX2ax3HDrwtQVgB9ZBpl6_Bj8hpjLpw9dgUworLK49L3nZ6Ka2aCKbzabB7weZ2tJTu4i1hg5GZleWRxq_YzeUmPCx-ARt2tKzQew/w640-h378/9+-+O365+Deep+Links.png&quot; title=&quot;Microsoft Documented Smart Links&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once an anchor O365 application is in place within Workspace ONE Access (for SSO), one can then create smart links or deep links to specific resources such as PowerPoint, Word, Excel, or other resources. &amp;nbsp;This is done in order to simply provide an easy link for users which conducts Single Sign-on directly to the resource the user needs once authenticated to Workspace ONE Access rather than logging into Workspace ONE Access, then selecting O365, gaining access to the initial O365 panel of resources, and from there clicking on the specific app.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How this is done within Workspace ONE Access is simply by browsing to the Web Apps section of the Catalog, selecting the NEW button to create a new web app, typing in a name (no need to search - just type in name), uploading an icon (click NEXT), and then selecting &quot;Web Application Link&quot; for the Authentication Type and pasting in one of the below Microsoft Smart/Deep Link URLs for the specific resource. &amp;nbsp;Once done, don&#39;t forget to set any categories and assign users/groups within the WS1 Access Administrator console.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVGWU_lGmqaByZURJ3SgQAjk_Tqpdya8qhCwGyqLAUvjv58WhPtD0yvPP6gyCSBUzaW9cWoc0bZkIPecE3eLZWeKyPf7M4vXd8oWRWecXsdt8ULeS5AnYOo7EG-dp8S3baT-GbOmT58Sg/s800/10+-+New+Web+App+Link+in+Access.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;720&quot; data-original-width=&quot;800&quot; height=&quot;576&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVGWU_lGmqaByZURJ3SgQAjk_Tqpdya8qhCwGyqLAUvjv58WhPtD0yvPP6gyCSBUzaW9cWoc0bZkIPecE3eLZWeKyPf7M4vXd8oWRWecXsdt8ULeS5AnYOo7EG-dp8S3baT-GbOmT58Sg/w640-h576/10+-+New+Web+App+Link+in+Access.png&quot; title=&quot;New SaaS App - Web Application Link AuthN Type&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;Here are the Microsoft Documented Smart/Deep Links at last update of this document.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Azure Admin Center:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;https://login.microsoftonline.com/login.srf?wa=wsignin1%2E0&amp;amp;rver=6%2E1%2E6206%2E0&amp;amp;wreply=https%3A%2F%2Fportal.azure.com%2Fsignin%2Findex&amp;amp;whr={your_domain_here.com}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Exchange Admin Center:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;https://outlook.office365.com/ecp/?rfr=Admin_o365&amp;amp;exsvurl=1&amp;amp;mkt=en-US&amp;amp;Realm={your_domain_here.com}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Excel:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;https://login.microsoftonline.com/login.srf?wa=wsignin1%2E0&amp;amp;rver=6%2E1%2E6206%2E0&amp;amp;wreply=https%3A%2F%2Foffice.live.com%2Fstart%2FExcel.aspx%3Fauth%3D2&amp;amp;whr={your_domain_here.com}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;OneDrive:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;https://login.microsoftonline.com/login.srf?wa=wsignin1%2E0&amp;amp;rver=6%2E1%2E6206%2E0&amp;amp;wreply=https%3A%2F%2F{your_tenant_here}-my.sharepoint.com%2F&amp;amp;whr={your_domain_here.com}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Outlook Web Access:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;https://outlook.com/owa/{your_domain_here.com}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;PowerPoint:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;https://login.microsoftonline.com/login.srf?wa=wsignin1%2E0&amp;amp;rver=6%2E1%2E6206%2E0&amp;amp;wreply=https%3A%2F%2Foffice.live.com%2Fstart%2FPowerPoint.aspx%3Fauth%3D2&amp;amp;whr={your_domain_here.com}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;SharePoint:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;https://login.microsoftonline.com/login.srf?wa=wsignin1%2E0&amp;amp;rver=6%2E1%2E6206%2E0&amp;amp;wreply=https%3A%2F%2F{your_tenant_here}.sharepoint.com%2F&amp;amp;whr={your_domain_here.com}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Teams:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;https://login.microsoftonline.com/common/oauth2/authorize?client_id=cc15fd57-2c6c-4117-a88c-83b1d56b4bbe&amp;amp;response_mode=form_post&amp;amp;response_type=code+id_token&amp;amp;scope=openid+profile&amp;amp;redirect_uri=https%3a%2f%2fteams.microsoft.com%2f&amp;amp;domain_hint={your_domain_here.com}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Word:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;https://login.microsoftonline.com/login.srf?wa=wsignin1%2E0&amp;amp;rver=6%2E1%2E6206%2E0&amp;amp;wreply=https%3A%2F%2Foffice.live.com%2Fstart%2FWord.aspx%3Fauth%3D2&amp;amp;whr={your_domain_here.com}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Office 365 Admin Center:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;https://login.microsoftonline.com/common/oauth2/authorize?client_id=00000006-0000-0ff1-ce00-000000000000&amp;amp;response_mode=form_post&amp;amp;response_type=code+id_token&amp;amp;scope=openid+profile&amp;amp;redirect_uri=https%3a%2f%2fadmin.microsoft.com%2f&amp;amp;domain_hint={your_domain_here.com}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Power BI:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;https://app.powerbi.com/?noSignUpCheck=1&amp;amp;domain_hint={your_domain_here.com}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;MyApps Service Provider Example:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;https://myapps.microsoft.com/{your_domain_here.com}/signin/{Service}%20{Name}%20{Here}/{Application_Guid_Goes_Here}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;NOTE: Big Thanks to &lt;a href=&quot;https://blog.virtualprivateer.com&quot; target=&quot;_blank&quot;&gt;Matt Williams over at VirtualPrivateer&lt;/a&gt; for posting these all in one place.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/2780968446702312013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/2780968446702312013'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2021/02/workspace-one-access-and-office-365.html' title='Workspace ONE Access and Office 365 Integration with Azure AD and Tear Down Notes'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm9QwfsUGylBV71oIPyC14MFUV2zVR0qhOTlUiD039Nbkaqgdyub3YbpnBfUgJVFC0CIP5EVC42I_BN8ymgjSZehY3qDeccAvk3wlsv9VzZ4fxQ_pEAvftjDc5iJeofsieu0kiremfCWU/s72-w640-h360-c/1+-+O365+Deployment+Model.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-3458903076410586384</id><published>2020-10-09T11:55:00.005-07:00</published><updated>2020-10-09T12:14:05.434-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apple"/><category scheme="http://www.blogger.com/atom/ns#" term="microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft Teams"/><title type='text'>Work Around MS Teams Lack of AGC on macOS</title><content type='html'>&lt;div class=&quot;separator&quot;&gt;&lt;/div&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;Intro:&lt;/h1&gt;&lt;p&gt;For those of us working from macOS and being required to use Microsoft Teams, you may have noticed that Microsoft Teams will automatically adjust the microphone to &quot;make things easier&quot; for those users who don&#39;t have any audio equipment or knowledge of how to use attached (or even built-in) audio equipment by automatically adjusting the Automatic Gain Control on the microphone within the Mac&#39;s System Audio Settings. &amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHPzIXBgMAzOyrJeMTNEutM5YakmaXXTw1A9d_T40nBofElBZYmM2uZjSS2rGkOYPWBMVilzbiO2ZwuCyiUS8K6DdCEM8dQyrWXtT2Y9l07oCrC0zQFj4KR-96b3Fe7FjejUg_3cjq1nQ/s668/Intro.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;498&quot; data-original-width=&quot;668&quot; height=&quot;477&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHPzIXBgMAzOyrJeMTNEutM5YakmaXXTw1A9d_T40nBofElBZYmM2uZjSS2rGkOYPWBMVilzbiO2ZwuCyiUS8K6DdCEM8dQyrWXtT2Y9l07oCrC0zQFj4KR-96b3Fe7FjejUg_3cjq1nQ/w640-h477/Intro.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;For anyone who uses attached audio equipment or has custom audio settings and has preferred microphone input levels, MS Teams will ignore this and override all manual gain control settings on macOS and take control of input and use Automatic Gain Controls. &amp;nbsp;This can severely diminish the experience of MS Teams and potentially prevent the use of MS Teams on a macOS system where custom audio levels are required.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;Workaround:&lt;/h1&gt;&lt;p&gt;While I cannot take credit for this information (I found this posted as a &lt;a href=&quot;https://techcommunity.microsoft.com/t5/microsoft-teams/disable-microphone-auto-adjustment/m-p/1505788#M64608&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;comment by &quot;chornsec&quot; on a Microsoft Tech Community post&lt;/a&gt;), below is a viable workaround for making MS Teams work on macOS without implementing it&#39;s own Automatic Gain Controls (AGC).&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Procedure:&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;1. Open &#39;&lt;b&gt;Audio MIDI Setup&lt;/b&gt;&#39; application. &amp;nbsp;You can use the macOS Search feature to find the app.&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpeN9fVtn_AuQAZdHlB-eyE_73WMUxsl-HpoQ40O9CSN18SQV8jGJy1vWZnWdrozc0ZCKNlGMZnY9fVfeXhqWMu75cC-mf64UaCsacXa0_lcwX8WGfLW1t83JE2LJwa-4a7uOf5M-KOvI/s683/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;434&quot; data-original-width=&quot;683&quot; height=&quot;406&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpeN9fVtn_AuQAZdHlB-eyE_73WMUxsl-HpoQ40O9CSN18SQV8jGJy1vWZnWdrozc0ZCKNlGMZnY9fVfeXhqWMu75cC-mf64UaCsacXa0_lcwX8WGfLW1t83JE2LJwa-4a7uOf5M-KOvI/w640-h406/1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;2. In the left pane, click &lt;b&gt;+&lt;/b&gt; symbol in the lower left corner and choose &lt;b&gt;Create Aggregate Device&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy8CXbdlPbruDGX89E1ERFxJu8wsLFjq2G3TbZ9NlYvgw8O_tkbhSvJi4IKPDiO-KTsqqxyhu3bvMyhQ_xP3uF_cWG_ADehBQL5ARqfUBctFMpDBFTJcGmimywFJl14EXvyziN2WWHpbM/s632/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;538&quot; data-original-width=&quot;632&quot; height=&quot;544&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy8CXbdlPbruDGX89E1ERFxJu8wsLFjq2G3TbZ9NlYvgw8O_tkbhSvJi4IKPDiO-KTsqqxyhu3bvMyhQ_xP3uF_cWG_ADehBQL5ARqfUBctFMpDBFTJcGmimywFJl14EXvyziN2WWHpbM/w640-h544/2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;3. Ensure that the new &lt;b&gt;Aggregate Device&lt;/b&gt; is selected in the left pane.&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-dnthFyFXNjBy-fZoTHJ6QR6Hy-MrjfzIhGk1avamfUMp7Lufk2F6WEX7OCmQCXG-XxT6w8dtFYTpwJZ67vwufRAAHGRhazBa2-o0ai8a_swGW_ooXTCbEBNJEyCP4shuE0X_8X3NYBI/s231/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;75&quot; data-original-width=&quot;231&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-dnthFyFXNjBy-fZoTHJ6QR6Hy-MrjfzIhGk1avamfUMp7Lufk2F6WEX7OCmQCXG-XxT6w8dtFYTpwJZ67vwufRAAHGRhazBa2-o0ai8a_swGW_ooXTCbEBNJEyCP4shuE0X_8X3NYBI/s0/3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. In the main window area, select the &#39;&lt;b&gt;Use&lt;/b&gt;&#39; checkbox for your real input device. &lt;b&gt;ONLY SELECT ONE SOURCE&lt;/b&gt; for input as with aggregate devices, the other sources will be relegated to other audio channels.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwo1ub8sqHYG7Rt-lCerxrxZbbsKZHhOQs6UYjDAFj9nAZkBSaCPtAKFogeb3ga34TJS2USsRJvC7nEcpUCInD1FWPiP0aGkKlOyU5tKXTzqXhvRMUTL8MxrAA7zxuo_ReVORDkXgNAFg/s401/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;166&quot; data-original-width=&quot;401&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwo1ub8sqHYG7Rt-lCerxrxZbbsKZHhOQs6UYjDAFj9nAZkBSaCPtAKFogeb3ga34TJS2USsRJvC7nEcpUCInD1FWPiP0aGkKlOyU5tKXTzqXhvRMUTL8MxrAA7zxuo_ReVORDkXgNAFg/s16000/4.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5. Select the real input device from the left pane and set either the &lt;b&gt;Master Stream&lt;/b&gt; input or the &lt;i&gt;&lt;b&gt;individual channel&lt;/b&gt;&lt;/i&gt; gains correctly.&lt;/div&gt;&lt;div&gt;NOTE: &amp;nbsp;On my system, this was a&amp;nbsp;&lt;b&gt;USB Sound Device&lt;/b&gt;&amp;nbsp;(and note that I selected the &quot;2 ins&quot; and not the &quot;2 outs&quot;). &amp;nbsp;Additionally, I always set my inputs to 50%. &amp;nbsp;On my system, I cannot use &quot;Master&quot; as the channels are set individually - but this is not a big deal.&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzB3VfneLpDsmrghlWCydyjuzIKOVTidTju9wjUW-kgqvJ97k-PlmzbbjkGrE65rFv1XWWYzJZIquP64TIraoVHvRBPBrIZnnXA6UXkhqJS5XKb0yaTWp6nYvfdl3HYaDZ4axtv9cEXrs/s631/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;462&quot; data-original-width=&quot;631&quot; height=&quot;469&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzB3VfneLpDsmrghlWCydyjuzIKOVTidTju9wjUW-kgqvJ97k-PlmzbbjkGrE65rFv1XWWYzJZIquP64TIraoVHvRBPBrIZnnXA6UXkhqJS5XKb0yaTWp6nYvfdl3HYaDZ4axtv9cEXrs/w640-h469/5.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;6. Go back to your new &lt;b&gt;Aggregate Device&lt;/b&gt;&amp;nbsp;and rename it by clicking its entry in the left pane.&lt;br /&gt;In mine, I renamed it to MXL 990.&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJuTIqJ25HEXAwa56la1SS5qS76KVehxBxJRLxjpUoMk6h-yEf6fyWc8Mb4BxAyBXkhG-mczObuXD_lWOTuEqTc4W_wLYTCB7l6VP_lJ2itvtGcJyM6PmLnJo6Dv2t65_gAb2lMDC3ClU/s631/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;462&quot; data-original-width=&quot;631&quot; height=&quot;468&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJuTIqJ25HEXAwa56la1SS5qS76KVehxBxJRLxjpUoMk6h-yEf6fyWc8Mb4BxAyBXkhG-mczObuXD_lWOTuEqTc4W_wLYTCB7l6VP_lJ2itvtGcJyM6PmLnJo6Dv2t65_gAb2lMDC3ClU/w640-h468/6.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;7. Quit &amp;amp; restart the MS Teams application if it was open during this process.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;8. In MS Teams, choose the newly created aggregate device as the microphone device.&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRudHIyf139xgBupUaE_V8pYDcBy_H6ncNURcQi-5piXLX_yrts6Tob3-F_lGtgt71Zr0uWcDuHt-IWg9EmEg7BymVzRUDgzSsLVI9x8jvQmXF92C3vXTop8a45iFDLp8DpzYlQkRf7WY/s1127/8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1127&quot; height=&quot;398&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRudHIyf139xgBupUaE_V8pYDcBy_H6ncNURcQi-5piXLX_yrts6Tob3-F_lGtgt71Zr0uWcDuHt-IWg9EmEg7BymVzRUDgzSsLVI9x8jvQmXF92C3vXTop8a45iFDLp8DpzYlQkRf7WY/w640-h398/8.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;Benefits:&lt;/h1&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;Since the macOS Aggregate Device does not have a gain setting, MS Teams cannot use AGC to adjust the Microphone input.&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/3458903076410586384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/3458903076410586384'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2020/10/work-around-ms-teams-lack-of-agc-on.html' title='Work Around MS Teams Lack of AGC on macOS'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHPzIXBgMAzOyrJeMTNEutM5YakmaXXTw1A9d_T40nBofElBZYmM2uZjSS2rGkOYPWBMVilzbiO2ZwuCyiUS8K6DdCEM8dQyrWXtT2Y9l07oCrC0zQFj4KR-96b3Fe7FjejUg_3cjq1nQ/s72-w640-h477-c/Intro.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-3268929747263509486</id><published>2020-07-30T19:40:00.011-07:00</published><updated>2020-07-30T19:56:11.656-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Identity"/><category scheme="http://www.blogger.com/atom/ns#" term="vCenter"/><category scheme="http://www.blogger.com/atom/ns#" term="vIDM"/><category scheme="http://www.blogger.com/atom/ns#" term="vSphere"/><category scheme="http://www.blogger.com/atom/ns#" term="Workspace ONE"/><category scheme="http://www.blogger.com/atom/ns#" term="Workspace ONE Access"/><title type='text'>Rebuilding VMware Identity Manager or VMware Workspace ONE Access On-Premises Appliance vApp Application Properties</title><content type='html'>&lt;h1 style=&quot;text-align: left;&quot;&gt;Rebuilding Workspace ONE Access vApp Option Settings&lt;/h1&gt;There has been a few times which I or a customer has needed to rebuild the vApp Options Properties for an On-Premises deployment of VMware Workspace ONE Access (formerly known as VMware Identity Manager).&amp;nbsp; Here are the steps to rebuild the necessary properties within the on-premises deployment to make things work again.&amp;nbsp;&lt;div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Why would someone need to do this?&lt;/h2&gt;Well, let us say your environment unfortunately lost its vCenter server due to an upgrade issue or some other unexpected failure.&amp;nbsp; That&#39;s a horrible thought, I know...but it&#39;s not catastrophic.&amp;nbsp; You can really either restore vCenter from backup, or build a new vCenter.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I know what you&#39;re thinking... &quot;I have backups of my vCenter configuration!&quot;&amp;nbsp; That&#39;s great...really!&amp;nbsp; But have you tested them?&amp;nbsp; Do they work during a restore?&amp;nbsp; Mine didn&#39;t.... &amp;lt;---Insert frowny face here.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This meant my only option left was to build a new vCenter from scratch, import my vSphere hosts, and reconfigure the lost settings.&amp;nbsp; Sounds easy, yes?&amp;nbsp; Well, mostly, it was.&amp;nbsp; Except when I checked in on my VMware Workspace ONE Access on-premises tenant.&amp;nbsp; It stores all of its major settings in vCenter within each of the VM&#39;s vApp Options Properties values.&amp;nbsp; Yeah....major frowny face.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What does this last bit really mean?&amp;nbsp; It means VMware Workspace ONE Access - when installed on-premises - does not know how to boot properly when vCenter no longer exists (It can run without vCenter on VMware Workstation or VMware Fusion, but it is coded to detect this from install and it makes the necessary accommodations during install to allow for running without vCenter - but when vCenter existed initially and no longer exists, all settings are lost).&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What settings am I really talking about?&amp;nbsp; These (below)...&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhQP6kIXqxvM7xo9a4jVK-S_xcOaNi0NSK3RINfXn17nL-hLObdHnuTBv8Ri6I_YpFVDEU2wchJfb9FKKCvWFxWBUHWLkniiw7-TiZLdgSkmuMbe7850ZeCvKqY0nwn4f4SuUr9yOpFd4/s1834/65C7CA0A-D98B-452B-88D2-CAC307C34C11.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;vApp Option Settings (top of page)&quot; border=&quot;0&quot; data-original-height=&quot;401&quot; data-original-width=&quot;1834&quot; height=&quot;140&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhQP6kIXqxvM7xo9a4jVK-S_xcOaNi0NSK3RINfXn17nL-hLObdHnuTBv8Ri6I_YpFVDEU2wchJfb9FKKCvWFxWBUHWLkniiw7-TiZLdgSkmuMbe7850ZeCvKqY0nwn4f4SuUr9yOpFd4/w640-h140/65C7CA0A-D98B-452B-88D2-CAC307C34C11.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEr25buaJBq_ZQjIUPnVDXzG15REcV36F2qDkvvWcpFwkd3Sz0gJ3S129GMsvGl84kl69SpsYu0A0eAPyozRmwtQvuhNBlyrnlB_RdqcHTGx-7VFpM9KE6neQjOi5W-1EejMU1Zg6uk48/s1823/2F581D42-9013-43CE-8150-73E07544F16A.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;vApp Option Settings (bottom of page) showing the Properties and Values&quot; border=&quot;0&quot; data-original-height=&quot;454&quot; data-original-width=&quot;1823&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEr25buaJBq_ZQjIUPnVDXzG15REcV36F2qDkvvWcpFwkd3Sz0gJ3S129GMsvGl84kl69SpsYu0A0eAPyozRmwtQvuhNBlyrnlB_RdqcHTGx-7VFpM9KE6neQjOi5W-1EejMU1Zg6uk48/w640-h160/2F581D42-9013-43CE-8150-73E07544F16A.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;So how do we get these settings back without having to completely reinstall and reconfigure VMware Workspace ONE Access?&lt;/h2&gt;&lt;div&gt;Well, I&#39;m glad you asked.&amp;nbsp; And it is actually not terribly hard to do.&amp;nbsp; First though, while I&#39;m not going to go through the step-by-step (that&#39;s not really necessary), there are a few things you need to do.&lt;/div&gt;&lt;div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;If this is production, schedule an outage for all of Workspace ONE.&amp;nbsp; Give yourself a few hours.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I&#39;m also assuming you have vCenter completely restored and working properly (and making backups which work).&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;And, I&#39;m going to assume you know your way around vCenter and how to make VM Snapshots (you&#39;ll need it if you toast one of your on-premises Workspace ONE Access SLES appliances).&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;With that out of the way, it is now time to start editing each of your on-premises SLES appliances.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;NOTE: From here on out, I&#39;m assuming you are using at least vCenter 6.7 or higher and navigating through the HTML5 admin UI.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Enable vApp Options&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;Within the vCenter Admin Console, go ahead and browse to the VM, select the &lt;b&gt;Configure&lt;/b&gt; tab at the top of the VM page, and select &lt;b&gt;vApp Options&lt;/b&gt; under the &lt;b&gt;Settings&lt;/b&gt; menu on the left side of the VM settings page.&amp;nbsp; From there, you can select &lt;b&gt;EDIT&lt;/b&gt;&amp;nbsp;(on the right side of the window) and enable &lt;b&gt;vApp Options&lt;/b&gt; for each of the SLES VMs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are a couple of specific settings needed here.&lt;/div&gt;&lt;div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Check the box to &lt;b&gt;Enable vApp options&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Under the IP Allocation tab ensure Authoring IP Protocol is set to Both, Authoring IP allocation scheme has both DHCP and OVF environment unchecked, and Deployment IP Protocol is set to IPv4 and Deployment IP Allocation is set to Static - Manual.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0M2LqgRrPSaPGCtzCXhvxqzQ1yJic_Mk54Pd4p8wS7ykL2AFOXLW8ZoEAI0MgAZDrAPf-SU4EONWA0Js6gtfwOUFdaLe_-j7H-iZUVamazQGxk4LYq0JUUynNVxsCfjXGYLamNGnO6KI/s862/84173945-EA32-4537-A796-6CC631127E7C.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;IP Allocation Tab&quot; border=&quot;0&quot; data-original-height=&quot;766&quot; data-original-width=&quot;862&quot; height=&quot;355&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0M2LqgRrPSaPGCtzCXhvxqzQ1yJic_Mk54Pd4p8wS7ykL2AFOXLW8ZoEAI0MgAZDrAPf-SU4EONWA0Js6gtfwOUFdaLe_-j7H-iZUVamazQGxk4LYq0JUUynNVxsCfjXGYLamNGnO6KI/w400-h355/84173945-EA32-4537-A796-6CC631127E7C.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Under &lt;b&gt;OVF Details&lt;/b&gt; tab ensure &lt;b&gt;ISO Image&lt;/b&gt; is unchecked, &lt;b&gt;VMware Tools&lt;/b&gt; is &lt;b&gt;checked&lt;/b&gt;, and &lt;b&gt;Installation boot&lt;/b&gt; is unchecked.&lt;br /&gt;NOTE: DO NOT CLICK OK YET!&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSx6jXmOGqzONXyDXxegCk_kHX_8h6jML6uDuMpFG1z9FNnzgwM64j7qq4fho-2hulGMuJi7TJo67mfmk76WBwdQ0crPADPusv4Q8euPv0gJVoPSAwV5QHaYZOxSW58k2p5PxW7Rshk0c/s862/F21BFC07-9432-4DA0-BBF2-B90489F3D8C4.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;OVF Details Tab&quot; border=&quot;0&quot; data-original-height=&quot;766&quot; data-original-width=&quot;862&quot; height=&quot;355&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSx6jXmOGqzONXyDXxegCk_kHX_8h6jML6uDuMpFG1z9FNnzgwM64j7qq4fho-2hulGMuJi7TJo67mfmk76WBwdQ0crPADPusv4Q8euPv0gJVoPSAwV5QHaYZOxSW58k2p5PxW7Rshk0c/w400-h355/F21BFC07-9432-4DA0-BBF2-B90489F3D8C4.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Under the &lt;b&gt;Details&lt;/b&gt; tab ensure &lt;b&gt;Name&lt;/b&gt; is set to &quot;IdentityManager&quot; (no space and case sensitive) and &lt;b&gt;Vendor&lt;/b&gt; is set to &quot;VMware, Inc.&quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvcj8ib3c1j2nHyZA0sf-vAI1ofoUHQiakiex4we1cCKNddQEi3WCrtPWCWF8aUsXc2NuXtBJAxrBmgSuAC7nIZALQxqHJGSrKlI93FrJfSldaPkwwJjMEM8nkqQVrEsGF5ZYJXW4X3V4/s862/270A992B-14C1-4120-882B-8D2CF866D313.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Details Tab&quot; border=&quot;0&quot; data-original-height=&quot;766&quot; data-original-width=&quot;862&quot; height=&quot;355&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvcj8ib3c1j2nHyZA0sf-vAI1ofoUHQiakiex4we1cCKNddQEi3WCrtPWCWF8aUsXc2NuXtBJAxrBmgSuAC7nIZALQxqHJGSrKlI93FrJfSldaPkwwJjMEM8nkqQVrEsGF5ZYJXW4X3V4/w400-h355/270A992B-14C1-4120-882B-8D2CF866D313.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Once you have the above set, click OK to save and then the rest is just inputting the properties key and values.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?--&gt;

&lt;div&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;NOTE:&lt;/span&gt; This is&amp;nbsp;entered under &lt;span style=&quot;font-weight: bold;&quot;&gt;AUTHORING&amp;gt;PROPERTIES&lt;/span&gt; section. It then builds the Application and Network&amp;nbsp;Properties sections at the top of the vApp Properties under &lt;span style=&quot;font-weight: bold;&quot;&gt;&quot;Application properties - IdentityManager&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;”&lt;/span&gt;. &amp;nbsp;Once the below is entered, its fields must be edited in the “&lt;span style=&quot;font-weight: bold;&quot;&gt;Application properties - IdentityManager&lt;/span&gt;” section prior to booting up.
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Make sure to refer to the image at the top for what this should look like once entered.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt;NOTE: Slide the graph to the right to see all remaining fields.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div style=&quot;border: 1px solid rgb(170, 170, 170); color: black; height: 1500px; overflow: auto; width: 800px;&quot;&gt;
&lt;table style=&quot;-en-clipboard: true; width: 1323px;&quot;&gt;
&lt;colgroup&gt;&lt;col style=&quot;width: 105px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 104px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 94px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 74px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 62px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 75px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 98px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 97px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 84px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 142px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 122px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 104px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 81px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 81px;&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;

&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;b&gt;Key ID
&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;b&gt;Label
&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;b&gt;Category
&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;b&gt;Type
&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;b&gt;Key class ID
&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;b&gt;Key Instance ID
&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;b&gt;Description
&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;b&gt;Static Property Type
&lt;/b&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;div&gt;&lt;b&gt;Static Property
&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Length
&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;div&gt;&lt;b&gt;Static Property
&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Choice List
&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;div&gt;&lt;b&gt;Static Property
&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Default Value
&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;div&gt;&lt;b&gt;Static Property
&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;User Configurable
&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;div&gt;&lt;b&gt;Dynamic property
&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Macro
&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;div&gt;&lt;b&gt;Dynamic property
&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Network
&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;vmname
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;vmname
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;vm
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;0 - 65535
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;IdentityManager
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;[]&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;ceip.enabled
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Join the VMware Customer Experience Improvement Program.
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Application
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;boolean
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Send anonymous customer experience data to VMware.
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Boolean
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;True
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;[x]&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;vamitimezone
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Timezone setting
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Application
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;div&gt;String
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Sets the selected timezone.
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String choice
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&quot;Pacific/Samoa&quot;, &quot;US/Hawaii&quot;, &quot;US/Alaska&quot;, &quot;US/Pacific&quot;, &quot;US/Mountain&quot;, &quot;US/Central&quot;, &quot;US/Eastern&quot;, &quot;America/Caracas&quot;, &quot;America/Argentina/Buenos_Aires&quot;, &quot;America/Recife&quot;, &quot;Etc/GMT-1&quot;, &quot;Etc/UTC&quot;, &quot;Europe/London&quot;, &quot;Europe/Paris&quot;, &quot;Africa/Cairo&quot;, &quot;Europe/Moscow&quot;, &quot;Asia/Baku&quot;, &quot;Asia/Karachi&quot;, &quot;Asia/Calcutta&quot;, &quot;Asia/Dacca&quot;, &quot;Asia/Bangkok&quot;, &quot;Asia/Hong_Kong&quot;, &quot;Asia/Tokyo&quot;, &quot;Australia/Sydney&quot;, &quot;Pacific/Noumea&quot;, &quot;Pacific/Fiji&quot;
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Etc/UTC
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;[x]&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;DNS
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;DNS
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Networking Properties
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;vami
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;IdentityManager
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;The domain name servers for this VM (comma separated).&amp;nbsp;&amp;nbsp;Leave blank if DHCP is desired.&amp;nbsp;&amp;nbsp;All fields but hostname are required for static IP.
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;0 - 65535
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;[x]&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;gateway
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Default Gateway
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Networking Properties
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;vami
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;IdentityManager
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;The default gateway address for this VM.&amp;nbsp;&amp;nbsp;Leave blank if DHCP is desired.&amp;nbsp;&amp;nbsp;All fields but hostname are required for static IP.
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;0 - 65535
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;[x]&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;domain
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Domain Name
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Networking Properties
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;vami
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;IdentityManager
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;The domain name of this VM. Leave blank if DHCP is desired.
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;0 - 65535
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;[x]&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;searchpath
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Domain Search Path
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Networking Properties
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;vami
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;IdentityManager
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;The domain search path (comma or space separated domain names) for this VM. Leave blank if DHCP is desired.
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;0 - 65535
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;[x]&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;vami.hostname
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Host Name (FQDN)
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Networking Properties
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;The FQDN name for this VM.&amp;nbsp;&amp;nbsp;Leave blank for DHCP or reverse DNS to be used to lookup hostname.
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;0 - 65535
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;[x]&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;ip0
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;IP Address
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Networking Properties
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;vami
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;IdentityManager
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;The IP address for this interface.&amp;nbsp;&amp;nbsp;Leave blank if DHCP is desired.&amp;nbsp;&amp;nbsp;All fields but hostname are required for static IP.
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;0 - 65535
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;[x]&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;netmask0
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Netmask
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;Networking Properties
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;vami
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;IdentityManager
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;The netmask or prefix for this interface.&amp;nbsp;&amp;nbsp;Leave blank if DHCP is desired.&amp;nbsp;&amp;nbsp;All fields but hostname are required for static IP.
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;String
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;0 - 65535
&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;[x]&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style=&quot;border: 1px solid rgb(219, 219, 219);&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;

&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/3268929747263509486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/3268929747263509486'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2020/07/rebuilding-vmware-identity-manager-or.html' title='Rebuilding VMware Identity Manager or VMware Workspace ONE Access On-Premises Appliance vApp Application Properties'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhQP6kIXqxvM7xo9a4jVK-S_xcOaNi0NSK3RINfXn17nL-hLObdHnuTBv8Ri6I_YpFVDEU2wchJfb9FKKCvWFxWBUHWLkniiw7-TiZLdgSkmuMbe7850ZeCvKqY0nwn4f4SuUr9yOpFd4/s72-w640-h140-c/65C7CA0A-D98B-452B-88D2-CAC307C34C11.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-3454786405935129852</id><published>2020-07-30T17:11:00.001-07:00</published><updated>2020-07-30T17:11:58.286-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apple"/><category scheme="http://www.blogger.com/atom/ns#" term="Dell"/><category scheme="http://www.blogger.com/atom/ns#" term="IPMI"/><category scheme="http://www.blogger.com/atom/ns#" term="Login Script"/><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><category scheme="http://www.blogger.com/atom/ns#" term="macOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Server Management"/><title type='text'>Apple Script/App for Managing Server Fans via IPMI</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-en-clipboard: true;&quot;&gt;
&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;Intro:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
Below is an Apple Script I wrote up and compiled to control the fans on my servers via the Dell’s IPMI (iDRAC) interface.&amp;nbsp;&amp;nbsp;This uses HomeBrew for macOS as well as the “ipmitool” cask.&amp;nbsp;&amp;nbsp;Instructions are embedded in the script if you do not have both HomeBrew and the “ipmitool” cask installed.
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Prerequisite:&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;div&gt;
In order to use the script, you need to &lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;enable IPMI over LAN&lt;/span&gt; on the iDRAC network setting.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPSZ6p40yBlsGaiE9KIwgBESF-er1q-oVHG8GX2YRNC42U2z4fK7yK0O9N7FnNFwttmdO-DcQF8IdIfcLOnnD1iUwUtJV3DZ_cNC9OAru0IoXJi7EfIraTxqkk6zLKE1GB78UtlByldJs/s349/IPMI+Remote+Access.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;IPMI Remote Access Setting&quot; border=&quot;0&quot; data-original-height=&quot;89&quot; data-original-width=&quot;349&quot; height=&quot;103&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPSZ6p40yBlsGaiE9KIwgBESF-er1q-oVHG8GX2YRNC42U2z4fK7yK0O9N7FnNFwttmdO-DcQF8IdIfcLOnnD1iUwUtJV3DZ_cNC9OAru0IoXJi7EfIraTxqkk6zLKE1GB78UtlByldJs/w400-h103/IPMI+Remote+Access.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Installation:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;div&gt;
Simply copy down the SCPT file attached here and either paste or open in Apple Script Editor.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div&gt;
Reset the SERVER NAMES AND IP ADDRESSES BEFORE EXECUTING! &amp;nbsp;If you remove one or two servers, don’t forget to comment out or modify the any lines where all three servers are referenced.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div&gt;
The first time you run it, it will prompt to install HomeBrew and the “ipmitool” cask if you don’t already have those on your system.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Installing HomeBrew and ipmitool:&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;div&gt;
You may manually install HomeBrew and the “ipmitool” cask by using these instructions.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div&gt;
Launch Terminal
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div&gt;
Install HomeBrew
&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style: none;&quot;&gt;&lt;ol&gt;
&lt;li&gt;&lt;div&gt;
HomeBrew Install Command:
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;/bin/bash -c &quot;$(curl -fsSL&lt;/span&gt; &lt;a href=&quot;https://raw.githubusercontent.com/Homebrew/install/master/install.sh&quot; style=&quot;font-weight: bold;&quot;&gt;https://raw.githubusercontent.com/Homebrew/install/master/install.sh&lt;/a&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;)&quot;&lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div&gt;
Install ipmitool
&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style: none;&quot;&gt;&lt;ol&gt;
&lt;li&gt;&lt;div&gt;
ipmitool install:
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;brew install ipmitool&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;This script will:&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;div&gt;
Check for HomeBrew and “ipmitool” cask and redirect you to the correct installation instructions if you do not have these.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div&gt;
Allow you to choose between pulling the stats of all servers defined (I currently have it coded for 3 hosts but it is a simple copy/paste to add more hosts).
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div&gt;
Allow you to set fan speeds automatically by choosing LOW or HIGH fan speed offsets…
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div&gt;
…or Allow you to manually set fan speeds to any percentage of your choosing (between 20% and 100%).
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?--&gt;

&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Script UI Screenshots:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcJhYONTgvDKbu0im6PcOmxSrrgin8IGxeL_hHoObCqdufHdIzFPSNGELvIYMUTeI7R8RLfBWhMrRMJA32CTYUdpcDO3s5aW_DcaFF4EERVedtYBaWXwJtB2VwQlAheNjedIBiX49QNhc/s420/1.+Initial+Prompt.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Initial Prompt&quot; border=&quot;0&quot; data-original-height=&quot;137&quot; data-original-width=&quot;420&quot; height=&quot;130&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcJhYONTgvDKbu0im6PcOmxSrrgin8IGxeL_hHoObCqdufHdIzFPSNGELvIYMUTeI7R8RLfBWhMrRMJA32CTYUdpcDO3s5aW_DcaFF4EERVedtYBaWXwJtB2VwQlAheNjedIBiX49QNhc/w400-h130/1.+Initial+Prompt.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSgGuZ_KvU54D_BTtww_71sUhSo4qP6g3p7OOwtlk2qaQc-E-IKOpaZDa-05ixEi28FhdQL-krmvIJaTSdZrsuduqGQBVqywblot2XzojY0YAjtPPBVLSDhZNmkx9s1142A_Qxu4HxjR4/s1004/2.+Fan+Stats.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Fan and System Temp Stats&quot; border=&quot;0&quot; data-original-height=&quot;1004&quot; data-original-width=&quot;420&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSgGuZ_KvU54D_BTtww_71sUhSo4qP6g3p7OOwtlk2qaQc-E-IKOpaZDa-05ixEi28FhdQL-krmvIJaTSdZrsuduqGQBVqywblot2XzojY0YAjtPPBVLSDhZNmkx9s1142A_Qxu4HxjR4/w269-h640/2.+Fan+Stats.png&quot; width=&quot;269&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBtTZblpQFgOer8qKZ-8C3YK6SPDwwkmxNSgasUmH5bGjzmis_w39wCVF8c6_IDa4gOKLx0aighgA4oCY2P69agoacNwn7MF6irTJxwAt6DNh3LIYKcsZ4mceDyV8245o5MNQYuEsnArs/s420/3.+Fan+Percentage.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Manual Speed Setting Entry&quot; border=&quot;0&quot; data-original-height=&quot;178&quot; data-original-width=&quot;420&quot; height=&quot;170&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBtTZblpQFgOer8qKZ-8C3YK6SPDwwkmxNSgasUmH5bGjzmis_w39wCVF8c6_IDa4gOKLx0aighgA4oCY2P69agoacNwn7MF6irTJxwAt6DNh3LIYKcsZ4mceDyV8245o5MNQYuEsnArs/w400-h170/3.+Fan+Percentage.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-CaQjuyLMt9GepP_kdwHJlBpLgD6wuktnCJRw-h5cEg_twOHI1XH-3GCUbyqfHW7wRNBIecu7ESqHBYiwcIi0ReUd6kafG2YHHslXGBLNkLnxKyntY6fOH7Q7IuCiiEyZduJCSwIYkLE/s420/4.+Manual+Speed+Validation.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Manual Speed Setting Confirmation&quot; border=&quot;0&quot; data-original-height=&quot;137&quot; data-original-width=&quot;420&quot; height=&quot;130&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-CaQjuyLMt9GepP_kdwHJlBpLgD6wuktnCJRw-h5cEg_twOHI1XH-3GCUbyqfHW7wRNBIecu7ESqHBYiwcIi0ReUd6kafG2YHHslXGBLNkLnxKyntY6fOH7Q7IuCiiEyZduJCSwIYkLE/w400-h130/4.+Manual+Speed+Validation.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh536FUBpxFp1UwhT5Yt8_VvriDgn0BLt3uOHqpFGYxLxpMH996Drxi_rilxXyqEHrq8pMoI6OO60d6x-Th_FmH5aY29OW0KgsjWmU8wZn3RPzvcZhK7xQE_JFTsNkc7H4N__2g4lYdWlk/s420/5.+Auto+Speed+Offset+Validation.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Automatic Fan Speed Offset Selection Confirmation&quot; border=&quot;0&quot; data-original-height=&quot;120&quot; data-original-width=&quot;420&quot; height=&quot;114&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh536FUBpxFp1UwhT5Yt8_VvriDgn0BLt3uOHqpFGYxLxpMH996Drxi_rilxXyqEHrq8pMoI6OO60d6x-Th_FmH5aY29OW0KgsjWmU8wZn3RPzvcZhK7xQE_JFTsNkc7H4N__2g4lYdWlk/w400-h114/5.+Auto+Speed+Offset+Validation.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-en-clipboard: true;&quot;&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Compiling:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
If you wish to compile it, simply drop it into Apple Script Editor and export as an application (select “Application” in the File Format) and any other options you desire and hit SAVE.
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Script Options:&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;div&gt;
The script (in it’s current state) will prompt for user credentials each and every time you run it.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div&gt;
If you wish to set your IPMI Admin and Password into the script, the variables are already defined (as IPMIAdmin and IPMIPwd) and set to blank.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div&gt;
If you wish to add more servers, simple add in additional SERVER#IP and SERVER#NAME variables and duplicate the commands
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?--&gt;

&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;The Apple Script:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://www.screencast.com/t/rQoDg9UdD&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ScreenCast Link&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/3454786405935129852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/3454786405935129852'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2020/07/apple-scriptapp-for-managing-server.html' title='Apple Script/App for Managing Server Fans via IPMI'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPSZ6p40yBlsGaiE9KIwgBESF-er1q-oVHG8GX2YRNC42U2z4fK7yK0O9N7FnNFwttmdO-DcQF8IdIfcLOnnD1iUwUtJV3DZ_cNC9OAru0IoXJi7EfIraTxqkk6zLKE1GB78UtlByldJs/s72-w400-h103-c/IPMI+Remote+Access.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-5663693858782352960</id><published>2020-07-30T15:24:00.014-07:00</published><updated>2020-07-30T15:49:59.115-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Identity"/><title type='text'>VMware Workspace ONE Access User Sync Configurations and Exclusions</title><content type='html'>&lt;p&gt;&lt;span style=&quot;font-family: Calibri; font-size: 11pt;&quot;&gt;There are a number of reasons which may cause users to not be able to authenticate into Workspace ONE Access (formerly known as &quot;VMware Identity Manager&quot;). Of the varying possibilities, it is important to understand not only the various ways a user (or group) may be synched from Active Directory, it is also important to understand how to exclude specific users to maintain an automated sync and a solid working Workspace ONE Access tenant.&amp;nbsp; Below are points to help ensure you don’t fall prey to the most common reasons.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Calibri; font-size: 11pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;strong&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;h2&gt;User Synchronization Misconfigurations:&lt;/h2&gt;&lt;/span&gt;&lt;/strong&gt;

&lt;p&gt;&lt;span style=&quot;font-family: Calibri; font-size: 11pt;&quot;&gt;&lt;b&gt;1.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;b&gt;Base DNs not defined/not properly defined -&lt;/b&gt; When base DNs for user synch are set too deep in the Sync Settings [within the User tab] or when just synching specific user accounts (e.g. &quot;CN=John Doe,CN=Users,DC=Corp,DC=local”).&amp;nbsp; It should be noted, base DNs do not necessarily have to be set, but it is a good practice to do so, as some accounts may not be synched otherwise. Use of filters on this one is recommended to remove any red synch errors.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiReCdAkjaUA10Ra6FTewAECvg6ozIaAqQv5cf9dHmZyPjCAGypBplE0NgdOjeSRVTgXdTYk-jFinedBrDfa8QGYAVkKO94YJDoBrLm8gBa4yAmoI9cThz6cepVr9LN3KzKlWIwK_P0SsY/s1255/Setting+Up+Dir+Sync.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Workspace ONE Access Directory Setup&quot; border=&quot;0&quot; data-original-height=&quot;660&quot; data-original-width=&quot;1255&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiReCdAkjaUA10Ra6FTewAECvg6ozIaAqQv5cf9dHmZyPjCAGypBplE0NgdOjeSRVTgXdTYk-jFinedBrDfa8QGYAVkKO94YJDoBrLm8gBa4yAmoI9cThz6cepVr9LN3KzKlWIwK_P0SsY/w640-h336/Setting+Up+Dir+Sync.png&quot; title=&quot;Directory Setup&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;



&lt;div&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;b&gt;2. Using Group Membership and Nested Group Membership to Sync Users -&lt;/b&gt; I’ve also seen this when not synching users directly but rather when using groups to sync users.&amp;nbsp; Specifically, when using the “Sync nested group members” option (If this is not set, users will not be synched).&amp;nbsp; It should be noted using this configuration solely for synching users is not the best option as it is more common that users will be missed than it is for users to “accidentally” gain access to something.&amp;nbsp; Therefore it is recommended to use this setting in combination with defining base DNs to synch users from.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN_SjHidV5boshaBjHTm3fLAvb7Q5imGs5YYN0XkDa9wzE9WXptVXdqCyecveARmSoPvGkfMd62nDAncIMOUftExd2Z6eYuPjhBaPM37PYeGGg3H7863FN2b0x5OaJtF8laEIxWvtdPks/s799/Sync+Nested+Groups.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Syncing Group Members&quot; border=&quot;0&quot; data-original-height=&quot;755&quot; data-original-width=&quot;799&quot; height=&quot;605&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN_SjHidV5boshaBjHTm3fLAvb7Q5imGs5YYN0XkDa9wzE9WXptVXdqCyecveARmSoPvGkfMd62nDAncIMOUftExd2Z6eYuPjhBaPM37PYeGGg3H7863FN2b0x5OaJtF8laEIxWvtdPks/w640-h605/Sync+Nested+Groups.png&quot; title=&quot;Sync Group Members&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;b&gt;3. Horizon Provisioning To Sync Users - &lt;/b&gt;&lt;i&gt;This option was only available in older version of VMware Identity Manager (prior to 19.03)&lt;/i&gt;.&amp;nbsp;It is similar to the second configuration option - in that when defining no users or groups to synch within Identity Manager Directory configurations and just using the “Perform Directory Sync” Horizon setting (this must be enabled) means any users who do not have a Horizon resource provisioned will not be synched into Workspace ONE Access.&amp;nbsp; It should be noted using this configuration solely for synching users is not the best option as it is more common that users will be missed than it is for users to “accidentally” gain access to something.&amp;nbsp; Therefore it is recommended to use this setting in combination with defining base DNs to synch users from.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg237J5gcuG90P0Ba1GRQoKf0urhYgDIQD7DQw4Bz2FiEnowQ33nN9COIqeD2-kL3GRaklnMgNijzgnm4asD3zjU7vr5qIp9Ns2IUKFpi593eHKoAoY-bN4mCoORyo_x6W1WEhjHNcNVu0/s1189/Perform+Directory+Sync.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Check Box in prior versions of VMware Identity Manager to Sync Horizon Users&quot; border=&quot;0&quot; data-original-height=&quot;64&quot; data-original-width=&quot;1189&quot; height=&quot;36&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg237J5gcuG90P0Ba1GRQoKf0urhYgDIQD7DQw4Bz2FiEnowQ33nN9COIqeD2-kL3GRaklnMgNijzgnm4asD3zjU7vr5qIp9Ns2IUKFpi593eHKoAoY-bN4mCoORyo_x6W1WEhjHNcNVu0/w640-h36/Perform+Directory+Sync.png&quot; title=&quot;Perform Directory Sync Checkbox&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;b&gt;4. Only User Accounts which are Provisioned Resources are Synched -&lt;/b&gt; This is a feature of Workspace ONE Access and VMware Identity Manager 3.X and higher which is to ensure initial A.D. synch did not overwhelm production Active Directory servers or take excessively long to synch users.&amp;nbsp; Ultimately this means any user who does not have a Workspace ONE Access resource actually provisioned - whether it be SaaS, Web, ThinApp, Horizon, or Citrix - will not be synched into Workspace ONE Access until they have a resource assigned to them. To determine if this is the case, the easiest way to work around this is to utilize group assignment and define a resource to either an Active Directory group which the user is a member of AND that has also been synched into Workspace ONE Access OR use the Workspace ONE Access built-in ALL USERS group (a word of caution as doing so may add many more users to Workspace ONE Access).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;NOTE:&lt;/b&gt; Users who may have had a resource provisioned to them at one point but have all provisions removed will not automatically be removed from Workspace ONE Access.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;span style=&quot;text-decoration-line: underline;&quot;&gt;&lt;h2&gt;Preventing Sync Errors Through User Exclusions:&lt;/h2&gt;&lt;/span&gt;&lt;/strong&gt;&lt;p&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;After defining User DNs for synching users, and once synchronization is successful, you’ll likely start to notice sync alerts in red showing either within the test run or during the actual directory sync.&amp;nbsp; During the test run, these will show within a red box using black text and indicate why these are occurring (e.g. the account doesn’t have a valid email address, a valid first name or last name, etc.).&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNK-QXATS1jxwvItVXFGJ_KwZ-J7hj7mlfgwpk3fMmF_5szQe_2L7xYd5eFm-1Gb78onPjOlSizgXRmMz-TjPho_ecUFjWHCnjzj7virv-8oPxd6S0Vbqq5oaw6wK2yNoOj9NaTz0cRVI/s1319/Pre-Sync_Alerts.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Sync Alerts Displayed Prior to Performing Manual Directory Sync&quot; border=&quot;0&quot; data-original-height=&quot;1059&quot; data-original-width=&quot;1319&quot; height=&quot;514&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNK-QXATS1jxwvItVXFGJ_KwZ-J7hj7mlfgwpk3fMmF_5szQe_2L7xYd5eFm-1Gb78onPjOlSizgXRmMz-TjPho_ecUFjWHCnjzj7virv-8oPxd6S0Vbqq5oaw6wK2yNoOj9NaTz0cRVI/w640-h514/Pre-Sync_Alerts.png&quot; title=&quot;Pre-Sync Alerts&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;After the actual sync, within the Sync Log tab, sync alerts will show as red text within the Sync Alerts log, and again will state the reason why.&amp;nbsp; It should be noted, a sync may have alerts regardless if it successfully completed the sync or not.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaNbKWvBetI-iRJfNuIx7ut7UWvJkrq_AGHYNliCX76GMn8DBmd1ASeM4JjMz55GeslQOfLJCQ-tkQ-9D4-9uRONSRTzOOoKcqmcUVNW5SaRdDRPzNkGjJ551wMt6bsIOXFS9n1FmNi3E/s825/Sync+Alerts.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Sync Alerts Shown on a Successful Sync&quot; border=&quot;0&quot; data-original-height=&quot;291&quot; data-original-width=&quot;825&quot; height=&quot;226&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaNbKWvBetI-iRJfNuIx7ut7UWvJkrq_AGHYNliCX76GMn8DBmd1ASeM4JjMz55GeslQOfLJCQ-tkQ-9D4-9uRONSRTzOOoKcqmcUVNW5SaRdDRPzNkGjJ551wMt6bsIOXFS9n1FmNi3E/w640-h226/Sync+Alerts.png&quot; title=&quot;Sync Alerts on Sync Logs Page&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs-XhefqyfyUttZARHhEcKWFQVYvi8iuQ31fwjlWKPhlX2tYNYCcRdSSAOX3B8Iu9WE2g3nkVIJVizPf8gS9CVieSOAS2y4bRdnqjAy2nvQj7tOdz61Rf5llY28aeL_xaKnwMqG4oshB4/s1055/Post-Sync_Alerts.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Sync Alerts Shown After Sync within Sync Logs&quot; border=&quot;0&quot; data-original-height=&quot;1055&quot; data-original-width=&quot;903&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs-XhefqyfyUttZARHhEcKWFQVYvi8iuQ31fwjlWKPhlX2tYNYCcRdSSAOX3B8Iu9WE2g3nkVIJVizPf8gS9CVieSOAS2y4bRdnqjAy2nvQj7tOdz61Rf5llY28aeL_xaKnwMqG4oshB4/w548-h640/Post-Sync_Alerts.png&quot; title=&quot;Sync Alerts in Sync Logs&quot; width=&quot;548&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;These sync alerts &lt;b&gt;&lt;i&gt;must&lt;/i&gt;&lt;/b&gt;&amp;nbsp;be resolved in order for automated, periodic directory syncs to continue working.&amp;nbsp; The reason why is, &lt;i&gt;after accumulating 1000 sync alert errors, automated syncing will stop until directory settings are re-saved&lt;/i&gt;.&amp;nbsp; Therefore, it is imperative to alleviate these sync alerts - and the only means for doing so is by using the user exclusions.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBO6q-bmtw1rsVEz5e1Eq5zfLCkX5SDw37vdrn2EJykq-hDFjVmcDW9eQCYfzG7C-GHMypKIbE_CNrHZrSrrfEWsC9O3oUMFGc55t0wR4Yq3QoVhIEChwokGz3pOB5haHSd3EHTLXVnx4/s1052/No+Alerts.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;No Sync Alerts After Adjusting User Exclusions&quot; border=&quot;0&quot; data-original-height=&quot;1052&quot; data-original-width=&quot;905&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBO6q-bmtw1rsVEz5e1Eq5zfLCkX5SDw37vdrn2EJykq-hDFjVmcDW9eQCYfzG7C-GHMypKIbE_CNrHZrSrrfEWsC9O3oUMFGc55t0wR4Yq3QoVhIEChwokGz3pOB5haHSd3EHTLXVnx4/w550-h640/No+Alerts.png&quot; title=&quot;No Sync Alerts&quot; width=&quot;550&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;It is best practice to add in filters as broadly as possible in order to easily capture as many accounts which should not be synchronized into Workspace ONE Access as possible.. However, take care not to catch any valid accounts with your exclusions as this will result in REMOVING these user accounts from Workspace ONE Access and prevent them from logging in.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;In the example above, all accounts in my test domain which should not be synchronized did not have a valid email address, therefore I set the “Mail…does not contain…’@‘“ rule so that any account it found (i.e. a Windows admin or service account) which does not need user interactive login to Workspace ONE Access is prevented from synchronizing.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Conclusion:&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;While it is necessary to check users are properly synching, it is also required that accounts which do not need to be synched (e.g. service accounts, etc.) are properly excluded...and that sync alerts are not causing automated sync failures and additional problems down the road.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/5663693858782352960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/5663693858782352960'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2020/07/vmware-workspace-one-access-user-sync.html' title='VMware Workspace ONE Access User Sync Configurations and Exclusions'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiReCdAkjaUA10Ra6FTewAECvg6ozIaAqQv5cf9dHmZyPjCAGypBplE0NgdOjeSRVTgXdTYk-jFinedBrDfa8QGYAVkKO94YJDoBrLm8gBa4yAmoI9cThz6cepVr9LN3KzKlWIwK_P0SsY/s72-w640-h336-c/Setting+Up+Dir+Sync.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-6599034699634381471</id><published>2020-05-12T12:02:00.000-07:00</published><updated>2020-05-12T18:39:36.059-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apple"/><category scheme="http://www.blogger.com/atom/ns#" term="Catalina"/><category scheme="http://www.blogger.com/atom/ns#" term="It Doesn&#39;t Just Work"/><category scheme="http://www.blogger.com/atom/ns#" term="macOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Update"/><title type='text'>Resolving the macOS Catalina Software Update Flag Always On Issue</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
Issue:&lt;/h2&gt;
I just recently updated my iMac to Catalina (finally) as I finally eliminated or upgraded all of my 32-bit apps. &amp;nbsp;After upgrading, my macOS decided it would continue showing that I needed upgrades, even though I had the latest updates applied.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinmIvu-MLdRUF85zJEvQDwaW6wRZeNZ-2nHUzVdwSCWqbEHfz7Ws4VF6nY-W1wVYkiBTzj9RTmMahyphenhyphen1GLz4lnzc5F7bcNxXfm238BSHx5gnXnc0Z6x2cAiee7JRrEy_qiz4SwQK_3geZw/s1600/macOS_Catalina_Update_Flag.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;416&quot; data-original-width=&quot;670&quot; height=&quot;396&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinmIvu-MLdRUF85zJEvQDwaW6wRZeNZ-2nHUzVdwSCWqbEHfz7Ws4VF6nY-W1wVYkiBTzj9RTmMahyphenhyphen1GLz4lnzc5F7bcNxXfm238BSHx5gnXnc0Z6x2cAiee7JRrEy_qiz4SwQK_3geZw/s640/macOS_Catalina_Update_Flag.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
Even going into Terminal and running &lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;softwareupdate --list&lt;/span&gt;&lt;/b&gt; didn&#39;t show any additional updates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
Resolution:&lt;/h2&gt;
&lt;div&gt;
To fix this, I did the following to reset the Software Update tag when Catalina gets stuck thinking it needs to update after it has already been updated to the latest..&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Quit&amp;nbsp;&lt;b&gt;System Preferences&lt;/b&gt;&amp;nbsp;if open.&lt;/li&gt;
&lt;li&gt;Set macOS Catalina as an ignored update.&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;div&gt;
Within Terminal, run this command with quotes. &amp;nbsp;You will need to type your system administrator password.&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0 , 0 , 0 , 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;sudo softwareupdate --ignore &quot;macOS Catalina&quot;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Clear out the last major OS release seen by the system.&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;div&gt;
Within Terminal, run this command.&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0 , 0 , 0 , 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;defaults delete com.apple.preferences.softwareupdate LatestMajorOSSeenByUserBundleIdentifier&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Tell macOS to rescan for updates.&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;div&gt;
Within Terminal, run this command. &amp;nbsp;You will notice the badges disappear at this point, but continue on.&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0 , 0 , 0 , 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;softwareupdate --list&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Clear out all ignored updates (if you only ever did this within this procedure then you’re basically reversing step 1.).&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;div&gt;
Within Terminal, run this command. You may need to type in your system administrator password.&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0 , 0 , 0 , 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;sudo softwareupdate --reset-ignored&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Tell macOS to rescan for updates.&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;div&gt;
Within Terminal, run this command. &amp;nbsp;You will notice the badges disappear at this point, but continue on.&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0 , 0 , 0 , 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;softwareupdate --list&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;You should now be able to open System Preferences and re-enable software updates and not have it re-flag the Software Updates icon.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Credits:&lt;/h3&gt;
&lt;div&gt;
Thanks to &lt;a href=&quot;https://forums.macrumors.com/threads/system-preferences-software-update-badge.2204123/page-2#post-27879333&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;bernuli&lt;/b&gt;&amp;nbsp;on the MacRumours forum&lt;/a&gt; for the bulk of this.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/6599034699634381471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/6599034699634381471'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2020/05/macos-catalina-software-update-flag.html' title='Resolving the macOS Catalina Software Update Flag Always On Issue'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinmIvu-MLdRUF85zJEvQDwaW6wRZeNZ-2nHUzVdwSCWqbEHfz7Ws4VF6nY-W1wVYkiBTzj9RTmMahyphenhyphen1GLz4lnzc5F7bcNxXfm238BSHx5gnXnc0Z6x2cAiee7JRrEy_qiz4SwQK_3geZw/s72-c/macOS_Catalina_Update_Flag.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-4393688038878618055</id><published>2020-05-07T21:10:00.000-07:00</published><updated>2020-05-07T21:25:03.984-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Password Cloud Deployment"/><category scheme="http://www.blogger.com/atom/ns#" term="vIDM"/><category scheme="http://www.blogger.com/atom/ns#" term="Workspace ONE"/><category scheme="http://www.blogger.com/atom/ns#" term="Workspace ONE Access"/><title type='text'>Workspace ONE Access User Authentication Flows - Configuring Password (Cloud Deployment) From Start to Finish</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;Introduction:&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
This is a quick and rough guide to enabling “&lt;b&gt;Password (cloud deployment)&lt;/b&gt;” in Workspace ONE Access.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;Outcome:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
This procedure will allow a customer admin to change from direct Password authentication via Workspace ONE Access Connector(s) to indirect Password (Cloud Deployment) authentication via Workspace ONE Access Connector(s).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://www.blogger.com/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;Assumptions:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Workspace ONE Access tenant exists&lt;/li&gt;
&lt;li&gt;Workspace ONE Access admin login capable&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;Logic Flow:&lt;/span&gt;&lt;/div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Within the Workspace ONE Access admin console, navigate to &lt;b&gt;Identity &amp;amp; Access Management &amp;gt; (Manage) &amp;gt; Identity Providers&lt;/b&gt;. Does Workspace ONE Access &lt;b&gt;&lt;i&gt;Built-in&lt;/i&gt;&lt;/b&gt; Identity Provider exist?&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Yes, continue on to major step 2.0.&lt;/li&gt;
&lt;li&gt;No.&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;div&gt;
Create a new “Built-in” IDP by clicking the ADD IDENTITY PROVIDER button in the upper right. &amp;nbsp;SEE THE NOTES ON CREATING OR RECREATING TEH BUILT-IN IDP at the bottom of this blog post.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
RETURN HERE WHEN DONE.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li&gt;Is there a Connector assigned to the &lt;b&gt;Built-in&lt;/b&gt; IDP?&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVqCR5jef9BphEMLOX5IjNblbEsNIXp52jFM5o150shYGnnNqd5mYM5xb805VA3EI1RyERfYoG-03VSvaOMGIOcRptrvmYCwulwfQTagGI3-_WEitqO0BJXzwWGYhax2sr933wI_A6bbE/s1600/PWD1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1388&quot; data-original-width=&quot;958&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVqCR5jef9BphEMLOX5IjNblbEsNIXp52jFM5o150shYGnnNqd5mYM5xb805VA3EI1RyERfYoG-03VSvaOMGIOcRptrvmYCwulwfQTagGI3-_WEitqO0BJXzwWGYhax2sr933wI_A6bbE/s640/PWD1.png&quot; width=&quot;441&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1: Is there a Connector Assigned to the Built-in IDP?&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Yes, continue on to major step 3.0.&lt;/li&gt;
&lt;li&gt;No&lt;/li&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Go into Identity &amp;amp; Access Management &amp;gt; Identity Providers &amp;gt; Built-in (or whatever it might be renamed to). &amp;nbsp;You should see a box in the Connectors section to select (and then add) your connector(s).&lt;/li&gt;
&lt;li&gt;After selecting your connector, click&amp;nbsp;&lt;span style=&quot;font-weight: bold;&quot;&gt;Add Connector&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;Repeat these three steps for each connector you wish to add.&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li&gt;Does the &lt;b&gt;Password (Cloud Deployment) &lt;/b&gt;box now appear under &lt;b&gt;Connector Authentication Methods &lt;/b&gt;within the Built-in IDP (Refer to Figure 2 below as a reference)?&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Yes, continue on to major step 4.0.&lt;/li&gt;
&lt;li&gt;&lt;div&gt;
No, troubleshoot major Step 2.0 above.&lt;/div&gt;
&lt;div&gt;
NOTE: You may need to click the SAVE button and return back to the Built-in IDP screen in order to see a box. &amp;nbsp;If one does not appear, ensure your connector(s) are properly added and show with a red X (which allows for deletion).&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Open a support ticket with VMware Support if necessary.&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Is the &lt;b&gt;Password (Cloud Deployment) &lt;/b&gt;box checked?&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0cpOizuaPCPKPM3ihk7L5qBIcNJQUnRCCsMY4X2UjRAGfuZV4Os2lKB5pJzHEjQN2GcrcYWUYriLveLKQzFoPJd9KWe3WqkqAbz9U06D4yagKg6TVeKOH6-20EqOuHSC5f7v0Hx2ORhk/s1600/PWD2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1312&quot; data-original-width=&quot;1279&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0cpOizuaPCPKPM3ihk7L5qBIcNJQUnRCCsMY4X2UjRAGfuZV4Os2lKB5pJzHEjQN2GcrcYWUYriLveLKQzFoPJd9KWe3WqkqAbz9U06D4yagKg6TVeKOH6-20EqOuHSC5f7v0Hx2ORhk/s640/PWD2.png&quot; width=&quot;622&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 2: Is the Password (Cloud Deployment) box checked?&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Yes, continue on to major step 5.0.&lt;/li&gt;
&lt;li&gt;No, check the &lt;b&gt;Password (Cloud Deployment) &lt;/b&gt;box.&lt;/li&gt;
&lt;li&gt;Click the SAVE button at the bottom of the Built-in IDP screen.&lt;br /&gt;&lt;br /&gt;NOTE:&amp;nbsp;&lt;a href=&quot;https://docs.vmware.com/en/VMware-Workspace-ONE-Access/20.01/ws1_access_authentication/GUID-E4582D91-506B-4AA6-9F1F-EC9F7775DA49.html&quot;&gt;From this step, you may use the VMware documentation which exists to walk through enabling the Workspace ONE Access Policies to utilize Password (Cloud Control).&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Within the Workspace ONE Access admin console, navigate to &lt;b&gt;Identity &amp;amp; Access Management &amp;gt; (Manage) &amp;gt; Policies&lt;/b&gt; and open the &lt;b&gt;default_access_policy_set&lt;/b&gt;.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Edit the default_access_policy_set and navigate to step &quot;&lt;i&gt;&lt;b&gt;2 Configuration&lt;/b&gt;&lt;/i&gt;” within the EDIT POLICY wizard.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Open each policy rule one at a time. &amp;nbsp;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Does the policy rule show “Password” as the authentication type in the “then the user may authenticate using” drop-down box?&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;If NO, then continue on to the next policy rule.&lt;/li&gt;
&lt;li&gt;If YES, then modify the policy rule to replace&amp;nbsp;&lt;span style=&quot;font-weight: bold;&quot;&gt;Password&lt;/span&gt;&amp;nbsp;with&amp;nbsp;&lt;span style=&quot;font-weight: bold;&quot;&gt;Password (cloud deployment)&lt;/span&gt;&amp;nbsp;and click SAVE.&lt;/li&gt;
&lt;li&gt;If no more policy rules, click NEXT and SAVE on the EDIT POLICY wizard.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCRJh0Oq7KIACcIHGhzfeMwpiq_eEE5V61vZroO42yOQzmAvoevvcLGJkIB66DPd7CwoNRGYKijiMmwnLjz5SxvJJteAn1hksQlT3u0GdIUEu8NkFSU30gx6ANJwjxgVhH3l3tYCmwTjY/s1600/PWD3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;956&quot; data-original-width=&quot;806&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCRJh0Oq7KIACcIHGhzfeMwpiq_eEE5V61vZroO42yOQzmAvoevvcLGJkIB66DPd7CwoNRGYKijiMmwnLjz5SxvJJteAn1hksQlT3u0GdIUEu8NkFSU30gx6ANJwjxgVhH3l3tYCmwTjY/s640/PWD3.png&quot; width=&quot;538&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 12.800000190734863px;&quot;&gt;Figure 3: Edit each Policy Rule and replace PASSWORD with PASSWORD (CLOUD DEPLOYMENT)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li&gt;Do the Password (Cloud Deployment) modifications now work locally and remotely?&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Yes. &amp;nbsp;You are finished.&lt;/li&gt;
&lt;li&gt;No. Troubleshoot policy modifications in major steps 6 and 7 above. If necessary open a support ticket with VMware Support.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;Resources:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://docs.vmware.com/en/VMware-Workspace-ONE-Access/20.01/ws1_access_authentication/GUID-E4582D91-506B-4AA6-9F1F-EC9F7775DA49.html&quot;&gt;https://docs.vmware.com/en/VMware-Workspace-ONE-Access/20.01/ws1_access_authentication/GUID-E4582D91-506B-4AA6-9F1F-EC9F7775DA49.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;Notes on Creating (or recreating) the Built-in IdP:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
Assuming the default “Built-in” IdP was deleted or not created from the start. one can just create a new “&lt;b&gt;Built-in&lt;/b&gt;” IDP.&lt;/div&gt;
&lt;div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;IF YOU ALREADY HAVE A BUILT-IN IDP, skip to step 4.&lt;/li&gt;
&lt;li&gt;Navigate to&amp;nbsp;&lt;b&gt;Identity &amp;amp; Access Management &amp;gt; Identity Providers&lt;/b&gt;&amp;nbsp;and click the &lt;b&gt;ADD IDENTITY PROVIDER&lt;/b&gt; button in the upper right of the page and then selecting the option in the menu to create a &lt;b&gt;built-in IdP&lt;/b&gt;. &amp;nbsp;*&lt;/li&gt;
&lt;li&gt;Name it (e.g. &quot;Built-in&quot;), set the Users Directory (e.g. your Active Directory integration - DO NOT select System Directory), select the Network(s) such as ALL RANGES, select the Authentication Methods if needed, and click ADD.&lt;/li&gt;
&lt;li&gt;Now go back into &lt;b&gt;Identity &amp;amp; Access Management &amp;gt; Identity Providers &amp;gt; Built-in &lt;/b&gt;(or whatever it might be renamed to). &amp;nbsp;You should see a box in the Connectors section to select (and then add) your connector(s).&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Once you finish adding your connector(s), you will see “&lt;b&gt;Password (cloud deployment)&lt;/b&gt;” show in the Connectors Authentication Methods section. &amp;nbsp;Check it and click SAVE.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
*NOTE: Other than &quot;System Directory&quot;, for each &lt;b&gt;Directory you add&lt;/b&gt;&amp;nbsp;in &lt;b&gt;Identity &amp;amp; Access Management &amp;gt; Manage &amp;gt; Directories&lt;/b&gt;, you should also have a &quot;Built-in&quot; identity provider specific to that Directory. &amp;nbsp;Here&#39;s the catch... they cannot all be named &quot;Built-in&quot;, so name them &quot;&lt;directory&gt; Built-in&quot; or similar.&lt;/directory&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/4393688038878618055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/4393688038878618055'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2020/05/workspace-one-access-user.html' title='Workspace ONE Access User Authentication Flows - Configuring Password (Cloud Deployment) From Start to Finish'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVqCR5jef9BphEMLOX5IjNblbEsNIXp52jFM5o150shYGnnNqd5mYM5xb805VA3EI1RyERfYoG-03VSvaOMGIOcRptrvmYCwulwfQTagGI3-_WEitqO0BJXzwWGYhax2sr933wI_A6bbE/s72-c/PWD1.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-3710010467166040348</id><published>2020-04-24T18:43:00.000-07:00</published><updated>2020-05-12T18:36:20.240-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3rd Party IdP"/><category scheme="http://www.blogger.com/atom/ns#" term="Cross Org Identity Brokering"/><category scheme="http://www.blogger.com/atom/ns#" term="vIDM"/><category scheme="http://www.blogger.com/atom/ns#" term="Workspace ONE Access"/><category scheme="http://www.blogger.com/atom/ns#" term="WS1"/><title type='text'>Cross Organization Identity Brokering Using VMware Workspace ONE Access 3rd Party IdP Integration for Multi-Organization Trust &amp; SSO</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;u&gt;Intro...&lt;/u&gt;&lt;/b&gt;&lt;/h3&gt;
As a Customer Success Architect focused on Workspace ONE, I have often been asked intriguing questions such as, can one use two different Identity Providers which trust each other to take the place of some sort of trust or connection. &amp;nbsp;My longtime coworker, Peter Bjork, wrote about this in regards to replacing Active Directory trusts over on VMware&#39;s TechZone awhile back from a conceptual standpoint...but I thought I would go into the architecture design and considerations aspects and what this looks like from a VMware Customer perspective as I (and some of my coworkers) have helped some customers actually deploy this in production.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;Problem (Business Use Case):&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
More and more customers are joining forces to work together either through mergers and acquisitions or as partnerships. With these mergers and partnerships, customers are needing to share resources. This now must be done through single sign-on mechanisms as industry security brokers are changing from on-premises (active directory) to cloud-based solutions. More importantly, customers are not wanting to go the legacy route of providing complex, 2-way active directory trusts, but rather wish to use cloud based, open standard, secure solutions which exist in the marketplace today.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;Executive Summary:&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
Utilizing a Cross Organization Identity Brokering solution allows for disparate companies to become technology partners by providing a secure identity management solution between trusted partners which replicates only the necessary attributes of a user’s identity throughout in order to not only provide access to services, applications, and desktops from partner companies, but allow for the user to have a fully seamless, secure, single sign-on experience via their own VMware Identity Manager portal to all resources across partnered companies.&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
In addition, this also provides the partnered companies to ensure their own environments remain protected to the necessary levels as well as an easy way to separate linked resources, should the partnership dissolve.&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
&lt;span style=&quot;text-decoration: underline;&quot;&gt;High Level Design:&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTBii5Z0CMueBU6QIiIwpzh15Don9T1hfHExYfrdKVIhNNCY2-HoS49DrGxuDLsm_Oo_iYkWri-ZF_teg39smpnpEMRihXXp3PFx2Ayw4K8Nvc__8gtGmHsr4WXwH5-GsYjUT3sE_D3lU/s1600/Cross+Org+Identity+Brokering+-+Cross+Org+Identity+Brokering.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;863&quot; data-original-width=&quot;1600&quot; height=&quot;344&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTBii5Z0CMueBU6QIiIwpzh15Don9T1hfHExYfrdKVIhNNCY2-HoS49DrGxuDLsm_Oo_iYkWri-ZF_teg39smpnpEMRihXXp3PFx2Ayw4K8Nvc__8gtGmHsr4WXwH5-GsYjUT3sE_D3lU/s640/Cross+Org+Identity+Brokering+-+Cross+Org+Identity+Brokering.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;Benefits&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
So what does this all mean? &amp;nbsp;Well, I&#39;ll let you read through all of the major benefits below in detail, but in short, the above diagram shows a user from either org being able to login to their own org Workspace ONE Intelligent Hub App Catalog and have a resource from a partner org delivered into their portal. &amp;nbsp;They don&#39;t need to know anything more, anything new, or do anything different. They login, get their apps (resources), and use them just the same - from any device they are authorized to access these resources from, anywhere they are authorized to access these from, regardless of where the resources are.&lt;br /&gt;
&lt;br /&gt;
Here is a bulleted list of benefits.&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Allows for users in either company (entity) to access applications, desktops, and services offered or made available by the other company / entity while still maintaining&amp;nbsp;Single Sign-On functionality through their own company’s tenant.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Allows for individual companies to securely provide access to resources they own or control to users in other “trusted” partner companies without creating and maintaining an Active Directory or other security broker trust relationship.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Allows for automation of Identity synchronization through use of 3rd Party identity management solutions.&lt;/li&gt;
&lt;li&gt;Allows for designation of multiple security checkpoints within both companies to ensure a user is properly identified, authenticated, and authorized while maintaining security and SSO functionalities.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;In addition to SSO functionalities for all users across multiple entities, allows for a single, self-service portal to present all resources available to the user from across multiple tenants and providers.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
One other thing to note... should there be any other additional Identity Providers (IdPs) in the mix (and Workspace ONE Access is just the Universal Services Broker), those IdPs and the resources they protect can also be accommodated in the above design. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Sure, it looks a bit complicated...but it can just work.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;u&gt;Challenges, Concerns, Blockers, and Requirements:&lt;/u&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
Speaking of it looking complicated, let us dig into the challenges, concerns, blockers, and requirements.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
Challenges:&lt;/h4&gt;
&lt;div&gt;
First off, it is more complex. &amp;nbsp;We are not talking about one organization&#39;s environment here, but &lt;i style=&quot;font-weight: bold;&quot;&gt;two&lt;/i&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;i style=&quot;font-weight: bold;&quot;&gt;organization environments!&lt;/i&gt;&amp;nbsp; At very least, that is double the complexity... but have no fear. &amp;nbsp;There are smart people to help with this. &amp;nbsp;And a large part of what we will get into below regarding Concerns, Blockers, and Requirements are mostly People/Process challenges - something that - with open communications - can be solved.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The second challenge is education - education on how the above solution works, what pieces and parts are needed, and what things need to be agreed upon.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;Design Data:&lt;/u&gt;&lt;/b&gt; &amp;nbsp;The design flow above has two major parts - and they are not what you might think (I&#39;m guessing you may be thinking ORG1 and ORG2). &amp;nbsp;The two major parts of the design are actually the top half and bottom half! &amp;nbsp;Just split the diagram horizontally across the middle.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Top Half:&lt;/b&gt;&amp;nbsp;The top half is, quite simply a standard 3rd Party Identity Provider trust configuration. &amp;nbsp;&lt;a href=&quot;https://communities.vmware.com/docs/DOC-34295&quot; target=&quot;_blank&quot;&gt;We go into 3rd Party IdPs in detail over on my VMware Community Blog post here&lt;/a&gt;. The only difference is, we have two Active Directory or LDAP (or security broker database) configurations. &amp;nbsp;Quite simply, this means any resource within the &lt;b&gt;&lt;u&gt;Workspace ONE Access&lt;/u&gt;&lt;/b&gt;&amp;nbsp;catalog in Org 1 may be shared with any user who is properly replicated from Org 2 (into the Org 1 trusted secondary domain). &amp;nbsp;This includes any SAAS, Web, or Virtual resource such as a Horizon app or VDI Desktop. &amp;nbsp;This also includes any MFA requirements either organization may have for users from either organization.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
NOTE: &lt;i&gt;&lt;b&gt;Workspace ONE &lt;u&gt;UEM&lt;/u&gt; resources may NOT be shared across orgs and remain org specific only! &amp;nbsp;This is specifically due to device enrollment - and is very likely not something you or any other customer would want to share with a partner org.&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Bottom Half:&lt;/b&gt; The bottom half is simply user replication (what we call true &quot;Identity Management&quot;) between various environments. &amp;nbsp;Identity Replication is where the real challenge is...because not only is it technically challenging, it is also legally challenging when the two organizations are completely separate entities.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
Identity Replication:&lt;/h4&gt;
&lt;div&gt;
The way we solve the technical challenge of Identity Replication in order to assist and support the legal concerns with Identity Replication is shown in the diagram above. &amp;nbsp;Basically, in order to replicate identities properly, we utilize a Virtual Directory Structure (VDS) which is put in place to properly synchronize identities from certain sources to other certain destinations. &amp;nbsp;And in conjunction with this, we don&#39;t just want to allow the VDS to create a replicated identity in other organization&#39;s primary security broker (e.g. Active Directory, OAM, etc.). &amp;nbsp;Doing so without providing some checks and balances leaves the entire system ripe for exploit. &amp;nbsp;Therefore, rather than create the &quot;replicated&quot; identity into the partner organization&#39;s primary domain (or security database), we use a standalone secondary domain with a (usually filtered) two-way trust in place between the organization&#39;s primary and secondary domains. &amp;nbsp;Assuming this will be completely 2-way across both organizations, this configuration allows for both partner organizations to ensure there are ways to a.) block users from accessing primary domain resources they should not be allowed to access, and b.) turn off all access quickly and efficiently at any step.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Let us assume the trusts are setup and step through Identity Replication flows here. &amp;nbsp;This means the following assumptions exist and/or have been completed:&lt;/div&gt;
&lt;div&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Primary ORG1 &amp;gt; VDS &amp;gt; Standalone ORG2 automated replication is working.&lt;/li&gt;
&lt;li&gt;Primary ORG2 &amp;gt; VDS &amp;gt; Standalone ORG1&amp;nbsp;automated replication is working.&lt;/li&gt;
&lt;li&gt;A SAML IDP to SP Trust exists between ORG 1 Workspace ONE Access and ORG 2 Workspace ONE Access.&lt;/li&gt;
&lt;li&gt;A SAML IDP to SP Trust exists between ORG 2 Workspace ONE Access and ORG 2 Workspace ONE Access.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;NOTE: SAML IDP&amp;lt;&amp;gt;IDP trusts are one way and therefore two one-way trusts must exist for flows to work from either organization.&lt;/li&gt;
&lt;li&gt;Both ORGS have added their respective secondary (or standalone) domains to the their respective Workspace ONE Access Directory configurations for user sync and authentication.&lt;/li&gt;
&lt;li&gt;Any shared resources within each respective organization are automatically mapped across to the other organization&#39;s Workspace ONE Access environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;ORG 1 and ORG 2 IT Departments have previously agreed and stood up settings to allow for automated account creation within their respective Standalone (or secondary) domains.&lt;/li&gt;
&lt;li&gt;Optionally, ORG 1 and ORG 2 IT Departments have previously agreed and configured Group synchronizations.&lt;/li&gt;
&lt;li&gt;In my logic flow walk-through below, I am assuming both organizations have on-premises Active Directory. &amp;nbsp;That is not a requirement, however, as most any LDAP connection would work, so long as the supporting resources behind the Identity Providers support the provisioning via LDAP or otherwise.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;NOTE: &amp;nbsp;VMware Horizon only supports provisioning through on-premises Active Directory at the time of writing this blog.&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Starting with ORG 1 Primary Domain environment in the top left, let us assume we have a user (Jane) which needs access to a Horizon resource in ORG 2. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;ORG 1 IT Dept tags/flags Jane&#39;s Active Directory account with a setting to ensure VDS sees the account as one which should now be replicated.&lt;/li&gt;
&lt;li&gt;VDS automatically captures Jane&#39;s Identity in ORG 1 and replicates it to the ORG 2 standalone (or secondary) domain.&lt;/li&gt;
&lt;li&gt;ORG 2 Workspace ONE Access sees the new user on the next automated (or manual) directory sync and creates the new user in ORG 2 Workspace ONE Access Directory.&lt;/li&gt;
&lt;li&gt;Application Provisioning: Either ORG 2 manually provisions the Horizon resource to Jane (either to her user account or by adding her user account to a group in ORG 2 environment) or ORG 1 and ORG 2 optionally stood up group synchronization as well to allow for automated provisioning.&lt;/li&gt;
&lt;li&gt;After ORG 2 provisioning sync has occurred between ORG 2 Horizon and ORG 2 Workspace ONE Access, the Horizon resource is authorized to Jane&#39;s ORG 2 account in ORG 2 Workspace ONE Access catalog.&lt;/li&gt;
&lt;li&gt;Application Provisioning: ORG 1 manually (or automatically) provisions the ORG 1 mapping of the ORG 2 Horizon resource to Jane&#39;s ORG 1 account within ORG 1 Workspace ONE Access.&lt;/li&gt;
&lt;li&gt;After ORG 1 provisioning sync has occurred, Jane now has the ORG 2 Horizon resource within her ORG 1 Workspace ONE Access catalog.&lt;/li&gt;
&lt;li&gt;When Jane launches the ORG 2 Horizon resource in her ORG 1 Workspace ONE Access catalog, SSO kicks in because she has an Identity in ORG 2 with a mapped attribute and both Workspace ONE Access tenants trust each other, allowing the resource to be immediately accessed. &amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;Concerns (Blockers) and Necessities (Requirements):&lt;/span&gt;&lt;/h4&gt;
&lt;div&gt;
Here I have listed out the many concerns and potential blockers as well as requirements here to help organizations work through these.&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ol start=&quot;1&quot; style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Some sort of VDS solution should be used to automate the synchronization of selected identities and groups and their defined attributes within each source AD. &amp;nbsp;In some cases, we have seen this manually done, but when enterprise organizations of significant size start counting through the amount of users and multiply each user by the number of attributes being synched as well as groups and group member info, this can very quickly get overwhelming for a manual process. &amp;nbsp;And a manual process is certainly very open and prone to errors. &amp;nbsp;Using an automated process such as Microsoft Identity Manager, Radiant Logic, or other automated Identity Lifecycle Management tools from IBM or others (or even some self created scripted solutions) will be much better than a manual process.&amp;nbsp;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;This combined set of users and potentially groups will become the Virtual Directory Structure (VDS).&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Users within VDS will have a defined set of agreed upon attributes between both organizations.&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;First name&lt;/li&gt;
&lt;li&gt;Last name&lt;/li&gt;
&lt;li&gt;Email&lt;/li&gt;
&lt;li&gt;UPN&lt;/li&gt;
&lt;li&gt;objectGUID&lt;/li&gt;
&lt;li&gt;NT Account Name (sAMAccountName)? - Some older applications need to utilize these for authentication into the app.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Password&lt;span style=&quot;font-weight: bold;&quot;&gt;???&lt;/span&gt;&amp;nbsp;- This might not be needed as 3rd party IdP trust will not use this but trusting services&amp;nbsp;&lt;span style=&quot;font-style: italic; font-weight: bold; text-decoration: underline;&quot;&gt;might still require it&lt;/span&gt;. &amp;nbsp;Radiant Logic VDS can sync password but this means password policies will need to be an agreed upon standard between entities.&amp;nbsp;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Note: Horizon TrueSSO would eliminate the need for password sync if both sides used VMW Horizon.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Source entity (ORG1 or ORG2 - can be automatically derived from email or UPN)&lt;/li&gt;
&lt;li&gt;Member of (or Group Membership).&lt;/li&gt;
&lt;li&gt;Etc. (phone, office location, etc.)&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;VDS will be synced into local Active Directory domain in each entity environment.&amp;nbsp;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Example: VDS.local&lt;/li&gt;
&lt;li&gt;VDS to AD domain sync may need to be selective per entity in order to avoid duplicate entries.&amp;nbsp;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Example: ORG1 users synced into VDS from ORG1 domain, do not need to be synced into VDS.local AD domain as those won&#39;t be utilized anyways, and may potentially cause duplicate email and UPN entries between VDS.local and org1.local.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li&gt;Local 2-way trust between VDS.local and entity primary domain will exist to allow trusted services to perform Windows authentication (i.e. Horizon or Citrix session authentication).&lt;/li&gt;
&lt;li&gt;A manual 2-way domain trust with SID filtering may be needed to ensure user accounts from other entities do not have any additional access to other resources.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Citrix will not fully support TrueSSO-like functionality at this time and will prompt for a user password for current and immediate logins to Citrix via Workspace ONE.&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;A password will only be prompted once for each ws1 login. If a user logs in to ws1 only once per day then a password prompt will only happen once per day if timeout settings are longer than that.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Both Identity Manager tenants will need to trust each other. This is a standard SP to IdP trust between each Identity Manager.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Admins in both entities will need to have deep links (i.e. Relay state links) of 3rd party IdP protected apps in order to properly define the same app in both.&amp;nbsp;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Example: App1 is horizon app in ORG2 domain. In order to properly display and allow for SSO for users from ORG1, App1 must be manually created in ORG1 Identity Manager as a 3rd party app and properly assigned.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Note: Assignment of apps can be done either by dynamic groups or by synced groups. Further discovery on this may be needed but shouldn&#39;t be an issue.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;All customers replicating into VDS and utilizing replicated user accounts for SSO should have independent security audits to ensure all best practices and requirements are adhered to.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
&lt;b&gt;&lt;u&gt;Technical Details:&lt;/u&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;Domain Trust and SID Filtering:&lt;/span&gt;&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Ensure we are not sharing SIDs across domains. A potential malicious administrator could get additional access to the other domain. &amp;nbsp;This eliminates lateral movement of an exploited system.&amp;nbsp;&lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;SID filter quarantining for external trusts.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Implement&amp;nbsp;&lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;selective authentication&lt;/span&gt;&amp;nbsp;across the trusts.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;text-align: start;&quot;&gt;&lt;table style=&quot;width: 551px;&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 122px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 88px;&quot;&gt;&lt;/col&gt;&lt;col style=&quot;width: 341px;&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td class=&quot;&quot; style=&quot;border: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;b&gt;Authentication Setting&lt;/b&gt;&lt;/td&gt;&lt;td class=&quot;&quot; style=&quot;border: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;b&gt;Interforest Trust Type&lt;/b&gt;&lt;/td&gt;&lt;td class=&quot;&quot; style=&quot;border: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;&quot; style=&quot;border: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
Domain-wide Authentication&lt;/div&gt;
&lt;/td&gt;&lt;td class=&quot;&quot; style=&quot;border: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
External&lt;/div&gt;
&lt;/td&gt;&lt;td class=&quot;&quot; style=&quot;border: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
Permits unrestricted access by any users in the trusted domain to all available shared resources located in the trusting domain. This is the default authentication setting for external trusts.&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;&quot; style=&quot;border: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
Forest-wide Authentication&lt;/div&gt;
&lt;/td&gt;&lt;td class=&quot;&quot; style=&quot;border: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
Forest&lt;/div&gt;
&lt;/td&gt;&lt;td class=&quot;&quot; style=&quot;border: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
Permits unrestricted access by any users in the trusted forest to all available shared resources located in any of the domains in the trusting forest. This is the default authentication setting for forest trusts.&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;&quot; style=&quot;border: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
&lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;Selective Authentication&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td class=&quot;&quot; style=&quot;border: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
&lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;External and Forest&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td class=&quot;&quot; style=&quot;border: 1px solid rgb(204, 204, 204);&quot;&gt;&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
&lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;Restricts access over an external or forest trust to only those users in a trusted domain or forest who have been explicitly given authentication permissions to computer objects (resource computers) residing in the trusting domain or forest. This authentication setting must be manually enabled.&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3&gt;
&lt;b&gt;&lt;u&gt;Outcomes:&lt;/u&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
So, again, what does this all mean? In a nutshell, employees who are properly authorized will be able to login to their own organization tenant and maintain Single Sign-On access to protected resources across both environments...AND... IT organizations get to sleep well at night knowing they are providing something which is &lt;i&gt;complex&lt;/i&gt;&amp;nbsp;in design but easy for users to &lt;i&gt;securely&lt;/i&gt;&amp;nbsp;access as Workspace ONE helps ensure all of this just works.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Is this easy to do? &amp;nbsp;Maybe not... but when you make it easy for your employees to access the resources they need from the locations they need to work from while maintaining proper security, you know your users are happily using the solution without trying to circumvent it to make their job easier.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;Resources:&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;The below is a video I created of this a couple of years ago demo&#39;ing the whole process.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/dBwvIBrsdTo/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/dBwvIBrsdTo?feature=player_embedded&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Using VMware Identity Manager to transform users between Active Directory domains&amp;nbsp;-&amp;nbsp;&lt;a href=&quot;https://blogs.vmware.com/horizontech/2017/05/using-vmware-identity-manager-transform-users-active-directory-domains.html&quot;&gt;https://blogs.vmware.com/horizontech/2017/05/using-vmware-identity-manager-transform-users-active-directory-domains.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Setting up a 3rd Party IdP in VMware Identity Manager (Concepts and Steps) -&amp;nbsp;&lt;a href=&quot;https://communities.vmware.com/docs/DOC-34295&quot;&gt;https://communities.vmware.com/docs/DOC-34295&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/3710010467166040348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/3710010467166040348'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2020/04/cross-organization-identity-brokering.html' title='Cross Organization Identity Brokering Using VMware Workspace ONE Access 3rd Party IdP Integration for Multi-Organization Trust &amp; SSO'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTBii5Z0CMueBU6QIiIwpzh15Don9T1hfHExYfrdKVIhNNCY2-HoS49DrGxuDLsm_Oo_iYkWri-ZF_teg39smpnpEMRihXXp3PFx2Ayw4K8Nvc__8gtGmHsr4WXwH5-GsYjUT3sE_D3lU/s72-c/Cross+Org+Identity+Brokering+-+Cross+Org+Identity+Brokering.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-2103051792925598176</id><published>2020-04-24T16:50:00.001-07:00</published><updated>2020-06-08T11:08:09.538-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="vIDM"/><category scheme="http://www.blogger.com/atom/ns#" term="Workspace ONE"/><category scheme="http://www.blogger.com/atom/ns#" term="Workspace ONE Access"/><category scheme="http://www.blogger.com/atom/ns#" term="WS1"/><title type='text'>Resetting On-Premises Workspace ONE Access / VMware Identity Manager ROOT and SSHUSER Password Expirations and History</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;u&gt;The Why:&lt;/u&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
Like any good IT person who must both maintain existing production environments while working to expand and/or enhance said environment&#39;s capabilities, having both a Dev/Test environment and a User Acceptance Test (UAT) environment for allowing your fellow employees to test some determined settings for User Experience (UX) (in conjunction with an actual Production environment) is certainly prudent. &amp;nbsp;And having the Dev/Test environment to not only stand-up and play with, but break in a safe manner, is a very good thing. &amp;nbsp;Having such playground often mean you not only get to - but often need to - dig into the underbelly of said environments to learn a few things.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
To that end, there are a number of situations where you need to either reset the root or sshuser password expirations or reset the password history of an on-premises tenant of VMware Identity Manager - or what is now known as Workspace ONE Access - in order to accomplish a specific test.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Here is how to do both...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;u&gt;The Procedure (Resetting PWD Expiration and History):&lt;/u&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
If you can SSH in to the appliance(s), then doing so will certainly help with this procedure. &amp;nbsp;However, if you need to reset the root &amp;amp; admin passwords, &lt;a href=&quot;https://vmguru.com/2016/05/resetting-root-admin-password-vmware-identity-manager/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;see this document&lt;/a&gt;&amp;nbsp;as this applies to all Horizon App Manager, Horizon Workspace, Workspace Portal, VMware Identity Manager, and Workspace ONE Access SLES appliances.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;u&gt;NOTES:&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;All commands must be done from root session or console access (ssh and then su to root or login as root to console). &amp;nbsp;&lt;/li&gt;
&lt;li&gt;Below shows editing of files using VI (&quot;vi&quot;) from the console.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
Modifying the Password History Settings&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;/ul&gt;
&lt;/h4&gt;
Edit the&amp;nbsp;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/etc/pam.d/common-password&lt;/span&gt;&amp;nbsp;file and change the REQUIRED parameter to OPTIONAL and remove &quot;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;enforce_for_root remember=x&lt;/span&gt;&quot; (where &quot;x&quot; is a number).&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNK3llKkKDnkbc180CqLuJovixkqGez0CL8Achtr_cp2q-g5vMPUYcYOAGJQqMYiRhX_bkM6jQ2zu7J2yfhr8BgkK-YZ-hXVgep0esyjsWevr131y1xPGSnQubcyXCSyUYA_wd5R2Z1lI/s1600/common-password.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;422&quot; data-original-width=&quot;720&quot; height=&quot;374&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNK3llKkKDnkbc180CqLuJovixkqGez0CL8Achtr_cp2q-g5vMPUYcYOAGJQqMYiRhX_bkM6jQ2zu7J2yfhr8BgkK-YZ-hXVgep0esyjsWevr131y1xPGSnQubcyXCSyUYA_wd5R2Z1lI/s640/common-password.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;h4&gt;
Clear Existing Password History&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;/ul&gt;
&lt;/h4&gt;
Edit the&amp;nbsp;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/etc/security/opasswd&lt;/span&gt; file and delete all of the contents. &amp;nbsp;Save and exit.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMBH8ru7vd22c12-c7Q_wQYGDrME5L3wo15rQ2KxSXq6Cd3yzR7QXP_1TVQRUi2tnLfn_0aaumo_l7MxLBxozS5P0E-vtmCw5_y5QgUkXM-iJeb31X5MQbSRO29v39zsG3c3TQte2C-DE/s1600/opasswd.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;422&quot; data-original-width=&quot;720&quot; height=&quot;372&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMBH8ru7vd22c12-c7Q_wQYGDrME5L3wo15rQ2KxSXq6Cd3yzR7QXP_1TVQRUi2tnLfn_0aaumo_l7MxLBxozS5P0E-vtmCw5_y5QgUkXM-iJeb31X5MQbSRO29v39zsG3c3TQte2C-DE/s640/opasswd.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Reset Password Expirations for root and sshuser Accounts&lt;br /&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Run &quot;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;chage&lt;/span&gt;&quot; for both root and sshuser accounts to reset password expiration.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3xD83Y8sl4f5jQVa11KLgCn1YOH8SjSdv6xHPkPSm7rBxkVhwdCojrzmkwTLEvsjfDizL1TDcEMSSorI4llEvITqyWwloqb_75yDDlzmV9XURLlEGy812IlVhaUFLgu6JX0kBPktpITg/s1600/chage.png&quot; imageanchor=&quot;1&quot; style=&quot;font-weight: normal; margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;422&quot; data-original-width=&quot;720&quot; height=&quot;372&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3xD83Y8sl4f5jQVa11KLgCn1YOH8SjSdv6xHPkPSm7rBxkVhwdCojrzmkwTLEvsjfDizL1TDcEMSSorI4llEvITqyWwloqb_75yDDlzmV9XURLlEGy812IlVhaUFLgu6JX0kBPktpITg/s640/chage.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/h4&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;u&gt;The Conclusion:&lt;/u&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;You should now be able to access your test lab on-premises VMware Identity Manager /&amp;nbsp;Workspace ONE Access appliance(s) with those accounts without worrying about a forced password change.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/2103051792925598176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/2103051792925598176'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2020/04/resetting-on-premises-workspace-one.html' title='Resetting On-Premises Workspace ONE Access / VMware Identity Manager ROOT and SSHUSER Password Expirations and History'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNK3llKkKDnkbc180CqLuJovixkqGez0CL8Achtr_cp2q-g5vMPUYcYOAGJQqMYiRhX_bkM6jQ2zu7J2yfhr8BgkK-YZ-hXVgep0esyjsWevr131y1xPGSnQubcyXCSyUYA_wd5R2Z1lI/s72-c/common-password.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-8299552523876674745</id><published>2020-01-14T14:07:00.003-08:00</published><updated>2020-05-12T18:27:50.814-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="vIDM"/><category scheme="http://www.blogger.com/atom/ns#" term="Workspace ONE"/><category scheme="http://www.blogger.com/atom/ns#" term="Workspace ONE Access"/><category scheme="http://www.blogger.com/atom/ns#" term="WS1"/><title type='text'>Using PostMan to Update Workspace ONE / VMware Identity Manager Allowed Redirects</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
On some occasions, customers may need to have a resource send a command to VMware Identity Manager but then redirect back. By default, VMware Identity Manager does not do redirects (this is by design), however, it can support them with a slight modification to trusts. &amp;nbsp;The changes are a one-time change per VMware Identity Manager tenant and remain from that point forward unless removed by an administrator.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;
The following are the instructions for grabbing the bearer token from the HZN cookie and then applying using Postman to access the APIs to update the settings for allowing redirects.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-weight: bold; text-decoration: underline;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Getting Bearer Token from HZN cookie in browser&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;NOTE: Most modern browsers have an inspection mode.&amp;nbsp;&amp;nbsp;Usually this is accessed by right-clicking on the web page and selecting INSPECT.&lt;/span&gt;&lt;/div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;Open a browser such as Chrome and authenticate as admin account to your Workspace ONE tenant (Note: Make sure you have the option to view the Administrator console).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;Open INSPECT mode in the browser by right-clicking on the page and selecting INSPECT from the context menu.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;Select APPLICATION from the inspection window.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;Select your Workspace ONE / VMware Identity Manager portal under cookies.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;Find HZN under the name column and copy the value data to your clipboard. &amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;In step 5.) of the below instructions, paste the token in for authentication as a Bearer Token.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPXKX2PqXYsYVzj0KdEOFnfeNtcJg0DVCnCl-Hafz0WhG69ENEIZDlJUlRzt7_Vo_5MPP3fEUCVvXDoVYNeKuX70Qve9zRdFI4QQEkdj1CSxPb5eQ1z7UJtc8ArIkPvXq8dSMKGPhoIx8/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;701&quot; data-original-width=&quot;971&quot; height=&quot;460&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPXKX2PqXYsYVzj0KdEOFnfeNtcJg0DVCnCl-Hafz0WhG69ENEIZDlJUlRzt7_Vo_5MPP3fEUCVvXDoVYNeKuX70Qve9zRdFI4QQEkdj1CSxPb5eQ1z7UJtc8ArIkPvXq8dSMKGPhoIx8/s640/1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;--inversion-type-color: simple; font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; font-weight: bold; text-decoration: underline;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Using PostMan to access Workspace ONE APIs to GET values&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;When you define the parameters in PostMan, make sure the following are set.&lt;/span&gt;&lt;/div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;1. Start with GET command to test URL.&lt;/li&gt;
&lt;li&gt;URL to the API with correct FQDN of VMware Identity Manager tenant.&amp;nbsp;&amp;nbsp;In this case, to read the “allowedredirects” value from the Workspace ONE tenant, use the below URL.&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;https://&lt;fqdn&gt;/SAAS/jersey/manager/api/authsettings/allowedredirects&lt;/fqdn&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Open Authorization tab…&lt;/li&gt;
&lt;li&gt;Set authentication type to BEARER TOKEN.&lt;/li&gt;
&lt;li&gt;Paste in token from HZN cookie from browser (see above procedure to get token from HZN cookie).&lt;/li&gt;
&lt;li&gt;When you press SEND, the Body value should appear as shown in the image below.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh22R5XqsN6QZCYgEiw_efxjznfUWtMYuEWDvnonD2ycJKWsZevHCyRnIH2TP9k0MlHK1Y97_8AwVN9pLY-dqLKFd3SGE7aqVIzaO3LdG_AS9SXObHa1dJ3x7D9SLavX10-V7VTnJ24lqY/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;755&quot; data-original-width=&quot;1162&quot; height=&quot;414&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh22R5XqsN6QZCYgEiw_efxjznfUWtMYuEWDvnonD2ycJKWsZevHCyRnIH2TP9k0MlHK1Y97_8AwVN9pLY-dqLKFd3SGE7aqVIzaO3LdG_AS9SXObHa1dJ3x7D9SLavX10-V7VTnJ24lqY/s640/2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;--inversion-type-color: simple; font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;span style=&quot;--inversion-type-color: simple; font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;--inversion-type-color: simple; font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;&lt;span style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Using PostMan to access Workspace ONE APIs to POST values&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;When you define the parameters in PostMan, make sure the following are set.&lt;/span&gt;&lt;/div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;about:invalid#zClosurez&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;
&lt;li&gt;Start with POST command to test URL.&lt;/li&gt;
&lt;li&gt;URL to the API with correct FQDN of VMware Identity Manager tenant.&amp;nbsp;&amp;nbsp;In this case, to update the “allowedredirects” value from the Workspace ONE tenant, use the below URL.&lt;br /&gt;
https://&lt;fqdn&gt;/SAAS/jersey/manager/api/authsettings/allowedredirects&lt;br /&gt;
To note: allowed redirects are per tenant (not per node within a tenant) so they only need to be set using the LB FQDN (e.g.&amp;nbsp;&lt;a href=&quot;http://portal.flaming.ws/&quot;&gt;portal.flaming.ws&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href=&quot;http://workspace.mydomain.com/&quot;&gt;workspace.mydomain.com&lt;/a&gt;).&lt;/fqdn&gt;&lt;/li&gt;
&lt;li&gt;Open Authorization tab…&lt;/li&gt;
&lt;li&gt;Set authentication type to BEARER TOKEN.&lt;/li&gt;
&lt;li&gt;Paste in token from HZN cookie from browser (see above procedure to get token from HZN cookie).&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3OYLgHGITyR1tO0PtBTPB9F3VRc3NPZowSFzFXvU19mYuZ-U5GY2YdlIQIzmXpX9zhC1GiJK2QnKHGsw3PHMKU14T0dMhef7RnVFLjpIYErP-ObOu3HET64INQnwzpnT7LN99JR_0bHI/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;462&quot; data-original-width=&quot;851&quot; height=&quot;346&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3OYLgHGITyR1tO0PtBTPB9F3VRc3NPZowSFzFXvU19mYuZ-U5GY2YdlIQIzmXpX9zhC1GiJK2QnKHGsw3PHMKU14T0dMhef7RnVFLjpIYErP-ObOu3HET64INQnwzpnT7LN99JR_0bHI/s640/3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Switch to the HEADERS tab in Postman.&lt;/li&gt;
&lt;li&gt;For updating the allowedredirects value we need to add in the “&lt;span style=&quot;font-weight: bold;&quot;&gt;Accept&lt;/span&gt;” header with the following value:&lt;br /&gt;
application/vnd.vmware.horizon.manager.authsettings.allowedredirects+json&lt;/li&gt;
&lt;li&gt;For updating the allowedredirects value we need to add in the “&lt;span style=&quot;font-weight: bold;&quot;&gt;Content-Type&lt;/span&gt;” header with the following value:&lt;br /&gt;
application/vnd.vmware.horizon.manager.authsettings.allowedredirects+json&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi_EewW2jC5LSuDlTMk1Nd9sDTq2TWedZSQ8yBmpQS2jvrBNt58aP8mrASqfsctfoVxWYXmhGDYsAZHtq7A0qrYAJ8zm_12Lrue6IvrfHEDQihOFhSlKjaxATZmQJp9f7F9iBpHiNlNXQ/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;425&quot; data-original-width=&quot;855&quot; height=&quot;316&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi_EewW2jC5LSuDlTMk1Nd9sDTq2TWedZSQ8yBmpQS2jvrBNt58aP8mrASqfsctfoVxWYXmhGDYsAZHtq7A0qrYAJ8zm_12Lrue6IvrfHEDQihOFhSlKjaxATZmQJp9f7F9iBpHiNlNXQ/s640/4.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: If you do not see the above image, you are likely in Bulk Edit mode.&amp;nbsp;&amp;nbsp;If you’d like, you can just paste in the text per the next image, or shift to the Key-Value Edit mode in postman to see the above screen.&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZVzkePqAsOv2M1qWNLszIaHTY3kZFDkApz_JkqJfSXlthhjCQWS-tgomttAweLRQ2OL16bqI8aiWnX8r5-LjQFsp9-KYcy6UaegktVhItbxExCFylhaqxZkuPHNr46le2SwD_EK6ycFE/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;85&quot; data-original-width=&quot;772&quot; height=&quot;70&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZVzkePqAsOv2M1qWNLszIaHTY3kZFDkApz_JkqJfSXlthhjCQWS-tgomttAweLRQ2OL16bqI8aiWnX8r5-LjQFsp9-KYcy6UaegktVhItbxExCFylhaqxZkuPHNr46le2SwD_EK6ycFE/s640/5.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Within Postman, switch to the Body tab.&lt;/li&gt;
&lt;li&gt;Select “raw” for the entry type. This allows you to type in whatever code you wish.&lt;/li&gt;
&lt;li&gt;Select the code type.&amp;nbsp;&amp;nbsp;This is optional as TEXT or TEXT PLAIN will also work.&amp;nbsp;&amp;nbsp;The code we are entering is JSON so either TEXT/TEXT PLAIN or JSON will work.&lt;/li&gt;
&lt;li&gt;Enter the following code.&amp;nbsp;&amp;nbsp;PUT YOUR WEB APP LOGOUT/LOGIN PAGE AND ANY OTHER PAGES IN COMMA SEPARATED FORMAT BETWEEN THE DOUBLE QUOTES.&amp;nbsp;&amp;nbsp;ENSURE YOU ADD THE ASTERISK AT THE END OF EACH TO BE ABLE TO POINT TO ANY SUBPAGE.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;about:invalid#zClosurez&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-TnuFnlTHB3BwMxCdRcxnwRtZ9dxL6usO6fvN4SVEjihaix2FsnMREkvaZ01uviKbu4ajZNbGOz8QnjTdoW2Odrqnq6eP0mOjD3QhtID3VUxs4Zyj14niQAhhHxZVNuKhXkIn7xo3SJc/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;415&quot; data-original-width=&quot;856&quot; height=&quot;308&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-TnuFnlTHB3BwMxCdRcxnwRtZ9dxL6usO6fvN4SVEjihaix2FsnMREkvaZ01uviKbu4ajZNbGOz8QnjTdoW2Odrqnq6eP0mOjD3QhtID3VUxs4Zyj14niQAhhHxZVNuKhXkIn7xo3SJc/s640/6.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;about:invalid#zClosurez&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/u/1/blogger.g?blogID=830606417501151526&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; text-decoration: underline;&quot;&gt;SINGLE SITE CODE EXAMPLE:&lt;/span&gt;&lt;/h4&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;{&lt;br /&gt;
&amp;nbsp; &quot;allowedRedirects&quot;: [“https://www.flaming.ws*&quot;]&lt;br /&gt;
}&lt;br /&gt;
&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; text-decoration: underline;&quot;&gt;MULTI-SITE CODE EXAMPLE:&lt;/span&gt;&lt;/h4&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;{&lt;br /&gt;
&amp;nbsp; &quot;allowedRedirects&quot;: [&quot;https://www.google.com*,https://www.flaming.ws*&quot;]&lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;When you press SEND, the pages you define will show up under “allowedRedirects” within the Body outcome.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;If you make an error just correct it and repost the update.&amp;nbsp;&amp;nbsp;If you wish to remove all redirects, simply delete all web sites between the quotes.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;;&quot;&gt;At this point, redirections are now set and you should be able to make an Oauth or SAML call to force logout with a redirection back to your application.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot;; text-decoration: underline;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;REMOVE ALL REDIRECTS CODE EXAMPLE:&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &quot;allowedRedirects&quot;: [“&quot;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/8299552523876674745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/8299552523876674745'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2020/01/using-postman-to-update-workspace-one.html' title='Using PostMan to Update Workspace ONE / VMware Identity Manager Allowed Redirects'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPXKX2PqXYsYVzj0KdEOFnfeNtcJg0DVCnCl-Hafz0WhG69ENEIZDlJUlRzt7_Vo_5MPP3fEUCVvXDoVYNeKuX70Qve9zRdFI4QQEkdj1CSxPb5eQ1z7UJtc8ArIkPvXq8dSMKGPhoIx8/s72-c/1.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-2662397972964783917</id><published>2019-12-23T14:10:00.001-08:00</published><updated>2022-11-22T11:23:50.827-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="vIDM"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware"/><category scheme="http://www.blogger.com/atom/ns#" term="Workspace ONE"/><category scheme="http://www.blogger.com/atom/ns#" term="Workspace ONE Access"/><category scheme="http://www.blogger.com/atom/ns#" term="WS1"/><title type='text'>Cleaning up ElasticSearch Unassigned Shards in On-Premises VMware Identity Manager (Workspace ONE Access)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;u&gt;Background Info:&lt;/u&gt;&lt;/h3&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;On occasion, my on-premises VMware Identity Manager cluster of appliances will get an elasticsearch error due to unassigned shards. &amp;nbsp;If you ever see an error in your VMware Identity Manager (vIDM) or Workspace ONE Access appliance dashboard regarding the analytics service, it usually means this issue exists for you as well.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;u&gt;The Solution:&lt;/u&gt;&lt;/h3&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;There are a couple of options for resolving this. One is via slightly unhelpful documentation on the VMware website&amp;nbsp;&lt;a href=&quot;https://docs.vmware.com/en/VMware-Workspace-ONE-Access/21.08/ws1_access_upgade.doc/GUID-AF636CE0-3F48-49EB-BD77-22B18679846D.html&quot; rel=&quot;nofollow&quot; style=&quot;text-align: left;&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;&lt;span style=&quot;text-align: left;&quot;&gt;. &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;As for some more helpful command line options, I&#39;ve posted some below. &amp;nbsp;Basically with option 1, you manually go through each node looking for and removing each unassigned shard using the curl XGET and XDELETE options. &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;With option 2, you go through the command line to remove the shards via standard OS file commands.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;Option 1:&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em; text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;&amp;nbsp; &amp;nbsp; 1. &amp;nbsp;SSH to the appliance or one of your appliances in the cluster. Login as root.&lt;/span&gt;&lt;br /&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;&amp;nbsp; &amp;nbsp; 2. &amp;nbsp;Run the following command to determine if you have unassigned shards&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 18px; line-height: 1.6em;&quot;&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-weight: bold;&quot;&gt;curl&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b style=&quot;font-size: 18px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;http://localhost:9200/_cluster/health?pretty&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em; text-align: left;&quot;&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;NOTE: &amp;nbsp;The output should look something like the below:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;border: 1px solid rgb(170, 170, 170); color: black; height: 350px; overflow: auto; width: 550px;&quot;&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;cluster_name&quot; : &quot;horizon&quot;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;status&quot; : &quot;green&quot;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;timed_out&quot; : false,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;number_of_nodes&quot; : 3,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;number_of_data_nodes&quot; : 3,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;active_primary_shards&quot; : 0,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;active_shards&quot; : 0,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;relocating_shards&quot; : 0,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;initializing_shards&quot; : 0,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;unassigned_shards&quot; : 0,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;delayed_unassigned_shards&quot; : 0,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;number_of_pending_tasks&quot; : 0,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;number_of_in_flight_fetch&quot; : 0,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;task_max_waiting_in_queue_millis&quot; : 0,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&amp;nbsp; &quot;active_shards_percent_as_number&quot; : 100.0&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;Andale Mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: 18px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt; &amp;nbsp; 3. Run the following command to view the unassigned shards.&lt;/span&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;font-weight: bold; line-height: 1.6em;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;curl -XGET ‘&lt;/span&gt;&lt;b style=&quot;font-size: 18px;&quot;&gt;http://localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason&lt;/b&gt;&lt;span style=&quot;font-weight: bold; line-height: 1.6em;&quot;&gt;’ | grep UNASSIGNED&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;&amp;nbsp; &amp;nbsp; 4. Delete the unassigned shards by running the following command&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-weight: bold;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;curl -XDELETE ‘http://localhost:9200/v3_YYYY-MM-DD/&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
&lt;span style=&quot;line-height: 1.6em;&quot;&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;Once all the unassigned shards have been deleted refresh the dashboard and Analytics connection should be successful.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 1em; margin-top: 1em;&quot;&gt;
&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;line-height: 1.6em;&quot;&gt;And running the&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;font-weight: bold; line-height: 1.6em;&quot;&gt;curl&amp;nbsp;&lt;/span&gt;&lt;b&gt;http://localhost:9200/_cluster/health?pretty&lt;/b&gt;&lt;span style=&quot;font-weight: bold; line-height: 1.6em;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;line-height: 1.6em;&quot;&gt;should report 0 unassigned shards and status: green.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px; font-weight: bold; text-decoration: underline;&quot;&gt;Option 2:&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;The other option for cleaning shards is on the console through the file system. &amp;nbsp;This will have to be done manually on all nodes:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;Find out what indices have hung shards.&lt;/span&gt;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;curl -XGET &#39;http://localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason&#39;|grep&lt;/span&gt;&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;&amp;nbsp;UNASSIGNED&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;DO THE ABOVE COMMAND ON ALL NODES BEFORE PROCEEDING TO STEP 2!&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;Make sure elasticsearch is not running on all of the nodes:&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: #ff2600; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-weight: bold;&quot;&gt;STOP ELASTICSEARCH ON&amp;nbsp;&lt;/span&gt;&lt;i style=&quot;color: #ff2600; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-weight: bold;&quot;&gt;&lt;u&gt;ALL NODES&lt;/u&gt;&lt;/i&gt;&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: #ff2600; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-weight: bold;&quot;&gt;&amp;nbsp;FIRST&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px;&quot;&gt;service elasticsearch stop&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;Remove the index&#39;s files from the disk on each node. &amp;nbsp;Replace &lt;/span&gt;&lt;node_number style=&quot;font-size: 18px;&quot;&gt; and &lt;index_name&gt; with the proper values (i.e Node 0 or 1 and the Index Name from the output of the curl command in step 1):&lt;/index_name&gt;&lt;/node_number&gt;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px;&quot;&gt;rm -rf /db/elasticsearch/horizon/nodes/&lt;/span&gt;&lt;node_number style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px;&quot;&gt;/indices/&lt;/node_number&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;Restart elasticsearch on each node ONLY after doing the above steps (2 and 3) on each node.&lt;/span&gt;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px;&quot;&gt;service elasticsearch start&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;Option 2-ALTERNATE:&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;color: #ff2600; font-weight: bold;&quot;&gt;WARNING: DO NOT DO THIS on a production&amp;nbsp;environment!!&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;The lazy way to do this is dump the node’s&amp;nbsp;‘indices’ folder. The downside to doing this is you lose all other historical data. &amp;nbsp;If you’re fine with that, then certainly this is an option. &amp;nbsp; The command is simply&amp;nbsp;“&lt;/span&gt;&lt;b style=&quot;font-size: 18px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;rm -rf /db/elasticsearch/horizon/nodes/&lt;i&gt;&lt;node here=&quot;&quot; number=&quot;&quot;&gt;&lt;/node&gt;&lt;/i&gt;/indices/&lt;/span&gt;&lt;/b&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;“.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;NOTE: &amp;nbsp;If you dump the Indices folder, the default settings are shown below.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;drwxr-xr-x 30 elasticsearch users 4096 Sep 12 10:35&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: #400bd9; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;indices&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;To recreate the folder, stop elasticsearch, create the folder, set the user and group ownership, and then set the permissions, then restart elasticsearch.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;service elasticsearch stop&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;md indices&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;chown elasticsearch:users indices/&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;chmod 755 indices/&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;Do an ls -l -a rom the numbered folder (typically “0”) to see if permissions are correctly set.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot;&gt;service elasticsearch start&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;The commands for the above are shown here&lt;/span&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;md /db/elasticsearch/horizon/nodes/0/indices&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;chown elasticsearch:users /db/elasticsearch/horizon/nodes/0/indices/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;chmod 755 /db/elasticsearch/horizon/nodes/0/indices/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;Once this is completed, you may wish to recheck the folder is created with the correct permissions. &amp;nbsp;Simply run the “&lt;b&gt;ls -l -a&lt;/b&gt;” command on the node folder.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;ls -l -a /db/elasticsearch/horizon/nodes/0/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span face=&quot;&amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif&quot; style=&quot;font-size: 18px;&quot;&gt;From that point, restart the elasticsearch service on each node one at a time.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;b&gt;&lt;u&gt;Combined Commands for copy/paste into SSH.&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 18px; font-weight: bold; text-decoration: underline;&quot;&gt;NODE 0:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-weight: bold;&quot;&gt;NOTE: &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff2600; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-weight: bold;&quot;&gt;STOP ELASTICSEARCH ON&amp;nbsp;&lt;i&gt;&lt;u&gt;ALL NODES&lt;/u&gt;&lt;/i&gt;&amp;nbsp;FIRST&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;service elasticsearch stop&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;rm -rf /db/elasticsearch/horizon/nodes/0/indices/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;md /db/elasticsearch/horizon/nodes/0/indices&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;chown elasticsearch:users /db/elasticsearch/horizon/nodes/0/indices/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;chmod 755 /db/elasticsearch/horizon/nodes/0/indices/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;ls -l -a /db/elasticsearch/horizon/nodes/0/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;service elasticsearch start&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;u&gt;NODE 1:&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-weight: bold;&quot;&gt;NOTE: &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff2600; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-weight: bold;&quot;&gt;STOP ELASTICSEARCH ON&amp;nbsp;&lt;i&gt;&lt;u&gt;ALL NODES&lt;/u&gt;&lt;/i&gt;&amp;nbsp;FIRST&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;service elasticsearch stop&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;rm -rf /db/elasticsearch/horizon/nodes/1/indices/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;md /db/elasticsearch/horizon/nodes/1/indices&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;chown elasticsearch:users /db/elasticsearch/horizon/nodes/1/indices/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;chmod 755 /db/elasticsearch/horizon/nodes/1/indices/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;ls -l -a /db/elasticsearch/horizon/nodes/1/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;service elasticsearch start&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;--inversion-type-color: simple; font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;b&gt;&lt;u&gt;BOTH NODE’S 1 AND 2:&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;andale mono&amp;quot;; font-weight: bold;&quot;&gt;NOTE: &amp;nbsp;&lt;span style=&quot;color: #ff2600;&quot;&gt;STOP ELASTICSEARCH ON&amp;nbsp;&lt;i&gt;&lt;u&gt;ALL NODES&lt;/u&gt;&lt;/i&gt;&amp;nbsp;FIRST&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;service elasticsearch stop&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;rm -rf /db/elasticsearch/horizon/nodes/0/indices/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;md /db/elasticsearch/horizon/nodes/0/indices&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;chown elasticsearch:users /db/elasticsearch/horizon/nodes/0/indices/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;chmod 755 /db/elasticsearch/horizon/nodes/0/indices/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;rm -rf /db/elasticsearch/horizon/nodes/1/indices/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;md /db/elasticsearch/horizon/nodes/1/indices&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;chown elasticsearch:users /db/elasticsearch/horizon/nodes/1/indices/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;chmod 755 /db/elasticsearch/horizon/nodes/1/indices/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;ls -l -a /db/elasticsearch/horizon/nodes/0/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;service elasticsearch start&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.9); color: lime; font-family: &amp;quot;andale mono&amp;quot;; font-size: 18px; font-stretch: normal; line-height: normal;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/2662397972964783917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/2662397972964783917'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2019/12/vidm-ws1-fix-elasticsearch-unassigned-shards.html' title='Cleaning up ElasticSearch Unassigned Shards in On-Premises VMware Identity Manager (Workspace ONE Access)'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-4387610883911830412</id><published>2014-04-18T12:52:00.001-07:00</published><updated>2014-04-18T12:52:49.012-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apple"/><category scheme="http://www.blogger.com/atom/ns#" term="Audio"/><category scheme="http://www.blogger.com/atom/ns#" term="Script"/><title type='text'>Pushing iTunes Track Info to NiceCast with AppleScript</title><content type='html'>&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;&lt;u&gt;Background Info:&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;On occasion, I like to do podcasts and, thus, have built a system which has significant audio capabilities. Specifically, my Mac has multiple mixers and amps connected such as (from the small end) a StarTech USB Surround Sound input/output device, M-Audio FastTrack USB mixer, a Tascam US-144 MKII USB mixer, a Xenyx 502, and a Focusrite Saffire Pro 40. I also have things like an MXL 990 and an Epiphan VGA2USB converter as well.&lt;/span&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;&lt;u&gt;The Problem:&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;I have various applications such as AirFoil and NiceCast from Rogue Amoeba Software which are great at what they do, but I would rather have my audio come out of an app like iTunes and into the mixers and amps for processing, then back into my Mac for transmission.  NiceCast does a great job of directly capturing song info from iTunes and transmitting down the line with the music, but, like I said, I want to mix and blend the audio beforehand.  NiceCast doesn&#39;t directly accommodate this but it does have a manual input option via a NowPlaying.txt file which allows pulling in track title, artist, album, and time.  The trick is, how do I get that info from the source app - in this case, iTunes - to Nicecast via this NowPlaying.txt file in the format necessary?&lt;/span&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;&lt;u&gt;The Solution:&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;The resolution, use AppleScript with iTunes to extract this data.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Below is my AppleScript which accommodates this need.  To make this work, I simply compiled into an OS X Application and saved it to the &quot;~/Library/iTunes/Scripts&quot; folder.  Then, when playing my music, I simple use the iTunes Script Menu which appears when a script is available to send the track info to the NowPlaying.txt file for Nicecast to read when broadcasting.&lt;/span&gt;&lt;/p&gt;


&lt;br&gt;&lt;br&gt;
&lt;div style=&quot;border: 1px solid #aaa; width: 550px; height: 800px; overflow: auto; color: #000;&quot;&gt;
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;AdminScriptEditor Script Conversion&lt;/title&gt;
    &lt;style&gt;
		.VBScript-DefaultStyle { color: #000000;}
		.VBScript-ReservedWordStyle { color: #0000FF; font-weight: bold;}
		.VBScript-NativeTypeStyle { color: #0000FF;}
		.VBScript-OperatorStyle { color: #000000;}
		.VBScript-ReservedWordOperatorStyle { color: #0000FF;}
		.VBScript-NumberStyle { color: #800080;}
		.VBScript-StringDelimiterStyle { color: #800000;}
		.VBScript-StringDefaultStyle { color: #FF0000;}
		.VBScript-CommentDelimiterStyle { color: #008000;}
		.VBScript-CommentDefaultStyle { background-color: #EFEF00; color: #008000;}
		.VBScript-PreProcessorDirectiveKeywordStyle { color: #0000FF;}
		.VBScript-PreProcessorDirectiveDefaultStyle { color: #000000;}
		.VBScript-HyperlinkStyle { color: #0000FF; text-decoration: underline;}
&lt;/style&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;pre&gt;
&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;global lasttrack

&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;On&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; run
   &lt;/span&gt;&lt;span class=&quot;VBScript-OperatorStyle&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; iTunes Setup &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;for &lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;launch of the code
   tell application &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt;iTunes&lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; line1 &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt;Title: &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-OperatorStyle&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Get&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; name of current track)
      &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; line2 &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt;Artist: &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-OperatorStyle&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Get&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; artist of current track)
      &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; line3 &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt;Album: &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-OperatorStyle&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Get&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; album of current track)
      &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; line4 &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt;Time: &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-OperatorStyle&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Get&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-NativeTypeStyle&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; of current track)
      &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; lasttrack &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; name of current track
   &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;End&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; tell
   &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; Track_Info &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; line1 &lt;/span&gt;&lt;span class=&quot;VBScript-OperatorStyle&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;
&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt; &amp;amp; line2 &amp;amp; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt; &amp;amp; line3 &amp;amp; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt; &amp;amp; line4&lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;   &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; this_file &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt;Macintosh HD:Users:username:Library:Application Support:Nicecast:NowPlaying.txt&lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
   my write_to_file(Track_Info, this_file, &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;)
&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;End&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; run

&lt;/span&gt;&lt;span class=&quot;VBScript-OperatorStyle&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Now&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; comes the idle checks
&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;On&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; idle
   tell application &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt;iTunes&lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; currentTrack &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; name of current track
   &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;End&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; tell
   &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; currentTrack &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordOperatorStyle&quot;&gt;Is&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordOperatorStyle&quot;&gt;Not&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; lasttrack &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Then&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
      tell application &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt;iTunes&lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
         &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; line1 &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt;Title: &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-OperatorStyle&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Get&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; name of current track)
         &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; line2 &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt;Artist: &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-OperatorStyle&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Get&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; artist of current track)
         &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; line3 &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt;Album: &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-OperatorStyle&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Get&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; album of current track)
         &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; line4 &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt;Time: &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-OperatorStyle&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Get&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-NativeTypeStyle&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; of current track)
         &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; lasttrack &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; line1
      &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;End&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; tell
      &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; Track_Info &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; line1 &lt;/span&gt;&lt;span class=&quot;VBScript-OperatorStyle&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;
&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt; &amp;amp; line2 &amp;amp; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt; &amp;amp; line3 &amp;amp; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt; &amp;amp; line4&lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; this_file &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-StringDefaultStyle&quot;&gt;Macintosh HD:Users:username:Library:Application Support:Nicecast:NowPlaying.txt&lt;/span&gt;&lt;span class=&quot;VBScript-StringDelimiterStyle&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
      my write_to_file(Track_Info, this_file, &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;)
   &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;end if
&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;   return &lt;/span&gt;&lt;span class=&quot;VBScript-NumberStyle&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;End&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; idle


&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;On&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; write_to_file(this_data, target_file, append_data)
   try
      &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; the target_file &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; the target_file &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;As&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-NativeTypeStyle&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; the open_target_file &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; open &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;for &lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;access file target_file &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;with &lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;write permission&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; append_data &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordOperatorStyle&quot;&gt;Is&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Then&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; eof of the open_target_file &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-NumberStyle&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
      write this_data &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; the open_target_file starting at eof
      close access the open_target_file
      return &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
   &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;On&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;Error&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
      try
         close access file target_file
      &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;End&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; try
      return &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt;
   &lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;End&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; try
&lt;/span&gt;&lt;span class=&quot;VBScript-ReservedWordStyle&quot;&gt;End&lt;/span&gt;&lt;span class=&quot;VBScript-DefaultStyle&quot;&gt; write_to_file
&lt;/span&gt;&lt;/pre&gt;
  &lt;/body&gt;
&lt;/html&gt;
&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/4387610883911830412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/4387610883911830412'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2014/04/pushing-itunes-track-info-to-nicecast.html' title='Pushing iTunes Track Info to NiceCast with AppleScript'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-1351218468330573262</id><published>2013-12-19T12:05:00.001-08:00</published><updated>2013-12-19T12:19:52.632-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><title type='text'>Disabling the Built in Keyboard and Trackpad on a MacBook Pro</title><content type='html'>&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;If, like me, you use your MacBook Pro in a multi-screen scenario with an external keyboard and mouse, then probably like me, you&#39;ve wondered how to disable the built in trackpad and keyboard so inadvertent key presses don&#39;t mess things up (i.e. the cat).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Here&#39;s how.&lt;/span&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h4&gt;&lt;strong&gt;&lt;u&gt;Notes:&lt;/u&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;A couple of things to note when doing this.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Disabling the built-in keyboard must be done manually on each reboot.  This isn&#39;t a huge deal since we&#39;re not rebooting our Mac&#39;s very much (hopefully).&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;WARNING:  Before disabling the built-in keyboard, make darn sure you have an external keyboard connected!!&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;WARNING:  Before disabling the built-in trackpad, make sure you have an external mouse connected!&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri; color: red;&quot;&gt;&lt;strong&gt;NOTICE:  In following these procedures, you take full responsibility for you messing up your system if something doesn&#39;t go right!&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;br&gt;
&lt;h4&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;&lt;span style=&#39;text-decoration:underline;&#39;&gt;How to disable the keyboard:&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Source: &lt;a href=&quot;http://forums.macrumors.com/showpost.php?p=9536110&amp;postcount=4&quot;&gt;http://forums.macrumors.com/showpost.php?p=9536110&amp;postcount=4&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Open Terminal and type in the following command.&lt;/span&gt;&lt;/p&gt;
&lt;br&gt;
&lt;center&gt;&lt;div style=&quot;border: 1px solid #aaa;background-color:#f9efef; width:600px; height:50px; overflow-x: scroll; color:#000;&quot;&gt;
&lt;span style=&quot;font-size: 10pt; font-family: Consolas; white-space:nowrap;&quot;&gt;&lt;strong&gt;sudo kextunload /System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext/&lt;/strong&gt;&lt;/span&gt;
&lt;br&gt;&lt;/div&gt;&lt;/center&gt;
&lt;br&gt;
&lt;br&gt;
&lt;h4&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri; text-decoration:underline;&quot;&gt;How to enable the keyboard:&lt;/span&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Source: &lt;a href=&quot;http://forums.macrumors.com/showpost.php?p=9536110&amp;postcount=4&quot;&gt;http://forums.macrumors.com/showpost.php?p=9536110&amp;postcount=4&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Open Terminal and type in the following command.&lt;/span&gt;&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;
&lt;center&gt;
&lt;div style=&quot;border: 1px solid #aaa;background-color:#f9efef; width:600px; height:50px; overflow-x: scroll; color:#000;&quot;&gt;
&lt;span style=&quot;font-size: 10pt; font-family: Consolas; white-space:nowrap;&quot;&gt;&lt;strong&gt;sudo kextload /System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext/&lt;/strong&gt;&lt;/span&gt;
&lt;br&gt;&lt;/div&gt;&lt;/center&gt;
&lt;br&gt;
&lt;br&gt;
&lt;h4&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri; text-decoration:underline;&quot;&gt;How to disable the built in Trackpad:&lt;/span&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Simply open OS X Settings, browse to Accessibility, select Mouse &amp; Trackpad, and check the &quot;Ignore built-in trackpad when mouse or wireless trackpad is present&quot; option.&lt;/span&gt;&lt;/p&gt;
&lt;br&gt;
&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbeUShc481h3wXhQ48pbgnAdfZD8l1LcsJTrFFXnU1sQ1FJkWpjFbSACu5n89S-rWOXpWdHJTdU4jrRPF-fkp5wbQ1_5UF5m0nwmEWz2adrvwcccB5dJxpYQDWSblMko7QAtpuInIdHb8/?imgmax=800&quot; alt=&quot;Disable Trackpad&quot; border=&quot;0&quot; width=&quot;600&quot; height=&quot;403&quot; /&gt;
&lt;br&gt;&lt;br&gt;
&lt;h4&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri; text-decoration:underline;&quot;&gt;How to enable the built in Trackpad:&lt;/span&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Simply open OS X Settings, browse to Accessibility, select Mouse &amp; Trackpad, and uncheck the &quot;Ignore built-in trackpad when mouse or wireless trackpad is present&quot; option.&lt;/span&gt;&lt;/p&gt;
&lt;br&gt;
&lt;h4&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri; text-decoration:underline;&quot;&gt;Conclusion:&lt;/span&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Now my cat can sit on my computer without causing issue.&lt;/span&gt;&lt;/p&gt;
&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbEd9vOWhSUa9v5rMVdS2rqjwEURIyA5QuzD_AKAdvQKQOBKfvwAPQn9AEvqRbC7CD_73PgQoms9O4eD4Hc3jkNP-kXAY6FGt9vHa_p3EkrtGMkWsZxJPHQZ1L8sTOE_l94Ee6RvUWibk/?imgmax=800&quot; alt=&quot;Dude&quot; border=&quot;0&quot; width=&quot;450&quot; height=&quot;600&quot; /&gt;
&lt;br&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/1351218468330573262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/1351218468330573262'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2013/12/disabling-built-in-keyboard-and.html' title='Disabling the Built in Keyboard and Trackpad on a MacBook Pro'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbEd9vOWhSUa9v5rMVdS2rqjwEURIyA5QuzD_AKAdvQKQOBKfvwAPQn9AEvqRbC7CD_73PgQoms9O4eD4Hc3jkNP-kXAY6FGt9vHa_p3EkrtGMkWsZxJPHQZ1L8sTOE_l94Ee6RvUWibk/s72-c?imgmax=800" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-1167386949450759777</id><published>2013-03-23T09:48:00.001-07:00</published><updated>2013-03-23T09:48:32.457-07:00</updated><title type='text'>5 Steps to Capturing an App or Plugin for use with IE</title><content type='html'>Thought I&#39;d share this as I still get this question quite often.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Question:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;How do I capture just an Internet Explorer plugin?&lt;br /&gt;How do I capture an application to use the native Internet Explorer through the ThinApp package?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1.&lt;/b&gt;  ThinApp Pre-Installation Setup Capture on Win XP SP3.&lt;br /&gt;&lt;b&gt;Step 2.&lt;/b&gt;  Install the application or IE6 Plugin.&lt;br /&gt;&lt;b&gt;Step 3.&lt;/b&gt;  Click the INTERNET EXPLORER button in ThinApp.&lt;br /&gt;&lt;b&gt;Step 4.&lt;/b&gt;  Select &quot;Include an Entry Point for the system-installed Internet Explorer&quot;.&lt;br /&gt;&lt;b&gt;Step 5.&lt;/b&gt;  Click OK and POSTSCAN to continue capturing and building your application with ThinApp.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href=&#39;https://picasaweb.google.com/111960042719804463037/TheFlamingFamilyBlog?authkey=Gv1sRgCL6Y593Tv73PxgE#5858581528298273346&#39;&gt;&lt;img src=&#39;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF_Qzp2yoV0ZaU7APYvrpHkjEFSktrOJ5Wkc0U7EaTEaMaAWkTSZP44us5KaMax95_oM0PJkyNwV6hyphenhyphendULtBC2gB-1f1DgivkIvYP-PY_Tj2bgCrK6rha4Wacz5BVpcKnCfTjuVyZNYhc6/s288/0.jpg&#39; border=&#39;0&#39; width=&#39;281&#39; height=&#39;210&#39; style=&#39;margin:5px&#39;&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Conclusion:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;This will enable the IEXPLORE.EXE entry point in the ThinApp package for launching the natively installed Internet Explorer through the ThinApp package with the captured application or plugin.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPad&lt;br /&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/1167386949450759777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/1167386949450759777'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2013/03/5-steps-to-capturing-app-or-plugin-for.html' title='5 Steps to Capturing an App or Plugin for use with IE'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF_Qzp2yoV0ZaU7APYvrpHkjEFSktrOJ5Wkc0U7EaTEaMaAWkTSZP44us5KaMax95_oM0PJkyNwV6hyphenhyphendULtBC2gB-1f1DgivkIvYP-PY_Tj2bgCrK6rha4Wacz5BVpcKnCfTjuVyZNYhc6/s72-c/0.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-1556452082852185815</id><published>2012-08-11T11:50:00.001-07:00</published><updated>2012-08-20T08:11:02.729-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Audio"/><category scheme="http://www.blogger.com/atom/ns#" term="FAIL"/><category scheme="http://www.blogger.com/atom/ns#" term="Mountain Lion"/><category scheme="http://www.blogger.com/atom/ns#" term="No Audio"/><category scheme="http://www.blogger.com/atom/ns#" term="No Device"/><category scheme="http://www.blogger.com/atom/ns#" term="Skype"/><title type='text'>How to Fix Skype Audio Selection on Mountain Lion</title><content type='html'>&lt;h3&gt;&lt;strong&gt;&lt;u&gt;My 2 cents…&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Apparently Skype&#39;s (now Microsoft) claim of Skype 5.8.0.1027 being Mountain Lion compatible is only partially true at best.&lt;/span&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;&lt;u&gt;What&#39;s the issue?&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Whenever starting Skype 5.8.0.1027 on Mountain Lion, one gets varying results of audio selection issues.  Usually the issue is the phrase &quot;No Value&quot; shows for some or all audio device selections in the Skype Audio/Video config selections.&lt;/span&gt;&lt;/p&gt;
&lt;br&gt;
&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiXTfXyd9uJ5GoN-XykjL9hq5WazgwfggsfFkkOrdsK7aAAxWeEIn4fQwyRUeyqbVqVC2wSR0nUJwmpc8e0iqaZqyK3jUIS1io1ZOns1cBaLHhZfEuOuhuO23R3rgetA_q-9DrG54rC0U/?imgmax=800&quot; alt=&quot;Skype Issue in ML&quot; border=&quot;0&quot; width=&quot;594&quot; height=&quot;298&quot; /&gt;
&lt;br&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;&lt;u&gt;How do I resolve this?&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;The only workaround I have found at this time is to go into &quot;Activity Monitor&quot; and kill the &lt;strong&gt;&lt;em&gt;CoreAudioD&lt;/em&gt;&lt;/strong&gt; service (Note: Use the search box in the upper-right).&lt;/span&gt;&lt;/p&gt;
&lt;br&gt;
&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRssePRhNzwLa0m6Msu_7SaY9y45rtB1SenYjKavNY-iDpm5zfyStdeXq1mHldGXxSmQtrWAAeSw2dlW5qV4jzbe9k3uhqjz8_L_2ybI5mF_neHtS-IlXfLaDfGNrJoU5OKzVyopU1CXY/?imgmax=800&quot; alt=&quot;Skype Kill CoreAudioD&quot; border=&quot;0&quot; width=&quot;600&quot; height=&quot;421&quot; /&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Once done, go back into Skype Audio/Video settings and you &lt;em&gt;should&lt;/em&gt; see your correct audio devices for selection.  On occasion I have to retry this a couple of times in order for it to work.&lt;/span&gt;&lt;/p&gt;
&lt;br&gt;
&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYyvbwZLqY4Bfv-Q-134eHeOeKTEdG3fNYDtBPsDlb-rZv06dyRtWrBhYgqQGsVAPHklkoZ5WAF0fD2b8NSaX-fxF6E7wUMWhdT08LO1t1iD2IUl_jbnjgNQ7X-W6RAc19lDz-JZA5YGc/?imgmax=800&quot; alt=&quot;Skype ML Issue Resolved after killing CoreAudioD&quot; border=&quot;0&quot; width=&quot;600&quot; height=&quot;294&quot; /&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;The other option is from within Terminal, execute the below command:&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;sudo killall coreaudiod&lt;/pre&gt;
&lt;br&gt;
&lt;h4&gt;&lt;span style=&#39;text-decoration:underline;&#39;&gt;Thanks:&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Thanks to the folks over on the &lt;a href=&quot;https://discussions.apple.com/thread/3220787&quot;&gt;Apple Communities&lt;/a&gt; for posting this info.&lt;/span&gt;&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/1556452082852185815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/1556452082852185815'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2012/08/how-to-fix-skype-audio-selection-on.html' title='How to Fix Skype Audio Selection on Mountain Lion'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiXTfXyd9uJ5GoN-XykjL9hq5WazgwfggsfFkkOrdsK7aAAxWeEIn4fQwyRUeyqbVqVC2wSR0nUJwmpc8e0iqaZqyK3jUIS1io1ZOns1cBaLHhZfEuOuhuO23R3rgetA_q-9DrG54rC0U/s72-c?imgmax=800" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-2561106542759200325</id><published>2012-05-21T17:05:00.001-07:00</published><updated>2012-05-21T17:07:48.891-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Astaro"/><category scheme="http://www.blogger.com/atom/ns#" term="Sophos"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware"/><category scheme="http://www.blogger.com/atom/ns#" term="vSphere"/><title type='text'>Astaro Security Gateways, High Availability, and vSphere Virtual Switches</title><content type='html'>&lt;h3&gt;&lt;strong&gt;&lt;u&gt;Preamble:&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;So, if you&#39;ve not figured it out by now, I&#39;m a computer geek. :-)  And since I primarily work from my home office, one of the things I love to do is run things locally in my own labs.  But to be cost efficient - both in hardware and in space and power - I run everything on two VMware vSphere 5 hosts.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;I probably could get away with using more of the technology within my hosts (you&#39;ll see why I say this in a bit) but I like to tweak things and make changes to match a customer network so as to see as real-to-life results as possible.&lt;/span&gt;&lt;/p&gt;
&lt;br&gt;&lt;h3&gt;&lt;strong&gt;&lt;u&gt;Environment:&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;To give you some background, as mentioned I have two vSphere 5 hosts.  I also run different labs on each and they are not identical hardware (not a big deal with regards to this issue).  And, I also run to virtual Astaro Security Gateway firewalls (one virtual appliance on each host) in active-passive mode.  This is so I can reboot one host at a time and not lose my Internet connection (I use VoIP and remote connectivity for a ton of things).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;I do not use virtual distributed switches.  Rather, I use simple virtual switches with VLANs (I know, I probably should use distributed switches but to me this seems overkill for what I have - and don&#39;t forget, my hosts are not on identical hardware so I have a different number of NICs in each).  And, I don&#39;t think having distributed virtual switches would have alleviated the problem - in fact it probably would have compounded the issue.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;So...My issue which resulted in many, many hours of troubleshooting was this.&lt;/span&gt;&lt;/p&gt;&lt;br&gt;
&lt;h3&gt;&lt;strong&gt;&lt;u&gt;Issue:&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;When setting two (virtual) Astaro Security Gateways to High Availability Mode (we&#39;ll call these Firewall 1 and Firewall 2), and the Slave unit was up and running in passive mode, with one Astaro VM on each host (we&#39;ll call these vSphere Host 1 and 2), and both were connected via VLANs, Guest VMs on vSphere Host 1 could not reach the Internet when Firewall 2 on vSphere Host 2 was set to Master and vice versa (i.e. Guest VMs on vSphere Host 2 could not reach the Internet when Firewall 1 on vSphere Host 1 was set to Master and Firewall 2 on vSphere Host 2 was set to Slave).&lt;/span&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;&lt;u&gt;Symptoms:&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;I actually tested a number of different things, but the short version is, whenever I disconnected a VM network NIC (DMZ or Local Network) from the Slave firewall, all Guest VMs on the same host could suddenly reach the Internet through the Master firewall on the other host.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Additionally, none of the Guest VMs on host with the Slave firewall could ping the Master firewall - but they &lt;strong&gt;could&lt;/strong&gt; ping all other VMs and addresses on the subnet (physical or virtual).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;At first I thought it was an issue with the original VM I saw this symptom on, but it turns out the VM was on the host which was running the Slave firewall.  My next thought was it was a firewall issue (I was half-right here) but I didn&#39;t have all the pieces to draw the correct conclusion so I abandoned this early on.  Then I went on to look at the virtual switches as there was a lot of information around this type of issue and virtual switches needing to be in promiscuous mode - which turns out was NOT the case here.&lt;/span&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;&lt;u&gt;Resolution:&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;What actually turned out to be the issue was the virtual switches do not like it when two devices show up with the same Mac address - something which the Astaro Security Gateways do when put into High Availability Mode (everything is synchronized, right down to the MAC addresses on all network connections!).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;So how do I make this work?  Well, I had two options.  The first being configure the virtual switches so they could handle the multiple devices with the same MAC addresses.  The second option being, disable the Astaro Security Gateways from synchronizing the MAC addresses when in High Availability Mode.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;I chose the second option - disabling the MAC synching as this was much easier than tweaking the virtual switches via command line to get them to work.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;&lt;u&gt;Modifying the Astaro to Not Sync the MAC in HA Mode:&lt;/u&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Boot both appliances and let them sync.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Open the consoles on both and login.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;From the console on each, run the below command:&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;span style=&quot;font-size: 10pt; font-family: Consolas;&quot;&gt;&lt;strong&gt;cc set ha advanced virtual_mac 0&lt;/strong&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Reboot the firewall which is currently in Slave mode (You&#39;ll see this denoted by the &quot;S&quot; in console window prior to the command line (the Master will have an &quot;M&quot;).&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;NOTE:  While the Slave unit is down, you may be able to ping the master from any of the VMs on the vSphere host where the Slave is running.&lt;/span&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;When the Slave firewall comes back online, you should be able to ping the Master from any of the VMs on the vSphere host where the Slave is running.&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;&lt;u&gt;Warnings:&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;The downside is, anything locked to the MAC of the master Astaro will need to reinitiate the connection on the slave Astaro on failover - as the Slave will become Master - and the &quot;New Master&quot; MAC addresses will not be identical to the &quot;Old Master&quot; MAC addresses.  In short, there will be a hiccup in network communications while the switch is occurring….and in most cases this isn&#39;t a huge deal.&lt;/span&gt;&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/2561106542759200325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/2561106542759200325'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2012/05/astaro-security-gateways-high.html' title='Astaro Security Gateways, High Availability, and vSphere Virtual Switches'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-8474191689910098367</id><published>2012-04-23T11:54:00.001-07:00</published><updated>2012-07-02T12:54:35.443-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chrome"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Chrome Print Preview - How to Disable</title><content type='html'>&lt;h2&gt;Updated!&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;It looks like Google Chrome 20 removed the below flag for disabling Print Preview, so a work around for both operating systems is as follows:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;MAC:  Open System Preferences, browse to the Keyboard applet, the select the Keyboard Shortcuts tab/button.  Select &quot;Application Shortcuts&quot; in the left side and in the right, add in the following Keyboard Shortcuts for printing.&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJyXHEzwss5i68hhpPpnOxiI9vJB4oHnmapW3E7sXmpuo2-eTE8PbIuovHeYNY3fe6mNDGj0p3RoFA8efhiFw2rKX14cSZ7UPe7sSqQaANZE3AeX89mSoLwqTnWqdl8jNJoAODotPspSI/&quot;&gt;&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJyXHEzwss5i68hhpPpnOxiI9vJB4oHnmapW3E7sXmpuo2-eTE8PbIuovHeYNY3fe6mNDGj0p3RoFA8efhiFw2rKX14cSZ7UPe7sSqQaANZE3AeX89mSoLwqTnWqdl8jNJoAODotPspSI/?imgmax=800&quot; alt=&quot;Disable Google Chrome Print  MAC&quot; border=&quot;0&quot; width=&quot;550&quot; height=&quot;492&quot; /&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;WIN:  Open the shortcut placed on the desktop and edit it to add &lt;strong&gt;&lt;em&gt;--disable-print-preview&lt;/em&gt;&lt;/strong&gt; after the end-quote for &lt;strong&gt;Chrome.EXE&lt;/strong&gt;.&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9VhVBLWvqKbuBU2RCqSSoNpmA1BTUmWgNlRpgbvlE0JNdPwPeayz6IdP9FPQsQZ9XqriSt6hnpkb1HPwpnHKp2ZcImZLenBL6KkGtPxK-OLa1rsVN5PAftAQCyoy7QWJSQC7xDkjt-wQ/?imgmax=800&quot; alt=&quot;Disable Chrome Print Preview  WIN&quot; border=&quot;0&quot; width=&quot;375&quot; height=&quot;532&quot; /&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;I used to be a Google Chrome fan but lately some of what Google has done with Chrome has not made me the happiest of campers.  &lt;a href=&quot;http://support.google.com/chrome/bin/answer.py?hl=en&amp;answer=1379552&quot;&gt;Chrome&#39;s Print Preview&lt;/a&gt; being forced on is one of those things.  And, unfortunate for those who&#39;re on the latest versions of Chrome, we cannot do the below.  Hopefully you still can…&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;When I go to print, this only serves to slow me down or hinder my workflow. Why? It has no programmable key sequences and takes over a few of the system keys (such as COMMAND + P on a Mac).&lt;/span&gt;&lt;/p&gt;
&lt;br&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;NOTE:  Click on images for larger versions.&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
&lt;center&gt;&lt;!-- copy and paste. Modify height and width if desired. --&gt; &lt;a href=&quot;http://content.screencast.com/users/SquidlyMan/folders/Jing/media/f49ab977-97fd-41dc-a19f-57f099a692a0/00001056.png&quot;&gt;&lt;img class=&quot;embeddedObject&quot; src=&quot;http://content.screencast.com/users/SquidlyMan/folders/Jing/media/f49ab977-97fd-41dc-a19f-57f099a692a0/00001056.png&quot; width=&quot;550&quot; height=&quot;625&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/center&gt;
&lt;br&gt;
&lt;br&gt;
&lt;h3&gt;&lt;strong&gt;&lt;u&gt;Here&#39;s how to turn older versions off both in Windows and on a Mac.&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;In Chrome, type about:flags in the address bar and hit ENTER.&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Find the Disable Print Preview section and click ENABLE.&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;center&gt;&lt;!-- copy and paste. Modify height and width if desired. --&gt; &lt;a href=&quot;http://content.screencast.com/users/SquidlyMan/folders/Jing/media/1862a5ab-3cc6-457e-815d-e715ef575f42/00001057.png&quot;&gt;&lt;img class=&quot;embeddedObject&quot; src=&quot;http://content.screencast.com/users/SquidlyMan/folders/Jing/media/1862a5ab-3cc6-457e-815d-e715ef575f42/00001057.png&quot; width=&quot;550&quot; height=&quot;887&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/center&gt;
&lt;br&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Click the RELAUNCH NOW button at the bottom of the screen.&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;center&gt;&lt;!-- copy and paste. Modify height and width if desired. --&gt; &lt;a href=&quot;http://content.screencast.com/users/SquidlyMan/folders/Jing/media/12e15c5a-a742-40f5-a385-fecb4bebf222/00001058.png&quot;&gt;&lt;img class=&quot;embeddedObject&quot; src=&quot;http://content.screencast.com/users/SquidlyMan/folders/Jing/media/12e15c5a-a742-40f5-a385-fecb4bebf222/00001058.png&quot; width=&quot;550&quot; height=&quot;887&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/center&gt;
&lt;br&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;When Chrome relaunches, you&#39;ll see when you go to print, the normal system print dialog appears.&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;center&gt;&lt;!-- copy and paste. Modify height and width if desired. --&gt; &lt;a href=&quot;http://content.screencast.com/users/SquidlyMan/folders/Jing/media/b6499caa-a7a7-47ef-9f9f-e7ddfb1ffeb5/00001059.png&quot;&gt;&lt;img class=&quot;embeddedObject&quot; src=&quot;http://content.screencast.com/users/SquidlyMan/folders/Jing/media/b6499caa-a7a7-47ef-9f9f-e7ddfb1ffeb5/00001059.png&quot; width=&quot;550&quot; height=&quot;887&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/center&gt;
&lt;/ol&gt;
&lt;br&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Happy Printing!&lt;/span&gt;&lt;/p&gt;

</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/8474191689910098367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/8474191689910098367'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2012/04/chrome-print-preview-how-to-disable.html' title='Chrome Print Preview - How to Disable'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJyXHEzwss5i68hhpPpnOxiI9vJB4oHnmapW3E7sXmpuo2-eTE8PbIuovHeYNY3fe6mNDGj0p3RoFA8efhiFw2rKX14cSZ7UPe7sSqQaANZE3AeX89mSoLwqTnWqdl8jNJoAODotPspSI/s72-c?imgmax=800" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-7420170567808325684</id><published>2012-04-07T15:15:00.001-07:00</published><updated>2012-04-07T15:29:12.714-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Malware"/><title type='text'>YouTube Phishing Emails</title><content type='html'>&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;I&#39;ve noted a couple of these &quot;Phishing&quot; emails coming into my junk folder lately and thought I would point out a few reasons why these are phishing (that&#39;s &quot;fishing&quot; spelled the hacker way with a &quot;ph&quot;) emails.
&lt;/span&gt;&lt;/p&gt;
&lt;!-- copy and paste. Modify height and width if desired. --&gt; &lt;a href=&quot;http://content.screencast.com/users/SquidlyMan/folders/T3CHNOT3S/media/7cdd151a-650e-46f0-9022-fa2b0751ac59/00001042.png&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot;embeddedObject&quot; src=&quot;http://content.screencast.com/users/SquidlyMan/folders/T3CHNOT3S/media/7cdd151a-650e-46f0-9022-fa2b0751ac59/00001042.png&quot; width=&quot;550&quot; height=&quot;636&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
&lt;h4&gt;&lt;strong&gt;&lt;u&gt;What is a &quot;Phishing&quot; email?&lt;/u&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Well, Wikipedia has some very extensive and accurate explanations of &lt;a href=&quot;http://en.wikipedia.org/wiki/Phishing&quot;&gt;what a &quot;Phishing&quot; scam really is&lt;/a&gt;.  In short, it is an attempt to trick you into sending your personal information to an unknown source.&lt;br&gt;&lt;br&gt;Uncool…&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;So how do we know this is a scam email?  It looks like it came from a valid email address.  Well, never forget email addresses, just like caller IDs on a phone, can be faked.
&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;So let&#39;s dissect this email…&lt;/strong&gt;&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;My first clue was this ended up in my &quot;Junk&quot; folder.  But this doesn&#39;t mean it is junk email per se. It just means my email program thought it was junk from the message (turns out it was right).  To note though, I do get a lot of valid emails in my junk folder only because they are mainly emails I don&#39;t care to read most of the time so I&#39;ve taught my email program those emails are junk (usually hitting the &quot;Junk&quot; or &quot;Spam&quot; button on an email is all you need to do now a-days).&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;My second clue?  The format looked off to me.  How so?  Well, look at the below image when we expand out the window a bit.  What looks off to you?&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;NOTE: For any picture, click on the picture to load the image in a separate page.&lt;/span&gt;&lt;br&gt;
&lt;!-- copy and paste. Modify height and width if desired. --&gt; &lt;a href=&quot;http://content.screencast.com/users/SquidlyMan/folders/T3CHNOT3S/media/be5649e3-4d35-4905-9627-dcb82f25fc2a/00001040.png&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot;embeddedObject&quot; src=&quot;http://content.screencast.com/users/SquidlyMan/folders/T3CHNOT3S/media/be5649e3-4d35-4905-9627-dcb82f25fc2a/00001040.png&quot; width=&quot;550&quot; height=&quot;532&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;To me, the paragraph formatting looks off.  And if I resize the window to smaller than what the text is, it really looks off (see below).&lt;/span&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;!-- copy and paste. Modify height and width if desired. --&gt; &lt;a href=&quot;http://content.screencast.com/users/SquidlyMan/folders/T3CHNOT3S/media/a5271775-e5a2-43b2-9625-54e94aa44ab2/00001041.png&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot;embeddedObject&quot; src=&quot;http://content.screencast.com/users/SquidlyMan/folders/T3CHNOT3S/media/a5271775-e5a2-43b2-9625-54e94aa44ab2/00001041.png&quot; width=&quot;421&quot; height=&quot;636&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;But does an improperly formatted email mean it is a fake?  No, not on by itself.  It should be noted the vast majority of scam emails come out of Russia, China, and Africa.  And those are all countries where English is not usually a first language - so formatting and grammar mistakes are often a sign of a scam.  But over the years, scammers have been getting better and better at disguising their scam as legitimate.  Just look at &lt;a href=&quot;http://en.wikipedia.org/wiki/Bernard_Madoff&quot;&gt;Bernie Madoff&lt;/a&gt;.&lt;/span&gt;&lt;br&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;But back to this email.  What was my biggest clue??  Well, when I mouse over &lt;strong&gt;&lt;em&gt;any&lt;/em&gt;&lt;/strong&gt; of the links in the email, you can see from the above screenshot the displayed link (i.e. the &quot;YouTube&quot; link) and the actual link (i.e the &quot;ag-socrat.spb.ru&quot; link) are not the same.  This should be your biggest tip - NEVER click a link in an email unless you know where it will take you!!  It is similar to receiving a call from your (supposed) credit card company or bank asking you to verify your personal data.  You don&#39;t answer the question directly, you call them back on their publicly listed number and have them ask to verify you so you can then address the issue.  Same goes for any email with a link like this one.&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;!-- copy and paste. Modify height and width if desired. --&gt; &lt;a href=&quot;http://content.screencast.com/users/SquidlyMan/folders/T3CHNOT3S/media/cfc6093b-d6fd-4e92-ae3e-9d67bfdff084/00001039.png&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot;embeddedObject&quot; src=&quot;http://content.screencast.com/users/SquidlyMan/folders/T3CHNOT3S/media/cfc6093b-d6fd-4e92-ae3e-9d67bfdff084/00001039.png&quot; width=&quot;532&quot; height=&quot;581&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;And, if you look a bit closer, you&#39;ll see the TLD (Top Level Domain) is &quot;RU&quot; - meaning this is a link to some Internet server in Russia.&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;And while I &lt;strong&gt;strongly recommend &lt;em&gt;&lt;u&gt;against&lt;/u&gt;&lt;/em&gt; doing so on your own system&lt;/strong&gt;, when I click on any of these links, Google Chrome (my default browser) warns me this is a scam.&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;!-- copy and paste. Modify height and width if desired. --&gt; &lt;a href=&quot;http://content.screencast.com/users/SquidlyMan/folders/T3CHNOT3S/media/88ad9b1e-1a2c-452e-b7c2-1ea633b1954f/00001043.png&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot;embeddedObject&quot; src=&quot;http://content.screencast.com/users/SquidlyMan/folders/T3CHNOT3S/media/88ad9b1e-1a2c-452e-b7c2-1ea633b1954f/00001043.png&quot; width=&quot;550&quot; height=&quot;938&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/ol&gt;
&lt;br&gt;&lt;br&gt;
&lt;h4&gt;&lt;strong&gt;&lt;u&gt;So what can I do to protect myself?&lt;/u&gt;&lt;/strong&gt;&lt;/h4&gt;
Great question!  If you have Windows, a good Antivirus and Malware system from someone such as &lt;a href=&quot;http://www.trendmicro.com/us/home/products/titanium/index.html&quot;&gt;Trend Micro&lt;/a&gt; or &lt;a href=&quot;http://www.mcafee.com&quot;&gt;McAfee&lt;/a&gt; are highly recommended.  They also have stuff for a Mac as well if you&#39;d like to have the extra protection.
NOTE: Remember, a Mac OS operates very differently from a Windows system.  In order for a Mac to become infected with malware, you must absolutely provide credentials to the malware in order for it to gain access to your system.
&lt;h4&gt;&lt;strong&gt;&lt;u&gt;But this wasn&#39;t malware, it was a &quot;Phishing&quot; scam.  How else can I be protected?&lt;/u&gt;&lt;/strong&gt;&lt;/h4&gt;
Even better question!  Use of an &quot;intelligent&quot; firewall such as the &lt;a href=&quot;http://www.astaro.com/products&quot;&gt;Sophos Astaro Security Gateway&lt;/a&gt; (Free for home users) is a great solution for those who are more technically inclined.  They even have a &lt;a href=&quot;http://www.astaro.com/products/astaro-security-gateway-virtual-appliance-for-vmware&quot;&gt;Virtual Appliance&lt;/a&gt; if you have your own &lt;a href=&quot;http://www.vmware.com/products/vsphere-hypervisor/overview.html&quot;&gt;VMware vSphere (ESXi) servers&lt;/a&gt; (also free)!
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Below I show a screenshot from the Sophos Astaro Security Gateway Firewall settings which allows country blocking.&lt;/span&gt;&lt;/p&gt;
&lt;!-- copy and paste. Modify height and width if desired. --&gt; &lt;a href=&quot;http://content.screencast.com/users/SquidlyMan/folders/T3CHNOT3S/media/c07505b7-1bc8-48f7-8abd-a447b879cc7f/00001044.png&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot;embeddedObject&quot; src=&quot;http://content.screencast.com/users/SquidlyMan/folders/T3CHNOT3S/media/c07505b7-1bc8-48f7-8abd-a447b879cc7f/00001044.png&quot; width=&quot;550&quot; height=&quot;579&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Aside from Country Blocking, the Astaro has built in support for all sorts of email filtering, security, and protection - including Antivirus, Antispam, and other settings to help block &quot;Phishing&quot; emails such as the one above.&lt;/span&gt;&lt;/p&gt;
&lt;br&gt;
&lt;!-- copy and paste. Modify height and width if desired. --&gt; &lt;a href=&quot;http://content.screencast.com/users/SquidlyMan/folders/T3CHNOT3S/media/28b8ef9c-5e4a-43ed-b5da-ef796f73c263/00001045.png&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot;embeddedObject&quot; src=&quot;http://content.screencast.com/users/SquidlyMan/folders/T3CHNOT3S/media/28b8ef9c-5e4a-43ed-b5da-ef796f73c263/00001045.png&quot; width=&quot;550&quot; height=&quot;417&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
&lt;h4&gt;&lt;strong&gt;&lt;u&gt;What if I am not a Computer Geek or do not have the resources to setup such a firewall?&lt;/u&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Rest assured, the previously mentioned sites (&lt;a href=&quot;http://www.trendmicro.com&quot;&gt;Trend Micro&lt;/a&gt;, &lt;a href=&quot;http://www.mcafee.com&quot;&gt;McAfee&lt;/a&gt;, etc.) and many, many others all have great solutions.  Even Google&#39;s GMail has many Anti-Spam and Anti-Phishing options built into it.  The bottom line is you must educate yourself in protecting yourself.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;And above all, do not trust any email unless you &lt;strong&gt;&lt;em&gt;know&lt;/em&gt;&lt;/strong&gt; it comes from a trusted source.  Your diligence in this is your own greatest protection.&lt;/span&gt;&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/7420170567808325684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/7420170567808325684'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2012/04/youtube-phishing-emails.html' title='YouTube Phishing Emails'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-830606417501151526.post-4950196198576734714</id><published>2012-03-17T17:51:00.001-07:00</published><updated>2014-05-14T11:55:54.373-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware"/><category scheme="http://www.blogger.com/atom/ns#" term="vSphere"/><title type='text'>How to enable VNC access to VMs on vSphere 5 (ESXi)</title><content type='html'>&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;I&#39;m one of those people who use a simple vSphere (ESX for you &quot;Old School&quot; types) setup.  I just need to run a whole bunch of VMs but don&#39;t need to sit in the vSphere Infrastructure Client (VIC) to do so.  Partly because I don&#39;t run Windows as a primary system (I use a Mac) and there isn&#39;t a VIC for the Mac nor is there a Web Console for the Mac (yet…at the time of this posting at least) and partly because I just want to view the console as a boot occurs on my VMs (Windows and non-Windows alike).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;So, how do you make this happen?  Here&#39;s the procedure.&lt;/span&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Login to the vSphere host either at the console or remotely.&lt;br&gt;
NOTE:  On the console, this requires logging into the ALT+F2 screen as root or other admin with permissions, going to TROUBLESHOOTING OPTIONS, and enabling either ESXi Shell (console shell access) or SSH (remote shell access).&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Change owner on firewall folder and services.xml file&lt;/span&gt;&lt;br&gt;
\etc\vmware\firewall\services.xml&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://www.ahinc.com/linux101/permission.htm&quot;&gt;CHMOD help&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;http://www.basicconfig.com/linux/ownership&quot;&gt;CHOWN help&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;I did the following (as this was my own lab in a protected environment):&lt;/span&gt;
&lt;ul&gt;
&lt;span style=&quot;font-size: 10pt; font-family: Consolas;&quot;&gt;&lt;strong&gt;#chmod 644 /etc/vmware/firewall/service.xml &lt;/strong&gt;&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-size: 10pt; font-family: Consolas;&quot;&gt;&lt;strong&gt;#chmod +t /etc/vmware/firewall/service.xml&lt;/strong&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Edit the &lt;strong&gt;SERVICE.XML&lt;/strong&gt; file to create a VNC service.&lt;br&gt;NOTE 1: Use VI or another text editor to add the below text at bottom of the file (assuming it is still in a default format).&lt;br&gt;NOTE 2:  If you have modified your firewall then your service id may be different!  This should be a sequential number which you can get from the previous listed service.  By default it should be approximately &quot;&lt;strong&gt;0038&lt;/strong&gt;&quot;.&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;div style=&quot;border: 1px solid #aaa;background-color:#ffffff; width:380px; height:360px; overflow:auto; color:#000;&quot;&gt;
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;AdminScriptEditor Script Conversion&lt;/title&gt;
    &lt;style&gt;
		.XML-DefaultStyle { color: #000000;}
		.XML-EntityStyle { color: #FF0000;}
		.XML-TagDelimiterStyle { color: #0000FF;}
		.XML-TagNameStyle { color: #800000;}
		.XML-TagAttributeStyle { color: #FF0000;}
		.XML-TagAttributeValueStyle { color: #0000FF;}
		.XML-CommentDelimiterStyle { color: #008000;}
		.XML-CommentDefaultStyle { color: #008000;}
		.XML-ProcessingInstructionDelimiterStyle { color: #0000FF;}
		.XML-ProcessingInstructionDefaultStyle { color: #FF00FF;}
		.XML-DeclarationDelimiterStyle { color: #0000FF;}
		.XML-DeclarationDefaultStyle { color: #FF00FF;}
		.XML-CDATADelimiterStyle { color: #0000FF;}
		.XML-CDATADefaultStyle { color: #808080;}
&lt;/style&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;pre&gt;
&lt;span class=&quot;XML-DefaultStyle&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;XML-CommentDelimiterStyle&quot;&gt;&amp;lt;!--&lt;/span&gt;&lt;span class=&quot;XML-CommentDefaultStyle&quot;&gt; VNC &lt;/span&gt;&lt;span class=&quot;XML-CommentDelimiterStyle&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;service &lt;/span&gt;&lt;span class=&quot;XML-TagAttributeStyle&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;XML-TagAttributeValueStyle&quot;&gt;=&quot;0038&quot;&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;VNC&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;rule &lt;/span&gt;&lt;span class=&quot;XML-TagAttributeStyle&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;XML-TagAttributeValueStyle&quot;&gt;=&#39;0000&#39;&amp;gt;
        &lt;/span&gt;&lt;span class=&quot;XML-TagAttributeValueStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagAttributeStyle&quot;&gt;direction&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;outbound&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;direction&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;protocol&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;tcp&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;protocol&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;porttype&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;dst&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;porttype&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;port&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
           &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;5800&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
           &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;5999&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;port&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;rule&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;rule &lt;/span&gt;&lt;span class=&quot;XML-TagAttributeStyle&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;XML-TagAttributeValueStyle&quot;&gt;=&#39;0001&#39;&amp;gt;
        &lt;/span&gt;&lt;span class=&quot;XML-TagAttributeValueStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagAttributeStyle&quot;&gt;direction&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;inbound&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;direction&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;protocol&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;tcp&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;protocol&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;porttype&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;dst&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;porttype&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;port&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
           &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;5800&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
           &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;5999&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;port&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;rule&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;required&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;required&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;XML-TagNameStyle&quot;&gt;service&lt;/span&gt;&lt;span class=&quot;XML-TagDelimiterStyle&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;XML-DefaultStyle&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
  &lt;/body&gt;
&lt;/html&gt;                                                                 
&lt;/div&gt;&lt;/br&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;NOTE 3:  Use &quot;&lt;strong&gt;i&lt;/strong&gt;&quot; (lower case) to insert text in VI.&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;NOTE 4:  Use [ESC] to exit insert mode within VI.&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;NOTE 5:  Use &quot;&lt;strong&gt;:x&lt;/strong&gt;&quot; (i.e. colon then lower case &quot;x&quot;) to save and write changes.&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;NOTE 6:  You will notice in the above settings I am opening all ports between 5800 and 5999.  &lt;em&gt;You may not wish to do this!!&lt;/em&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Save Services.xml file&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;NOTE:  Any errors at this point will be file/folder permissions related.&lt;/span&gt;&lt;/li&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Reset file permissions on &lt;strong&gt;SERVICE.XML&lt;/strong&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;span style=&quot;font-size: 10pt; font-family: Consolas;&quot;&gt;&lt;strong&gt;#chmod 444 /etc/vmware/firewall/service.xml &lt;/strong&gt;&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Refresh firewall rules&lt;/span&gt;&lt;/li&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Reference:  &lt;a href=&quot;http://www.virtuallyghetto.com/2011/07/how-to-create-custom-firewall-rules-in.html&quot;&gt;VirtuallyGhetto has a great ESX Firewall reference&lt;/a&gt;.&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Commands to refresh the ESX firewall:&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-size: 10pt; font-family: Consolas;&quot;&gt;&lt;strong&gt;esxcli network firewall refresh&lt;/strong&gt;&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-size: 10pt; font-family: Consolas;&quot;&gt;&lt;strong&gt;esxcli network firewall ruleset list&lt;/strong&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Power off and edit VM per &lt;a href=&quot;http://kb.vmware.com/kb/1246&quot;&gt;VMware KB 1246&lt;/a&gt;.&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;&lt;a href=&quot;http://kb.vmware.com/kb/1246&quot;&gt;Using a VNC Client to connect to virtual machines&lt;/a&gt;&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;NOTE:  Use specific unique ports per VM to allow connection.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;br&gt;
&lt;h4&gt;&lt;strong&gt;&lt;u&gt;General Info:&lt;/u&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Now that you&#39;ve finished modifying your vSphere server, just go grab your favorite VNC client and connect.  Since I use a Mac, I like &lt;a href=&quot;http://sourceforge.net/projects/cotvnc/&quot;&gt;Chicken of the VNC&lt;/a&gt; (how can you NOT like that name?) and you cannot beat the price (free).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;It should be noted, this will not be a good solution for BC/DR situations.  See &quot;Cloud-Buddy&quot;&#39;s article &quot;&lt;a href=&quot;http://www.cloud-buddy.com/?p=1091&quot;&gt;VNC and vSphere 5 for Mac users&lt;/a&gt;&quot; which discusses this solution and the pros and cons.&lt;/span&gt;&lt;/p&gt;&lt;br&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-family: Calibri;&quot;&gt;Additional information can be found on VMware&#39;s Knowledge Base. Specifically see the article, &quot;&lt;a href=&quot;http://kb.vmware.com/kb/2008226&quot;&gt;Creating Custom Firewall Rules in VMware ESXi 5.x&lt;/a&gt;&quot;.&lt;/span&gt;&lt;/p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/4950196198576734714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/830606417501151526/posts/default/4950196198576734714'/><link rel='alternate' type='text/html' href='http://technotes.flaming.ws/2012/03/how-to-enable-vnc-access-to-vms-on.html' title='How to enable VNC access to VMs on vSphere 5 (ESXi)'/><author><name>Squidly Man</name><uri>http://www.blogger.com/profile/03997666976897141179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7QSswc1i9GVlZ8cBGTfEb4aYnIgtEBkD5k8KLjnxTTCcgTOO4AutfdIzJM3bamcwTVO3gykom6HsUnJs6qikCnG3vze8yasa2l7zCviiVvyHHDwwU96nJF5TAn_fYuzw/s220/Dean%27s+Head.jpg'/></author></entry></feed>