<?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"><channel><title><![CDATA[CursorBeat]]></title><description><![CDATA[Blog of CursorBeat.dev]]></description><link>https://blog.cursorbeat.dev</link><generator>GatsbyJS</generator><lastBuildDate>Thu, 28 Mar 2024 00:13:05 GMT</lastBuildDate><copyright><![CDATA[Copyright © 2020 Cursurbeat]]></copyright><language><![CDATA[en-en]]></language><item><title><![CDATA[Maximizing Control Over Your Internet Connection]]></title><description><![CDATA[In Germany, fast and high-quality internet is still rare due to lacking infrastructure. As a private customer, it's challenging to get a…]]></description><link>https://blog.cursorbeat.dev/tutorials/CustomFiberHardware</link><guid isPermaLink="false">https://blog.cursorbeat.dev/tutorials/CustomFiberHardware</guid><pubDate>Sun, 18 Feb 2024 07:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In Germany, fast and high-quality internet is still rare due to lacking infrastructure. As a private customer, it&amp;#x27;s challenging to get a full internet connection with fixed IPv4 and IPv6 addresses, as well as reverse DNS PTR records. While only a few providers like Vodafone offer such things, other providers require more complicated solutions to do so. Unfortunately, Telekom, a provider of fiber optic connections in Germany, does not offer these options for private customers.&lt;/p&gt;&lt;p&gt;To bypass restrictions, it&amp;#x27;s advisable to use your own hardware. A VPN with a fixed IP endpoint and reply-to gateway configurations can be helpful. Although Telekom offers a solid modem with the &amp;#x27;Glasfaser-Modem 2,&amp;#x27; which in my case allows the use of custom hardware, but my goal was maximum control over the hardware I operate.&lt;/p&gt;&lt;h1&gt;Hardware&lt;/h1&gt;&lt;p&gt;A separate modem is recommended for an advanced setup.&lt;/p&gt;&lt;h2&gt;Fiber Optic Modem - Telekom Standard&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Modem: &lt;a href=&quot;https://www.telekom.de/zuhause/geraete-und-zubehoer/wlan-und-router/glasfaser-modem-2&quot;&gt;Telekom Glasfaser-Modem 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;SFP Module: &lt;a href=&quot;https://geschaeftskunden.telekom.de/internet-dsl/produkt/digitalisierungsbox-glasfasermodem-mieten&quot;&gt;Digitalisierungsbox Glasfasermodem&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Alternatives&lt;/h2&gt;&lt;p&gt;Various options are available, including the following that I found suitable for me.&lt;/p&gt;&lt;h3&gt;Firewall&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;OPNSense Deciso Hardware e.g., Dec740: &lt;a href=&quot;https://shop.opnsense.com/product/dec740-opnsense-desktop-security-appliance/&quot;&gt;OPNSense Desktop Security Appliance&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Firewall + Accesspoint&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Banana-PI BPI-R3 or R4: &lt;a href=&quot;https://wiki.banana-pi.org/Banana_Pi_BPI-R3&quot;&gt;Banana Pi BPI-R3&lt;/a&gt;&lt;ul&gt;&lt;li&gt;I use it just as a dedicated access point with Open-WRT, but could also act as firewall.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;GPON ONU ONT Fiber Module&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;GPON SFP Transceiver Module with DDM - GPON SFP ONU Stick with Mac: &lt;a href=&quot;https://www.fs.com/de/products/133619.html&quot;&gt;FS.com GPON SFP ONU Stick&lt;/a&gt;&lt;ul&gt;&lt;li&gt;Customized versions available as 1:1 clone of existing hardware with brand, MAC address, serial number, and device number pre-programmed&lt;/li&gt;&lt;li&gt;It is a nice module that is suitable for many modifications - &lt;a href=&quot;https://hack-gpon.org/ont-fs-com-gpon-onu-stick-with-mac/&quot;&gt;Doku&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;More alternatives and documentation: &lt;a href=&quot;https://hack-gpon.org&quot;&gt;Hack GPON&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As the GPON module has a temperature range of -40 °C to 85 °C and gets and stays hot during operation, I recommend a separate housing, e.g. &amp;quot;TP-Link Gigabit SFP Media Converter MC220L&amp;quot;.
Despite the temperatures, the passive cooling is sufficient in my case even in a closed multimedia distribution box inside of a wall.&lt;/p&gt;&lt;h3&gt;GPON Configuration&lt;/h3&gt;&lt;p&gt;To configure the GPON module, connect via SSH with a manual IP address in the same subnet. (The module does not require connected fiber.)&lt;/p&gt;&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;span class=&quot;token function&quot;&gt;ssh&lt;/span&gt; ONTUSER@192.168.1.10 &lt;span class=&quot;token parameter variable&quot;&gt;-oKexAlgorithms&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;diffie-hellman-group14-sha1 &lt;span class=&quot;token parameter variable&quot;&gt;-oHostKeyAlgorithms&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;ssh-rsa&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The default password is &lt;code class=&quot;language-text&quot;&gt;7sp!lwUBz1&lt;/code&gt;.&lt;/p&gt;&lt;h3&gt;Configuration Steps&lt;/h3&gt;&lt;h4&gt;1. PLOAM Password&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;FTTH 1.7&lt;ul&gt;&lt;li&gt;Ask the technical hotline&lt;/li&gt;&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;sfp_i2c -i11 -s &amp;quot;1234567890&amp;quot;&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;FTTH 2.0 - new &amp;quot;GigabitGeschäftsbereich&amp;quot;&lt;ul&gt;&lt;li&gt;No password is required&lt;/li&gt;&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;sfp_i2c -i11 -s &amp;quot;&amp;quot;&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;2. Set Serialnumber&lt;/h4&gt;&lt;p&gt;The serial number here &lt;code class=&quot;language-text&quot;&gt;ABCD12345678&lt;/code&gt; can be a fictitious one or correspond to a previous module and must be communicated to the technical service together with the fiber optic ID if changed or new:&lt;/p&gt;&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;sfp_i2c -i 8 -s &amp;quot;ABCD12345678“&lt;/code&gt;
&lt;code class=&quot;language-text&quot;&gt;uci set sfp_eeprom.default.serial_no=ABCD12345678&lt;/code&gt;
&lt;code class=&quot;language-text&quot;&gt;uci commit&lt;/code&gt;&lt;/p&gt;&lt;h4&gt;Create full clone&lt;/h4&gt;&lt;p&gt;I have not tested this example&lt;/p&gt;&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;set_serial_number HWTC956EABBA
uci &lt;span class=&quot;token builtin class-name&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;network.host.macaddr&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;98&lt;/span&gt;:3F:60:00:AB:BA 
uci commit &lt;span class=&quot;token assign-left variable&quot;&gt;network.host.macaddr&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;98&lt;/span&gt;:3F:60:00:AB:BA 
sfp_i2c &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-s&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;quot;HUWAWEI&amp;quot;&lt;/span&gt; 
sfp_i2c &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-s&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;quot;HG8010Hv6&amp;quot;&lt;/span&gt; 
sfp_i2c &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-s&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;quot;0001&amp;quot;&lt;/span&gt; 
sfp_i2c &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-s&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;quot;48575443956EABBA&amp;quot;&lt;/span&gt; 
sfp_i2c &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-s&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;quot;HWTC&amp;quot;&lt;/span&gt;
fw_setenv sgmii_mode
uci commit 
&lt;span class=&quot;token function&quot;&gt;reboot&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;Firewall / Router Config&lt;/h3&gt;&lt;p&gt;V-LAN and PPPoE configuration is required.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;VLAN = 7 &lt;/li&gt;&lt;li&gt;QoS = 0&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:800px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/f1de6779004fe3fc50fd2e1622bf3630/891be/OPNsense-TelekomVLAN7.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:53%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABYlAAAWJQFJUiTwAAABhElEQVQoz62SS24TQRRFe5emLWQZIUZsICzAC2AJRhCPYIBQou7q6vr2x4kjIeMY2/EndpiRCMIGDuqykMwsCgyObr2r0n2q9yp6+eIZz5/GxHGbVqvFkwPa7fYBMZ1Oh263G4jjmFdHRxwfv6Pf7zMYDOj1ekRlVXE+GuGLgiQVJEIEFZnEeY/zBa4ogtpQ77HOoY1BKhXUGI1zjkgIgcxzhkazuRyzW8y5WcxYTcZsphO2s2nQ3fxrYH35JXiNTi9GbCZjLqqS3FisMU1ghpCScyX5sZzxc7vi17ctt6sF35dz7nfX3N9cB6/hbr3kdn21v7O+4m614HNhyU4+7gOTNCXPc4TMKXWO+fCWsqyovKMqPKV3f9F4f/xwbkZgLc6o/ZOzLEMpjRQp+s1rSmeph2dUdf1g6rpmODyjKAqiJEnJlSITKebT+9DNe4937sG4A8JSlFJIKXFFhQkbezxRs+EmsCmaoVrbYB9NdHJ6Svg6UgYjBP9LoNYmzExr/V8CfwPEysNQF4l8UgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image&quot; alt=&quot;OPNsense VLAN configuration&quot; title=&quot;OPNsense VLAN configuration&quot; src=&quot;/static/f1de6779004fe3fc50fd2e1622bf3630/78d47/OPNsense-TelekomVLAN7.png&quot; srcSet=&quot;/static/f1de6779004fe3fc50fd2e1622bf3630/56d15/OPNsense-TelekomVLAN7.png 200w,/static/f1de6779004fe3fc50fd2e1622bf3630/d9f49/OPNsense-TelekomVLAN7.png 400w,/static/f1de6779004fe3fc50fd2e1622bf3630/78d47/OPNsense-TelekomVLAN7.png 800w,/static/f1de6779004fe3fc50fd2e1622bf3630/64756/OPNsense-TelekomVLAN7.png 1200w,/static/f1de6779004fe3fc50fd2e1622bf3630/42cbc/OPNsense-TelekomVLAN7.png 1600w,/static/f1de6779004fe3fc50fd2e1622bf3630/891be/OPNsense-TelekomVLAN7.png 2954w&quot; sizes=&quot;(max-width: 800px) 100vw, 800px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:800px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/17c85b316a96b7de998a5007fc6642f0/d7fb2/OPNsense-WAN-VLAN-Assignment.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:39.49999999999999%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAABs0lEQVQoz22Q24sSYRiH51/NA0HiTagsiKaxFRJ0U4t3XXXV1Uqe5uT3zXxzsFll1BFdrY26aCmotv6CJ+aDgqUuHt7D7+U9GU8enVKtVrlfucu90h2KpRKlUolyuXzLFovF/5JrlUqFQqFAr9fDOHvxnG73IU9POzzutHjQ6dBoNKjX65parcbJyQntdptWq/UPeb7b7dJsNun3+xiz2YwgCNhkW7LtlizLiOM5UTwnjmOiMCRJEpbLJWmaalarFev1+i9/4rzOMMdvGI3H2LZN3jzHtUykNSFUPlEUIYTAMk2UUohcdxykFDo/c12klIRBgO95GMIxmZqmbiiFYGpaSOGiPIkfBKggRPq+9oMwQnoepmVh2jauEPgq0FqOpxSGa00YDkd6s3zidDwi8xwOF3MOi0SzexuxS2KOy4TdYkEaRaS+YBP67C/mWrtMYpa+xLAnQ84HA8b52Y7DeHDO9SLi59WBm/eX3Fwd+H7c8+Pdjl8fP/AlnPLJes3Xw57rLNV8zlK+7TccY4UhXBvTtPR2npRYlqWtL8VtxAylAtxXfZyXz/T5Sgr9Go2UeJ7kNwAg6tuXTBQMAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image&quot; alt=&quot;OPNsense WAN VLAN assignment&quot; title=&quot;OPNsense WAN VLAN assignment&quot; src=&quot;/static/17c85b316a96b7de998a5007fc6642f0/78d47/OPNsense-WAN-VLAN-Assignment.png&quot; srcSet=&quot;/static/17c85b316a96b7de998a5007fc6642f0/56d15/OPNsense-WAN-VLAN-Assignment.png 200w,/static/17c85b316a96b7de998a5007fc6642f0/d9f49/OPNsense-WAN-VLAN-Assignment.png 400w,/static/17c85b316a96b7de998a5007fc6642f0/78d47/OPNsense-WAN-VLAN-Assignment.png 800w,/static/17c85b316a96b7de998a5007fc6642f0/64756/OPNsense-WAN-VLAN-Assignment.png 1200w,/static/17c85b316a96b7de998a5007fc6642f0/42cbc/OPNsense-WAN-VLAN-Assignment.png 1600w,/static/17c85b316a96b7de998a5007fc6642f0/d7fb2/OPNsense-WAN-VLAN-Assignment.png 2184w&quot; sizes=&quot;(max-width: 800px) 100vw, 800px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;Username / PPPoE: &amp;quot;Anschlusskennung&amp;quot;+&amp;quot;Zugangsnummer&amp;quot;+“0001&amp;quot;+&amp;quot;@t-online.de&amp;quot;
Password: &lt;code class=&quot;language-text&quot;&gt;12345678&lt;/code&gt; - yes really, this value is OK&lt;/p&gt;&lt;p&gt;The information can be taken from the letter with the access data from Telekom.&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:800px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/d9853b1f08752efb0e0631be4f6a5c5a/ead9f/OPNsense-WAN-PPPoE-Telekom.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:133%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAbCAYAAAB836/YAAAACXBIWXMAABYlAAAWJQFJUiTwAAAClUlEQVRIx41UTXObMBTkx/WUNJPJxOdm2h76E/sXeuix04NzyIzT2NiAQQKBwMB29sXCMhAnzOxI6GO1T2+fgu9fH/Dj2wO+3HzC55sbXF1dneH6+vrNsbu7OywWC8H9/T1ub28RrJ7/IYljGJUiyxSeVys8Pj5iuVxitVohjmNEUfQh7HY7BNF2A2trdD3Q9z3quobWGkVRoOs6GWPr+u8hiMM1NmEIrRXSNEWSJNB5LsSHwwFt2yLbG5kzxgxjrh0jiMIX7NMUeZ4LWZZEKM2rOrfIFBWq6hVN05zNTQi362eE4RZKZYjiGCrZweQa7XETN5vSiOJLRANhstsgimI5fb/fQ2cpimPIbpG1driCMSaE8XaNOE5QlqXcExNCKKUkvDmSSxCFL+s1TFGI0nS3gUoTpGk2hJln9buhnpKyDWUz1TAxzDYtwz7HaAXa6q1kOEs5BEpr+B9DZ7gMm3fHTZV9zXDnJcpZZxIyN3MBP1FjcuRaoa6b4VQupMK5ECcKebLvdFtoFFqjLCu0IxN/KMt+uFJ6pREi98+PyeFVuCT5mJSe6/gh17Y6U8ZwSebCvqQ4OCkhMVAVGlplkmWXFJKxjn3QCa71Dwr80NhykVSM1sOp3DA2uRsbjw+EjpTKSOhn1T0MVOqHPmvssUJePlV23ckWLmTOuXm/1i8SWlOgyPWZChfWnLE/RMj30N847l+s5XGWaexcZaisRXckYrZ5t4R7tS8a21dYl0eFnmkbSUQ9W25+UYix55JCJb6/bN1IKXLMvUSu7+DUTu/QWrGIvNK2QtMD6vdPZH9/oWxa2OPcGM5SU8LjBCGLmwPypz8oNk/St3ae0OFEyDvgQ8Dni6WXpdIXI/dA0/aoPSVv4T+7+BfflVxBUgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image&quot; alt=&quot;OPNsense WAN PPPoE for Telekom&quot; title=&quot;OPNsense WAN PPPoE for Telekom&quot; src=&quot;/static/d9853b1f08752efb0e0631be4f6a5c5a/78d47/OPNsense-WAN-PPPoE-Telekom.png&quot; srcSet=&quot;/static/d9853b1f08752efb0e0631be4f6a5c5a/56d15/OPNsense-WAN-PPPoE-Telekom.png 200w,/static/d9853b1f08752efb0e0631be4f6a5c5a/d9f49/OPNsense-WAN-PPPoE-Telekom.png 400w,/static/d9853b1f08752efb0e0631be4f6a5c5a/78d47/OPNsense-WAN-PPPoE-Telekom.png 800w,/static/d9853b1f08752efb0e0631be4f6a5c5a/64756/OPNsense-WAN-PPPoE-Telekom.png 1200w,/static/d9853b1f08752efb0e0631be4f6a5c5a/42cbc/OPNsense-WAN-PPPoE-Telekom.png 1600w,/static/d9853b1f08752efb0e0631be4f6a5c5a/ead9f/OPNsense-WAN-PPPoE-Telekom.png 2334w&quot; sizes=&quot;(max-width: 800px) 100vw, 800px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;Useful information for Telekom customers&lt;/h2&gt;&lt;h3&gt;Transitional solution for new fiber optic connections&lt;/h3&gt;&lt;p&gt;Telekom offers a transitional solution &amp;quot;Sofort-LTE&amp;quot; for completely new fiber optic connections via the owner management &amp;quot;Bauherrenservice&amp;quot;. This is a relatively solid LTE-based Internet access with 30 to 10 mbit.&lt;/p&gt;&lt;h3&gt;Telekom hotlines&lt;/h3&gt;&lt;h4&gt;Phone numbers&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Technology: 08003301000&lt;/li&gt;&lt;li&gt;Owner management: 08003304174&lt;/li&gt;&lt;li&gt;Owner service: +498003301903 / +4908002266100 / +498007733888&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Information on authentication&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Order number (&lt;em&gt;POM&lt;/em&gt; = new connection / PSM = existing connection)&lt;/li&gt;&lt;li&gt;Customer number&lt;/li&gt;&lt;li&gt;Own landline telephone number from Telekom&lt;/li&gt;&lt;li&gt;IBAN last 6 digits&lt;/li&gt;&lt;li&gt;Address&lt;/li&gt;&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[macOS - External Keyboard keys are swapped (solved)]]></title><description><![CDATA[Issue My case: <  and  ^  keys are swapped <  Key (right of SHIFT) ^  Key (left of 1) This is because macOS set the wrong keyboard type (ISO…]]></description><link>https://blog.cursorbeat.dev/blog/MacKeyboardTypeFix</link><guid isPermaLink="false">https://blog.cursorbeat.dev/blog/MacKeyboardTypeFix</guid><pubDate>Sat, 30 Dec 2023 07:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Issue&lt;/h2&gt;&lt;h3&gt;My case:&lt;/h3&gt;&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;lt;&lt;/code&gt; and &lt;code class=&quot;language-text&quot;&gt;^&lt;/code&gt; keys are swapped&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;lt;&lt;/code&gt; Key (right of SHIFT)&lt;/li&gt;&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;^&lt;/code&gt; Key (left of 1)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This is because macOS set the wrong keyboard type (ISO, ANSI, JIS, ..) even if the config wizard shows the right result.&lt;/p&gt;&lt;h3&gt;On QMK based keyboards:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;KC_NUBS&lt;ul&gt;&lt;li&gt;ISO:  &lt;code class=&quot;language-text&quot;&gt;&amp;lt; &amp;gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;ANSI: Non-US &lt;code class=&quot;language-text&quot;&gt;\&lt;/code&gt; and &lt;code class=&quot;language-text&quot;&gt;|&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;KC_GRV&lt;ul&gt;&lt;li&gt;ISO: &lt;code class=&quot;language-text&quot;&gt;^ °&lt;/code&gt;&lt;/li&gt;&lt;li&gt;ANSI: &lt;code class=&quot;language-text&quot;&gt;~ ´&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;macOS default settings&lt;/h3&gt;&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;System Settings --&amp;gt; Keyboard --&amp;gt; Change Keyboard Type --&amp;gt; go through the Wizard --&amp;gt; Done.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But for me and a lot of others with external keyboards not from Apple this won&amp;#x27;t work. In the past I fixed this issue with &lt;a href=&quot;https://karabiner-elements.pqrs.org&quot;&gt;Karabiner-Elements&lt;/a&gt; , but this is more like a &lt;a href=&quot;https://apple.stackexchange.com/questions/227294/change-mac-keyboard-identifier-after-keyboard-replacement&quot;&gt;workaround&lt;/a&gt; as a proper fix. A further option would be to remap the keyboard key&amp;#x27;s on QMK or VIA Keyboards, but this is crazy and won&amp;#x27;t work in combination with other operating systems. &lt;/p&gt;&lt;h2&gt;Easy Fix&lt;/h2&gt;&lt;p&gt;Enforce macOS to indentify the keyboard type without any previous knowledge:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;sudo rm /Library/Preferences/com.apple.keyboardtype.plist&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Remove both keyboard and mouse from the USB ports on the monitor/USB hub.&lt;/li&gt;&lt;li&gt;Reboot&lt;/li&gt;&lt;/ol&gt;&lt;h2&gt;If still not working&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;sudo plutil -convert xml1 /Library/Preferences/com.apple.keyboardtype.plist&lt;/code&gt;&lt;/li&gt;&lt;li&gt;text edit e.g. &lt;code class=&quot;language-text&quot;&gt;sudo nvim /Library/Preferences/com.apple.keyboardtype.plist&lt;/code&gt;&lt;ol&gt;&lt;li&gt;change type 43 to 41 (or 43 if there is already a 41 - but change back after reboot.)&lt;/li&gt;&lt;li&gt;change all - may after restart new ones getting in&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;sudo plutil -convert binary1 /Library/Preferences/com.apple.keyboardtype.plist&lt;/code&gt; (Converting back to binary is optional - reboot will also fix this.)&lt;/li&gt;&lt;li&gt;Reboot - with unplugged keyboard.&lt;/li&gt;&lt;li&gt;Repeat until the macOS keyboard detection tool doesn&amp;#x27;t detect new keyboards after login - .plist get&amp;#x27;s extended each time.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;In my case this was the result after a few restarts and changes:&lt;/p&gt;&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;xml&quot;&gt;&lt;pre class=&quot;language-xml&quot;&gt;&lt;code class=&quot;language-xml&quot;&gt;&lt;span class=&quot;token prolog&quot;&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;/span&gt;
&lt;span class=&quot;token doctype&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;!&lt;/span&gt;&lt;span class=&quot;token doctype-tag&quot;&gt;DOCTYPE&lt;/span&gt; &lt;span class=&quot;token name&quot;&gt;plist&lt;/span&gt; &lt;span class=&quot;token name&quot;&gt;PUBLIC&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;plist&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;quot;&lt;/span&gt;1.0&lt;span class=&quot;token punctuation&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;dict&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;keyboardtype&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;dict&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;1031-4176-0&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;integer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;41&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;integer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;5-41219-0&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;integer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;41&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;integer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;50504-1133-0&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;integer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;41&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;integer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;6-41219-0&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
		&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;integer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;41&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;integer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;dict&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;dict&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;plist&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This should be the result:
&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:800px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/7c28ca485bf698854f5e1b7a1d3a3720/82af4/KeyboardTypeFixed-ISO-DE.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:116.5%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAXCAYAAAALHW+jAAAACXBIWXMAABYlAAAWJQFJUiTwAAADuUlEQVQ4y62Uf28iRRjH96R3LWgv8RX5DnwFNjG+AF+AxlfhH0YTe9Cj0JoW7sqVssP82Nllgf6QBUr0YnqlC6TG5KhtbfnVXR7zzAJt9Rr/8Cb5ZGaW5TMzD8xXAwBN3371yba+/sWrXPYzoutLuVxuiRB9iXOm+lxuR40Zo0uMsSUh+Aycc84+pzT/qaZpjzQU7mSzkhk7wAQHQwjgnINpSigULJDSAMMQUCzaMyzLAssy1ec4L5WK+N4fc3NzEQ2tmXSKsDwDSumIc+5xxjzTlJ6UhicEV32hYCksy/QMQygmz29QzDlrLiwsPFXC3OoaFToBYRielHKMWJY1tixzLKUxNk2pxthP57ZdGBeLNuLbdgFP5YbDC4tK+NP6NiU6w1U8IQwQQoCUEudAiA6UUTWewjgDIbgqh5SGj+URgrvz8/OBcHMjTQVHieFhfbAu5XIZDg72FZWDfajXq1CvVaF2h2rVwd53nAou5IbD4UD47HmSVhwHjo5+816//hVOTprQarkwuhkBttFZF7pnV9C96MP5ZR+65z3oXvRgdOPjx/5wOIR8ntweOZ7coNK0oNE49I6P3ygh0u/3lfC624XmUQeOO2fwpvUWmp0zxdnFtRL2ej0sjRuJRAJhLL5Oq7U6tNstD0Wui5zAYDAIdtjvw19/nsPl9QAur/pwdT2AXn8Iw+GNEuLChJDbGv4YjVOnWoNOp+1Nd3dycit8uI1nQjzykydPAuHyaoo69QZ0JjsMdnkrHI/HD/JO4UoqRauNw/cnjK1GabXuQKfdfj/C+EqS1mo1aHdad2rYvCd8ZwUnwt5EOL8w+VFW11O0dtiAdtv1mneEuDJ+yff9B0HhaNADnejuh5HJH3sluUnrhw04Pe147XYLpnieB//V9k7B/+X3GzAYcTVtcuS1tXVKCAHGmIfRhXcZ7+r+/j5UKhV1xRDHuU/FqUCa/+wT6wDyJOdGFj+e3uUNmtnagpcvXnjYIzs7WchmtyGTCcYIBsU/4fmsz/I5DBD36eJHgTCVSlNd13FnninlWAihIgwjqlCwZmBc2batnk8p2BhfNoaw+/jxXCBMp9MEj0wIGaJ0SrFo38M0TcxLFbIIppOUxmgiPA6FPgiELzMZW0yiH3PQNE3F3t4u7O6WZ5TLJSiVSv+a43umKd+GQqEgsb/74fuvo7HY9rPl5Y1YLLYZjUZTsVgslUwmUonE6gyc332WTCY2E4nERjKZ2IrHn3+raVpY+/Kbr5RU07SQpmlz/4NH2P4G9MVJVe9mjwwAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image&quot; alt=&quot;macOS Settings fixed keyboard type layout&quot; title=&quot;macOS Settings fixed keyboard type layout&quot; src=&quot;/static/7c28ca485bf698854f5e1b7a1d3a3720/78d47/KeyboardTypeFixed-ISO-DE.png&quot; srcSet=&quot;/static/7c28ca485bf698854f5e1b7a1d3a3720/56d15/KeyboardTypeFixed-ISO-DE.png 200w,/static/7c28ca485bf698854f5e1b7a1d3a3720/d9f49/KeyboardTypeFixed-ISO-DE.png 400w,/static/7c28ca485bf698854f5e1b7a1d3a3720/78d47/KeyboardTypeFixed-ISO-DE.png 800w,/static/7c28ca485bf698854f5e1b7a1d3a3720/64756/KeyboardTypeFixed-ISO-DE.png 1200w,/static/7c28ca485bf698854f5e1b7a1d3a3720/42cbc/KeyboardTypeFixed-ISO-DE.png 1600w,/static/7c28ca485bf698854f5e1b7a1d3a3720/82af4/KeyboardTypeFixed-ISO-DE.png 1856w&quot; sizes=&quot;(max-width: 800px) 100vw, 800px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h2&gt;Credits&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Thx to: &lt;a href=&quot;https://apple.stackexchange.com/questions/239395/and-keys-are-swapped&quot;&gt;https://apple.stackexchange.com/questions/239395/and-keys-are-swapped&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://qmk.fm&quot;&gt;QMK Firmware&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://docusaurus.qmk.fm/keycodes/&quot;&gt;QMK Keycodes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://docusaurus.qmk.fm/faq_keymap&quot;&gt;QMK Default Keymaps&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.caniusevia.com&quot;&gt;VIA Firmware&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[Wifi with OpenWrt]]></title><description><![CDATA[I have used DD-WRT in the past with Linksys devices and found it very good.
So far I have used a Synology router as an access point - but I…]]></description><link>https://blog.cursorbeat.dev/tutorials/OpenWrt</link><guid isPermaLink="false">https://blog.cursorbeat.dev/tutorials/OpenWrt</guid><pubDate>Tue, 24 Oct 2023 07:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have used DD-WRT in the past with Linksys devices and found it very good.
So far I have used a Synology router as an access point - but I thought the next wifi solution should be based on open source software.
This idea was mainly inspired by the positive experience of using OPNSense with Dec740 as the main router&amp;amp;firewall - I love this device.
That&amp;#x27;s how I came up with the OSS Wifi counterpart &lt;a href=&quot;https://openwrt.org&quot;&gt;OpenWrt&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;Banana Pi R3&lt;/h2&gt;&lt;p&gt;Clearly one of the best Wifi OpenWrt solutions on the market is the self-build solution with a &lt;a href=&quot;https://wiki.banana-pi.org/Banana_Pi_BPI-R3&quot;&gt;Banana Pi R3&lt;/a&gt; Board. This is available in complete sets on Aliexpress with great metal enclosures, antennas and everything required (may only a optional TTL USB adapter is missing).&lt;/p&gt;&lt;p&gt;The Wifi power of this devices covers even professional requirements with 4x4 5ghz and 2.4ghz.
A powerful ARM CPU, 2GB RAM, 8GB MMC storage and 2SFP slots give a lot of room for a wide range of use-cases.&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:800px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/b130d31e60713c6ab654d7f1f9e1a75e/9292f/BananaPiR3-look-inside.jpg&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:51.5%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAKABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAQCAwX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABWlqqQsWh/8QAGhAAAwEBAQEAAAAAAAAAAAAAAAECAxIRE//aAAgBAQABBQL7aMel+PfVnEsqZOZP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAHRAAAgEEAwAAAAAAAAAAAAAAAAECERIhMTIzUf/aAAgBAQAGPwJRuePDslUw6HFGkaR//8QAHBABAAICAwEAAAAAAAAAAAAAAQAhEUFRcZHB/9oACAEBAAE/IXAKu1sDSlzHRAY0RUqr1DNeUq+U/9oADAMBAAIAAwAAABDY3//EABYRAAMAAAAAAAAAAAAAAAAAAAEQEf/aAAgBAwEBPxA1f//EABYRAAMAAAAAAAAAAAAAAAAAAAEQEf/aAAgBAgEBPxARf//EABsQAQACAwEBAAAAAAAAAAAAAAEAIRExQWGx/9oACAEBAAE/EMMAvSOAL2PwNlFB6TGHytvumMbDalZUXfDDA+ef/9k=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image&quot; alt=&quot;BananaPiR3 look inside&quot; title=&quot;BananaPiR3 look inside&quot; src=&quot;/static/b130d31e60713c6ab654d7f1f9e1a75e/a24e6/BananaPiR3-look-inside.jpg&quot; srcSet=&quot;/static/b130d31e60713c6ab654d7f1f9e1a75e/a6b4f/BananaPiR3-look-inside.jpg 200w,/static/b130d31e60713c6ab654d7f1f9e1a75e/a6407/BananaPiR3-look-inside.jpg 400w,/static/b130d31e60713c6ab654d7f1f9e1a75e/a24e6/BananaPiR3-look-inside.jpg 800w,/static/b130d31e60713c6ab654d7f1f9e1a75e/03ffe/BananaPiR3-look-inside.jpg 1200w,/static/b130d31e60713c6ab654d7f1f9e1a75e/04bec/BananaPiR3-look-inside.jpg 1600w,/static/b130d31e60713c6ab654d7f1f9e1a75e/9292f/BananaPiR3-look-inside.jpg 4024w&quot; sizes=&quot;(max-width: 800px) 100vw, 800px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;If you want to wait &lt;a href=&quot;https://wiki.banana-pi.org/Banana_Pi_BPI-R4&quot;&gt;Banana Pi R4&lt;/a&gt; is also getting around next year - Wifi-7, 4GB RAM, 10Gbit SFP+, USB Power.&lt;/p&gt;&lt;h2&gt;Set-UP&lt;/h2&gt;&lt;p&gt;Here you can find working set-up notes collected from tutorial sources linked below - with those I got a good base installation on the BPI-R3. &lt;/p&gt;&lt;p&gt;Best tutorials are those:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://wiki.banana-pi.org/Getting_Started_with_BPI-R3&quot;&gt;https://wiki.banana-pi.org/Getting_Started_with_BPI-R3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://openwrt.org/toh/sinovoip/bananapi_bpi_r3_v1.0_v1.1&quot;&gt;https://openwrt.org/toh/sinovoip/bananapi_bpi_r3_v1.0_v1.1&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;OpenWrt is available as a stable version &lt;a href=&quot;https://firmware-selector.openwrt.org/?version=23.05.0&amp;amp;target=mediatek%2Ffilogic&amp;amp;id=bananapi_bpi-r3&quot;&gt;23.05 at the moment of writing&lt;/a&gt; which was used for this.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Unzip bananapi_bpi-r3-sdcard and write the image on a micro sd card using:&lt;ul&gt;&lt;li&gt;on linux: &lt;code class=&quot;language-text&quot;&gt;dd if=openwrt-mediatek-filogic-bananapi_bpi-r3-sdcard.img of=/dev/( mmcblk_ OR sd_ )&lt;/code&gt;&lt;/li&gt;&lt;li&gt;on win: &lt;a href=&quot;https://sourceforge.net/projects/win32diskimager/&quot;&gt;https://sourceforge.net/projects/win32diskimager/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;on macOS: &lt;a href=&quot;https://etcher.balena.io&quot;&gt;https://etcher.balena.io&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Insert the SD card into the bpi-r3&lt;/li&gt;&lt;li&gt;To install on NOR (32 MB) (optional):&lt;ol&gt;&lt;li&gt;Set the boot switch as 1101 (up,up,down,up)&lt;/li&gt;&lt;li&gt;Connect power cord and wait boot (~20s)&lt;/li&gt;&lt;li&gt;ssh the device and type:
&lt;code class=&quot;language-text&quot;&gt;fw_setenv bootcmd &amp;quot;run nor_init ; env default bootcmd ; saveenv ; reset&amp;quot;; reboot&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Wait reboot and nor flashing (~90s)&lt;/li&gt;&lt;li&gt;Disconnect power&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;To install on NAND (128 MB) (optional):&lt;ol&gt;&lt;li&gt;Set the boot switch as 1111 (up,up,up,up)&lt;/li&gt;&lt;li&gt;Connect power cord and wait boot (~20s)&lt;/li&gt;&lt;li&gt;ssh the device and type:
&lt;code class=&quot;language-text&quot;&gt;fw_setenv bootcmd &amp;quot;run ubi_init ; env default bootcmd ; saveenv ; reset&amp;quot;; reboot&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Wait reboot and NAND flashing (~90s)&lt;/li&gt;&lt;li&gt;Disconnect power&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;To install on eMMC (8192 MB) (optional):&lt;ol&gt;&lt;li&gt;Set the boot switch as 1010 (up,down,up,down)&lt;/li&gt;&lt;li&gt;Connect power cord and wait boot (~20s)&lt;/li&gt;&lt;li&gt;ssh the device and type:
&lt;code class=&quot;language-text&quot;&gt;fw_setenv bootcmd &amp;quot;run emmc_init ; env default bootcmd ; saveenv ; reset&amp;quot;; reboot&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Wait reboot and eMMC flashing (~90s)&lt;/li&gt;&lt;li&gt;Disconnect power&lt;/li&gt;&lt;li&gt;Set the boot switch to your favorite location&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The images relies on &lt;a href=&quot;https://docs.kernel.org/filesystems/f2fs.html&quot;&gt;F2FS&lt;/a&gt; filesystem.&lt;/p&gt;&lt;p&gt;To create data partition and resize eMMC f2fs, boot on NOR(0000) or NAND(1010) and type (internet connection required):&lt;/p&gt;&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;opkg &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;cfdisk&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;parted&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;parted&lt;/span&gt; /dev/mmcblk0 -- mkpart f2fs 768MiB &lt;span class=&quot;token parameter variable&quot;&gt;-34s&lt;/span&gt; resizepart &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; 768MiB resizepart &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;67&lt;/span&gt;.1M resizepart &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;.6M 
  &lt;span class=&quot;token comment&quot;&gt;# say F to fix gpt global size&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;reboot&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;## optional increase the size of the partition /dev/mmcblk0p5 to the max by deleting /dev/mmcblk0p6 partition and resize with:&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;cfdisk&lt;/span&gt; /dev/mmcblk0

&lt;span class=&quot;token comment&quot;&gt;## resize filesystem after:&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;mount&lt;/span&gt; /dev/mmcblk0p66 /mnt &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;umount&lt;/span&gt; /dev/mmcblk0p66 &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; resize.f2fs /dev/mmcblk0p66

&lt;span class=&quot;token comment&quot;&gt;## Boot to MMC storage&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now boot on eMMC(0110) and check if it worked !&lt;/p&gt;&lt;p&gt;Background: /dev/mmcblk0p66 is inside of /dev/mmcblk0p5.&lt;/p&gt;&lt;h3&gt;OpenWrt The Argon Theme&lt;/h3&gt;&lt;p&gt;The &lt;a href=&quot;https://github.com/jerrykuku/luci-theme-argon&quot;&gt;Argon theme&lt;/a&gt; is the most beautiful looking one available atm of writing.&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:800px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/fbbb25a54463ddf2f0980fe44649171d/221b9/OpenWrt-Argon-Theme-Screenshot.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:92.5%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAACXBIWXMAABYlAAAWJQFJUiTwAAADUElEQVQ4y22SS48bRRDH57tw5Ctwj6XwBbIbrcM+vkPmgnIDww2SIA45JDmQWAhFQiCBxCEHHgKFC07W69fM+EX82PHM9HO621Woemzvg1j6qavK3f+pf3UHp69+/2CYvL43mQ7vjieT8E0nDju9QRjFSdjtR2F/EIWjURJOJuNwOh37uNM5C8fjYTidTsIkicMkSe7Gg+G9s3brwyAedL5IM4XGGHzxc4qffz3Fh0/n+OAJMfM8fDrzNQ/VHr/18VeUP57jg+dj/PKXU/z4/t8/BH++6nzSjSSO/jXq9Rkzgzgzi3NjZsvSzJelX68zX5qLfGHMLNVqxiQ+etb+Jvju+1bjxU9L/PbHzL2dczClBMQ1ILprvKu2AZxDAPzjr6gZJHGvsXYKEdFxLiDPOa7Xa7TWonMOy9JgmuZ+pZzq1rrLgLXWWefw5W+DZtDp9hp5wdAY6ziXsFoVm0MVJLRYpMi5uCR4BbDWOBJ/+Wu/GfS7nUaR56iUdlIqyDKGZVnuDtBlMSa84BbKtzVjzEbQYutN3Aza7XaD/iDLjAsge1uxynKJWVbQB704dUxQTFQdWkd7h8MhCXYbecERAPwMi4LvOiO01piuctS6vKj7dYsBY6oOozhpBr1erwEA1aUICedp7jdadzH4kg6SiHUbruRg/KWsMY6HW0H0gkIqIGt0y2Rhva4ElS59h56y9PYJirUuQenSUROXBGH3bGijc3Y7Hz8vxuUOLiTSiHLGfcy4BMaFk0q/wzIXIITczYpWpQwWTKKQYgOJcA/FQgrgQpA7jKJrgowJWJ7n6Ny6mt9mjlxYzAtziXKDzyEvjCuNwzgZ/v9S6JZpftsZKm3xn7bEbiyxn1Sc9TLPJod+Ip2QBpPhVUFLlulx09vaPFiQqoT5uQClJWgtQSkB52kKaZr62Ne0sFIpHETJ8yCKos+w+jkpNTImd5apS12SZYO6NKh0Bc2U2OZKV5aT4agZtFqtTxljyDm3s9kcRqMpMMagKApgrIB0VcBimcFqlUHqWcF8voT5YunjTc1meY6n7bNnwd7e3nsnJyc3j4+PbxweHtaOjo5qtFbxYe2gfljb26/X6vV67YA4qNdu3dr3HFzUbty589HN/du33/8Pa+hawvGGiHEAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image&quot; alt=&quot;OpenWrt Argon Theme&quot; title=&quot;OpenWrt screenshot of the main page UI with Argon Theme&quot; src=&quot;/static/fbbb25a54463ddf2f0980fe44649171d/78d47/OpenWrt-Argon-Theme-Screenshot.png&quot; srcSet=&quot;/static/fbbb25a54463ddf2f0980fe44649171d/56d15/OpenWrt-Argon-Theme-Screenshot.png 200w,/static/fbbb25a54463ddf2f0980fe44649171d/d9f49/OpenWrt-Argon-Theme-Screenshot.png 400w,/static/fbbb25a54463ddf2f0980fe44649171d/78d47/OpenWrt-Argon-Theme-Screenshot.png 800w,/static/fbbb25a54463ddf2f0980fe44649171d/64756/OpenWrt-Argon-Theme-Screenshot.png 1200w,/static/fbbb25a54463ddf2f0980fe44649171d/42cbc/OpenWrt-Argon-Theme-Screenshot.png 1600w,/static/fbbb25a54463ddf2f0980fe44649171d/221b9/OpenWrt-Argon-Theme-Screenshot.png 3096w&quot; sizes=&quot;(max-width: 800px) 100vw, 800px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;For OpenWrt 23.05 you can just install it with those commands:&lt;/p&gt;&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;opkg &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; luci-compat
opkg &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; luci-lib-ipkg
&lt;span class=&quot;token function&quot;&gt;wget&lt;/span&gt; --no-check-certificate https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.3.1/luci-theme-argon_2.3.1_all.ipk &lt;span class=&quot;token parameter variable&quot;&gt;-O&lt;/span&gt; luci-theme-argon_2.3.1_all.ipk
opkg &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; luci-theme-argon*.ipk&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Install the theme config menu &lt;code class=&quot;language-text&quot;&gt;luci-app-argon-config&lt;/code&gt; to be able to configure the Theme from OpenWrt Luci web UI:&lt;/p&gt;&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;span class=&quot;token function&quot;&gt;wget&lt;/span&gt; --no-check-certificate https://github.com/jerrykuku/luci-app-argon-config/releases/download/v0.9/luci-app-argon-config_0.9_all.ipk &lt;span class=&quot;token parameter variable&quot;&gt;-O&lt;/span&gt; luci-app-argon-config_0.9_all.ipk
opkg &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; luci-app-argon-config*.ipk&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2&gt;Cooling &amp;amp; FAN&lt;/h2&gt;&lt;p&gt;Hint to get it working:&lt;/p&gt;&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;echo 70000 &amp;gt; trip_point_2_temp&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/openwrt/openwrt/issues/13772&quot;&gt;OpenWrt GitHub Issue - PWM Fan&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;CPU and Temp Extension&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/gSpotx2f/luci-app-cpu-status-mini&quot;&gt;luci-app-cpu-status-mini&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;span class=&quot;token function&quot;&gt;wget&lt;/span&gt; --no-check-certificate &lt;span class=&quot;token parameter variable&quot;&gt;-O&lt;/span&gt; /tmp/luci-app-cpu-status-mini_0.1-5_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-app-cpu-status-mini_0.1-5_all.ipk
opkg &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; /tmp/luci-app-cpu-status-mini_0.1-5_all.ipk
&lt;span class=&quot;token function&quot;&gt;rm&lt;/span&gt; /tmp/luci-app-cpu-status-mini_0.1-5_all.ipk
/etc/init.d/rpcd reload&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/gSpotx2f/luci-app-temp-status&quot;&gt;luci-app-temp-status&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;span class=&quot;token function&quot;&gt;wget&lt;/span&gt; --no-check-certificate &lt;span class=&quot;token parameter variable&quot;&gt;-O&lt;/span&gt; /tmp/luci-app-temp-status_0.4-2_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-app-temp-status_0.4-2_all.ipk
opkg &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; /tmp/luci-app-temp-status_0.4-2_all.ipk
&lt;span class=&quot;token function&quot;&gt;rm&lt;/span&gt; /tmp/luci-app-temp-status_0.4-2_all.ipk
/etc/init.d/rpcd reload&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Both Luci plugins are shown on the Dashboard.&lt;/p&gt;&lt;h2&gt;Custom Build&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://firmware-selector.openwrt.org/?version=23.05.2&amp;amp;target=mediatek%2Ffilogic&amp;amp;id=bananapi_bpi-r3&quot;&gt;OpenWrt Firmware-Selector - BananaPiR3&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;base-files busybox ca-bundle dnsmasq dropbear e2fsprogs f2fsck firewall4 fstools kmod-crypto-hw-safexcel kmod-gpio-button-hotplug kmod-hwmon-pwmfan kmod-i2c-gpio kmod-leds-gpio kmod-mt7915e kmod-mt7986-firmware kmod-nft-offload kmod-sfp kmod-usb3 libc libgcc libustream-mbedtls logd luci mkf2fs mt7986-wo-firmware mtd netifd nftables odhcp6c odhcpd-ipv6only opkg ppp ppp-mod-pppoe procd procd-seccomp procd-ujail uboot-envtools uci uclient-fetch urandom-seed urngd terminfo cfdisk resize2fs parted losetup fdisk block-mount luci-lib-ipkg luci-compat curl luci-theme-openwrt-2020 libopenssl3 ttyd luci-app-ttyd dbus samba4-server luci-app-samba4 luci-app-commands hostapd-utils btop luci-mod-dashboard wifischedule luci-app-wifischedule ntpd zsh bottom wpad-mbedtls luci-ssl openssl-util luci-theme-material atftp luci-app-advancedsetting luci-app-statistics luci-app-wol&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Note:&lt;code class=&quot;language-text&quot;&gt;wpad-mbedtls&lt;/code&gt; enables WPS features&lt;/li&gt;&lt;li&gt;Note: Package &lt;code class=&quot;language-text&quot;&gt;luci-app-commands&lt;/code&gt; helps to start WPS with added command &lt;code class=&quot;language-text&quot;&gt;hostapd_cli wps_pbc&lt;/code&gt; in UI --&amp;gt; makes it available in UI&lt;/li&gt;&lt;li&gt;Note: &lt;code class=&quot;language-text&quot;&gt;luci-app-ntpc&lt;/code&gt; got removed in v23.05.2 instead &lt;code class=&quot;language-text&quot;&gt;ntpd&lt;/code&gt; is used but has atm no UI to configure NTP &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Optionals&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Add: &lt;code class=&quot;language-text&quot;&gt;luci-app-sqm&lt;/code&gt; for traffic shaping and limitations.&lt;/li&gt;&lt;li&gt;Add: &lt;code class=&quot;language-text&quot;&gt;luci-app-dawn&lt;/code&gt; for DAWN support which extends 802.11r /k/v support.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Web Terminal SSL support&lt;/h4&gt;&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;luci-app-ttyd&lt;/code&gt; requires to enable SSL in UI config and a cert and key no ca.
But &lt;code class=&quot;language-text&quot;&gt;luci-ssl&lt;/code&gt; certs require to get converted and linked:&lt;/p&gt;&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;openssl x509 &lt;span class=&quot;token parameter variable&quot;&gt;-inform&lt;/span&gt; der &lt;span class=&quot;token parameter variable&quot;&gt;-in&lt;/span&gt; /etc/uhttpd.crt &lt;span class=&quot;token parameter variable&quot;&gt;-out&lt;/span&gt; /etc/ttyd.crt
openssl ec &lt;span class=&quot;token parameter variable&quot;&gt;-inform&lt;/span&gt; der &lt;span class=&quot;token parameter variable&quot;&gt;-in&lt;/span&gt; /etc/uhttpd.key  &lt;span class=&quot;token parameter variable&quot;&gt;-out&lt;/span&gt; /etc/ttyd.key&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;(slightly updated 28.03.2024)&lt;/li&gt;&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[Keyboard Guide]]></title><description><![CDATA[I type ~40-70h on different Keyboards every week and in the last years I had used over 25 different ones. I also assembled my own Keyboards…]]></description><link>https://blog.cursorbeat.dev/blog/Keyboard-Guide</link><guid isPermaLink="false">https://blog.cursorbeat.dev/blog/Keyboard-Guide</guid><pubDate>Fri, 12 Jun 2020 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I type ~40-70h on different Keyboards every week and in the last years I had used over 25 different ones. I also assembled my own Keyboards. In this post I want to share my favorits for each situation and some tipps.&lt;/p&gt;&lt;h2&gt;My Keyboard recommendations&lt;/h2&gt;&lt;h3&gt;1. &lt;em&gt;„HomeOffice“:&lt;/em&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.diatec.co.jp/en/list.php?s%5B%5D=100:1001:0&amp;amp;s%5B%5D=120:1014:0&quot;&gt;Filco Majestouch Convertible 2 TKL&lt;/a&gt;&lt;/strong&gt; + &lt;strong&gt;&lt;a href=&quot;https://www.diatec.co.jp/en/det.php?prod_c=3240&quot;&gt;Majestouch TenKeyPad 2 Professional&lt;/a&gt;&lt;/strong&gt; + Palm-Rest&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:800px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/6c5a46b9ec74e72ed0fbcb19ff519dc9/04b1e/Filco-TKL-Numpad.jpg&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:57.00000000000001%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIDBP/EABUBAQEAAAAAAAAAAAAAAAAAAAIB/9oADAMBAAIQAxAAAAFK5LBVHDf/xAAaEAADAQADAAAAAAAAAAAAAAABAgMRAAQh/9oACAEBAAEFAm7LBpXLGanMHJqNTxf/xAAVEQEBAAAAAAAAAAAAAAAAAAAQIf/aAAgBAwEBPwGn/8QAFREBAQAAAAAAAAAAAAAAAAAAECH/2gAIAQIBAT8Bh//EABkQAAIDAQAAAAAAAAAAAAAAAAABAhEhEP/aAAgBAQAGPwJ0kU1hkr7h/8QAGRABAQEBAQEAAAAAAAAAAAAAAREAIUGh/9oACAEBAAE/IRiIc3ERaYDiFuPtqLPNwHG//9oADAMBAAIAAwAAABAzP//EABcRAAMBAAAAAAAAAAAAAAAAAAABITH/2gAIAQMBAT8QVaJQ/8QAGBEBAQADAAAAAAAAAAAAAAAAAQARITH/2gAIAQIBAT8QTHku7//EABkQAQEBAQEBAAAAAAAAAAAAAAERACExYf/aAAgBAQABPxBApALaxw0tUHkz85Qo8+ZiUeq9cEPVHrgHASw3/9k=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image&quot; alt=&quot;Filco TKL keyboard with mouse and numpad&quot; title=&quot;Filco TKL Keyboard Combo&quot; src=&quot;/static/6c5a46b9ec74e72ed0fbcb19ff519dc9/a24e6/Filco-TKL-Numpad.jpg&quot; srcSet=&quot;/static/6c5a46b9ec74e72ed0fbcb19ff519dc9/a6b4f/Filco-TKL-Numpad.jpg 200w,/static/6c5a46b9ec74e72ed0fbcb19ff519dc9/a6407/Filco-TKL-Numpad.jpg 400w,/static/6c5a46b9ec74e72ed0fbcb19ff519dc9/a24e6/Filco-TKL-Numpad.jpg 800w,/static/6c5a46b9ec74e72ed0fbcb19ff519dc9/03ffe/Filco-TKL-Numpad.jpg 1200w,/static/6c5a46b9ec74e72ed0fbcb19ff519dc9/04bec/Filco-TKL-Numpad.jpg 1600w,/static/6c5a46b9ec74e72ed0fbcb19ff519dc9/04b1e/Filco-TKL-Numpad.jpg 3927w&quot; sizes=&quot;(max-width: 800px) 100vw, 800px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;➕ Design (build quality, default TKL, timeless, matching numpad)&lt;br/&gt;
➕ Batteries last like forever&lt;br/&gt;
➖ Mini USB  &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;=&amp;gt; Best mechanical TKL/80% (ISO-DE) + Numpad Combo&lt;/p&gt;&lt;p&gt;(* MacOS compatibility - Use &lt;a href=&quot;https://karabiner-elements.pqrs.org&quot;&gt;Karabiner-Elements&lt;/a&gt; to &lt;a href=&quot;https://ke-complex-modifications.pqrs.org/#german_pc_shortcuts&quot;&gt;fix layout&lt;/a&gt; issues or improve it.)&lt;/p&gt;&lt;h3&gt;2. &lt;em&gt;„Special Motivation“ :&lt;/em&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://happyhackingkb.com/jp/products/hybrid_types/&quot;&gt;&lt;strong&gt;HHKB Professional Hybrid Type-S&lt;/strong&gt;&lt;/a&gt; &lt;sub&gt;(non-printed key-caps)&lt;/sub&gt; + Palm-Rest&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:800px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/4c0c0713d3d4750d5354bc5344210999/aaf92/HHKB-Hyprid-Professional.jpg&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAEEAgP/xAAVAQEBAAAAAAAAAAAAAAAAAAACA//aAAwDAQACEAMQAAABn7NBXGCb/8QAGxABAAICAwAAAAAAAAAAAAAAAgASAQMUIjL/2gAIAQEAAQUCSquUoFc5Pak1eP/EABcRAAMBAAAAAAAAAAAAAAAAAAEQEUH/2gAIAQMBAT8Bhxf/xAAXEQEBAQEAAAAAAAAAAAAAAAABABEx/9oACAECAQE/AdHs3//EABwQAAIBBQEAAAAAAAAAAAAAAAABEQIQEiEiMv/aAAgBAQAGPwLakjFCqHyebf/EABkQAQADAQEAAAAAAAAAAAAAAAEAESExUf/aAAgBAQABPyHED0XMDgluALHUQ7ObrOGVP//aAAwDAQACAAMAAAAQnN//xAAYEQACAwAAAAAAAAAAAAAAAAAAMQERIf/aAAgBAwEBPxCpiFp//8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERMf/aAAgBAgEBPxBkacP/xAAbEAEAAwEAAwAAAAAAAAAAAAABABExIVFhgf/aAAgBAQABPxBgbnpX8gBDMAsYSDoZsvbKRUyPBGebJcKoton/2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image&quot; alt=&quot;HHKB Hybrid Professional Type-S with palm rest and cover&quot; title=&quot;HHKB Hybrid Professional Type-S&quot; src=&quot;/static/4c0c0713d3d4750d5354bc5344210999/a24e6/HHKB-Hyprid-Professional.jpg&quot; srcSet=&quot;/static/4c0c0713d3d4750d5354bc5344210999/a6b4f/HHKB-Hyprid-Professional.jpg 200w,/static/4c0c0713d3d4750d5354bc5344210999/a6407/HHKB-Hyprid-Professional.jpg 400w,/static/4c0c0713d3d4750d5354bc5344210999/a24e6/HHKB-Hyprid-Professional.jpg 800w,/static/4c0c0713d3d4750d5354bc5344210999/03ffe/HHKB-Hyprid-Professional.jpg 1200w,/static/4c0c0713d3d4750d5354bc5344210999/04bec/HHKB-Hyprid-Professional.jpg 1600w,/static/4c0c0713d3d4750d5354bc5344210999/aaf92/HHKB-Hyprid-Professional.jpg 1920w&quot; sizes=&quot;(max-width: 800px) 100vw, 800px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;➕ Custom key-mapping/Layer + non-print Keycaps (also for compatibility with different languages or layouts)&lt;br/&gt;
➖ Missing keys - available on the second virtual layer&lt;br/&gt;
➖ Availability - until today you can only import it from Japan&lt;br/&gt;
⚠️ Perfect for advanced typists which like &lt;a href=&quot;https://neovim.io&quot;&gt;VIM&lt;/a&gt; 😜&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;=&amp;gt; Best 60% layout - enjoy typing and dream of beeing a happy hacker&lt;/p&gt;&lt;h3&gt;3. &lt;em&gt;„Office“ :&lt;/em&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.logitech.com/en-gb/product/mx-keys-wireless-keyboard&quot;&gt;Logitech MX Keys&lt;/a&gt;&lt;/strong&gt; + Palm-Rest&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:800px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/ea24774950b21028125664b1e5b4b1f7/aaf92/Logitech-MX-Keys.jpg&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:53.5%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAgAD/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/2gAMAwEAAhADEAAAASZTekYL/8QAGxAAAgIDAQAAAAAAAAAAAAAAAAIBEgMREyL/2gAIAQEAAQUCZptuTFPminNSiwf/xAAXEQADAQAAAAAAAAAAAAAAAAAAARES/9oACAEDAQE/AcsVP//EABcRAAMBAAAAAAAAAAAAAAAAAAABERL/2gAIAQIBAT8B0hw//8QAGRABAAMBAQAAAAAAAAAAAAAAACExoQEy/9oACAEBAAY/Auzr1qVKU//EABwQAAICAgMAAAAAAAAAAAAAAAABEUEhUXGhwf/aAAgBAQABPyFujI3cIFmm52Jyz2Fh9FAf/9oADAMBAAIAAwAAABAAH//EABYRAQEBAAAAAAAAAAAAAAAAAAEAEf/aAAgBAwEBPxBSwMv/xAAWEQEBAQAAAAAAAAAAAAAAAAABABH/2gAIAQIBAT8QAtHb/8QAHBAAAgICAwAAAAAAAAAAAAAAAREAMSHRUWGR/9oACAEBAAE/ECaBDUExOXSo37KYQQaHEcGE9twoGb3luBwIF2Z//9k=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image&quot; alt=&quot;Logitech MX Keys with palm rest&quot; title=&quot;Logitech MX Keys&quot; src=&quot;/static/ea24774950b21028125664b1e5b4b1f7/a24e6/Logitech-MX-Keys.jpg&quot; srcSet=&quot;/static/ea24774950b21028125664b1e5b4b1f7/a6b4f/Logitech-MX-Keys.jpg 200w,/static/ea24774950b21028125664b1e5b4b1f7/a6407/Logitech-MX-Keys.jpg 400w,/static/ea24774950b21028125664b1e5b4b1f7/a24e6/Logitech-MX-Keys.jpg 800w,/static/ea24774950b21028125664b1e5b4b1f7/03ffe/Logitech-MX-Keys.jpg 1200w,/static/ea24774950b21028125664b1e5b4b1f7/04bec/Logitech-MX-Keys.jpg 1600w,/static/ea24774950b21028125664b1e5b4b1f7/aaf92/Logitech-MX-Keys.jpg 1920w&quot; sizes=&quot;(max-width: 800px) 100vw, 800px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;➕ Hetrogenic OS support + wireless UEFI/BIOS capable dongles&lt;br/&gt;
➕ Well made rubber-dome keys with backlit&lt;br/&gt;
➖ Some strange Mappings &amp;amp; Prints ( Key after F12, &lt;sub&gt;€&lt;/sub&gt;E&lt;sub&gt;€&lt;/sub&gt; [ISO/DE]..)&lt;br/&gt;
➖ Batteries not changeable&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;=&amp;gt; Best silent Keyboard for the open-plan office - like a swiss army knife for every kind of tasks&lt;/p&gt;&lt;h3&gt;4. &lt;em&gt;„Share/Spare/Couch“ :&lt;/em&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.logitech.com/en-gb/product/multi-device-keyboard-k380&quot;&gt;Logitech K380&lt;/a&gt;&lt;/strong&gt; -&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;➖ A timeless design would be better&lt;br/&gt;
➖ Batteries not changeable&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;=&amp;gt; Best universal mobile solution&lt;/p&gt;&lt;h3&gt;5. &lt;em&gt;„Mobile“ :&lt;/em&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.apple.com/shop/product/MLA22LL/A/magic-keyboard-us-english&quot;&gt;Apple Magic Keyboard&lt;/a&gt;&lt;/strong&gt; + &lt;strong&gt;&lt;a href=&quot;https://www.studioneat.com/products/canopy&quot;&gt;Studio Neat Canopy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:800px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/270c25fa9d82a160817932404098a059/aaf92/Apple-Magic-Keyboard-Canopy.jpg&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMFAQT/xAAVAQEBAAAAAAAAAAAAAAAAAAADAv/aAAwDAQACEAMQAAAB4l1Hnc00NP/EABoQAAMBAAMAAAAAAAAAAAAAAAECAwATFDH/2gAIAQEAAQUCo7BuR8PI0VF7E8SCf//EABYRAAMAAAAAAAAAAAAAAAAAAAEQEf/aAAgBAwEBPwE1f//EABYRAAMAAAAAAAAAAAAAAAAAAAEQEf/aAAgBAgEBPwERf//EABoQAAICAwAAAAAAAAAAAAAAAAABEDEhIkH/2gAIAQEABj8CxU7WdG0f/8QAHBABAAICAwEAAAAAAAAAAAAAAQARMZEhQVGx/9oACAEBAAE/IUotIerqNreYvLWbxOz4mBheJ//aAAwDAQACAAMAAAAQNO//xAAYEQADAQEAAAAAAAAAAAAAAAAAAREhMf/aAAgBAwEBPxBLyi4f/8QAGBEBAQADAAAAAAAAAAAAAAAAAQARITH/2gAIAQIBAT8QeOwnt//EABsQAQEAAgMBAAAAAAAAAAAAAAERAEEhMfBR/9oACAEBAAE/EHx0CBUxIa/dYfsorcermUriY9BR79y5NrRq5//Z&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image&quot; alt=&quot;Apple Magic Keyboard with a stand/cover combo&quot; title=&quot;Apple Magic Keyboard&quot; src=&quot;/static/270c25fa9d82a160817932404098a059/a24e6/Apple-Magic-Keyboard-Canopy.jpg&quot; srcSet=&quot;/static/270c25fa9d82a160817932404098a059/a6b4f/Apple-Magic-Keyboard-Canopy.jpg 200w,/static/270c25fa9d82a160817932404098a059/a6407/Apple-Magic-Keyboard-Canopy.jpg 400w,/static/270c25fa9d82a160817932404098a059/a24e6/Apple-Magic-Keyboard-Canopy.jpg 800w,/static/270c25fa9d82a160817932404098a059/03ffe/Apple-Magic-Keyboard-Canopy.jpg 1200w,/static/270c25fa9d82a160817932404098a059/04bec/Apple-Magic-Keyboard-Canopy.jpg 1600w,/static/270c25fa9d82a160817932404098a059/aaf92/Apple-Magic-Keyboard-Canopy.jpg 1920w&quot; sizes=&quot;(max-width: 800px) 100vw, 800px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;➕ Native Mac Layout&lt;br/&gt;
➖ Batteries not changeable&lt;br/&gt;
➖ Should be USB-C instead of lightning&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;=&amp;gt; Best mobile solution for everything with a Apple on it&lt;/p&gt;&lt;h3&gt;6. &lt;em&gt;„Game/Fun“ :&lt;/em&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.vortexgear.tw/vortex2_3.asp?kind=47&amp;amp;kind2=220&amp;amp;sn=6&amp;amp;so6=open&quot;&gt;Vortex Poker II&lt;/a&gt;&lt;/strong&gt; + PBT Keycaps&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:800px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/ca1138630f82b4c11d4b08d678bde938/aaf92/Vortex-PokerII.jpg&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:43%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAJABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAEEAv/EABUBAQEAAAAAAAAAAAAAAAAAAAID/9oADAMBAAIQAxAAAAGdWE2jYV//xAAZEAACAwEAAAAAAAAAAAAAAAACAwASQQH/2gAIAQEAAQUCI2WsyLLtd2f/xAAVEQEBAAAAAAAAAAAAAAAAAAAQEv/aAAgBAwEBPwGT/8QAFhEBAQEAAAAAAAAAAAAAAAAAAAES/9oACAECAQE/AdK//8QAGRAAAgMBAAAAAAAAAAAAAAAAAAECICEx/9oACAEBAAY/AnrOyNp//8QAGxAAAgIDAQAAAAAAAAAAAAAAAAERQRAhMbH/2gAIAQEAAT8hYgTsmYXNubH7xXD/2gAMAwEAAgADAAAAEAvP/8QAFxEBAQEBAAAAAAAAAAAAAAAAAREAUf/aAAgBAwEBPxC+4EJd/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARUf/aAAgBAgEBPxAPJC7l/8QAGxABAAICAwAAAAAAAAAAAAAAAQAhEBExcbH/2gAIAQEAAT8QVAFIXRG0Z7YHQEVh2zih84P/2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image&quot; alt=&quot;Vortex Poker II in a icy modded case&quot; title=&quot;Vortex Poker II&quot; src=&quot;/static/ca1138630f82b4c11d4b08d678bde938/a24e6/Vortex-PokerII.jpg&quot; srcSet=&quot;/static/ca1138630f82b4c11d4b08d678bde938/a6b4f/Vortex-PokerII.jpg 200w,/static/ca1138630f82b4c11d4b08d678bde938/a6407/Vortex-PokerII.jpg 400w,/static/ca1138630f82b4c11d4b08d678bde938/a24e6/Vortex-PokerII.jpg 800w,/static/ca1138630f82b4c11d4b08d678bde938/03ffe/Vortex-PokerII.jpg 1200w,/static/ca1138630f82b4c11d4b08d678bde938/04bec/Vortex-PokerII.jpg 1600w,/static/ca1138630f82b4c11d4b08d678bde938/aaf92/Vortex-PokerII.jpg 1920w&quot; sizes=&quot;(max-width: 800px) 100vw, 800px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;➕ 3. programmable custom Layer&lt;br/&gt;
➖ Mini USB&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;=&amp;gt; Good quality/price ratio (Version III available)&lt;/p&gt;&lt;h3&gt;7. &lt;em&gt;„Special-Project-X“ :&lt;/em&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://www.ergodox.io&quot;&gt;&lt;strong&gt;ErgoDox&lt;/strong&gt;&lt;/a&gt; with DSA Keys&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:800px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/1abb1397edb76b38c19bff33ad08a5e9/aaf92/ErgoDox.jpg&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:60%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAMABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIEA//EABUBAQEAAAAAAAAAAAAAAAAAAAID/9oADAMBAAIQAxAAAAHVJFnSkmAv/8QAGRAAAwEBAQAAAAAAAAAAAAAAAAECEQMS/9oACAEBAAEFApuTVK9qi4Oq0UJH/8QAFhEBAQEAAAAAAAAAAAAAAAAAAAEh/9oACAEDAQE/AdR//8QAFhEBAQEAAAAAAAAAAAAAAAAAAQAR/9oACAECAQE/ATJL/8QAGxAAAgEFAAAAAAAAAAAAAAAAABEhAQIQEkH/2gAIAQEABj8C1omOCDpbj//EABoQAQEBAQADAAAAAAAAAAAAAAERACFBUZH/2gAIAQEAAT8hY0XlTLCR3FS6YCojvvDCsw8L93//2gAMAwEAAgADAAAAEKA//8QAFxEBAQEBAAAAAAAAAAAAAAAAAQAhEf/aAAgBAwEBPxBNbJ5f/8QAGBEAAgMAAAAAAAAAAAAAAAAAAAERITH/2gAIAQIBAT8QwoRJ/8QAHRABAAICAgMAAAAAAAAAAAAAAQARITFBUWFxgf/aAAgBAQABPxAMF3XM9g8/IFLELd0dTHqtXqXTrw8paoWTD6mgPcf/2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image&quot; alt=&quot;ErgoDox - self assebled splitted keyboard with plam rests&quot; title=&quot;ErgoDox&quot; src=&quot;/static/1abb1397edb76b38c19bff33ad08a5e9/a24e6/ErgoDox.jpg&quot; srcSet=&quot;/static/1abb1397edb76b38c19bff33ad08a5e9/a6b4f/ErgoDox.jpg 200w,/static/1abb1397edb76b38c19bff33ad08a5e9/a6407/ErgoDox.jpg 400w,/static/1abb1397edb76b38c19bff33ad08a5e9/a24e6/ErgoDox.jpg 800w,/static/1abb1397edb76b38c19bff33ad08a5e9/03ffe/ErgoDox.jpg 1200w,/static/1abb1397edb76b38c19bff33ad08a5e9/04bec/ErgoDox.jpg 1600w,/static/1abb1397edb76b38c19bff33ad08a5e9/aaf92/ErgoDox.jpg 1920w&quot; sizes=&quot;(max-width: 800px) 100vw, 800px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;➕ Palm-Rest + Ergonomic Design&lt;br/&gt;
➕ Custom Key-mapping and 9-Layer&lt;br/&gt;
➖ Many Cables / Mini-USB / Jack-Connectors&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;=&amp;gt; Build from PCB to Software like you want.&lt;/p&gt;&lt;h3&gt;Mechanical Keyboard I would like to test&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://www.realforcekeyboards.com&quot;&gt;REALFORCE R2 PFU Limited Edition Silent TKL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://caps-unlocked.com/group-buy-cu80-round-2/&quot;&gt;Caps-Unlocked CU80&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://codekeyboards.com&quot;&gt;Code V3 TKL&lt;/a&gt; (WASD Keyboards)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://kono.store/products/keystone-analog-mechanical-keyboard&quot;&gt;Keystone Analog Tactile Mechanical Keyboard&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://ultimatehackingkeyboard.com&quot;&gt;Ultimate Hacking Keyboard&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Palm rest&lt;/h2&gt;&lt;p&gt;I can highly recommend to use a matching hight palm rest for adjusting the angle of your wrist to every keyboard.&lt;/p&gt;&lt;h2&gt;Spring vs Rubber&lt;/h2&gt;&lt;p&gt;If you really need or like to be silent - or you like a really short/soft key-travel - go for Rubber, otherwise I would always recommend &lt;a href=&quot;https://www.mechanicalkeyboards.com/switches/&quot;&gt;mechanical Spring based Key-Switches&lt;/a&gt;. With &lt;a href=&quot;https://www.cherrymx.de/mx-original/mx-brown.html&quot;&gt;Cherry MX-Brown&lt;/a&gt; or equivalent like, you will never make a bad choice - it could make sense to &lt;a href=&quot;https://de.aliexpress.com/wholesale?SearchText=key+switch+tester&quot;&gt;test all of them&lt;/a&gt; if you want to build your own keyboard with a diy-kit. If you want to go crazy you can also fine tune all of those MX style switches with lube, custom springs or o-rings.
My favorits are the &lt;a href=&quot;https://www.keychatter.com/topre-switches/&quot;&gt;Topre&lt;/a&gt; 45g switches in terms of sound and their nice smooth and balanced key-travel, but they are only available in a few expensive Keyboards. The worst choice in my opinion is a rubber key-switch with long key-travel - makes no sense to me.&lt;/p&gt;&lt;h2&gt;Layouts&lt;/h2&gt;&lt;p&gt;There are those three major base key layouts ANSI, ISO and JIS - But there are still more around like KS, ABTN and others.
Which layout you should choose depends on your language and your tasks. It could make sense to go for a ANSI/US layout if you are a german software developer like me. But then you have trouble to map those needed german letters like ü, ö and ä in a quickly reachable way. If you use a JIS key layout you would have up to 109 base Keys (+ additional ones like F1-Fx, arrow keys, numpad, etc.) - so with a bit of work you will get every visual language layout mapped.
Regarding the visual layout there are a lot of different language specific &amp;quot;default&amp;quot; printigs available. It&amp;#x27;s a good decision to use a keyboard with switchable key-caps (like cherry mx, Alps or Topre ) standard to be able to change the visual layout in terms of color, printing, &lt;a href=&quot;https://thekeeblog.com/overview-of-different-keycap-profiles/&quot;&gt;profile&lt;/a&gt; and &lt;a href=&quot;https://mechanicalkeyboardinfo.com/abs-vs-pbt-vs-pom-keycap-plastic/&quot;&gt;material/texture&lt;/a&gt;. On my HHKB keyboard I liked to have a DCS profile, PBT sandy grip and no printings at all to don&amp;#x27;t get in any conflict between the visual and mechanical layout.&lt;/p&gt;&lt;p&gt;But then we get to the functional layout witch depends on the operating system and language default, but could be customised. There are a lot of alternative layouts like &lt;a href=&quot;https://www.dvzine.org&quot;&gt;Dvorak&lt;/a&gt;, &lt;a href=&quot;http://colemak.com/&quot;&gt;Colmark&lt;/a&gt;, or &lt;a href=&quot;https://neo-layout.org&quot;&gt;Neo2&lt;/a&gt;. You can find a list of alternative en/de layouts &lt;a href=&quot;https://git.neo-layout.org/neo/neo-layout/wiki/Verweise%20auf%20andere%20Projekte&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;If you want to customise or create your own functional layout you could do this with a customizable firmware like &lt;a href=&quot;https://qmk.fm&quot;&gt;QMK&lt;/a&gt; (&lt;a href=&quot;https://config.qmk.fm/&quot;&gt;Editor&lt;/a&gt;) or with drivers and software like &lt;a href=&quot;https://karabiner-elements.pqrs.org&quot;&gt;Karabiner-Elements&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;And if this isn&amp;#x27;t still not enough you can also tweak all this by adding additional virtual layers to your layout, that could have also programable macros mapped to some keys.&lt;/p&gt;&lt;h2&gt;Upcoming evolutions&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://www.kailhswitch.com/mechanical-keyboard-switches/low-profile-key-switches/&quot;&gt;Low profile mechanical switches&lt;/a&gt; like the &lt;a href=&quot;https://www.diatec.co.jp/en/Stingray/&quot;&gt;FILCO Majestouch Stingray&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=gFYoh5VcZvg&quot;&gt;Beam-Spring&lt;/a&gt; with &lt;a href=&quot;https://en.wikipedia.org/wiki/File:Hall_Sensor.webm&quot;&gt;Hall-Effect&lt;/a&gt; sense Key-Switches like the upcomming &lt;a href=&quot;https://kono.store/blogs/keyboards/silo-beam&quot;&gt;Silo Beam&lt;/a&gt; („AI“ typing correction, gas pedal like key press levels)&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Recommendations&lt;/h2&gt;&lt;h3&gt;Take care of your Keyboard&lt;/h3&gt;&lt;p&gt;Don’t eat &amp;amp; type and wash your hands.
Clean your Keyboard at least every 40h of usage or more often - I use a vacuum cleaner and a microfibre cloth with 70% isopropyl alcohol on it.
Use a cloth or a cover to protect your keyboard from dust. In terms of mechanical keyboards, you can also disassemble the keys to clean everything if needed.&lt;/p&gt;&lt;h3&gt;Buy the right one or build it&lt;/h3&gt;&lt;p&gt;Buy a Keyboard that match the most of your requirements. Buy no garbage and with a plan to use it long term. Don’t buy more Keyboards as devices you own. Don&amp;#x27;t buy a ANSI layout version only because of a not available ISO version (or vice versa) if you don&amp;#x27;t want to switch the layout your muscle memory is trained to.
And if nothing helps, you can buy all needed parts and assemble your own one. Take a look on e.g. &lt;a href=&quot;https://geekhack.org&quot;&gt;GH80 at GeekHack&lt;/a&gt; for a first start - it&amp;#x27;s easier than it&amp;#x27;s sounds.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[PowerShell Config for Developers]]></title><description><![CDATA[As a Developer in the Microsoft Tech-Stack you may like to work with a powerful shell. On Windows there is the  PowerShell 7  - but like…]]></description><link>https://blog.cursorbeat.dev/blog/PowerShell-Config-for-Developers</link><guid isPermaLink="false">https://blog.cursorbeat.dev/blog/PowerShell-Config-for-Developers</guid><pubDate>Thu, 19 Mar 2020 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a Developer in the Microsoft Tech-Stack you may like to work with a powerful shell. On Windows there is the &lt;a href=&quot;https://github.com/PowerShell/PowerShell/releases&quot;&gt;PowerShell 7&lt;/a&gt; - but like nearly every other shell, the base config is not as usefull for development tasks as it could be. This post gives some ideas of how the UI/UX could get improved for those tasks.&lt;/p&gt;&lt;h2&gt;Terminal&lt;/h2&gt;&lt;p&gt;First of all the old CMD.exe should get retired on your Windows system! I could realy recommend the new &lt;a href=&quot;https://github.com/microsoft/terminal&quot;&gt;Windows Terminal&lt;/a&gt; - even though it&amp;#x27;s in preview state. The newest version recieved one of my last missing features - the mouse support for visual input - now it has nearly all needed features to be a powerfull terminal for PowerShell, WSL and SSH use-cases. But you can use PowerShell 7 and this config also on MacOS and Linux if you want (makes sense in terms of e.g. Dot.Net-Core development, Azure Cloud config,...).&lt;/p&gt;&lt;p&gt;On MacOS I could recommend &lt;a href=&quot;https://iterm2.com&quot;&gt;iTerm 2&lt;/a&gt; on Linux &lt;a href=&quot;https://gnunn1.github.io/tilix-web/&quot;&gt;Tilix&lt;/a&gt; and as Cross-Platform solution with some performance trade-offs &lt;a href=&quot;https://eugeny.github.io/terminus/&quot;&gt;Terminus&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;Shell customizing&lt;/h2&gt;&lt;p&gt;I use Git all the way for version control of my code, snippets, scripts, notes and documentation. My main Git tool is always a commandline Git. Because of that I like to see the Git status always present in the promt of the main shell I use. On Z-Shell and PowerShell exists well implemented PowerLine themes to present those informations in a clean way. To get this style and also the for me important auto-suggest and history-search feature I installed some modules and customised the PowerShell profile.&lt;/p&gt;&lt;h2&gt;PowerShell Configuration&lt;/h2&gt;&lt;h3&gt;Modules&lt;/h3&gt;&lt;p&gt;There are a lot of infrastructure extensions to customize shell&amp;#x27;s to be able to easy install packages which extend or modify the look of your shell. For Fish-Shell &amp;quot;&lt;a href=&quot;https://github.com/oh-my-fish/oh-my-fish&quot;&gt;Oh-My-Fish&lt;/a&gt;&amp;quot;, for Z-Shell &amp;quot;&lt;a href=&quot;https://ohmyz.sh&quot;&gt;Oh-My-Zsh&lt;/a&gt;&amp;quot; and this Oh-My-Sh** continues with &amp;quot;&lt;a href=&quot;https://github.com/JanDeDobbeleer/oh-my-posh&quot;&gt;Oh-My-Posh&lt;/a&gt;&amp;quot; for PowerShell.&lt;/p&gt;&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;powershell&quot;&gt;&lt;pre class=&quot;language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Install-Module&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Name oh-my-posh
&lt;span class=&quot;token function&quot;&gt;Install-Module&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Name posh-git &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;AllowPrerelease&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For additional module packages take a look at the &lt;a href=&quot;https://www.powershellgallery.com/packages&quot;&gt;Gallery&lt;/a&gt;.&lt;br/&gt;
There is also a upcomming &lt;a href=&quot;http://pecigonzalo.github.io/Oh-My-Posh/&quot;&gt;second &amp;quot;Oh-My-Posh&amp;quot;&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;PowerShell $Profile config&lt;/h3&gt;&lt;p&gt;To create a new profile config use &lt;code class=&quot;language-text&quot;&gt;New-Item -path $Profile -type file –force&lt;/code&gt;.&lt;br/&gt;
You can edit your profile config with every text editor e.g. &lt;code class=&quot;language-text&quot;&gt;nano $PROFILE&lt;/code&gt;.&lt;/p&gt;&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;powershell&quot;&gt;&lt;pre class=&quot;language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Set-PSReadlineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key Tab &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; MenuComplete
&lt;span class=&quot;token function&quot;&gt;Set-PSReadlineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key UpArrow &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; HistorySearchBackward
&lt;span class=&quot;token function&quot;&gt;Set-PSReadlineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key DownArrow &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; HistorySearchForward
&lt;span class=&quot;token function&quot;&gt;Set-PSReadlineOption&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;ShowToolTips &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;BellStyle Visual

&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; posh-git
&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; oh-my-posh
&lt;span class=&quot;token function&quot;&gt;Set-Theme&lt;/span&gt; Paradox&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;May you get an error like &lt;code class=&quot;language-text&quot;&gt;PowerShell_profile.ps1 cannot be loaded. ...PowerShell_profile.ps1 is not digitally signed.&lt;/code&gt; if so, you should run &lt;code class=&quot;language-text&quot;&gt;Set-ExecutionPolicy RemoteSigned&lt;/code&gt; - This will allow to run any script on the local machine, that has not come from the internet.&lt;/p&gt;&lt;h3&gt;PowerLine&lt;/h3&gt;&lt;p&gt;For PowerLine support consistent to this setup I could recomend the PowerLine enabled version of the Microsoft Cascadia font &amp;quot;&lt;a href=&quot;https://github.com/microsoft/cascadia-code&quot;&gt;Cascadia Mono PL&lt;/a&gt;&amp;quot; configured in your terminal.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Tilix and Zsh on Windows 10]]></title><description><![CDATA[I like all major Operating-Systems for different reasons and tasks. But for me there is only one perfect shell: "Zsh". The  Z-shell  is for…]]></description><link>https://blog.cursorbeat.dev/blog/Tilix-and-Zsh-on-Windows10</link><guid isPermaLink="false">https://blog.cursorbeat.dev/blog/Tilix-and-Zsh-on-Windows10</guid><pubDate>Sat, 01 Feb 2020 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I like all major Operating-Systems for different reasons and tasks. But for me there is only one perfect shell: &amp;quot;Zsh&amp;quot;. The &lt;a href=&quot;http://zsh.sourceforge.net&quot;&gt;Z-shell&lt;/a&gt; is for me the right mix of a stable, extendable, modern and universal shell. On MacOS it&amp;#x27;s already the new default shell and on Linux it&amp;#x27;s easy to install. On Windows it&amp;#x27;s also no problem, but to get it working with same smooth expirience like on Linux or MacOS, I use some tools chained together.&lt;/p&gt;&lt;p&gt;To be clear: Yes, Microsoft has a mighty PowerShell, CMD and Git-Bash is also available for Windows. But in my humble opinion - nothing beats a zsh with the power of linux/unix commandline tool repository.&lt;/p&gt;&lt;h2&gt;WSL Tuning&lt;/h2&gt;&lt;p&gt;The &lt;a href=&quot;https://docs.microsoft.com/de-de/windows/wsl/about&quot;&gt;Windows Subsystem for Linux&lt;/a&gt; is a great Feature that came with Windows 10. I think every DevOp who is working with more than only Microsoft based Operating-Systems should get firm with it.&lt;/p&gt;&lt;p&gt;If you run WSL, the first decission is which Linux distribution you want to run. All the big ones are available (Ubuntu, Debian, Fedora, etc.). My choice was &lt;a href=&quot;https://www.whitewaterfoundry.com&quot;&gt;Pengwin&lt;/a&gt; - it&amp;#x27;s based on Debian, but it&amp;#x27;s customised for the use with WSL.&lt;/p&gt;&lt;p&gt;I installed ZSH and &lt;a href=&quot;https://ohmyz.sh&quot;&gt;OhMyZSH&lt;/a&gt; together with a bunch of plugins to achieve a faster input expirience and a better visualization of context.&lt;/p&gt;&lt;p&gt;Visualization and UI/UX in general could be a pain on a terminal. Not every terminal is capeable to render the shell output as it intendet to be or handle all keyboard and mouse input right - and yes mouse input support could be great with TMux, NVim, EMacs or other commandline tools. Regarding the UI you can &lt;a href=&quot;https://terminal.sexy/&quot;&gt;customize colors&lt;/a&gt; and fonts as you want, also in terms of syntax highlighting. The defaults are always reduced to a basic configuration. In my case I like to use &lt;a href=&quot;https://www.nerdfonts.com&quot;&gt;Nerd Fonts&lt;/a&gt; and a special &lt;a href=&quot;https://github.com/romkatv/powerlevel10k&quot;&gt;shell promt&lt;/a&gt; that relies on the usage of PowerLine, Lingatures and other font features like icons etc.&lt;/p&gt;&lt;h2&gt;Tilix&lt;/h2&gt;&lt;p&gt;On MacOS I would always recomend &lt;a href=&quot;https://iterm2.com&quot;&gt;iTerm2&lt;/a&gt;, but for Linux I like &lt;a href=&quot;https://gnunn1.github.io/tilix-web/&quot;&gt;Tilix&lt;/a&gt;. Tilix is a feature rich and fast terminal which does not need a lot of resources to run, but on Windows it isn&amp;#x27;t available. The default on Windows 10 is still the ugly CMD or as alternative the PowerShell - both terminals are OK if you only require to input/output some letters or run a script, but it&amp;#x27;s not enjoyable to work with beyond that.&lt;/p&gt;&lt;p&gt;The best Windows native terminal is the new &lt;a href=&quot;https://github.com/Microsoft/Terminal&quot;&gt;Windows Terminal&lt;/a&gt; from Microsoft - it&amp;#x27;s still in development - maybe there is a first stable release in April 2020 available. But until now it still has a lot of missing features.&lt;/p&gt;&lt;p&gt;The next best terminal running on Windows IMHO is &lt;a href=&quot;https://eugeny.github.io/terminus/&quot;&gt;Terminus&lt;/a&gt;, but it&amp;#x27;s a heavy &lt;a href=&quot;https://www.electronjs.org&quot;&gt;ElectronJS&lt;/a&gt; based terminal which needs a lot of resources to run.&lt;/p&gt;&lt;p&gt;The good thing is that it is possible to run Tilix on Windows through WSL and it&amp;#x27;s not as tricky as it sounds like. You only need the X11 stack and a X Server for Windows. This sounds like a lot of overhead but it realy isn&amp;#x27;t the case.&lt;/p&gt;&lt;p&gt;As X Window System&lt;a href=&quot;https://de.wikipedia.org/wiki/X_Window_System&quot;&gt;(X11)&lt;/a&gt; I can highly recomend &lt;a href=&quot;https://token2shell.com/x410/&quot;&gt;X410&lt;/a&gt; from Choung Networks - it&amp;#x27;s a fast reliable light weight implementation of X11 for Windows 10.&lt;/p&gt;&lt;p&gt;I use a little trick to hide a default terminal session window in the background through a &lt;a href=&quot;https://github.com/tmux/tmux/wiki&quot;&gt;TMux&lt;/a&gt;-Server to show up Tilix. To achive this you only need a link in Windows with this command:&lt;/p&gt;&lt;p&gt; &lt;code class=&quot;language-text&quot;&gt;C:\Windows\System32\wsl.exe -d WLinux -- tmux -c &amp;quot;zsh ~/Tilix_WSL-Launcher.zsh&amp;quot;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;And in the WSL instance (here WLinux) you only need to place a &lt;a href=&quot;https://raw.githubusercontent.com/Adrian-Grimm/DotFiles/master/Tilix_WSL-Launcher.zsh&quot;&gt;shell script&lt;/a&gt; which will start X410 and Tilix in Windows with no visible startup console:&lt;/p&gt;&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;#bin! zsh&lt;/span&gt;
Powershell.exe &lt;span class=&quot;token parameter variable&quot;&gt;-Command&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;#x27;start X410.exe /WM&amp;#x27;&lt;/span&gt;
tmux new-session &lt;span class=&quot;token parameter variable&quot;&gt;-s&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;quot;Tilix&amp;quot;&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;quot;Console&amp;quot;&lt;/span&gt; -d&lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt;
tmux send-keys &lt;span class=&quot;token parameter variable&quot;&gt;-t&lt;/span&gt; Tilix &lt;span class=&quot;token string&quot;&gt;&amp;quot;Display=:0 dbus-launch --exit-with-session tilix&amp;amp;&amp;quot;&lt;/span&gt; C-m&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Take a look for a nice icon for the Windows link assigned in the properties of it and you are done. &lt;/p&gt;&lt;h2&gt;Conclusion&lt;/h2&gt;&lt;p&gt;I use this setup &lt;a href=&quot;https://twitter.com/AdiGrimm/status/1154045308856258561&quot;&gt;since a couple of month&lt;/a&gt; and I did&amp;#x27;t got any issue at all with it. No Bugs no performance issues. Most of the time I&amp;#x27;m using Git, &lt;a href=&quot;https://spacevim.org&quot;&gt;SpaceVim&lt;/a&gt;/&lt;a href=&quot;https://neovim.io&quot;&gt;NeoVim&lt;/a&gt;, &lt;a href=&quot;https://github.com/tmux/tmux/wiki&quot;&gt;TMux&lt;/a&gt;, SSH and other tools - and I&amp;#x27;m happy with it (maybe I write another blog post about command-line-Tools, but you can get some inspiration from &lt;a href=&quot;https://github.com/herrbischoff/awesome-command-line-apps&quot;&gt;this awesome collection&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;If you like to use my configurations feel free to copy my &lt;a href=&quot;https://github.com/Adrian-Grimm/DotFiles&quot;&gt;DotFiles repository on GitHub&lt;/a&gt; - but don&amp;#x27;t blame me for some more dirty hacks in there :wink:. You can also clone it with &lt;a href=&quot;https://yadm.io&quot;&gt;YADM&lt;/a&gt; - a DotFiles Manager I could recoment.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[First CursorBeat . . first lines]]></title><description><![CDATA[The cursor beats and running letters mark down the line in the  text.app  for this  static.site  powerd Blog. In the first steps everything…]]></description><link>https://blog.cursorbeat.dev/blog/first-cursorbeat-blog-launch</link><guid isPermaLink="false">https://blog.cursorbeat.dev/blog/first-cursorbeat-blog-launch</guid><pubDate>Sun, 01 Dec 2019 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The cursor beats and running letters mark down the line in the &lt;a href=&quot;https://marktext.app&quot;&gt;text.app&lt;/a&gt; for this &lt;a href=&quot;https://www.gatsbyjs.org&quot;&gt;static.site&lt;/a&gt; powerd Blog.&lt;/p&gt;&lt;p&gt;In the first steps everything here will be about Apps/Tools, Software-Development, DevOps and some storys worth to be told around those topics.&lt;/p&gt;&lt;p&gt;I try to keep everything as short as possible, to be able to read everything quickly, not wasting time.&lt;/p&gt;&lt;p&gt;To be introduced: My name is Adrian Grimm I&amp;#x27;m a german Software-Developer and currently the only one who pushes the cursor beating around here.&lt;/p&gt;&lt;p&gt;Blog Design and used technologys could change over time, but as for now this will work - hostet on &lt;a href=&quot;https://pages.github.com&quot;&gt;Github-Pages&lt;/a&gt; deployed by &lt;a href=&quot;https://travis-ci.com&quot;&gt;Travis-CI&lt;/a&gt; - so this is atm the DevOps style to blog.
If you want to take a look into the Code behind this - everything will be and stay opensource on &lt;a href=&quot;https://github.com/cursorbeat/cursorbeat.github.io&quot;&gt;Github&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;It&amp;#x27;s done! : &lt;a href=&quot;https://blog.cursorbeat.dev&quot;&gt;CursorBeat.dev Blog&lt;/a&gt; is online :tada: - cursor beats - waiting for more key pressed - instructing to move on - leaving signs behind...&lt;/p&gt;</content:encoded></item></channel></rss>