<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Arch-Linux on Notebook</title><link>http://blog.cmac4603.dev/tags/arch-linux/</link><description>Recent content in Arch-Linux on Notebook</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 11 Jun 2026 10:42:43 +0100</lastBuildDate><atom:link href="http://blog.cmac4603.dev/tags/arch-linux/index.xml" rel="self" type="application/rss+xml"/><item><title>Serial Console in the Terminal</title><link>http://blog.cmac4603.dev/posts/serial-console-in-the-terminal/</link><pubDate>Thu, 11 Jun 2026 10:42:43 +0100</pubDate><guid>http://blog.cmac4603.dev/posts/serial-console-in-the-terminal/</guid><description>&lt;p&gt;Instructions on how to connect to a device over serial USB port in the terminal on Arch with either &lt;code&gt;minicom&lt;/code&gt; or &lt;code&gt;tio&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Beforehand, ensure your user is in these groups (if adding, reboot machine).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# adding your user to these groups&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo usermod -aG dialout tty uucp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="with-minicom"&gt;With minicom&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Install the &lt;a href="https://archlinux.org/packages/extra/x86_64/minicom/"&gt;&lt;code&gt;minicom&lt;/code&gt;&lt;/a&gt; serial communication program.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo pacman -Sy minicom
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Connect to device over serial comms (here it is at &lt;code&gt;/dev/ttyUSB0&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>OpenVPN on Arch</title><link>http://blog.cmac4603.dev/posts/openvpn-on-arch/</link><pubDate>Tue, 09 Jun 2026 12:26:29 +0100</pubDate><guid>http://blog.cmac4603.dev/posts/openvpn-on-arch/</guid><description>&lt;h2 id="import-using-systemctl"&gt;Import using systemctl&lt;/h2&gt;
&lt;p&gt;Copy OpenVPN client file to &lt;code&gt;/etc&lt;/code&gt; directory:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo cp client.ovpn /etc/openvpn/client/myvpnconf.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Systemctl&amp;rsquo;s &lt;code&gt;enable&lt;/code&gt; command turns on the service on boot, the &lt;code&gt;--now&lt;/code&gt; flag also starts the service immediately:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# note the filename after @&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl enable --now openvpn-client@myvpnconf.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will start the VPN service with that configuration on boot, but this won&amp;rsquo;t integrate with networkmanager.&lt;/p&gt;
&lt;h2 id="integrating-vpn-connections--with-networkmanager"&gt;Integrating VPN connections with networkmanager&lt;/h2&gt;
&lt;h3 id="disable-the-original-systemctl-service-if-added-previously"&gt;Disable the original systemctl service (if added previously)&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl disable --now openvpn-client@myvpnconf.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="import-openvpn-connection"&gt;Import OpenVPN connection&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nmcli connection import type openvpn file myvpnconf.ovpn
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="edit-the-connection-to-add-username--password"&gt;Edit the connection to add username &amp;amp; password&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nmcli connection modify myvpnconf &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; +vpn.data &lt;span style="color:#e6db74"&gt;&amp;#34;connection-type=password-tls, username=&lt;/span&gt;$USERNAME&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; vpn.user-name $USERNAME &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; +vpn.secrets &lt;span style="color:#e6db74"&gt;&amp;#34;password=&lt;/span&gt;$PASSWORD&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="automatically-connect-to-vpn"&gt;Automatically connect to VPN&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;List connections&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nmcli connection
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME UUID TYPE DEVICE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;zrh-003 d46e4a92-778e-4792-b085-e1f638ecb8e3 vpn enp1s0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;enp1s0 1715b889-3c47-3e21-a86f-94ce207297a9 ethernet enp1s0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tun0 7405f329-255d-4b50-b98d-c2e865a443a4 tun tun0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Edit connection by adding the VPN UUID&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# note if device name doesn&amp;#39;t work use the UUID of the connection (not the VPN)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nmcli c edit enp1s0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nmcli&amp;gt; set connection.secondaries d46e4a92-778e-4792-b085-e1f638ecb8e3
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nmcli&amp;gt; save persistent
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Connection &lt;span style="color:#e6db74"&gt;&amp;#39;enp1s0&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;1715b889-3c47-3e21-a86f-94ce207297a9&lt;span style="color:#f92672"&gt;)&lt;/span&gt; successfully updated.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Connecting to ESP32</title><link>http://blog.cmac4603.dev/posts/connecting-to-esp32/</link><pubDate>Tue, 09 Jun 2026 08:45:33 +0100</pubDate><guid>http://blog.cmac4603.dev/posts/connecting-to-esp32/</guid><description>&lt;link rel="stylesheet" href="http://blog.cmac4603.dev/css/vendors/admonitions.53cd9f8afa9d9a8ac09093f668df057bc6d0f4bbd0886f39991a7b99934a7432.css" integrity="sha256-U82fivqdmorAkJP2aN8Fe8bQ9LvQiG85mRp7mZNKdDI=" crossorigin="anonymous"&gt;
 &lt;div class="admonition note"&gt;
 &lt;div class="admonition-header"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"&gt;&lt;path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/&gt;&lt;/svg&gt;
 &lt;span&gt;Note&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;
 &lt;p&gt;The hardware in this example is the &lt;a href="https://esp-rs.github.io/esp-rust-board/"&gt;&lt;code&gt;ESP32-C3-DevKit-RUST-1&lt;/code&gt;&lt;/a&gt; on Arch&lt;/p&gt;</description></item><item><title>Serial Port Access on Arch</title><link>http://blog.cmac4603.dev/posts/serial-port-access-on-arch/</link><pubDate>Sat, 30 May 2026 09:35:24 +0100</pubDate><guid>http://blog.cmac4603.dev/posts/serial-port-access-on-arch/</guid><description>&lt;p&gt;For access to microcontrollers, such as the ESP32, permissions are required to enable flashing devices etc. If having issues, but seeing the port connected, check the port first (in my example the port was &lt;code&gt;/dev/ttyACM0&lt;/code&gt;):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ls -l /dev/ttyACM0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;crw-rw---- &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; root uucp 166, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; May &lt;span style="color:#ae81ff"&gt;27&lt;/span&gt; 21:05 /dev/ttyACM0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Notice the group &lt;code&gt;uucp&lt;/code&gt; has access, we just need to add ourselves to it.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo usermod -aG uucp $USER
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A restart may be required for this to take effect.&lt;/p&gt;</description></item></channel></rss>