<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[techbits.io]]></title><description><![CDATA[Tech tips, guides and reviews covering Smart Home, Servers, Coding, Security and more!]]></description><link>https://techbits.io/</link><image><url>https://techbits.io/favicon.png</url><title>techbits.io</title><link>https://techbits.io/</link></image><generator>Ghost 5.70</generator><lastBuildDate>Wed, 08 Apr 2026 14:25:18 GMT</lastBuildDate><atom:link href="https://techbits.io/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Proxmox: iSCSI LUN as Shared Storage]]></title><description><![CDATA[<p>While checking out an ASUSTOR NAS (the Lockerstor 6 Gen2), I tested various configurations of storage and storage types. As part of that, I set up iSCSI targets for a Proxmox cluster, to enable the use of High Availability.</p><p>The <a href="https://techbits.io/create-iscsi-targets-asustor-nas/" rel="noreferrer">previous post</a> covered the creation of the <strong>iSCSI Target</strong> and</p>]]></description><link>https://techbits.io/proxmox-iscsi-lun-shared-lvm-high-availability-cluster-storage/</link><guid isPermaLink="false">66107267d9d7e97ab394bc9f</guid><category><![CDATA[Proxmox]]></category><category><![CDATA[iSCSI]]></category><category><![CDATA[Virtualisation]]></category><category><![CDATA[Asustor]]></category><category><![CDATA[NAS]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Fri, 05 Apr 2024 22:54:22 GMT</pubDate><media:content url="https://techbits.io/content/images/2024/04/computer-accessing-storage.gif" medium="image"/><content:encoded><![CDATA[<img src="https://techbits.io/content/images/2024/04/computer-accessing-storage.gif" alt="Proxmox: iSCSI LUN as Shared Storage"><p>While checking out an ASUSTOR NAS (the Lockerstor 6 Gen2), I tested various configurations of storage and storage types. As part of that, I set up iSCSI targets for a Proxmox cluster, to enable the use of High Availability.</p><p>The <a href="https://techbits.io/create-iscsi-targets-asustor-nas/" rel="noreferrer">previous post</a> covered the creation of the <strong>iSCSI Target</strong> and <strong>LUN</strong> on an ASUSTOR NAS, but the concepts are generally transferrable no matter your NAS platform, so pop over there to set your LUNs up before coming back.</p><p>This article will show the process of mounting iSCSI storage and creating a LVM (Logical Volume Manager) which is sharable across nodes on Proxmox VE 7.3 through Proxmox VE 8.1, however, the underlying components are stable and these instructions are likely to work on older/newer versions, too.</p><h2 id="open-a-shell">Open a Shell</h2><p>Either SSH to your Proxmox node, or log in to the web interface, choose the node, and select <code>Shell</code>.</p><p>We&apos;re going to edit the file <code>/etc/iscsi/iscsid.conf</code>, so using your favourite text editor, open the file.</p><pre><code class="language-shell">nano /etc/iscsi/iscsid.conf</code></pre><p>n-comment the following lines (or just paste them again, at the end of the file) and edit to add the username and password you set when creating the iSCSI target.</p><pre><code>node.session.auth.authmethod = CHAP
node.session.auth.username =&#xA0;testtesttest
node.session.auth.password =&#xA0;your_password</code></pre><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F914;</div><div class="kg-callout-text">If you&apos;re using more than one Proxmox node (i.e. setting up iSCSI for High Availability storage), make sure you apply the CHAP authentication changes to the other required nodes, too.</div></div><p>Save the file, and head to the Proxmox web interface.</p><h2 id="add-iscsi">Add iSCSI</h2><p>From the web interface, choose <code>Datacenter</code> -&gt; <code>Storage</code> -&gt; <code>Add</code> -&gt; <code>iSCSI</code>.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/04/proxmox_iscsi_shared_1.webp" class="kg-image" alt="Proxmox: iSCSI LUN as Shared Storage" loading="lazy" width="612" height="329" srcset="https://techbits.io/content/images/size/w600/2024/04/proxmox_iscsi_shared_1.webp 600w, https://techbits.io/content/images/2024/04/proxmox_iscsi_shared_1.webp 612w"></figure><p>You&apos;ll be prompted to add an <strong>ID </strong>(so you can identify the created <strong>iSCSI</strong> object). The <strong>Portal</strong> is the IP of the NAS/storage location, and the <strong>Target</strong> is, unsurprisingly, the <strong>iSCSI Target</strong> on that device.</p><p>You can confirm your CHAP settings are correct if you click the dropdown arrow and the IQN populates in the list.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/04/proxmox_iscsi_shared_2.webp" class="kg-image" alt="Proxmox: iSCSI LUN as Shared Storage" loading="lazy" width="596" height="230"></figure><p>If you want the target to be available to all nodes in the Datacenter, leave <strong>Nodes </strong>as &apos;All&apos;, otherwise choose the nodes you want from the drop-down. Leave Enable...enabled.</p><p>Use LUNs directly is checked by default, but you&apos;ll most likely want to uncheck this. When enabled, a created VM will use the entire LUN as its storage drive, where we want to create an LVM on the large LUN.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">If you only want one VM to run on this LUN, leave &apos;Use LUNs directly&apos; enabled and skip creating the LVM in the next step!</div></div><p>Click Add to confirm, and your iSCSI device will now be available.</p><h2 id="add-lvm">Add LVM</h2><p>From the same <code>Datacenter</code> -&gt; <code>Storage</code> page, again click <code>Add</code>, and this time choose <code>LVM</code>.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/04/proxmox_iscsi_shared_3.webp" class="kg-image" alt="Proxmox: iSCSI LUN as Shared Storage" loading="lazy" width="612" height="190" srcset="https://techbits.io/content/images/size/w600/2024/04/proxmox_iscsi_shared_3.webp 600w, https://techbits.io/content/images/2024/04/proxmox_iscsi_shared_3.webp 612w"></figure><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F914;</div><div class="kg-callout-text">You could choose LVM-Thin if you want to be able to create snapshots, but this will prevent using the LVM for high available/VM failovers. If you only have one node, LVM-Thin could be a good option, however.</div></div><p>Enter an <strong>ID</strong>, and then for <strong>Base storage</strong>, click the dropdown and choose the <strong>iSCSI Target</strong> we just configured. Now under <strong>Base volume</strong>, you&apos;ll see the list of LUNs available to us. In this case, there&apos;s only one... select it.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/04/proxmox_iscsi_shared_4.webp" class="kg-image" alt="Proxmox: iSCSI LUN as Shared Storage" loading="lazy" width="692" height="270" srcset="https://techbits.io/content/images/size/w600/2024/04/proxmox_iscsi_shared_4.webp 600w, https://techbits.io/content/images/2024/04/proxmox_iscsi_shared_4.webp 692w"></figure><p>Next, name the <strong>Volume group</strong>. As we&apos;re creating one logical volume on the LUN, I&apos;ve just given this the same name as the ID but appended with <em>-VG</em>.</p><p>For content, you can specify whether you want to allow only containers or VMs, but leave as default if you want both. Like with the previous &apos;Add iSCSI&apos; pane, we select what nodes should have access to this LVM. Select what you previously chose, but leaving as All is most likely what you want. Leave Enable checked, and then check Shared if you want to allow the LVM to be treated as shared storage (i.e. used for High Availability failover).</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/04/proxmox_iscsi_shared_5.webp" class="kg-image" alt="Proxmox: iSCSI LUN as Shared Storage" loading="lazy" width="598" height="273"></figure><p>Once you&apos;re happy, click <code>Add</code>. Now under storage, you should see the new LVM, and if you go through to create a VM, when you get to Disks, you should see the new LVM show up!</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/04/proxmox_iscsi_shared_6.webp" class="kg-image" alt="Proxmox: iSCSI LUN as Shared Storage" loading="lazy" width="700" height="341" srcset="https://techbits.io/content/images/size/w600/2024/04/proxmox_iscsi_shared_6.webp 600w, https://techbits.io/content/images/2024/04/proxmox_iscsi_shared_6.webp 700w"></figure><h2 id="potential-issues">Potential Issues</h2><p>If you&apos;re adding your LUN to a cluster, you&apos;ll most likely need to reboot all but the primary node, otherwise you might see a question mark icon over the iSCSI and LVM options in the Server View, and find that these nodes are unable to connect to the target at all.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/04/proxmox_iscsi_shared_7.webp" class="kg-image" alt="Proxmox: iSCSI LUN as Shared Storage" loading="lazy" width="289" height="140"></figure><h2 id="summary">Summary</h2><p>That&apos;s it! You&apos;ve created an iSCSI target and LUN on your Asustor NAS, and you&apos;ve configured one or more Proxmox nodes to use it as storage (or maybe shared storage) for VMs and containers!</p><p>Although this post is specific to Proxmox VE and written from the point of view of using an Asustor NAS, but Synology/QNAP systems are equally viable, or any other storage system that supports iSCSI.</p><p>If there&apos;s anything I&apos;ve missed, please leave a comment or let me know at <a href="https://fosstodon.org/@techbits">@techbits@fosstodon.org</a>.</p>]]></content:encoded></item><item><title><![CDATA[Create iSCSI Targets on an ASUSTOR NAS]]></title><description><![CDATA[<p>While checking out an ASUSTOR NAS (the Lockerstor 6 Gen2), I tested various configurations of storage and storage types. As part of that, I set up iSCSI targets for a Proxmox cluster, to enable the use of High Availability.</p><p>This article details how to create iSCSI targets (with CHAP authentication)</p>]]></description><link>https://techbits.io/create-iscsi-targets-asustor-nas/</link><guid isPermaLink="false">6610573cd9d7e97ab394bbdd</guid><category><![CDATA[Asustor]]></category><category><![CDATA[NAS]]></category><category><![CDATA[iSCSI]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Fri, 05 Apr 2024 22:54:12 GMT</pubDate><media:content url="https://techbits.io/content/images/2024/04/pixelhdds.gif" medium="image"/><content:encoded><![CDATA[<img src="https://techbits.io/content/images/2024/04/pixelhdds.gif" alt="Create iSCSI Targets on an ASUSTOR NAS"><p>While checking out an ASUSTOR NAS (the Lockerstor 6 Gen2), I tested various configurations of storage and storage types. As part of that, I set up iSCSI targets for a Proxmox cluster, to enable the use of High Availability.</p><p>This article details how to create iSCSI targets (with CHAP authentication) and LUNs on an ASUSTOR NAS that is running ADM (this process was tested on version 4.2.7.RRD1).</p><p>If you&apos;re already happy with how to create the iSCSI Target and LUN, you can head straight to the next post: <a href="https://techbits.io/proxmox-iscsi-lun-shared-lvm-high-availability-cluster-storage/" rel="noreferrer"><em>Proxmox: iSCSI LUN as Shared Storage</em></a></p><h2 id="storage-manager">Storage Manager</h2><p>After logging into ADM, go to <code>Storage Manager</code> then <code>iSCSI</code>.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/04/adm_iscsi_1.webp" class="kg-image" alt="Create iSCSI Targets on an ASUSTOR NAS" loading="lazy" width="837" height="405" srcset="https://techbits.io/content/images/size/w600/2024/04/adm_iscsi_1.webp 600w, https://techbits.io/content/images/2024/04/adm_iscsi_1.webp 837w" sizes="(min-width: 720px) 720px"></figure><h2 id="create-iscsi-target">Create iSCSI Target</h2><p>Click <code>Create</code> -&gt; leave An <code>iSCSI target with one LUN</code> selected -&gt; Click <code>Next.</code></p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/04/adm_iscsi_2.webp" class="kg-image" alt="Create iSCSI Targets on an ASUSTOR NAS" loading="lazy" width="330" height="207"></figure><p>Enter a <strong>Target </strong>name (useful for identifying the target in future if you have more than one). This becomes part of the unique IQN (iSCSI&#xA0;Qualified Name).</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/04/adm_iscsi_3.webp" class="kg-image" alt="Create iSCSI Targets on an ASUSTOR NAS" loading="lazy" width="588" height="262"></figure><p>There are also options for integrity checking (CRC / Checksum). Enabling this is likely to drop your network throughput rate to/from a client but with the benefit of reducing the chance of transmission errors. There is some interesting reading on this subject, but I&apos;m going to take the easy way out and say it&apos;s outside the scope of this article, but I invite you to read <a href="https://blog.ipspace.net/2015/11/ethernet-checksums-are-not-good-enough.html" rel="noreferrer">this</a> ipspace post!</p><h2 id="authentication">Authentication</h2><p>Next up: Authentication. You should obviously use this. For this example, we&apos;re going to use <strong>CHAP</strong> (Challenge-Handshake Authentication Protocol). To authenticate, we enter the credentials on the initiator (client) configurations when connecting to the LUN(s). Mutual CHAP is where both sides enter credentials for the opposite side.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/04/adm_iscsi_4a.webp" class="kg-image" alt="Create iSCSI Targets on an ASUSTOR NAS" loading="lazy" width="518" height="478"></figure><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x26A0;&#xFE0F;</div><div class="kg-callout-text">Create something unique for this, as you&apos;ll need to enter it in a config file on the hypervisor side, and while no one else should be accessing your system, the default file permissions are 644 (rw,r,r) so other system users could read these credentials.</div></div><h2 id="create-iscsi-lun">Create iSCSI LUN</h2><p>On the next page, we&apos;ll create a new LUN and choose a name for it. This will show up on the hypervisor, so giving it a descriptive name is probably a good idea.</p><p>If you have multiple storage volumes, select where the LUN should be created.</p><p><strong>This provisioning</strong> with let you create the full size of your volume without having to allocate the disk space until it is required by the guest operating system. It&apos;s usually a good idea to say <code>Yes</code> to this, unless you want to be very sure of the available space for each guest, or you&apos;re particularly worried about disk fragmentation (warning: big internet arguments on the pros and cons of this, performance benefits etc. I&apos;m not getting involved. Have a <a href="https://www.arcserve.com/blog/virtualization-top-3-limitations-thin-provisioning" rel="noreferrer">link</a>.)</p><p><strong>Snapshot support</strong> is worth enabling, as you might decide to use it, but don&apos;t have to.<br>Finally, LUN size - if you&apos;re using thin provisioning, you can set a realistic/generous capacity. Then click <code>Next</code>.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/04/adm_iscsi_5.webp" class="kg-image" alt="Create iSCSI Targets on an ASUSTOR NAS" loading="lazy" width="557" height="406"></figure><p>You&apos;ll be prompted with a final confirmation screen&#x2013;check you&apos;re happy with everything and choose <code>Finish</code>.</p><h2 id="summary">Summary</h2><p>The steps above detail how to create an iSCSI Target (using CHAP authentication) and LUN on an ASUSTOR NAS running ADM. While it&apos;s geared towards the ASUSTOR NAS operating system, the theory is transferrable to most other NAS manufacturers (such as Synology and QNAP) and storage systems.</p><p>Next up, we&apos;ll connect to this LUN from our initiator (or initiator<em>s</em>) if we&apos;re creating a highly-available cluster: <a href="https://techbits.io/proxmox-iscsi-lun-shared-lvm-high-availability-cluster-storage/" rel="noreferrer"><em>Proxmox: iSCSI LUN as Shared Storage</em></a></p><p>This is a fairly low-level entry to iSCSI, but if you think there&apos;s anything I&apos;ve overlooked, please leave a comment or let me know at <a href="https://fosstodon.org/@techbits">@techbits@fosstodon.org</a>.</p>]]></content:encoded></item><item><title><![CDATA[How to run iperf3 on an Asustor NAS]]></title><description><![CDATA[<p>Whether you&apos;re writing a review of a NAS, are trying to troubleshoot your NAS read/write speeds, or are just plain showing off, it seems that benchmarking the transfer speed of a NAS is a common enough request that multiple vendors provide methods to achieve this.</p><p>While it&</p>]]></description><link>https://techbits.io/run-iperf3-asustor-nas/</link><guid isPermaLink="false">65feff3ed9d7e97ab394bb20</guid><category><![CDATA[NAS]]></category><category><![CDATA[Asustor]]></category><category><![CDATA[Networking]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Sat, 23 Mar 2024 23:01:29 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1521106047354-5a5b85e819ee?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxuZXR3b3JrJTIwY2FibGVzfGVufDB8fHx8MTcxMTIzNDc3OHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1521106047354-5a5b85e819ee?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxuZXR3b3JrJTIwY2FibGVzfGVufDB8fHx8MTcxMTIzNDc3OHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="How to run iperf3 on an Asustor NAS"><p>Whether you&apos;re writing a review of a NAS, are trying to troubleshoot your NAS read/write speeds, or are just plain showing off, it seems that benchmarking the transfer speed of a NAS is a common enough request that multiple vendors provide methods to achieve this.</p><p>While it&apos;s not strictly (by default) a tool to measure NAS network and read/write speed, iperf3 is a very handy command line tool that can give you a good indication of your system performance, especially if you&apos;re trying to compare configurations and improve your setup.</p><h2 id="install-iperf3">Install iperf3</h2><p>Getting started on an Asustor NAS is fairly simple. Firstly, head into <code>App Central</code> and search for <code>iperf3</code>, then hit <code>Install</code>. That&apos;s it. But...where is it? How do you use it?</p><p>Because it&apos;s a command line tool, you&apos;ll need to SSH into the unit to start the <code>iperf3</code> in server mode.</p><h2 id="enable-ssh">Enable SSH</h2><p>If you&apos;ve not previously enabled SSH on your NAS, go into <code>Services</code> -&gt;<code>Terminal</code>. Select the box to enable SSH, and if you don&apos;t need SFTP, uncheck that box. Then click <code>Apply</code>.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F512;</div><div class="kg-callout-text">If you don&apos;t have a reason to leave SSH permanently enabled, it&apos;s a good idea to leave it disabled and only enable it as and when you need it. The same goes for a lot of control protocols (i.e. telnet, SNMP).</div></div><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/03/asustor_adm_enable_ssh.gif" class="kg-image" alt="How to run iperf3 on an Asustor NAS" loading="lazy" width="1242" height="742" srcset="https://techbits.io/content/images/size/w600/2024/03/asustor_adm_enable_ssh.gif 600w, https://techbits.io/content/images/size/w1000/2024/03/asustor_adm_enable_ssh.gif 1000w, https://techbits.io/content/images/2024/03/asustor_adm_enable_ssh.gif 1242w" sizes="(min-width: 720px) 720px"></figure><h2 id="connect-via-ssh">Connect via SSH</h2><p>Now that it&apos;s enabled, you can connect to the NAS with your SSH client of choice using an administrator or equally permissioned account on your NAS.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">Recent macOS and Windows operating systems have SSH clients built into their respective terminal/command prompt.<br><br>Just run ssh youradmin@NAS_IP and hit enter.<br><br>If you&apos;re prompted with the following, type yes and hit enter:<br><br>Are you sure you want to continue connecting (yes/no/[fingerprint])?</div></div><h2 id="run-iperf3-server">Run iperf3 Server</h2><p>Now that you&apos;re connected to the NAS, run the following:</p><pre><code>iperf3 -s -p 5201 -4</code></pre><p><code>-s</code> tells it to run in server mode. <code>-p</code> allows us to specify the port (it can be anything, but 5201 is common for iperf3). <code>-4</code> specifies that we&apos;re using IPv4, not IPv6.</p><p>The server process will keep running until you tell it to stop with <code>ctrl + C</code>.</p><h2 id="run-iperf3-client">Run iperf3 Client</h2><p>On another host on your network , i.e. where you&apos;re simulating the NAS traffic from, you&apos;ll also need to download iperf3.</p><p>You can download it for lots of different operating systems from [here](<a href="https://iperf.fr/iperf-download.php">https://iperf.fr/iperf-download.php</a>). In this example, I&apos;m using Windows 11. After downloading and unzipping the Windows version, open a command prompt as Administrator (right-click the icon -&gt; Run as Administrator). Either change directory to where the extracted program is (<code>cd c:\Users\you\Downloads\whatever</code>), or add the program to your user PATH.</p><p>Now run:</p><pre><code>iperf3 -c NAS_IP -p 5201</code></pre><p>When you hit enter, you should see your SSH terminal to the service, and your client both start running.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/03/iperf3_server_results.webp" class="kg-image" alt="How to run iperf3 on an Asustor NAS" loading="lazy" width="500" height="294"></figure><h2 id="other-client-options">Other client options</h2><h3 id="t">-t</h3><p>If you want the test to run for longer, you can use <code>-t</code> to specify how many seconds the transfer should run for, where running a longer transfer might be useful if you&apos;re dealing with buffers/caches that might mask your true throughput.</p><p>e.g. <code>iperf3 -c NAS_IP -p 5201 -t 30</code></p><h3 id="f">-F</h3><p>If you want to specify a file to transfer rather than the stream of made-up data that iperf3 will use by default, use <code>-F c:\path\to\your\file</code>. Bear in mind that you&apos;ll want to use a large file to get a better idea of throughput. </p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x26A0;&#xFE0F;</div><div class="kg-callout-text">If you use this option, you&apos;ll find that the first time you copy a file, you&apos;ll get an accurate idea of the time taken/throughput. If you run the same file a second time, you&apos;ll notice it transfers almost instantly. This seems to be down to how the server-side system caches the recevied file.</div></div><h3 id="r">-R</h3><p>This runs the test in reverse mode! The server will send data, and the client receives it. A nice option that means you don&apos;t have to change the command on both ends.</p><h2 id="other-server-options">Other server options</h2><h3 id="f-1">-F</h3><p>Just as the client has a <code>-F</code> option, so does the server. <code>-F</code> here will write the received file or datastream to the location your specify. This is where using iperf3 to check the write speed of a NAS comes into play, because you&apos;re actually forcing the machine to combine the network and disk write elements in the same process.</p><p>Depending on what volumes you have on your system, you&apos;ll want to specify the path according to the kind of test you&apos;re running (in my example, I have SSDs for volume&apos;s 1 and 2, but hard drives for volume 3).</p><pre><code>iperf3 -s -p 5201 -4 -F /volume2/testfile</code></pre><h2 id="end-to-end-test">End-to-end test</h2><p>With the <code>-F</code> option for both client and server, we can technically test the disk read from the client, the network transfer, and the NAS&apos;s write, giving us an end-to-end test of the transfer. The downside to this comes back to the file caching, so for multiple tests, you might want to duplicate a large file.</p><h2 id="run-multiple-tests-at-once">Run multiple tests at once</h2><p>iperf3 will run multiple times, although you&apos;ll need to connect a second/third/as many as you want SSH session to the NAS and run the server commands so they don&apos;t conflict with each other.</p><p>For example, <strong>note the different port numbers and filenames</strong>:</p><pre><code>### SSH connection 1:
iperf3 -s -p 5201 -4 -F /volume2/testfile1

### SSH connection 1:
iperf3 -s -p 5202 -4 -F /volume2/testfile2

### SSH connection 1:
iperf3 -s -p 5203 -4 -F /volume2/testfile3

### Make sure each client connects to a different port!</code></pre><p>Why would you want this? Well, some Asustor units have multiple multi-gigabit ethernet connections, and as they can run in an &apos;aggregated&apos; mode, that&apos;s a lot of bandwidth that you might not be able to maximise from one PC, so using more clients let&apos;s you work out the maximum throughput your NAS can handle (even if the process will require you manually starting the session on multiple machines as quickly as possible).</p><h2 id="conclusion">Conclusion</h2><p>I&apos;m pretty new to using iperf3, but it&apos;s been very useful for generating baselines of various networking and NAS configurations. If there&apos;s anything I&apos;ve missed, please let me know in the comments, or <a href="https://fosstodon.org/@techbits" rel="noreferrer">@techbits@fosstodon.org</a>.</p>]]></content:encoded></item><item><title><![CDATA[Basic systemctl commands]]></title><description><![CDATA[<p>Systemctl is a command line utility that is used to manage <code>systemd</code> services on Linux systems, and if you don&apos;t regularly manage Linux systems, you might find yourself guessing at the syntax before having to look it up.</p><p>So if you arrived here because that&apos;s you,</p>]]></description><link>https://techbits.io/basic-systemctl-commands/</link><guid isPermaLink="false">65fdf621d9d7e97ab394bacb</guid><category><![CDATA[Linux]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Fri, 22 Mar 2024 22:31:02 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1640552435388-a54879e72b28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fGxpbnV4fGVufDB8fHx8MTcxMTA5NTM2N3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1640552435388-a54879e72b28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fGxpbnV4fGVufDB8fHx8MTcxMTA5NTM2N3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Basic systemctl commands"><p>Systemctl is a command line utility that is used to manage <code>systemd</code> services on Linux systems, and if you don&apos;t regularly manage Linux systems, you might find yourself guessing at the syntax before having to look it up.</p><p>So if you arrived here because that&apos;s you, here are the basics:</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">Most examples will show servicename.service but the .service part is optional (systemctl will just search through.</div></div><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x2757;</div><div class="kg-callout-text">All of the commands below assume that the current user has permissions to run them. In practice, you might need to prefix them with sudo.</div></div><h2 id="check-the-status-of-a-service">Check the status of a service</h2><pre><code class="language-shell">systemctl status servicename</code></pre><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/03/systemctlstatus.webp" class="kg-image" alt="Basic systemctl commands" loading="lazy" width="912" height="540" srcset="https://techbits.io/content/images/size/w600/2024/03/systemctlstatus.webp 600w, https://techbits.io/content/images/2024/03/systemctlstatus.webp 912w" sizes="(min-width: 720px) 720px"></figure><p>The output will show the path of the loaded service, whether the service is active (running), where to see the documentation for the service (in the above example the command <code>man cron</code> would load the manual for cron). It will also show the most recent log entries for the service.</p><h2 id="start-a-service">Start a service</h2><pre><code class="language-shell">systemctl start servicename</code></pre><h2 id="stop-a-service">Stop a service</h2><pre><code class="language-shell">systemctl stop servicename</code></pre><h2 id="check-for-failed-services">Check for failed services</h2><p>This will list all services that are in a failed state (i.e. they&apos;ve crashed or errored and stopped). The simple command here is:</p><pre><code class="language-shell">systemctl --failed</code></pre><p>But this is equivalent to:</p><pre><code class="language-shell">systemctl list-units --state=failed</code></pre><h2 id="enable-a-service">Enable a service</h2><p>Enabling a service means it will start automatically when the system next starts</p><pre><code class="language-shell">systemctl enable servicename</code></pre><p>Where as:</p><pre><code class="language-shell">systemctl enable --now servicename</code></pre><p>The above will enable the service for automatic start on next reboot but it will also immediately start the service too.</p><h2 id="disabling-a-service">Disabling a service</h2><p>This is the opposite of above&#x2013;disabling a service will prevent it starting after the next reboot, <code>disable --now</code> will do the same but also immediately stop the service.</p><pre><code class="language-shell">systemctl disable servicename
systemctl disable --now servicename</code></pre><h3 id="what-else">What else?</h3><p>These are some basic commands, but if there&apos;s anything you regularly forget, please leave a comment so I can add it here!</p>]]></content:encoded></item><item><title><![CDATA[Open Core Legacy Patcher: Upgrading to Sonoma]]></title><description><![CDATA[This post details the process of upgrading a Mac running MacOS 13 Ventura with Open Core Legacy Patcher to MacOS 14 Sonoma.]]></description><link>https://techbits.io/open-core-legacy-patcher-upgrading-to-sonoma/</link><guid isPermaLink="false">65f6430fd9d7e97ab394b9c3</guid><category><![CDATA[MacOS]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Sun, 17 Mar 2024 21:09:45 GMT</pubDate><media:content url="https://techbits.io/content/images/2024/03/bunchofmacs.webp" medium="image"/><content:encoded><![CDATA[<img src="https://techbits.io/content/images/2024/03/bunchofmacs.webp" alt="Open Core Legacy Patcher: Upgrading to Sonoma"><p>When Apple classes a Mac as too old to receive macOS patches, it&apos;s usually a signal to the owner that a shiny new device is in order (if, of course, the owner kept it that long and didn&apos;t upgrade sooner).</p><p>A lot of the time, however, while the hardware of said device may no longer be performant, it may still be completely capable of running the latest macOS version, <em>if only there was some way of forcing it to install</em>. Oh wait, there is: Open Core Legacy Patcher.</p><h2 id="download-oclp">Download OCLP</h2><p>Installing a too-new version of macOS on your <em>ancient</em> device isn&apos;t the point of this article&#x2013;the documentation from OCLP is pretty good, see here:</p><p>No, given that the process for installing includes installing custom EFI bootloaders, performing a major version upgrade was surprisingly less well documented. So, if you&apos;re using one version of macOS thanks to OCLP, and want to upgrade to another (specifically, Sonoma), <a href="https://dortania.github.io/OpenCore-Legacy-Patcher/START.html" rel="noreferrer">here&apos;s</a> a good place to start.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4BD;</div><div class="kg-callout-text">This process requires a 32GB USB stick for the bootable installer. If you don&apos;t have one of these, some people report success by choosing Build and Install OpenCore to the internal disk, then following the built-in macOS (via the App Store). While this might work, it&apos;s pretty useful to have the bootable installer in case something goes wrong and you need to reinstall from scratch, especially if this is your only Mac.</div></div><p>Download the latest version of OCLP (this is important as the newer macOS versions may have specific fixes or support for newly deprecated hardware).</p><h2 id="download-the-macos-installer">Download the macOS Installer</h2><p>Choose <code>Create macOS Installer</code> then <code>Download macOS Installer</code> if you haven&apos;t got the latest version downloaded already.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/03/oclp_1.webp" class="kg-image" alt="Open Core Legacy Patcher: Upgrading to Sonoma" loading="lazy" width="592" height="324"></figure><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/03/oclp_2.webp" class="kg-image" alt="Open Core Legacy Patcher: Upgrading to Sonoma" loading="lazy" width="322" height="151"></figure><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/03/oclp_3-1.webp" class="kg-image" alt="Open Core Legacy Patcher: Upgrading to Sonoma" loading="lazy" width="392" height="241"></figure><h2 id="create-a-bootable-usb-drive">Create a bootable USB drive</h2><p>Once downloaded, you&apos;ll be prompted to select a USB device to turn into a bootable installer.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x26A0;&#xFE0F;</div><div class="kg-callout-text">For Sonoma, a 16GB USB stick will be too small, so you&apos;ll need one with 32GB capacity.</div></div><p> You&apos;ll be prompted for your password, and once you&apos;ve confirmed you want to override/reformat your USB stick, OCLP will start building your USB.</p><p>It says it can take over 30 minutes, and it&apos;s <em>really </em>not lying. Go and make some tea or something while you wait. Maybe walk the dog.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/03/oclp_4.webp" class="kg-image" alt="Open Core Legacy Patcher: Upgrading to Sonoma" loading="lazy" width="441" height="149"></figure><h2 id="install-opencore-to-usb">Install OpenCore to USB</h2><p>Once the process is complete and verified, OCLP will ask if you want to install OpenCore on the stick. This is what allows what would otherwise not be able to run on your hardware to start up anyway, <strong>so choose <code>Yes</code></strong>. It will build and ask for confirmation to <code>Install to disk</code>.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F914;</div><div class="kg-callout-text">Another option might&apos;ve been to Build and install OpenCore to the macOS internal drive first, therefore giving the main bootable partition the more recent drivers &amp; EFI boot partition. Perhaps it wouldn&apos;t also be required on the USB stick then, but hey, this also worked.</div></div><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/03/oclp_5.webp" class="kg-image" alt="Open Core Legacy Patcher: Upgrading to Sonoma" loading="lazy" width="482" height="427"></figure><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/03/oclp_6.webp" class="kg-image" alt="Open Core Legacy Patcher: Upgrading to Sonoma" loading="lazy" width="281" height="239"></figure><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/03/oclp_7.webp" class="kg-image" alt="Open Core Legacy Patcher: Upgrading to Sonoma" loading="lazy" width="399" height="349"></figure><h2 id="boot-from-the-usb-installer">Boot from the USB installer</h2><p>Now you can reboot your Mac, holding option/alt when it boots. You need to choose the USB stick&apos;s EFI option here, and then on the next screen, choose the install macOS option.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">To distinguish from the built-in EFI partition (because/if you have an OCLP installation already) and the one on the USB, remember that macOS always shows external drives as yellow, even on the boot up screens.</div></div><h2 id="begin-the-installation">Begin the installation</h2><p>Once in the macOS recovery/install view, choose the &apos;install macOS&apos; option to begin the upgrade. Choose to install it over the existing drive and it&apos;ll automatically know it needs to upgrade the installation, so don&apos;t go into Disk Utility or fiddle with the disk/partitions at all.</p><p>Once the installation begins, it will reboot a couple of times, and when it does, you&apos;ll need to make sure to hold option/alt on start-up so you can choose the external USB EFI partition again. Once in the EFI parition, choosing the <code>macOS</code> option instead of <code>install macOS</code> should be fine, as it&apos;ll know to continue the install.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x2049;&#xFE0F;</div><div class="kg-callout-text">If you&apos;ve ended up in the wrong partition midway through the installation, you&apos;ll probably get an error or question-mark on screen. Just power the Mac back down, and reboot into the external EFI partition again.</div></div><h2 id="install-opencore-to-disk">Install OpenCore to disk</h2><p>Once finished and booted back into macOS, you may (should?) get a prompt from OCLP to say that you&apos;re still booted from the USB EFI parition, and ask if you want to install to the internal disk. Choose <code>OK</code>, then <code>Install to disk.</code></p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/03/oclp_8.webp" class="kg-image" alt="Open Core Legacy Patcher: Upgrading to Sonoma" loading="lazy" width="404" height="258"></figure><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/03/oclp_9.webp" class="kg-image" alt="Open Core Legacy Patcher: Upgrading to Sonoma" loading="lazy" width="389" height="481"></figure><p>Once done, shut your Mac down, remove the USB stick then boot it back up. It should automatically make it back to the Desktop without requiring any manual intervention.</p><h2 id="post-install-root-patch">Post-Install Root Patch</h2><p>I didn&apos;t need to run this, I assume OCLP handled this as part of the OpenCore step previously.</p><p>To confirm, choose the <code>Post-Install Root Patch</code> option and it will check to see if anything is required, so install these if required.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2024/03/oclp_10.webp" class="kg-image" alt="Open Core Legacy Patcher: Upgrading to Sonoma" loading="lazy" width="368" height="242"></figure>]]></content:encoded></item><item><title><![CDATA[Sending Proxmox VE 8 Syslogs to a Log Aggregator]]></title><description><![CDATA[<p>A Log Aggregator or Log Management system allows you to delve into system and software logs for many machines, or create alerts for particular issues for all hosts in one place, rather than individually on each system.</p><p>This makes identifying issues/faults easier and faster, and allows you to create</p>]]></description><link>https://techbits.io/send-proxmox-logs-remote-syslog-server/</link><guid isPermaLink="false">65bbb592d9d7e97ab394b94c</guid><category><![CDATA[Proxmox]]></category><category><![CDATA[Debian]]></category><category><![CDATA[Linux]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Sun, 28 Jan 2024 15:53:00 GMT</pubDate><media:content url="https://techbits.io/content/images/2024/02/log-ship-pun.png" medium="image"/><content:encoded><![CDATA[<img src="https://techbits.io/content/images/2024/02/log-ship-pun.png" alt="Sending Proxmox VE 8 Syslogs to a Log Aggregator"><p>A Log Aggregator or Log Management system allows you to delve into system and software logs for many machines, or create alerts for particular issues for all hosts in one place, rather than individually on each system.</p><p>This makes identifying issues/faults easier and faster, and allows you to create alerts and pre-empt future problems.</p><p>Aside from the sysadmin&apos;s &apos;software broken, must fix&apos; point of view, this has security benefits as you can use this data to establish system baselines and identify anomalies more easily as a result.</p><p>The last benefit, specifically in the context of Proxmox and virtualisation: If you&apos;re writing logs pretty constantly, that&apos;s disk I/O that could be used better by your VMs or containers. Or perhaps you want to network boot your VM compute nodes, write logs to one location, and use network storage for VM/containers.</p><p>This post will cover configuring Proxmox VE 8 (and actually, VE 7 or pretty much any Debian-based system) to send syslogs to a remote syslog server.</p><h2 id="prerequisites">Prerequisites</h2><p>Before proceeding, ensure you have:</p><ul><li>A running Proxmox VE 8 server (or other applicable Debian system).</li><li>Access to the Proxmox VE web interface or SSH.</li><li>A remote syslog server (e.g., Syslog-NG, graylog) that is configured to receive logs over the network.</li></ul><h2 id="configuration-steps">Configuration Steps</h2><h3 id="1-accessing-proxmox-ve">1. Accessing Proxmox VE</h3><p>Log in to your Proxmox VE server via SSH or through the web console. If you&apos;re using SSH, the command might look like this:</p><pre><code class="language-bash">ssh root@your_proxmox_server_ip
</code></pre><h3 id="2-configuring-rsyslog-on-proxmox-ve">2. Configuring Rsyslog on Proxmox VE</h3><p>Proxmox VE uses <code>rsyslog</code> for managing system logs. You will need to configure <code>rsyslog</code> to forward logs to your remote syslog server.</p><h4 id="edit-the-rsyslog-configuration">Edit the Rsyslog Configuration</h4><p>Open the <code>rsyslog</code> configuration file in your preferred text editor, such as nano or vim:</p><pre><code class="language-bash">nano /etc/rsyslog.conf</code></pre><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">If for some reason this file doesn&apos;t exist, and your Debian system doesn&apos;t have rsyslog already installed, run: sudo apt-get install rsyslog</div></div><h4 id="add-the-remote-syslog-server">Add the Remote Syslog Server</h4><p>At the end of the file, add the following line to forward all logs to your remote syslog server:</p><pre><code class="language-bash">*.* @your_syslog_server_ip:514</code></pre><p>The <code>*.*</code> specifies that logs of all &apos;facilities&apos; and levels should be forwarded. The <code>@</code> symbol followed by the IP address (or hostname) and port (<code>514</code> is the standard syslog port) tells <code>rsyslog</code> where to send the logs.</p><p>If your remote server is using TCP instead of the traditional UDP, use a double <code>@@</code>:</p><pre><code class="language-bash">*.* @@your_syslog_server_ip:514</code></pre><h4 id="save-and-exit">Save and Exit</h4><p>After adding the remote syslog server configuration, save the changes and exit the text editor.</p><h3 id="3-restarting-rsyslog">3. Restarting Rsyslog</h3><p>For the changes to take effect, restart the <code>rsyslog</code> service on the Proxmox VE server:</p><pre><code class="language-bash">systemctl restart rsyslog</code></pre><h3 id="4-verifying-the-configuration">4. Verifying the Configuration</h3><p>To ensure that the logs are being sent to the remote syslog server, check the logs on the remote server. The specific steps for this will depend on the syslog server you&apos;re using.</p><h2 id="conclusion">Conclusion</h2><p>Setting up Proxmox VE to send syslogs to a remote syslog host is a straightforward process that enhances your log management capabilities. By centralising your logs, you can more easily monitor all activities within your virtualised environment, leading to improved performance and security.</p><p><strong>Remember to regularly check your syslog server to ensure that it&apos;s correctly receiving and storing logs from your Proxmox VE server(s)! </strong>It&apos;s pretty useless if you&apos;re shipping logs elsewhere just to realise that your syslog server ran out of your space months ago...</p>]]></content:encoded></item><item><title><![CDATA[How to enable OMV-Extras on Open Media Vault]]></title><description><![CDATA[<p>While testing out OMV on a variety of hardware, I was looking to install the <code>openmediavault-flashmemory</code> plugin (to decrease the wear of the USB onto which I&apos;d installed OMV - the pSLC drive from SwissBit).</p><p>I&apos;ve played around with OMV previously, but I&apos;m not</p>]]></description><link>https://techbits.io/how-to-enable-extras-on-omv/</link><guid isPermaLink="false">65ac0287d9d7e97ab394b91a</guid><category><![CDATA[OMV]]></category><category><![CDATA[Debian]]></category><category><![CDATA[Linux]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Sat, 27 Jan 2024 14:26:00 GMT</pubDate><media:content url="https://techbits.io/content/images/2024/02/cartoony-nas.png" medium="image"/><content:encoded><![CDATA[<img src="https://techbits.io/content/images/2024/02/cartoony-nas.png" alt="How to enable OMV-Extras on Open Media Vault"><p>While testing out OMV on a variety of hardware, I was looking to install the <code>openmediavault-flashmemory</code> plugin (to decrease the wear of the USB onto which I&apos;d installed OMV - the pSLC drive from SwissBit).</p><p>I&apos;ve played around with OMV previously, but I&apos;m not comfortable enough with the system to remember much from before. So when I went to plugins, and searched for <code>openmediavault-flashmemory</code>, I found nothing. Eventually, I recalled having to enable something to be able to add community plugins to OMV.</p><p>From the command line (or via SSH), run the command:</p><pre><code>wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash</code></pre><p>Once finished, back in the web interface, a quick <code>Ctrl + Shift + R</code> will make omv-extras show up under the <code>Plugins</code> menu option, and now <code>Plugins</code> will include all of the extra plugins not previously available.</p><p>Everything is easy when you know how to do it, right?</p>]]></content:encoded></item><item><title><![CDATA[Redirect traffic with Cloudflare (Page Rules vs Redirect Rules)]]></title><description><![CDATA[<p>I wrote a few posts (and scripts) last year focused on Mastodon, how to install it, and various surrounding ideas, which were all based on what I&apos;d learnt while creating and running my own instance. A year or so later, and while running the instance was a fun</p>]]></description><link>https://techbits.io/redirect-all-traffic-with-cloudflare/</link><guid isPermaLink="false">6554e3c04d75484a428dc3ac</guid><category><![CDATA[Cloudflare]]></category><category><![CDATA[Mastodon]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Wed, 15 Nov 2023 21:13:44 GMT</pubDate><media:content url="https://techbits.io/content/images/2023/11/diversion.png" medium="image"/><content:encoded><![CDATA[<img src="https://techbits.io/content/images/2023/11/diversion.png" alt="Redirect traffic with Cloudflare (Page Rules vs Redirect Rules)"><p>I wrote a few posts (and scripts) last year focused on Mastodon, how to install it, and various surrounding ideas, which were all based on what I&apos;d learnt while creating and running my own instance. A year or so later, and while running the instance was a fun project, the cost and time required for very little benefit (a single user instance) led me to decide to shut the instance down.</p><p>I&apos;ve already migrated my account to fosstodon.org/@techbits using Mastodon&apos;s mechanism to notify/move your followers to a new account, and while I&apos;m sure there aren&apos;t many hits to the previous URL, it seems like bad practice to shutter a service and not at least redirect users.</p><p>As it&apos;s a single user instance, I want to redirect all traffic to the domain, and using Cloudflare&apos;s free redirect rules or page rules, this is very easy to do.</p><h2 id="enable-proxy">Enable Proxy</h2><p>The caveat to all of the following steps is that traffic needs to run through Cloudflare for the rules/redirects to take effect. Cloudflare <em>can</em> just be used for DNS entries (and there are times where you might want to just use this) so if the page rules/redirects aren&apos;t working, make sure you see orange &apos;proxied&apos; icon for the domain A record.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://techbits.io/content/images/2023/11/cf-proxy-enabled.png" class="kg-image" alt="Redirect traffic with Cloudflare (Page Rules vs Redirect Rules)" loading="lazy" width="1063" height="204" srcset="https://techbits.io/content/images/size/w600/2023/11/cf-proxy-enabled.png 600w, https://techbits.io/content/images/size/w1000/2023/11/cf-proxy-enabled.png 1000w, https://techbits.io/content/images/2023/11/cf-proxy-enabled.png 1063w"></figure><h2 id="redirect-rules">Redirect Rules</h2><p>Within the section for that domain in the Cloudflare console, choose Rules -&gt; Redirect Rules, then &apos;Create Rule&apos;. Name the rule and choose &apos;All incoming requests&apos;. Set the redirect to &apos;Static&apos;. Enter the URL to redirect to, set the status code to 301 and click &apos;Deploy&apos;.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/11/cf-redirect.png" class="kg-image" alt="Redirect traffic with Cloudflare (Page Rules vs Redirect Rules)" loading="lazy" width="1000" height="596" srcset="https://techbits.io/content/images/size/w600/2023/11/cf-redirect.png 600w, https://techbits.io/content/images/2023/11/cf-redirect.png 1000w" sizes="(min-width: 720px) 720px"></figure><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2139;&#xFE0F;</div><div class="kg-callout-text">The 301 status code indicates that this is a permanent redirect. If for some reason you were temporarily redirecting users then you should choose 302.</div></div><p>All traffic will now redirect to the new account. If I want to specify a different redirects depending on the destination (i.e., my account URL redirects to a different location than the root domain) then you can use Page Rules...</p><h2 id="page-rules">Page Rules</h2><p>Instead of Redirect Rules, a Page Rule can be used to either the same effect, or for more granular control. </p><p>For a simple redirect, under Rules, choose Page Rules -&gt; &apos;Create Page Rule&apos;.</p><p>For the URL, enter <code>yourdomain/*</code>, e.g. <code>example.com/*</code> and then in the settings box, choose &apos;Forwarding URL&apos;. Set the redirect status code to 301/302 as appropriate, and set the destination address to your new location, then click &apos;Save and Deploy Page Rule&apos;.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/11/pr1.png" class="kg-image" alt="Redirect traffic with Cloudflare (Page Rules vs Redirect Rules)" loading="lazy" width="1000" height="769" srcset="https://techbits.io/content/images/size/w600/2023/11/pr1.png 600w, https://techbits.io/content/images/2023/11/pr1.png 1000w" sizes="(min-width: 720px) 720px"></figure><h2 id="multiple-page-rules">Multiple Page Rules</h2><p>As Cloudflare gives you 3 page rules even on a free account, you could create multiple rules. Realistically, I only need to redirect visits to @techbits and direct post links to the new Mastodon account. Anything else I want to redirect elsewhere (I may even redirect to this post, because, why not?)</p><p>To do this, create two rules: One for <code>example.com/@youraccount*</code> to the new account, and then another for <code>example.com/*</code> to the alternate location. If you create them in a different order, make sure to change them so the more specific rule is triggered first, otherwise everything will get picked up by the broader rule.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://techbits.io/content/images/2023/11/pr2.png" class="kg-image" alt="Redirect traffic with Cloudflare (Page Rules vs Redirect Rules)" loading="lazy" width="1100" height="197" srcset="https://techbits.io/content/images/size/w600/2023/11/pr2.png 600w, https://techbits.io/content/images/size/w1000/2023/11/pr2.png 1000w, https://techbits.io/content/images/2023/11/pr2.png 1100w"></figure><h2 id="what-next">What next?</h2><p>With this rules in place, I can decommission the server without worrying about inbound traffic. The next step is to create a Ghost rule to rewrite all of the instances of the old url/account to new!</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4C5;</div><div class="kg-callout-text">For a bit more infomation of Cloudflare Page Rules specifically, see this <a href="https://techbits.io/create-redirects-cloudflare-page-rules-free/">previous post</a>.</div></div><p>If there&apos;s anything I&apos;ve missed/messed up, please let me know in the comments, or send me a message at @techbits@su....oh yeah... <a href="https://fosstodon.org/@techbits">@techbits@fosstodon.org</a> or <a href="https://twitter.com/techbitsio">@techbitsio</a>.</p>]]></content:encoded></item><item><title><![CDATA[Remove Snipping Tool as default Windows Screenshot Tool]]></title><description><![CDATA[Snipping Tool isn't a bad utility, but Windows' obnoxious behaviour when it comes to remapping shortcuts can make using an alternative tricky.]]></description><link>https://techbits.io/remove-snipping-tool-as-default-windows-screenshot-tool/</link><guid isPermaLink="false">651fffe84d75484a428dc27f</guid><category><![CDATA[Windows]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Fri, 06 Oct 2023 13:22:55 GMT</pubDate><media:content url="https://techbits.io/content/images/2023/10/windows-key-keyboard.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://techbits.io/content/images/2023/10/windows-key-keyboard.jpg" alt="Remove Snipping Tool as default Windows Screenshot Tool"><p>The built-in Windows Snipping Tool isn&apos;t a bad utility. On the contrary, when you&apos;re using an unfamiliar system, knowing that a tool like that is there by default is great. The problem comes when you are using something else on your main system, and you want to re-map the default Snipping Tool shortcuts.</p><p>Both Win + Shift+S and the Print Screen key will trigger the snipping tool capture by default, but Windows seems to be extremely obnoxious about letting you use these keys for another purpose.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2139;&#xFE0F;</div><div class="kg-callout-text">A good question is: why don&apos;t you just use a different key or shortcut? Yes, this is fair... but it&apos;s partly down to years of muscle memory reinforcing these shortcuts, and also: something making a process difficult for no good reason makes you want to do it more.</div></div><h2 id="uninstall-snipping-tool">Uninstall Snipping Tool</h2><p>Windows, weirdly, does allow you to uninstall Snipping Tool. Just go into Programs &amp; Features / Installed apps, find Snipping Tool, and choose uninstall.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/10/uninstall-snipping-tool.png" class="kg-image" alt="Remove Snipping Tool as default Windows Screenshot Tool" loading="lazy" width="475" height="336"></figure><p>Once you&apos;ve done this, however, the crosshairs still show up when you use the Win + Shift+S and the Print Screen shortcuts.</p><h2 id="disable-snipping-tool-print-screen-shortcut">Disable Snipping Tool &apos;Print Screen&apos; Shortcut</h2><p>To remove the Print Screen &lt;&gt; Snipping Tool link, hit the Windows key and search for print screen. Choose the option that will take you into System Settings &gt; Accessibility &gt; Keyboard, then uncheck &#xA0;&apos;Use the Print screen key to open Snipping Tool&apos;.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/10/win-search-print-screen.png" class="kg-image" alt="Remove Snipping Tool as default Windows Screenshot Tool" loading="lazy" width="438" height="297"></figure><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/10/accessibility-keyboard-print-screen.png" class="kg-image" alt="Remove Snipping Tool as default Windows Screenshot Tool" loading="lazy" width="600" height="425" srcset="https://techbits.io/content/images/2023/10/accessibility-keyboard-print-screen.png 600w"></figure><h2 id="disable-win-shift-s-shortcut">Disable Win + Shift + S Shortcut</h2><p>Finally, disabling the other Snipping Tool shortcut will prevent the pointless crosshairs from triggering if we use that old shortcut by mistake.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2139;&#xFE0F;</div><div class="kg-callout-text">It&apos;s a shame we can&apos;t remap this shortcut to our preferred shortcut capturing application, but we&apos;ll disable it out of spite anyway... I mean, to prevent the ghost crosshairs from triggering.</div></div><p>Open the registry editor (Win + R &gt; type &apos;regedit&apos;, hit enter). Click &apos;yes&apos; if you see the UAC prompt.</p><p>Navigate to <code>Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced</code>, and in the pane on the right, right-click, and choose New &gt; String Value.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://techbits.io/content/images/2023/10/regedit-explorer-advanced.png" class="kg-image" alt="Remove Snipping Tool as default Windows Screenshot Tool" loading="lazy" width="1140" height="324" srcset="https://techbits.io/content/images/size/w600/2023/10/regedit-explorer-advanced.png 600w, https://techbits.io/content/images/size/w1000/2023/10/regedit-explorer-advanced.png 1000w, https://techbits.io/content/images/2023/10/regedit-explorer-advanced.png 1140w"></figure><p>Name the new string <code>DisabledHotkeys</code> and set the value to <code>S</code>.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/10/regedit-new-string-disabledhotkeys-s.png" class="kg-image" alt="Remove Snipping Tool as default Windows Screenshot Tool" loading="lazy" width="900" height="197" srcset="https://techbits.io/content/images/size/w600/2023/10/regedit-new-string-disabledhotkeys-s.png 600w, https://techbits.io/content/images/2023/10/regedit-new-string-disabledhotkeys-s.png 900w" sizes="(min-width: 720px) 720px"></figure><p>Click OK, close the registry editor, and give your computer a reboot.</p><h2 id="capturing-with-another-utility">Capturing with another utility</h2><p>After this, other screenshot utilities should be able to map to the Print Screen key, although this isn&apos;t a complete fix as with Snagit for example, the Print Screen key can&apos;t be mapped to a specific saved workflow (you can map other shortcuts to these, but not Print Screen or Win + Shift + S), but it instead runs the workflow that was run last. For the most part, this works pretty well, but it should be easier to make Windows relinquish control of shortcuts like this.</p><p>If there&apos;s anything I&apos;ve missed, or if you use a product like this, please let me know in the comments, or send me a message at <a href="https://sudo.cat/@techbits">@techbits@sudo.cat</a> or <a href="https://twitter.com/techbitsio">@techbitsio</a>.</p>]]></content:encoded></item><item><title><![CDATA[Review: Swissbit pSLC Industrial Flash Drive [U-56n]]]></title><description><![CDATA[The U-56n from Swissbit utilises pSLC technology for industrial applications, but this medium offers home-labbers/tech enthusiasts a level of reliability not available in general-purpose flash storage.]]></description><link>https://techbits.io/review-swissbit-pslc-u56-n/</link><guid isPermaLink="false">64566ef65e952b03f58f592e</guid><category><![CDATA[Reviews]]></category><category><![CDATA[Home Lab]]></category><category><![CDATA[Data Storage]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Wed, 02 Aug 2023 11:11:15 GMT</pubDate><media:content url="https://techbits.io/content/images/2023/07/sb_u56-n_installed2.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://techbits.io/content/images/2023/07/sb_u56-n_installed2.jpg" alt="Review: Swissbit pSLC Industrial Flash Drive [U-56n]"><p>Swissbit very kindly sent me a sample of their 16GB U-56n pSLC (pseudo-SLC) industrial flash drive to review, which on the face of it, seems odd for a website that is aimed at tech enthusiasts.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4E3;</div><div class="kg-callout-text">I should also clarify that I reached out to Swissbit to request a sample &amp; the chance to review this kind of product... They helped narrow down the most suitable product for this kind of crossover but ultimately left the decision to me.</div></div><p>But bear with me here, it could be a worthy investment for a home-lab application where the corruption of a memory stick or SD card would mean hours/days of rebuilding a system.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2139;&#xFE0F;</div><div class="kg-callout-text">There&apos;s a lot of explanation required around the underlying technologies, but to skip to the actual review, <a href="#the-u56-n">click here</a>.</div></div><h2 id="slc-mlc-tlc-qlc">SLC, MLC, TLC, QLC? </h2><p>Traditional SLC (single-level cell) NAND flash drives are extremely expensive/low capacity (or a combination of the two) due to the fact that only one bit of data is stored per cell. Compare this to MLC (multi-level cell), TLC (triple-level cell) and QLC (quad-level cell) technology found in newer generation 3D NAND packages where multiple (two), three and four bits can be stored per cell, and you see that the capacity of these options increases dramatically while the cost decreases. So why would anyone use SLC? The answer comes down to reliability, performance and data integrity.</p><p>While the performance of SLC is theoretically faster than the others, it&apos;s generally not produced in high enough capacities to compete with products aimed at performant applications, but at a theoretical level: it&apos;s faster to write data to a single-level cell than MLC/TLC etc.</p><p>Instead, the appeal of SLC is the expected lifespan and data integrity that it offers. For example, you might expect around 50-100,000 write/erase cycles for SLC cells before encountering errors, but only around 3,000 write/erase cycles for MLC, and 1,000 for TLC.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2139;&#xFE0F;</div><div class="kg-callout-text">The above are ballpark figures, and the actual endurance depends on the specific manufacturer/model. Some interesting reading on the subject <a href="https://www.techtarget.com/searchstorage/definition/TLC-flash-triple-level-cell-flash">here</a> and <a href="https://www.delkin.com/blog/slc-vs-mlc-performance-quick-guide/">here</a>.</div></div><h2 id="what-is-pseudo-slc">What is pseudo-SLC?</h2><p>pSLC is a way of using MLC or TLC chips but only using 1 bit per cell, thereby increasing performance, data reliability/integrity and the product&apos;s lifespan (total write/erase cycles).</p><!--kg-card-begin: markdown--><blockquote>
<p><img src="https://techbits.io/content/images/2023/07/smartchart.png" alt="Review: Swissbit pSLC Industrial Flash Drive [U-56n]" loading="lazy"></p>
<p>By implementing NAND vendor-specific commands and algorithms in the Flash controller firmware, 3D TLC NAND can be operated in 1-bit pSLC mode where endurance and performance behaviors are in line with native SLC NAND. SMART&#x2019;s pSLC technology is designed to optimize the balance between cost and performance.</p>
<p>-- <cite><a href="https://www.smartm.com/technology/pseudo-slc-pslc">SMART</a></cite></p>
</blockquote>
<!--kg-card-end: markdown--><p>As the storage device&apos;s controller is aware that it&apos;s using MLC/TLC, it is able to optimise reads/writes and use other functions such as wear-levelling to ensure that the cells are equally used over time to prolong the lifespan.</p><p>That expected lifespan falls between that of true SLC and MLC. SMART&apos;s own example suggests that with a SLC device of 60,000 write/erase cycles and 3D TLC of 3,000 write/erase cycles, pSLC would come it at around half of SLC, but 10x greater than 3D TLC, at 30,000 write/erase cycles.</p><!--kg-card-begin: markdown--><blockquote>
<p>While TLC NAND flash is typically only designed for 3,000 programming and erase cycles, the same memory in pSLC mode achieves 30,000 cycles with the previous flash generation and even up to 100,000 cycles with the most current flash technology.</p>
<p>-- <cite><a href="https://www.swissbit.com/en/blog/post/4-reasons-to-use-industrial-3d-tlc-nand-flash-as-pseudo-slc/">Swissbit</a></cite></p>
</blockquote>
<!--kg-card-end: markdown--><p>Swissbit&apos;s implementation of pSLC is using TLC, and from their information on how they use it (available <a href="https://www.swissbit.com/en/blog/post/4-reasons-to-use-industrial-3d-tlc-nand-flash-as-pseudo-slc/">here</a>):</p><ul><li>&quot;pSLC can be read twice as fast as TLC and written at six times the speed.&quot;</li><li>&quot;The combination of the extremely high number of cycles and the smaller page size results in a lifetime that is rarely exceeded by an application.&quot;</li><li>&quot;By storing only one bit per cell instead of three, the capacity is reduced by a third or three times the amount of flash must be used. The service life, on the other hand, increases by up to 33 times.&quot;</li></ul><h2 id="slc-vs-pslc">SLC vs pSLC</h2><p>So if SLC is so great, why buy anything else? It generally comes down to cost, and to an extent, availability (there&apos;s not a great deal of demand, so most memory manufacturers don&apos;t produce it).</p><p>Swissbit does still manufacture some SLC products: The U-500k comes in a few different capacities, but for a 16GB stick, the price is around &#xA3;210-250 (finding availability is hit or miss). In contrast, the pSLC U-56n 16GB is more readily available and costs around &#xA3;72-84.</p><p>This is a very high cost for a relatively low capacity and so wouldn&apos;t replace a cheaper stick you might use for occasionally moving documents around, but it&apos;s all too easy to grab an SD card or memory stick from a drawer when setting up a Raspberry Pi, a mini PC/NAS or some other home-lab application, with absolutely no thought to how long that stick might last with constant log file writes, or some default SWAP space you forgot to turn off.</p><h2 id="the-u56-n">The U56-n</h2><p>Ok, that was a lot of explanation. Thank you for either sticking with me or just skipping to this point.</p><p>The U56-n is available in 4GB, 8GB, 16GB and 32GB capacities. Each capacity tier has a Commercial operating temperature range (0&#xB0;C ~ 70&#xB0;C), and a more extreme Industrial range (-40&#xB0;C ~ 85&#xB0;C). Swissbit sent me a 16GB Industrial stick (the exact product SKU: SFU3016GC2AE2TO-I-GE-1AP-STD).</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/07/sb_u56-n_single-1.jpg" class="kg-image" alt="Review: Swissbit pSLC Industrial Flash Drive [U-56n]" loading="lazy" width="800" height="452" srcset="https://techbits.io/content/images/size/w600/2023/07/sb_u56-n_single-1.jpg 600w, https://techbits.io/content/images/2023/07/sb_u56-n_single-1.jpg 800w" sizes="(min-width: 720px) 720px"></figure><p>The stick itself is very small, measuring 24mm x 12.1mm x 4.5mm. It has a brushed aluminium finish and a green indicator LED inside the keychain loop.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/07/sb_u56-n_installed2-1.jpg" class="kg-image" alt="Review: Swissbit pSLC Industrial Flash Drive [U-56n]" loading="lazy" width="1000" height="684" srcset="https://techbits.io/content/images/size/w600/2023/07/sb_u56-n_installed2-1.jpg 600w, https://techbits.io/content/images/2023/07/sb_u56-n_installed2-1.jpg 1000w" sizes="(min-width: 720px) 720px"></figure><p>It has a USB-A (USB 3.1 Gen 1 SuperSpeed) interface, and Swissbit advertises the performance as being:</p><ul><li>Sequential Read up to 197 MBytes/s, Random Read IOPS up to 3,850</li><li>Sequential Write up to 126 MBytes/s, Random Write IOPS up to 2,600#</li></ul><p>In terms of endurance, it can withstand 697 TBW (terabytes written) for sequential writes, or 42 TBW for random 4KB writes. Bearing in mind the capacity is far less than even 1TB, this works out at around 43,500 and 2,625 write/erase cycles of the entire 16GB capacity respectively.</p><p>Swissbit also promises data retention of 10 years at the beginning of the product&apos;s life, and 1 year when it&apos;s at the end of its life.</p><p>When talking about a product that is designed to last longer than the system it&apos;s running, mentioning the warranty seems silly. Of course, some products will just fail due to manufacturing defects. Swissbit offers the Industrial U56-n with a 3-year warranty (or to the &apos;TBW&apos; endurance limit&#x2013;whichever comes first). It should be noted that when you buy something from a company/vendor that primarily deals with business/industrial sales, you might find that returns/RMA processes are slightly less friendly than they would be from a consumer-oriented equivalent.</p><p>On that note, the packaging really highlighted the industrial nature, but you know what? I&apos;d love all devices to be packaged like this. Keep the device safe, avoid unnecessary plastic, and keep the total size down.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/07/sb_packaging_1.jpg" class="kg-image" alt="Review: Swissbit pSLC Industrial Flash Drive [U-56n]" loading="lazy" width="800" height="714" srcset="https://techbits.io/content/images/size/w600/2023/07/sb_packaging_1.jpg 600w, https://techbits.io/content/images/2023/07/sb_packaging_1.jpg 800w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/07/sb_packaging_2.jpg" class="kg-image" alt="Review: Swissbit pSLC Industrial Flash Drive [U-56n]" loading="lazy" width="800" height="560" srcset="https://techbits.io/content/images/size/w600/2023/07/sb_packaging_2.jpg 600w, https://techbits.io/content/images/2023/07/sb_packaging_2.jpg 800w" sizes="(min-width: 720px) 720px"></figure><h2 id="performance">Performance</h2><p>The measurables line up with the advertised &apos;up-to&apos; read/write speeds, and over multiple runs, the device is very consistent.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/05/swissbit-u-56n-benchmark-speed.png" class="kg-image" alt="Review: Swissbit pSLC Industrial Flash Drive [U-56n]" loading="lazy" width="602" height="439" srcset="https://techbits.io/content/images/size/w600/2023/05/swissbit-u-56n-benchmark-speed.png 600w, https://techbits.io/content/images/2023/05/swissbit-u-56n-benchmark-speed.png 602w"></figure><p>Aside from benchmarks like the one above, I got a feel for the device by running it in a couple of test systems. First, as the boot device in an Intel NUC running Proxmox VE, and then as the boot device for a Raspberry Pi NAS.</p><p>When setting both of these up, I initially skipped any optimisation steps (writing log files to a separate disk, disabling SWAP space, etc.) and ran them for a week or so. While this isn&apos;t a very concrete test, the system felt <em>fine</em>, responsive, and it didn&apos;t ever have to wait any noticeable time for files to load.</p><p>After running it like this, I enabled the aforementioned optimisations (and for Proxmox, setting a different disk as the primary location for ISOs, files etc.) for no other reason than it being good practice.</p><p>This period of testing didn&apos;t provide any revelations about the U56-n... Its performance is good, and my data felt <em>safe</em>(?). Unfortunately, there&apos;s no way of testing the lifespan claims without deliberately writing (and tracking) a lot of data.</p><p>I do, however, still have it running in a test box, so will update if I have any other observations to share.</p><h2 id="so-why-do-i-need-one">So why do I need one?</h2><p>If you run any sort of home lab (whether a bunch of servers, mini PCs, or even a Raspberry Pi or two), there&apos;s a good chance that after setting something up, you&apos;ve come to rely on that system enough to consider what you would do if it fails.</p><p>There are plenty of good examples of this, but I&apos;ll use Home Assistant as an example. Plenty of people have bought a Pi, grabbed an SD card that they had laying around, and installed Home Assistant. You only start with Home Assistant to mess around and play with it, right?</p><p>But then, oh look, you&apos;ve found lots of devices are compatible, added them, and started creating cool automations. These are so useful that you&apos;ve introduced the rest of your family/pets to them, and before you know it, this is a system that you can&apos;t do without.</p><p>Did you check the advertised lifespan of the SD card? Do you know how many write/erase cycles it can sustain before you might encounter corruption?</p><p>You know you should back up the system regularly, and you keep telling yourself you&apos;ll set it up soon, but wouldn&apos;t you know it? The system crashed and the last backup was from 6 months ago.</p><p>This is obviously an exaggerated scenario, but the Home Assistant forum regularly has people trying to deal with the fallout of a corrupted SD card/flash drive. That the RPI 4 can USB boot allows people to use higher quality drives, but if that&apos;s a TLC/QLC drive, it&apos;s still a drive that&apos;s not designed for an always-on application. A traditional spinning disk is a good option for reliability, but at the cost of read/write speed (and the size of the disk, of course).</p><p>I&apos;ll also add that the reliability of industrial products like the U56-n doesn&apos;t make the inverse true: cheap devices won&apos;t necessarily fail. You could run a system from the cheapest no-name SD card and not encounter issues, only that your chances of that happening are significantly higher.</p><h2 id="price">Price</h2><p>The price for this exact model is around &#xA3;84. Due to the nature of the industrial/commercial target-market, you&apos;ll only find prices listed without VAT (around &#xA3;70). You can find this at <a href="https://www.digikey.co.uk/en/products/detail/swissbit/SFU3016GC2AE2TO-I-GE-1AP-STD/10820225">Digikey</a> and <a href="https://www.mouser.co.uk/ProductDetail/Swissbit/SFU3016GC2AE2TO-I-GE-1AP-STD?qs=vmHwEFxEFR95u3MYVVd1Ag%3D%3D">Mouser</a>.</p><h2 id="final-thoughts">Final Thoughts</h2><p><strong>Score: 5/5*</strong></p><p><em>*This is a difficult product to rate, but I&apos;ll revisit this once I&apos;ve given it even more testing.</em></p><p>Would I recommend this product? Yes. Would I recommend it for everything? No.</p><p>If you&apos;re just getting started with running a system on an old PC, NUC, Raspberry Pi, there&apos;s nothing wrong with using what you have on hand. The point where you should consider this (or a product like it) is when you start heavily relying on the system. I&apos;ve already mentioned Home Assistant as an example, but as another: a lot of people run AdGuard Home or PiHole on a Raspberry Pi, but when you force everyone connected to your network through a device like this, the outage is pretty significant when the card/USB stick dies (especially as you&apos;re going to need the internet to fix it!)</p><p>If you do start to use a more reliable device like the U56-n, you should also regularly check the S.M.A.R.T. statistics to see what the total TBW is at (and while you&apos;re there, see if there are any unexpected errors)! If you&apos;ve somehow made it to the end of the usable life, you should continue replacing it&#x2013;if this is you though, you&apos;ve already experienced the reliability benefits that I&apos;m trying to push!</p><p>As a side note, Swissbit also produces products aimed at data security, not just data integrity/reliability, so if you need a device with locked (or hidden) partitions, take a look at <a href="https://www.swissbit.com/en/products/security-products/">their website</a>.</p><p>If there&apos;s anything I&apos;ve missed, or if you use a product like this, please let me know in the comments, or send me a message at <a href="https://sudo.cat/@techbits">@techbits@sudo.cat</a> or <a href="https://twitter.com/techbitsio">@techbitsio</a>.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Install Home Assistant on Proxmox]]></title><description><![CDATA[This post will show you how to get Home Assistant OS running as a VM on a Proxmox VE host in just a couple of minutes.]]></description><link>https://techbits.io/install-home-assistant-on-proxmox/</link><guid isPermaLink="false">644cf7563a233f03fae06f1e</guid><category><![CDATA[Home Assistant]]></category><category><![CDATA[Proxmox]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Virtualisation]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Sat, 29 Apr 2023 19:33:23 GMT</pubDate><media:content url="https://techbits.io/content/images/2023/04/Proxmox-VE-7-2-Cluster-Summary-1-.gif" medium="image"/><content:encoded><![CDATA[<img src="https://techbits.io/content/images/2023/04/Proxmox-VE-7-2-Cluster-Summary-1-.gif" alt="Install Home Assistant on Proxmox"><p>If you&apos;re new to Virtualisation, Proxmox Virtualization Envionment (Proxmox VE) is a great introduction to the world of Hypervisors. It&apos;s an open source server management platform with an intuitive web interface. You can run Proxmox on a single relatively low-end system (think an old PC, or an Intel NUC) or you can run it on multiple boxes and create your own home computing cluster!</p><p>Not only can you run virtual machines, but you can also run Linux Containers (LXC) for lower resource/footprint requirements.</p><p>If you&apos;ve not already got Proxmox running, I&apos;d suggest downloading the <a href="https://www.proxmox.com/en/downloads/category/iso-images-pve">installer</a>, copying it to a USB stick (using something like <a href="https://www.balena.io/etcher">Balena Etcher</a>), and following the instructions - install it, play around with it, break some things, then install it again to fix what you&apos;ve broken. I may come back to the installation process in future, but it&apos;s fairly intuitive to get started.</p><p>For this post, we&apos;re assuming you already have Proxmox installed and you want to get Home Assistant up and running as a virtual machine.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2139;&#xFE0F;</div><div class="kg-callout-text">You may already use Home Assistant, in which case, I&apos;d suggest creating the VM as shown below, and restoring a Home Assistant backup instead of trying to migrate the whole OS/image.</div></div><p>Once you&apos;ve logged into your Proxmox server&apos;s web interface, you want to find the <code>Shell</code> option. If you have multiple servers in a cluster, click on any server, then shell:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-1.png" class="kg-image" alt="Install Home Assistant on Proxmox" loading="lazy" width="1200" height="388" srcset="https://techbits.io/content/images/size/w600/2023/04/proxmox-ve-install-home-assistant-1.png 600w, https://techbits.io/content/images/size/w1000/2023/04/proxmox-ve-install-home-assistant-1.png 1000w, https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-1.png 1200w" sizes="(min-width: 1200px) 1200px"></figure><p>In this window, paste (<code>Right-Click &gt; Paste</code>, or <code>Ctrl + Shift + V</code>) the command below and hit enter:</p><pre><code class="language-bash">bash -c &quot;$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/vm/haos-vm.sh)&quot;</code></pre><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2139;&#xFE0F;</div><div class="kg-callout-text">If you&apos;re interested in running VMs and containers, even if it&apos;s just to fiddle around with some cool open-source software, I&apos;d highly recommend looking at the list of install scripts created and maintained by GitHub user tteck: <a href="https://tteck.github.io/Proxmox/">https://tteck.github.io/Proxmox/</a><br><br>Even if you&apos;re only after a Home Assistant installation, there are multiple scripts available, including a Home Assistant LXC container and Home Assistant Core LXC container.</div></div><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-2-1.gif" class="kg-image" alt="Install Home Assistant on Proxmox" loading="lazy" width="900" height="396" srcset="https://techbits.io/content/images/size/w600/2023/04/proxmox-ve-install-home-assistant-2-1.gif 600w, https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-2-1.gif 900w" sizes="(min-width: 720px) 720px"></figure><p>Follow the prompts, and if you stick to the simple setup, it&apos;s only a few steps:</p><p>1. &quot;This will create a New Home Assistant OS VM. Proceed?&quot; - I mean, yes. Choose yes:</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-3.png" class="kg-image" alt="Install Home Assistant on Proxmox" loading="lazy" width="807" height="337" srcset="https://techbits.io/content/images/size/w600/2023/04/proxmox-ve-install-home-assistant-3.png 600w, https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-3.png 807w" sizes="(min-width: 720px) 720px"></figure><p>2. Default Settings are probably fine for most people, but for the full list of Advanced options:</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"><div class="kg-toggle-heading"><h4 class="kg-toggle-heading-text">Advanced Options</h4><button class="kg-toggle-card-icon"><svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/></svg></button></div><div class="kg-toggle-content"><ul><li>Choose HAOS version: Stable, Beta or Dev</li><li>Set Virtual Machine ID</li><li>Choose Virtual Machine Type: i440fx (Default) or q35</li><li>Choose Disk Cache: Default or Write Through</li><li>Set Hostname</li><li>Choose CPU Model: KVM64 (default) or Host</li><li>Specify CPU core quantity (depends on physical hardware but will default to 2 if it can)</li><li>Specify amount of RAM (again, depends on hardware. Defaults to 4096 MiB if possible)</li><li>Set a network (Bridge) interface</li><li>Specify a MAC address</li><li>Set a VLAN (or leave blank for none)</li><li>Set Interface MTU size (leave blank for default)</li><li>Start VM when script completes? Defaults to yes</li><li>&apos;Ready?&apos; confirmation. Choose Yes or start over</li></ul></div></div><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-4.png" class="kg-image" alt="Install Home Assistant on Proxmox" loading="lazy" width="802" height="337" srcset="https://techbits.io/content/images/size/w600/2023/04/proxmox-ve-install-home-assistant-4.png 600w, https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-4.png 802w" sizes="(min-width: 720px) 720px"></figure><p>3. Select where the VM&apos;s disk will be stored (arrow keys to move up and down, space to select, tab to move down to OK/Cancel):</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-5.png" class="kg-image" alt="Install Home Assistant on Proxmox" loading="lazy" width="846" height="498" srcset="https://techbits.io/content/images/size/w600/2023/04/proxmox-ve-install-home-assistant-5.png 600w, https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-5.png 846w" sizes="(min-width: 720px) 720px"></figure><p>4. Wait for the script to download the Home Assistant OS image file:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-6.png" class="kg-image" alt="Install Home Assistant on Proxmox" loading="lazy" width="1000" height="376" srcset="https://techbits.io/content/images/size/w600/2023/04/proxmox-ve-install-home-assistant-6.png 600w, https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-6.png 1000w"></figure><p>5. Wait until you see the &apos;Completed Successfully!&apos; message:</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-7.png" class="kg-image" alt="Install Home Assistant on Proxmox" loading="lazy"></figure><p>6. If you go back to your Proxmox web interface and click on the newly created VM, you&apos;ll see an information box which includes the new VM&apos;s IP (if it has managed to get one via DHCP. If it hasn&apos;t use the VM&apos;s shell to set the IP):</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-8.png" class="kg-image" alt="Install Home Assistant on Proxmox" loading="lazy" width="594" height="491"></figure><p>7. Take IP and go to http://&lt;ip-of-new-vm&gt;:8123 and follow the Home Assistant setup steps, either to setup a new install, or to restore an existing backup:</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-9.png" class="kg-image" alt="Install Home Assistant on Proxmox" loading="lazy" width="600" height="783" srcset="https://techbits.io/content/images/2023/04/proxmox-ve-install-home-assistant-9.png 600w"></figure><h2 id="what-next">What next?</h2><p>That&apos;s it for this setup. It&apos;s a pretty quick way of getting Home Assistant setup on a Proxmox VE host, but the real star of the show is the script from tteck, and I know I&apos;ve already said it once, but I&apos;d highly recommend looking through <a href="https://tteck.github.io/Proxmox/">the other available scripts</a> to see what else you might want to install!</p><p>If you notice any issues with this post, please leave a comment to let me know, or message me at <a href="https://sudo.cat/@techbits">@techbits@sudo.cat</a> or <a href="https://twitter.com/techbitsio">@techbitsio</a>.</p>]]></content:encoded></item><item><title><![CDATA[Allow ICMP Pings through the UDM-Pro's Firewall]]></title><description><![CDATA[Set an Internet Local firewall rule on your UDM-Pro (or similar UniFi device) to be able to ping your IP from outside of your network.]]></description><link>https://techbits.io/allow-icmp-pings-through-the-udm-pros-firewall/</link><guid isPermaLink="false">64494a8d3a233f03fae06e21</guid><category><![CDATA[Networking]]></category><category><![CDATA[Cuckoo Broadband]]></category><category><![CDATA[Ubiquiti]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Fri, 28 Apr 2023 21:27:44 GMT</pubDate><media:content url="https://techbits.io/content/images/2023/04/udm-marketing-photo.png" medium="image"/><content:encoded><![CDATA[<img src="https://techbits.io/content/images/2023/04/udm-marketing-photo.png" alt="Allow ICMP Pings through the UDM-Pro&apos;s Firewall"><p>I recently signed up with a new broadband provider (<a href="https://cuckoo.co">Cuckoo Broadband</a> - review on the way) with one of the benefits being support for multiple static IPs&#x2013;see my last post on configuring these on the UniFi Dream Machine Pro:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://techbits.io/set-static-ips-on-the-udp-pro/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Set Static IPs on the UDM-Pro</div><div class="kg-bookmark-description">This guide will show you how to add one or multiple static IPs to your Ubiquiti UDM-Pro (or other compatible UniFi product).</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://techbits.io/assets/icon-192x192.png?v=57989fc55d" alt="Allow ICMP Pings through the UDM-Pro&apos;s Firewall"><span class="kg-bookmark-author">techbits.io</span><span class="kg-bookmark-publisher">techbits</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://techbits.io/content/images/2023/04/udm-pro-1-.jpg" alt="Allow ICMP Pings through the UDM-Pro&apos;s Firewall"></div></a></figure><p>Once I had these setup, I wanted to be able to ping these over the internet, firstly to test they were all working, and secondly so I could continually ping what I was going to use as the &apos;main&apos; internet IP with a Broadband Quality Monitor (@ <a href="https://thinkbroadband.com">thinkbroadband.com</a>).</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2139;&#xFE0F;</div><div class="kg-callout-text">This method is equally applicable if you have a dynamic IP and are using some kind of Dynamic DNS service to keep a hostname updated with your IP. The only difference is that you&apos;d set the Destination to be <code>Any</code>, instead of being a specific IP.</div></div><p>The layout of the firewall pages and panes has changed a bit over the years, with there now being greater control over the source and destination (or in the case of pings, using <code>Internet Local</code> to designate that the destination is the UDM-Pro itself).</p><!--kg-card-begin: markdown--><blockquote>
<p><code>Internet</code> Contains IPv4 firewall rules that apply to the Internet network.<br>
...<br>
<code>Local</code> Applies to traffic that is destined for the UDM/USG itself.</p>
<p>-- <cite><a href="https://help.ui.com/hc/en-us/articles/115003173168-UniFi-Gateways-Introduction-to-Firewall-Rules">UniFi Gateways - Introduction to Firewall Rules</a></cite></p>
</blockquote>
<!--kg-card-end: markdown--><p>From the main page of your UDM-Pro (or other compatible UniFi device/cloud-key) go to Settings -&gt; Firewall &amp; Security -&gt;Create New Rule:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://techbits.io/content/images/2023/04/udm-pro-firewall.png" class="kg-image" alt="Allow ICMP Pings through the UDM-Pro&apos;s Firewall" loading="lazy" width="1400" height="341" srcset="https://techbits.io/content/images/size/w600/2023/04/udm-pro-firewall.png 600w, https://techbits.io/content/images/size/w1000/2023/04/udm-pro-firewall.png 1000w, https://techbits.io/content/images/2023/04/udm-pro-firewall.png 1400w" sizes="(min-width: 1200px) 1200px"></figure><p>Set the <code>Type</code> to <code>Internet Local</code> and enter a descriptive name for the rule (no really, you&apos;ll thank yourself in future). Leave the default of <code>Before Predefined Rules</code> unless you have a specific reason to change it. You obviously want the action to be <code>Accept</code>.</p><p>Set the <code>IPv4 Protocol</code> to <code>ICMP</code>, and the <code>IPv4 ICMP Type Name</code> to <code>Echo Request</code>.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2139;&#xFE0F;</div><div class="kg-callout-text">Some guides based on previous software versions said to create an Echo Request rule as well as Echo Reply, but that&apos;s not required under Internet Local.</div></div><p>You can leave the source as <code>Any</code> unless you know the specific address you want to be testing from. If you have a cloud server setup to monitor devices, you could set the <code>Source Type</code> to <code>IP Address</code> and specify the address, therefore allowing only you to monitor, but ICMP is deemed to be a fairly low risk protocol to leave open, and if the monitoring service has multiple/unknown sources, you don&apos;t have much choice here.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/04/udm-pro-firewall-ping-new-rule-icmp-1.png" class="kg-image" alt="Allow ICMP Pings through the UDM-Pro&apos;s Firewall" loading="lazy" width="977" height="1061" srcset="https://techbits.io/content/images/size/w600/2023/04/udm-pro-firewall-ping-new-rule-icmp-1.png 600w, https://techbits.io/content/images/2023/04/udm-pro-firewall-ping-new-rule-icmp-1.png 977w" sizes="(min-width: 720px) 720px"></figure><p>For the destination, you want to set whatever your external IP is. You could leave this as <code>Any</code> (and you might have to if you don&apos;t have a static IP, but a dynamic/changing IP) but in general, a more specific rule is better. In my example, where there are multiple IPs, I ultimately only want one IP to respond to Ping requests, so I&apos;ve specified that destination IP. During testing, I left this as <code>Any</code> so I could ping all 4 addresses.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/04/udm-pro-firewall-ping-new-rule-icmp-2.png" class="kg-image" alt="Allow ICMP Pings through the UDM-Pro&apos;s Firewall" loading="lazy" width="1000" height="646" srcset="https://techbits.io/content/images/size/w600/2023/04/udm-pro-firewall-ping-new-rule-icmp-2.png 600w, https://techbits.io/content/images/2023/04/udm-pro-firewall-ping-new-rule-icmp-2.png 1000w" sizes="(min-width: 720px) 720px"></figure><p>Once you&apos;re happy with the rule, click <code>Apply Changes</code> and it will take effect.</p><p>To test it, you can ping from something like a cloud server, or you can download a Ping-type app. I used &apos;Ping&apos; by Michael Frohlich. Remember to disable Wi-Fi if you&apos;re on the same network at the static IP (although I had to be on 4G to successfully ping&#x2013;3G didn&apos;t work for me), enter your IP in the app, hit the play button and confirm that you get the green replies.</p><p>That&apos;s it! You can ping your IP from the internet. What next? You could set up an internet quality monitor or use your own cloud server to monitor it.</p><p>If this has helped you, please leave a comment. I&apos;d be especially interested in what you&apos;re using to monitor your network health below, at <a href="https://sudo.cat/@techbits">@techbits@sudo.cat</a> or <a href="https://twitter.com/techbitsio">@techbitsio</a>.</p>]]></content:encoded></item><item><title><![CDATA[Set Static IPs on the UDM-Pro]]></title><description><![CDATA[This guide will show you how to add one or multiple static IPs to your Ubiquiti UDM-Pro (or other compatible UniFi product).]]></description><link>https://techbits.io/set-static-ips-on-the-udp-pro/</link><guid isPermaLink="false">64483a553a233f03fae06c58</guid><category><![CDATA[Networking]]></category><category><![CDATA[Ubiquiti]]></category><category><![CDATA[Cuckoo Broadband]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Wed, 26 Apr 2023 15:41:08 GMT</pubDate><media:content url="https://techbits.io/content/images/2023/04/udm-pro-1-.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://techbits.io/content/images/2023/04/udm-pro-1-.jpg" alt="Set Static IPs on the UDM-Pro"><p>I have recently signed up with a new broadband provider (<a href="https://cuckoo.co">Cuckoo Broadband</a> - review on the way), one which offers some pretty cool features for a home internet provider. Well, one cool feature: static IPs. Yes, IP<em>s - plural.</em></p><p>Previously, the only ISP that I was aware of that offers even one static IP (and I believe still does) is Plusnet. However, because Cuckoo uses TalkTalk Business broadband for its services, it seems that Cuckoo is happy to enable this service for customers.</p><p>Talking to their very helpful customer support team before signing up, I found out that they offer 1 IP or blocks of 4, and however many you choose, they cost &#xA3;1 each per month. I have a few ideas for projects, and figuring that the first IP will replace the DHCP address of the modem/WAN interface, I went for 4.</p><p>There&apos;s no option to sign up for this in the Cuckoo account, you have to ask the customer support team to add them to your account, but within a space of a couple of hours, the very helpful James provided me with a /30 CIDR block.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F523;</div><div class="kg-callout-text"><strong>All of the examples and screenshots below use dummy internal IPs with the last octet matching the real range (for CIDR calculating purposes).</strong></div></div><p>On the UDM Pro, setting the IPs is fairly straightforward: Login to your UDM (or cloudkey if you&apos;re using something other than a UDM/Pro), go to Settings -&gt; Internet, then select the WAN interface you want to add the static IPs to.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://techbits.io/content/images/2023/04/udm-pro-internet.png" class="kg-image" alt="Set Static IPs on the UDM-Pro" loading="lazy" width="1600" height="572" srcset="https://techbits.io/content/images/size/w600/2023/04/udm-pro-internet.png 600w, https://techbits.io/content/images/size/w1000/2023/04/udm-pro-internet.png 1000w, https://techbits.io/content/images/2023/04/udm-pro-internet.png 1600w" sizes="(min-width: 1200px) 1200px"></figure><p>Scroll down until you find Additional IP Addresses (almost at the bottom). Here you can add an IP, or a range&#x2013;I tried entering as a range and kept getting &quot;IPv4 CIDR range is not valid&quot;. Both of these options require addresses to be entered in CIDR block formats (if you had 4 non-sequential IPs, you&apos;d enter them as ipaddress/32).</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F6A7;</div><div class="kg-callout-text">For a block of 4 addresses, starting with .172, the notation 172.16.16.172/30 <em>should&apos;ve</em> worked. I think? I&apos;m sure I&apos;m missing something so please do tell me how wrong I am in the comments!</div></div><p>Enter each IP, or the range and click add for each one. Once done, apply the changes.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://techbits.io/content/images/2023/04/udm-pro-internet-add-ips.png" width="1100" height="423" loading="lazy" alt="Set Static IPs on the UDM-Pro" srcset="https://techbits.io/content/images/size/w600/2023/04/udm-pro-internet-add-ips.png 600w, https://techbits.io/content/images/size/w1000/2023/04/udm-pro-internet-add-ips.png 1000w, https://techbits.io/content/images/2023/04/udm-pro-internet-add-ips.png 1100w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://techbits.io/content/images/2023/04/udm-pro-internet-add-ips-apply.png" width="854" height="402" loading="lazy" alt="Set Static IPs on the UDM-Pro" srcset="https://techbits.io/content/images/size/w600/2023/04/udm-pro-internet-add-ips-apply.png 600w, https://techbits.io/content/images/2023/04/udm-pro-internet-add-ips-apply.png 854w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>The change should be pretty instant, and to check, from your local network, ping the added IPs (you&apos;re accessing them locally, so they should all ping):</p><pre><code class="language-PowerShell">PS C:\Users\techbits&gt; 172..175 | % {ping -n 1 -w 20 172.16.16.$_} | Select-String -Pattern &apos;Reply from&apos;

Reply from 172.16.16.172: bytes=32 time&lt;1ms TTL=64
Reply from 172.16.16.173: bytes=32 time&lt;1ms TTL=64
Reply from 172.16.16.174: bytes=32 time&lt;1ms TTL=64</code></pre><p>Only three responded, so I went back in and changed the addresses to 2 /31&apos;s, which seemed to do the trick:</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/04/udm-staticip-31.png" class="kg-image" alt="Set Static IPs on the UDM-Pro" loading="lazy" width="835" height="250" srcset="https://techbits.io/content/images/size/w600/2023/04/udm-staticip-31.png 600w, https://techbits.io/content/images/2023/04/udm-staticip-31.png 835w" sizes="(min-width: 720px) 720px"></figure><pre><code class="language-PowerShell">PS C:\Users\techbits&gt; 172..175 | % {ping -n 1 -w 20 172.16.16.$_} | Select-String -Pattern &apos;Reply from&apos;

Reply from 172.16.16.172: bytes=32 time&lt;1ms TTL=64
Reply from 172.16.16.173: bytes=32 time&lt;1ms TTL=64
Reply from 172.16.16.174: bytes=32 time&lt;1ms TTL=64
Reply from 172.16.16.175: bytes=32 time&lt;1ms TTL=64</code></pre><h3 id="what-next">What next?</h3><p>That&apos;s all there is to it! If anyone can explain why the /30 range didn&apos;t work, please leave a comment or let me know at <a href="https://sudo.cat/@techbits">@techbits@sudo.cat</a> or <a href="https://twitter.com/techbitsio">@techbitsio</a>.</p><p>Next up will be some cool little projects where you can utilise these static IPs, so check back soon.</p>]]></content:encoded></item><item><title><![CDATA[Review: SwitchBot Blind Tilt]]></title><description><![CDATA[The Blind Tilt is a retrofit blind controller from SwitchBot that fits in well with their products, but security issues may leave you tilted.]]></description><link>https://techbits.io/review-switchbot-blind-tilt/</link><guid isPermaLink="false">643479243a233f03fae06354</guid><category><![CDATA[Smart Home]]></category><category><![CDATA[SwitchBot]]></category><category><![CDATA[Reviews]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Mon, 24 Apr 2023 21:21:00 GMT</pubDate><media:content url="https://techbits.io/content/images/2023/04/switchbot-bt-unboxing-front-1-.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://techbits.io/content/images/2023/04/switchbot-bt-unboxing-front-1-.jpg" alt="Review: SwitchBot Blind Tilt"><p><a href="https://switch-bot.com">SwitchBot</a> recently contacted me asking if I wanted to test their new Blind Tilt product for the purposes of a review, as well as show off the installation process and the quite fully-featured Home Assistant integration setup.</p><p>It should be noted that they sent me the hardware for this review and the associated how-to&apos;s, plus some other devices for me to potentially discuss in future Home Assistant posts.</p><p>Final disclaimer before getting started: I&apos;ll mention the Hub Mini in this review, purely to discuss the cloud control functionality.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F517;</div><div class="kg-callout-text">For the hardware installation and pairing walkthrough, <a href="https://techbits.io/getting-started-with-switchbot-blind-tilt-and-hub-mini/">click here</a>. For the Home Assistant integration guide, <a href="https://techbits.io/setup-switchbot-blind-tilt-with-home-assistant/">click here</a>.</div></div><h2 id="what-is-the-blind-tilt">What is the Blind Tilt?</h2><p>The Blind Tilt is a retrofit blind controller, suitable for wand-controlled tilt blinds. The main unit is 48.8 &#xD7; 29.2 &#xD7; 144.2 mm, weighs 130 grams, and is available in both black and white options.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F44D;</div><div class="kg-callout-text">Some retrofit devices obstruct or interfere with the original control method, meaning you&apos;re only able to control through the device. The Blind Tilt doesn&apos;t do this&#x2013;it allows full control via the wand, tracking the position of the blind even when you&apos;re manually adjusting it. <b>&#x2714;&#xFE0F;</b></div></div><p>It&apos;s a battery-powered rechargeable device, sporting a 2000 mAh lithium battery. SwitchBot claims up to 10 months of use per charge, and if I extrapolate from my testing, I think you&apos;d hit that with normal use. However, the battery life is a bit moot, as in the box is an included solar panel which you can feed through the blind and stick to the window. If you choose not to install that, you can track battery life through the app and then connect a USB-C charging cable when (infrequently) needed. The battery itself is an 18650 cell, which could be replaced if it becomes faulty.</p><p>The Blind Tilt uses Bluetooth to communicate (specifically, long-range BLE 5.0, to maximise range and battery life), and while you initially have to connect it to an Android or iOS device, you then have the option to control it via one of the SwitchBot Hubs (Hub Mini or Hub 2), or directly from Home Assistant. To recalibrate the device (which you&apos;ll probably need to do a couple of times, and anytime in the future if you find the wand has &apos;slipped&apos;) you&apos;ll always need to do this from the app.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F914;</div><div class="kg-callout-text">On the subject of the hubs: SwitchBot bullet-points one of the BlindTilt features as being compatible with cloud services (&quot;Alexa, Google Assistant, Siri Shorcuts, IFTTT, SmartThings, Line Clova&quot;), and while elsewhere it does clarify that a hub is required for this, it should be noted that only local control is possible without a hub (excluding Home Assistant... we&apos;ll get onto that).</div></div><h2 id="what-is-included">What is Included?</h2><p>Given the nature of retrofit devices, manufacturers have to expect a wide variety of blinds (e.g. size of headrail, diameter of control wand, spacing between pull cord and wand), and to their credit, SwitchBot appears to have anticipated a lot. This is demonstrated volume of included accessories and adapters. For example, there are two different mounting adapters, and if neither of those fit to the left of the control wand, you can reverse the whole product and fit it to the right.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F615;</div><div class="kg-callout-text">On the whole, the design is pretty sleek and unobtrusive, but if you do have to install it in reverse, you&apos;ll probably want to get a white sticker to cover up all of the regulatory text. Why they didn&apos;t put the text inside the wand housing, I&apos;ve no idea.</div></div><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/04/switchbot-blind-tilt-reverse.jpg" class="kg-image" alt="Review: SwitchBot Blind Tilt" loading="lazy" width="900" height="387" srcset="https://techbits.io/content/images/size/w600/2023/04/switchbot-blind-tilt-reverse.jpg 600w, https://techbits.io/content/images/2023/04/switchbot-blind-tilt-reverse.jpg 900w" sizes="(min-width: 720px) 720px"></figure><p>The full listing of included parts (also shown below) is:</p><ul><li>Blind Tilt Unit, Solar Panel</li><li>Open Flex Coupling, Mounting Base A &amp; B, Base Cover, Cord Holder</li><li>Adapter with Adhesive (S/M/L/XL)</li><li>User Manual, Measurement Paper Tape, Alignment Card, Adhesive Stickers</li><li> Wet Wipe, Type-C Power Cable, Ejection Pin, Spare Double-sided Tape</li></ul><figure class="kg-card kg-image-card kg-width-full"><img src="https://techbits.io/content/images/2023/04/switchbot-bt-unboxing-all-1.jpg" class="kg-image" alt="Review: SwitchBot Blind Tilt" loading="lazy" width="2000" height="493" srcset="https://techbits.io/content/images/size/w600/2023/04/switchbot-bt-unboxing-all-1.jpg 600w, https://techbits.io/content/images/size/w1000/2023/04/switchbot-bt-unboxing-all-1.jpg 1000w, https://techbits.io/content/images/size/w1600/2023/04/switchbot-bt-unboxing-all-1.jpg 1600w, https://techbits.io/content/images/size/w2400/2023/04/switchbot-bt-unboxing-all-1.jpg 2400w"></figure><h2 id="how-easy-was-installation">How Easy was Installation?</h2><p>I&apos;m not going to go into the whole process here, but I&apos;d recommend skimming through the process in my &apos;getting started&apos; post, linked below.</p><p>I took my time as I needed to take photos throughout, but the whole process didn&apos;t take long (I&apos;d estimate it took me 20 minutes). I didn&apos;t follow the manual exactly&#x2013;it advises you download the app first, then guides your installation showing the manual and an install video in-app&#x2013;instead I went ahead with the physical installation first. Had I watched the helpful video, I wouldn&apos;t have hesitated when it came to sticking the bits with 3M pads.</p><p>The included tools are simple and appropriate for the task: The included wand-measure tells you which size adapter to use, and the alignment card dictates where on the wand the adapter should be affixed.</p><h2 id="the-switchbot-app">The SwitchBot App</h2><p>My overall impression of the app is good. It&apos;s well designed, and if you were using it as a point from which to control your home devices, it would allow you to do this without being too invasive. My only point against this is the fact that one of the bottom tabs is a link to the <a href="https://switch-bot.com">SwitchBot store</a>... A link somewhere in the app would be fine, but if people are using the app, they&apos;ve already bought some devices, so this tab could certainly have been used for a much more appropriate option (an overview of schedules, perhaps?).</p><p>The UI of the Blind Tilt in particular is very well executed&#x2013;the background animation of the blind opening makes the experience feel very polished.</p><p>One area where I found the app to be a little confusing was when trying to set a timer for the Blind Tilt. It seems to re-use the code from the &apos;Schedule&apos; option, and prompts with &apos;At Time&apos;. The Hour &amp; Minute wheels run for up to 24 hours, so again, you get the impression that you&apos;re setting a one-off time for the blind to open/close, but once you&apos;ve set it, you realise that the timer has begun to count down. It&apos;s minor, and I&apos;m sure can be addressed.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F44D;</div><div class="kg-callout-text">SwitchBot have said that they&apos;ll fix this in the next app release.</div></div><p>On the subject of scheduling: The light-sensing capability is a nice idea to supplement a fixed schedule, but the values I see in the app don&apos;t ever seem to change. I&apos;ve reached out to SwitchBot to see if there&apos;s something I&apos;m missing.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F50C;</div><div class="kg-callout-text">I was missing something, and I think I still am...<br><br>I reached out to SwitchBot who said you can switch the data source for the BlindTilt, but despite checking for an app update and installing the latest firmware update, I don&apos;t have an option to do this. Perhaps it&apos;s an iOS thing?<br><br>When I connect the solar panel I <strong>do </strong>see light data, so not all is lost, but I was also told the sensor in the main housing should work.</div></div><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://techbits.io/content/images/2023/04/switchbot-app-light-data-source.png" class="kg-image" alt="Review: SwitchBot Blind Tilt" loading="lazy" width="1350" height="879" srcset="https://techbits.io/content/images/size/w600/2023/04/switchbot-app-light-data-source.png 600w, https://techbits.io/content/images/size/w1000/2023/04/switchbot-app-light-data-source.png 1000w, https://techbits.io/content/images/2023/04/switchbot-app-light-data-source.png 1350w" sizes="(min-width: 1200px) 1200px"><figcaption>The light sensing settings before connecting the solar panel, and after. No option to switch data source on iOS.</figcaption></figure><h2 id="blind-tilt-hub">Blind Tilt + Hub</h2><p>In my opinion, the Hub Mini tries to do too much. Being able to act as a relay between Bluetooth devices, but also acting as an infrared blaster means that to fully utilise the features, you&apos;ll most likely need a hub per room with IR-controlled devices. Because you might need multiple hubs, SwitchBot have designed a system where all of the hubs talk to the cloud and are managed from your SwitchBot account (meaning the app talks to their servers, rather that directly to the devices&#x2013;if you&apos;re out of Bluetooth range, anyway). It would&apos;ve been nice for all hubs to be aware of each other, allowing any to act as a main controller, but the specifics on the hub is outside of the scope of this review</p><p>The other concern with the Hub Mini is that once you&apos;ve added it, you can&apos;t disable remote control, even if you only wanted the IR blaster functionality. Even though by default, <em>cloud services</em> are disabled on each of the other attached devices like the Blind Tilt (SwitchBot defines cloud services to be Google Home, Alexa, IFTTT etc. - they don&apos;t include their own cloud within that definition).</p><p>If your plan is to use a Blind Tilt with something like an Amazon Echo, or Google Home device, then this isn&apos;t an issue, and would be required to function, but I guess my gripe is the fact the functionality can&apos;t be disabled.</p><h2 id="blind-tilt-home-assistant">Blind Tilt + Home Assistant</h2><p>Now this&#x2013;in my opinion&#x2013;is where things get interesting. I have long been sceptical of any home automation/control device which uses Bluetooth, partly thanks to the historic latency, battery and useability issues associated with the protocol.</p><p>When Bluetooth Proxies were added to ESPHome and Home Assistant towards the end of last year, I didn&apos;t pay too much attention, thinking I&apos;d never have a need to investigate, and that while the proxies might make things easier, you&apos;re still stuck with the inherent Bluetooth issues.</p><p>However, I was proved to be completely wrong! After digging out an esp32 from a drawer (bent IO pins and all) and configuring it as a proxy in ESPHome, the SwitchBot integration with Blind Tilt device instantly showed up in Home Assistant under available integrations. Once I paired and configured the device, it just <em>worked</em>. Throughout my testing, there wasn&apos;t a single occasion where the device didn&apos;t respond, and the response time was pretty low throughout (only a couple of times did I have to wait more than a couple of seconds for it to start opening/closing).</p><p>I&apos;ve no doubt that this seamless functionality is down to the Bluetooth Low Energy 5.0 radio, but this is where one of my concerns around security comes from. BLE has &apos;advertising&apos; channels, where it can broadcast data without needing an active connection between the device and the receiver. This seems ideal for a device containing multiple sensors, as it can keep broadcasting updated information without having to use more power than necessary. The concerning side of this is that, after more testing, <strong>I was able to add the device to Home Assistant without pairing the device at all</strong>. I should clarify: I couldn&apos;t control the device without pairing it&#x2013;it just didn&apos;t respond&#x2013;but I had access to all of the sensor information (light level, open/close position, battery level). You might not mind your neighbours being able to see devices like this pop up in their own smart home system, but it&apos;s definitely a good reminder of the benefits &amp; limitations of the protocols being used.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F6E1;&#xFE0F;</div><div class="kg-callout-text">I asked SwitchBot about this, and although they didn&apos;t seem sure, they suggested creating an issue on their <a href="https://github.com/OpenWonderLabs">GitHub profile</a>. I&apos;ve asked for clarification as to whether this is something they are working on.<br><br>I also double-checked this behaviour and found the same thing happens with the SwitchBot Meter Plus and the SwitchBot Bot.<br><br>The Meter Plus has a Bluetooth pairing icon appear when you hold a button on the back, so I have no idea why I could pair it without this being active, and the Bot I managed to pair <strong>and control </strong>it without putting it into pairing mode.</div></div><p>Security concerns aside (for now), after I added the device to Home Assistant, the functionality was good. The only minor wrinkle was the default behaviour of &apos;cover&apos; devices in Home Assistant where it expects only two states: Open and closed.</p><p>Because the Blind Tilt can close up and close down, it means that 0% and 100% are closed, and 50% is open. This messes with the logic a bit, but with a combination of using a template cover (more details on my Home Assistant-specific post here) to ensure it always closes one way and calls to the service, you can end up with the control functionality you want. This is more of a limitation in Home Assistant, and the information you need is also listed on the <a href="https://www.home-assistant.io/integrations/switchbot/#simple-cover-template-entity">SwitchBot Home Assistant integration page</a>.</p><h2 id="performance">Performance</h2><p>The Blind Tilt always responded when I manually set the blind to open or close. There was an occasional delay, as my phone or the hub had to communicate with the device (more expected with the hub being controlled via the internet), but nothing that was unreasonable. Performance from Home Assistant always seemed to be better (the Bluetooth proxy I was using was of the Wi-Fi kind too, not the recommended Ethernet variety, so it seemed like a real-world test).</p><p>As mentioned, the battery life appears to live up to SwitchBot&apos;s claim of 10 months (of course, this is extrapolated). Ignoring a potentially faulty battery, I doubt anyone will experience problems with battery life.</p><p>I thought I&apos;d prefer it when I enabled Silent Mode, but I don&apos;t think it made much difference. I eventually convinced myself that it was indeed a bit quieter, but that could&apos;ve been down to the slightly slower motor speed (therefore lower pitched sound), but I just got used to the noise and it didn&apos;t bother me at all.</p><p>I did experience the geared coupling slipping inside the wand casing at one point (causing an alarming groaning noise and my blind tried to close further than 100%). I put this down to not quite aligning things, although it did all appear to be correct. After re-seating the wand coupling and recalibrating, everything worked fine.</p><h2 id="how-much-does-it-cost">How Much Does it Cost?</h2><p>In the UK, the Blind Tilt retails for &#xA3;69.99 ($69.99 in the US) via the SwitchBot website, or through Amazon. Both seem to offer 15-20% discounts (at the time of writing, Amazon is offering 15% off the price of one device and SwitchBot offers 20% off when you buy at least two devices).</p><p>Given the contents of the package and that the solar panel is included, the price doesn&apos;t seem excessively high. It would be expensive to retrofit an entire house, but significantly less to do that than replace all blinds with motorised equivalents.</p><p>The design is fairly simple and compact, so it&apos;ll blend in fairly well in most environments. The build quality feels quite good, so perhaps goes some way toward justifying the cost, but I do wish that all of the regulatory and product information was hidden away inside the wand casing/latch. It seems silly to say after generally praising the device, but if I had to mount the device backwards (which you may depending on the layout of your blind), I would&apos;ve hated seeing the obvious grey text. There surely has to be a better place to put this information, or a more subtle way of including it.</p><h2 id="summing-up">Summing Up</h2><p>Upon reflection, the Blind Tilt might suit a few different target groups:</p><ul><li>People wanting to create fixed schedules for blind opening and closing. Maybe with a fancy light-sensing rule thrown in. This group could buy just the Blind Tilt and achieve everything right out of the box.</li><li>People wanting to control their blinds from a service that utilises cloud-based connections, such as Google Home, Amazon Echo (even Samsung SmartThings seems to be supported). This group can buy one or more hubs to accompany the Blind Tilts, and with little effort, integrate their blinds into an existing ecosystem.</li><li>People wanting to control the device directly from Home Assistant without needing cloud-based services or proprietary hubs. This group needs just the Blind Tilt if they already have Bluetooth on the Home Assistant server/Raspberry Pi, or some low cost esp32 devices otherwise.</li></ul><p>It probably goes without saying that I fall into the third group, and given that, my view on the best way to achieve home automation/home control can be a little narrow. I expected option 3 to be the only method I&apos;d recommend, but given the capabilities of the device, option 1 seems like a really solid choice too.</p><p>I&apos;m still not convinced on cloud-based services for home device control, so I find option 2 harder to recommend, but if you already control multiple devices/platforms via the cloud, I would recommend the Blind Tilt as you can still manually control the blind (which some other retrofit devices leave you unable to do).</p><p>For all three options, the big takeaway is data privacy, and the fact that with a Bluetooth LE device like this, you&apos;re broadcasting a bunch of sensor data to anyone who might be listening. I&apos;m still not sure how I feel about this particular example, as any prolonged data gathering might enable someone to make assumptions like &apos;this person is at home&apos;, &apos;this person is on holiday&apos;. However, that&apos;s an extreme example, and the BLE benefits could outweigh these concerns (assuming SwitchBot pushes some firmware to address these issues).</p><h3 id="pros">Pros</h3><ul><li>Doesn&apos;t interfere with original control stick/wand</li><li>Clean unobtrusive design</li><li>Long lasting battery + included solar panel</li><li>Good native Home Assistant support</li></ul><h3 id="cons">Cons</h3><ul><li>Confusion over internal light sensor</li><li>Clean design...unless you have to install it backwards</li><li>No option to disable SwitchBot&apos;s &quot;cloud&quot;</li><li>Very poor Bluetooth security</li></ul><h2 id="rating-recommendation">Rating &amp; Recommendation</h2><p>As it stands, I wouldn&apos;t recommend the Blind Tilt. The hardware is good and feels very well made, battery life is long, control is responsive and the Home Assistant integration is very good, but the use of BLE advertising/broadcast for data is quite a big pill to swallow.</p><p>If you&apos;re using the app, you&apos;d never notice, because it prompts you to put the device into pairing mode, but the issue is that other people might be using other devices to read from your devices.</p><p>If you&apos;re not bothered about other people potentially getting your sensor data, then my other concerns are pretty minor, the biggest being the internal light sensor not working. Maybe then the risk is worth it for the benefit it provides&#x2013;it&apos;s certainly the best concept I&apos;ve ever seen for a retrofit tilt blind solution.</p><p>If you think it is worth it, SwitchBot provided a 15% off code&#x2013;<strong>15TECHBIT&#x2013;</strong>valid on <a href="https://switch-bot.com">their store</a> until the 12th May.</p><p>I&apos;m going to keep testing the Bluetooth security and will update when I hear more from SwitchBot. Hopefully they&apos;ll commit to securing the devices (at which point I&apos;d wholeheartedly recommend the product) but for now it&apos;s a<strong> rating of 3/5.</strong></p>]]></content:encoded></item><item><title><![CDATA[Setup SwitchBot Blind Tilt with Home Assistant]]></title><description><![CDATA[This post will show you how to add a SwitchBot Blind Tilt to Home Assistant, as well as how to fix the blind cover behaviour.]]></description><link>https://techbits.io/setup-switchbot-blind-tilt-with-home-assistant/</link><guid isPermaLink="false">642067d0956e61040293a6d5</guid><category><![CDATA[Home Assistant]]></category><category><![CDATA[Smart Home]]></category><category><![CDATA[SwitchBot]]></category><dc:creator><![CDATA[techbits]]></dc:creator><pubDate>Sun, 23 Apr 2023 13:15:26 GMT</pubDate><media:content url="https://techbits.io/content/images/2023/04/switchbot-homeassistant-header.gif" medium="image"/><content:encoded><![CDATA[<img src="https://techbits.io/content/images/2023/04/switchbot-homeassistant-header.gif" alt="Setup SwitchBot Blind Tilt with Home Assistant"><p>Following the recent launch of the Blind Tilt, <a href="https://switch-bot.com">SwitchBot</a> got in touch asking if I wanted to test a couple of units with a view to reviewing the product. As part of that, I&apos;ve written a walk-through with some of my findings on the initial installation of the Blind Tilt which you can find <a href="https://techbits.io/getting-started-with-switchbot-blind-tilt-and-hub-mini/">here</a>.</p><p>This guide shows how you can get the BlindTilt unit working with Home Assistant, as well as a workaround to get the behaviour working reliably.</p><p>It should also be noted that the process below is just as applicable to any other supported SwitchBot devices (only without the specific custom cover for the BlindTilt).</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2139;&#xFE0F;</div><div class="kg-callout-text">If you already have Bluetooth enabled in Home Assistant, you&apos;re good to go. If not, check out <a href="https://techbits.io/bluetooth-proxy-home-assistant/">this</a> post on creating a Bluetooth Proxy with ESPHome.</div></div><h2 id="add-the-integration">Add the Integration</h2><p>Once I had a Bluetooth proxy running on an esp32 board (thanks to ESPHome), the SwitchBot Blind Tilt instantly showed up in Home Assistant under &apos;Integrations&apos;:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://techbits.io/content/images/2023/03/integrations-discovered-1.gif" class="kg-image" alt="Setup SwitchBot Blind Tilt with Home Assistant" loading="lazy" width="1000" height="358" srcset="https://techbits.io/content/images/size/w600/2023/03/integrations-discovered-1.gif 600w, https://techbits.io/content/images/2023/03/integrations-discovered-1.gif 1000w"></figure><p>To pair the device, press and hold the pairing button on the bottom of the Blind Tilt for 2 seconds (until the white light flashes). Now start the Home Assistant setup process by clicking &apos;<em>CONFIGURE</em>&apos; (or if it doesn&apos;t show up under discovered items, click <em>Add Integration</em> in the bottom right, search for and choose SwitchBot, and then follow the prompts.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x2757;</div><div class="kg-callout-text">The Blind Tilt will add to Home Assistant whether you enable pairing mode on the device itself or not. Without pairing mode, you won&apos;t be able to control the device, but you will see the entities (including the battery %, luminance level). This means anyone else in the vicinity could also see this information if they happened to be using Home Assistant with BLE.</div></div><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/03/switchbot-blind-tilt-add.gif" class="kg-image" alt="Setup SwitchBot Blind Tilt with Home Assistant" loading="lazy" width="1570" height="568" srcset="https://techbits.io/content/images/size/w600/2023/03/switchbot-blind-tilt-add.gif 600w, https://techbits.io/content/images/size/w1000/2023/03/switchbot-blind-tilt-add.gif 1000w, https://techbits.io/content/images/2023/03/switchbot-blind-tilt-add.gif 1570w" sizes="(min-width: 720px) 720px"></figure><p>Once added, aside from the control cover entity, you&apos;ll see 2 sensors (Light level, Battery) and 1 binary sensor (Calibration). If Calibration is showing as Off, try recalibrating it using the SwitchBot mobile app.</p><p>The control cover is a bit odd. In the SwitchBot app, the control makes sense. Slide up to &apos;close up&apos;, halfway down to fully open the blind, and slide down to &apos;close down&apos;.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/03/closeup-open-closedown.gif" class="kg-image" alt="Setup SwitchBot Blind Tilt with Home Assistant" loading="lazy" width="1100" height="716" srcset="https://techbits.io/content/images/size/w600/2023/03/closeup-open-closedown.gif 600w, https://techbits.io/content/images/size/w1000/2023/03/closeup-open-closedown.gif 1000w, https://techbits.io/content/images/2023/03/closeup-open-closedown.gif 1100w" sizes="(min-width: 720px) 720px"></figure><p>In Home Assistant it&apos;s not quite as obvious... The default cover control expects 0 to be closed and 100 to be open, but the open/close service calls do seem to understand that open is 50 (or close to it, depending on the calibration) and 0 or 100 is closed.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/03/coveropen1.gif" class="kg-image" alt="Setup SwitchBot Blind Tilt with Home Assistant" loading="lazy" width="1100" height="274" srcset="https://techbits.io/content/images/size/w600/2023/03/coveropen1.gif 600w, https://techbits.io/content/images/size/w1000/2023/03/coveropen1.gif 1000w, https://techbits.io/content/images/2023/03/coveropen1.gif 1100w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/03/coveropen2.gif" class="kg-image" alt="Setup SwitchBot Blind Tilt with Home Assistant" loading="lazy" width="1100" height="274" srcset="https://techbits.io/content/images/size/w600/2023/03/coveropen2.gif 600w, https://techbits.io/content/images/size/w1000/2023/03/coveropen2.gif 1000w, https://techbits.io/content/images/2023/03/coveropen2.gif 1100w" sizes="(min-width: 720px) 720px"></figure><p>The &apos;close&apos; action will move to 0 or 100, whichever is closer. The problem with this is that if it closes to 100, the &apos;open&apos; action then can&apos;t be selected because Home Assistant expects 100 to be open.</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/03/coveropen3.gif" class="kg-image" alt="Setup SwitchBot Blind Tilt with Home Assistant" loading="lazy" width="600" height="239" srcset="https://techbits.io/content/images/2023/03/coveropen3.gif 600w"></figure><p>Calling the <code>cover.open_cover_tilt</code> service <em>will </em>open the blind, so as confusing as this is, I think avoiding the default cover in lieu of open/close buttons for these devices will mask any confusion.</p><h2 id="create-a-template-cover">Create a Template Cover</h2><p>Looking through some Github PRs/conversations, I found <a href="https://github.com/home-assistant/core/pull/86591#issuecomment-1409575103">this post</a> from <a href="https://github.com/BelowAverageDev">BelowAverageDev</a>:</p><blockquote>The way the blinds operate with 50%=open conflicts with the way covers are expected to behave. For example, when exposed to google home, it assumes the blinds are at 100% when open, but they are actually at <code>tilt=50</code>. Because of this, opening to 99% will result in the blinds closing up to <code>tilt=99</code>, but opening to 100% results in an open call setting <code>tilt=50</code>.</blockquote><blockquote>This can be worked around by creating a <a href="https://www.home-assistant.io/integrations/cover.template/" rel="nofollow">cover template</a> and adding some math to scale and offset tilt values in service calls. However, this has to be done in yaml, and it can be daunting for those without any experience writing HA yaml/programming to do this (without a step-by-step guide). Owners can decide if this is acceptable.</blockquote><p>They also included the following example that will create a new cover entity to bypass the above issues. The limitation is that it will always close down (or up if you set <code>tilt_position: 100</code>), but the benefit is that the <em>open </em>and <em>close </em>actions will always behave as you expect them to.</p><pre><code class="language-yaml"># Example by Github user BelowAverageDev

example_blinds:
  device_class: blind
  friendly_name: Example Blinds (Simple Down)
  open_cover:
    service: cover.set_cover_tilt_position
    data:
      tilt_position: 50
    target:
      entity_id: cover.example_blinds
  close_cover:
    service: cover.set_cover_tilt_position
    data:
      tilt_position: 0
    target:
      entity_id: cover.example_blinds
  position_template: &gt;
    {{ int(states.cover.example_blinds.attributes.current_tilt_position)*2 }}
  set_cover_position:
    service: cover.set_cover_tilt_position
    data:
      tilt_position: &quot;{{position/2}}&quot;
    target:
      entity_id: cover.example_blinds
</code></pre><p>To use this example, change the first &apos;example_blinds&apos; line to what you want your new cover to be called, then find and replace all other instances of <code>cover.example_blinds</code> with your device entity. Here is a working example:</p><pre><code class="language-yaml">cover:
  - platform: template
    covers:
        blind_tilt_c5c1_tmpl:
          device_class: blind
          friendly_name: Example Blind
          open_cover:
            service: cover.set_cover_tilt_position
            data:
              tilt_position: 50
            target:
              entity_id: cover.blind_tilt_c5c1
          close_cover:
            service: cover.set_cover_tilt_position
            data:
              tilt_position: 0
            target:
              entity_id: cover.blind_tilt_c5c1
          position_template: &gt;
            {{ int(states.cover.blind_tilt_c5c1.attributes.current_tilt_position)*2 }}
          set_cover_position:
            service: cover.set_cover_tilt_position
            data:
              tilt_position: &quot;{{position/2}}&quot;
            target:
              entity_id: cover.blind_tilt_c5c1</code></pre><p>And once you reload your configuration, you&apos;ll have a working cover entity:</p><figure class="kg-card kg-image-card"><img src="https://techbits.io/content/images/2023/03/covertemplate.gif" class="kg-image" alt="Setup SwitchBot Blind Tilt with Home Assistant" loading="lazy"></figure><p>Once you&apos;ve added this, you can still call the <code>cover.set_cover_tilt_position</code> service with a % value. You might have a button that uses this to set a slight tilt up to block the sun&apos;s glare (or better, combine weather forecast, time of year, luminance value from the blind itself so automatically call it...).</p><p>This cover template workaround is a bit frustrating but seems to work much more reliably than the default. In conjunction with creating some other custom presets, it&apos;s probably good enough until SwitchBot can improve the functionality (or documentation, at the very least).</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">Edit: It looks like BelowAverageDev <a href="https://github.com/home-assistant/home-assistant.io/commit/4e61a273bcd7ef0ef6a601875439dd7f1abaf737?diff=split">committed</a> the same example to the <a href="https://www.home-assistant.io/integrations/switchbot/">SwitchBot integration</a> page on the Home Assistant website, so I stand corrected.</div></div><h2 id="adding-multiple-blind-tilts">Adding Multiple Blind Tilts</h2><p>Adding a second device is as simple as the first. Reading the official SwitchBot <a href="https://www.home-assistant.io/integrations/switchbot/">integration instructions</a> made me think it would be more complicated (it says about making a note of the Bluetooth MAC address) but in reality, you put the device into pairing mode, add the new SwitchBot device, and it shows up. The default name has the last 4 characters of the BT MAC address appended (as opposed to the SwitchBot iOS app with appends the last 2 characters of the MAC address).</p><p>Basically: If you&apos;re installing and adding one device at a time, you won&apos;t need to worry. Maybe knowing the MAC address of the device in each location may help with future troubleshooting...</p><h2 id="what-next">What Next?</h2><p>Adding the Blind Tilt to Home Assistant adds a whole world of extra possibilities for creating automations that the standalone SwitchBot app can&apos;t compete with. The BlindTilt also adds a potentially useful sensor in the form of the light level meter. Making the blind partially close when the TV is on, the sun is low and the light level is over a certain threshold used to be a pipe-dream, but no longer!</p><p>Alternatively, you can add any of the other supported SwitchBot devices using the same method as above. As a side note, this was my first experience using Bluetooth proxies, and I was pleasantly surprised at how responsive and reliable the control was.</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4B8;</div><div class="kg-callout-text">SwitchBot has provided a 15% off code&#x2013;<strong>15TECHBIT</strong>&#x2013;for <a href="https://switch-bot.com">their store</a> which is valid until the 12th May.</div></div><p>If I&apos;ve missed anything, or if you want to share a cool blind/curtain automation, please leave a comment or send me a message at <a href="https://sudo.cat/@techbits">@techbits@sudo.cat</a> or <a href="https://twitter.com/techbitsio">@techbitsio</a>.</p>]]></content:encoded></item></channel></rss>