<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-CA">
  <title>hunke.ws</title>
  <link href="https://hunke.ws/"></link>
  <link href="https://hunke.ws/feed.xml" rel="self"></link>
  <id>https://hunke.ws/</id>
  <updated>2026-10-06T11:16:16-06:00</updated>
  <author>
    <name>Dan</name>
  </author>
  <entry>
    <title>F-Droid repo</title>
    <link href="https://hunke.ws/posts/fdroid-repo/"></link>
    <id>tag:hunke.ws,2026-10-06:01M493EJR0EAATW0Q611B3B103</id>
    <published>2026-10-06T11:16:16-06:00</published>
    <updated>2026-10-06T11:16:16-06:00</updated>
    <summary>I have started an F-Droid repo for the Android apps and games I am working on.</summary>
    <content type="html">&lt;p&gt;I have started an F-Droid repo for the Android apps and games I am working on.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://hunke.ws/fdroid/repo/index.html&#34;&gt;You can find it here.&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Add it to your phone or try some of them out in your browser by clicking on the Play in Browser link next to each listing.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;strong&gt;Dan&lt;/strong&gt;&lt;/p&gt;&#xA;</content>
    <category term="fdroid"></category>
    <category term="Android"></category>
  </entry>
  <entry>
    <title>Multisample Repository</title>
    <link href="https://hunke.ws/posts/multisample-repository/"></link>
    <id>tag:hunke.ws,2024-12-01:01JE0N5MM883HT59MK5Y4H56NT</id>
    <published>2024-12-01T08:25:09Z</published>
    <updated>2024-12-01T08:25:09Z</updated>
    <summary>These are multisample packs I have sampled myself using samples recorded from VSTs or physical instruments. Samples are created with Extreme Sample Converter and occasionally edited in Audacity.</summary>
    <content type="html">&lt;p&gt;These are multisample packs I have sampled myself using samples recorded from VSTs or physical instruments. Samples are created with &lt;a href=&#34;https://www.extranslator.com/&#34;&gt;Extreme Sample Converter&lt;/a&gt; and occasionally edited in &lt;a href=&#34;https://www.audacityteam.org/&#34;&gt;Audacity&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;These are royalty free samples and you are free to use them as you wish. No credit is needed, all I ask is that you use these to make some music that you enjoy. Samples are in WAV format for easy loading into the Synthstrom Deluge, Dirtywave M8, Sonicware SmplTrek/Lofi-12 XT, etc.&lt;/p&gt;&#xA;&lt;h5 id=&#34;sq8l&#34;&gt;SQ8L&lt;/h5&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;168 presets from the &lt;a href=&#34;http://www.buchty.net/ensoniq/&#34;&gt;SQ8L VST&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Multisamples (Deluge)&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;3 notes per octave, 5 octaves&lt;/li&gt;&#xA;&lt;li&gt;Synthstrom Deluge - 44.1kHz/24 bit stereo WAV | 5.63GB uncompressed | &lt;a href=&#34;https://mega.nz/file/69tFiSiR#vLC0WN1Yyk152TKRKR7xs2CR3QQ3fS_rbOZcv-96unw&#34;&gt;MEGA&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Middle C (M8, SmplTrek, Lofi-12, etc)&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;DirtyWave M8 - 44.1kHz/16 bit stereo WAV | 296MB uncompressed | &lt;a href=&#34;https://mega.nz/file/CsVSmApI#r1fa4l-uCyc4lZVajuodpv5mQQAfRu5Mvr0AMda1xZY&#34;&gt;MEGA&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Sonicware SmplTrek - 48kHz/16bit stereo WAV | 282MB uncompressed | &lt;a href=&#34;https://mega.nz/file/a5lDkYDI#DgrauxKTyYpC3tTcXj3vSEflb7ZiOhnciDKZNza2UtE&#34;&gt;MEGA&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Sonicware Lofi-12 XT - 24kHz/16 bit mono WAV | 71MB uncompressed | &lt;a href=&#34;https://mega.nz/file/H1kwkYLa#uDzyDZ64kH3qGXluPJxB_oSwFL3YNd9oKFhfABKrmL8&#34;&gt;MEGA&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h5 id=&#34;roland-ep-7&#34;&gt;Roland EP-7&lt;/h5&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;5 instruments (Piano, Electric Piano, Organ, Vibraphone, Strings) from the Roland EP-7 Digital Piano&lt;/li&gt;&#xA;&lt;li&gt;Each instrument has two versions - naked (no effects) and chorus (with built in chorus effect enabled)&lt;/li&gt;&#xA;&lt;li&gt;4 notes per octave, 5 octaves&lt;/li&gt;&#xA;&lt;li&gt;24 bit/44.1kHz WAV | 709MB uncompressed | &lt;a href=&#34;https://mega.nz/#!K9dDDYxD!F0nq7gqzBm-ksSota1Slg0eKBifBVOZ77lDGO85AoRY&#34;&gt;MEGA&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;strong&gt;Dan&lt;/strong&gt;&lt;/p&gt;&#xA;</content>
  </entry>
  <entry>
    <title>Raspberry Pi USB MIDI Host</title>
    <link href="https://hunke.ws/posts/raspberry-pi-usb-midi-host/"></link>
    <id>tag:hunke.ws,2024-04-23:01HW5GGBY8F4ERWTW7EVEFWYWG</id>
    <published>2024-04-23T06:57:17-06:00</published>
    <updated>2024-04-23T06:57:17-06:00</updated>
    <summary>This guide exists to help you create a USB MIDI router out of a Raspberry Pi so that you can connect USB MIDI devices together easily. If you add a battery to your Raspberry Pi, like in my Otto project, you can connect these devices anywhere!</summary>
    <content type="html">&lt;p&gt;This guide exists to help you create a USB MIDI router out of a Raspberry Pi so that you can connect USB MIDI devices together easily.&#xA;If you add a battery to your Raspberry Pi, like in my &lt;a href=&#34;https://github.com/roge-rm/otto&#34;&gt;Otto&lt;/a&gt; project, you can connect these devices anywhere!&lt;/p&gt;&#xA;&lt;p&gt;The information from this guide largely comes from &lt;a href=&#34;https://neuma.studio/rpi-as-midi-host/&#34;&gt;Fabio Barbon&amp;rsquo;s guide at Neumatic Studio&lt;/a&gt;. I also relied on my &lt;a href=&#34;http://hunke.ws/posts/orange-pi-usb-midi-host/&#34;&gt;previous guide&lt;/a&gt; on how to set up an Orange Pi USB MIDI router.&lt;/p&gt;&#xA;&lt;p&gt;I provide a preconfigured 32 bit Raspberry Pi OS Legacy (Debian Bullseye) image that can be flashed to an 8GB or larger microSD card. This image is created using the step by step instructions below it.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;This should work on any Raspberry Pi capable of running 32 bit Raspberry Pi OS.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;It has been tested in a Raspberry Pi Zero 2W as well as a Raspberry Pi 2B+&lt;/p&gt;&#xA;&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;/h2&gt;&#xA;&lt;p&gt;Insert the flashed microSD card in your Raspberry Pi and turn it on. Give the device ~10-30 seconds to boot (depend on speed of Pi and microSD card) and then plug in your USB MIDI devices.&#xA;They should be automatically connected to each other and transmitting/receiving data in both directions.&lt;/p&gt;&#xA;&lt;p&gt;When done, simply remove the power to the Pi. The image is set to read only and there is no risk to corrupting the card as there will be no writes to interrupt.&lt;/p&gt;&#xA;&lt;p&gt;Rinse and repeat as needed.&lt;/p&gt;&#xA;&lt;h2 id=&#34;preconfigured-image&#34;&gt;Preconfigured image&lt;/h2&gt;&#xA;&lt;p&gt;The latest preconfigured image can be found at my &lt;a href=&#34;https://github.com/roge-rm/otto&#34;&gt;Otto&lt;/a&gt; project on github, &lt;a href=&#34;https://github.com/roge-rm/otto/releases&#34;&gt;at this link&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;To flash the image, download the latest release zip file and extract the .img file inside. Then write that image to an 8GB or larger microSD card.&#xA;You can use &lt;a href=&#34;https://rufus.ie/en/&#34;&gt;Rufus&lt;/a&gt; or &lt;a href=&#34;https://win32diskimager.org/&#34;&gt;Win32 Disk Imager&lt;/a&gt; for Windows, or dd on linux/mac.&lt;/p&gt;&#xA;&lt;h2 id=&#34;step-by-step-instructions&#34;&gt;Step by step instructions&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Download the &lt;a href=&#34;https://www.raspberrypi.com/software/&#34;&gt;Raspberry Pi Imager&lt;/a&gt; and set up the microSD card. Choose the Legacy 32 Lite image (no desktop is needed). You will need to enter in a username/password, set up wifi, and enable SSH access (on the second tab) in order to finish the setup. Setting the hostname can also be helpful.&lt;/li&gt;&#xA;&lt;li&gt;Insert the microSD in your Raspberry Pi and boot it up. It will take some time to connect to your WIFI, you can watch your router&amp;rsquo;s DHCP logs to see what IP it pulls or try to ping the hostname you set until you see a response.&lt;/li&gt;&#xA;&lt;li&gt;Connect to the Pi using SSH&lt;/li&gt;&#xA;&lt;li&gt;Perform &lt;code&gt;sudo apt update&lt;/code&gt; and &lt;code&gt;sudo apt upgrade&lt;/code&gt; to update all current packages&lt;/li&gt;&#xA;&lt;li&gt;Perform &lt;code&gt;sudo apt install git ruby&lt;/code&gt; to install required packages&lt;/li&gt;&#xA;&lt;li&gt;Create and edit the connection script &lt;code&gt;sudo nano /usr/local/bin/connectall.rb&lt;/code&gt;&lt;br&gt;&#xA;Paste the following code as the contents:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre&gt;&lt;code&gt;#!/usr/bin/ruby&#xA;#&#xA;&#xA;t = `aconnect -i -l`&#xA;ports = []&#xA;t.lines.each do |l|&#xA;  /client (\d*)\:/=~l&#xA;  port = $1&#xA;  # we skip empty lines and the &amp;quot;Through&amp;quot; port&#xA;  unless $1.nil? || $1 == &#39;0&#39; || /Through/=~l&#xA;    ports &amp;lt;&amp;lt; port&#xA;    #names &amp;lt;&amp;lt; name&#xA;  end  &#xA;end&#xA;&#xA;ports.each do |p1|&#xA;  ports.each do |p2|&#xA;    unless p1 == p2 # probably not a good idea to connect a port to itself&#xA;      system  &amp;quot;aconnect #{p1}:0 #{p2}:0&amp;quot;&#xA;    end&#xA;  end&#xA;end&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ol start=&#34;7&#34;&gt;&#xA;&lt;li&gt;Save and exit the file (Ctrl+X, then Y, then enter)&lt;/li&gt;&#xA;&lt;li&gt;Set permissions on the file &lt;code&gt;sudo chmod +x /usr/local/bin/connectall.rb&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Connect one or more USB devices to otto and issue &lt;code&gt;connectall.rb&lt;/code&gt; to perform a test connection&lt;br&gt;&#xA;Check the results with &lt;code&gt;aconnect -l&lt;/code&gt;, it should show connected devices&lt;/li&gt;&#xA;&lt;li&gt;Create a udev rule to run the script when USB devices are connected &lt;code&gt;sudo nano /etc/udev/rules.d/33-midiusb.rules&lt;/code&gt;&lt;br&gt;&#xA;Paste the following as contents:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre&gt;&lt;code&gt;ACTION==&amp;quot;add|remove&amp;quot;, SUBSYSTEM==&amp;quot;usb&amp;quot;, DRIVER==&amp;quot;usb&amp;quot;, RUN+=&amp;quot;/usr/local/bin/connectall.rb&amp;quot;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ol start=&#34;11&#34;&gt;&#xA;&lt;li&gt;Restart the udev service to enable &lt;code&gt;sudo udevadm control --reload&lt;/code&gt; and &lt;code&gt;sudo service udev restart&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Create a systemd service to configure any attached devices at boot &lt;code&gt;sudo nano /lib/systemd/system/midi.service&lt;/code&gt;&#xA;Paste the following as contents:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre&gt;&lt;code&gt;[Unit]&#xA;Description=Initial USB MIDI connect&#xA;&#xA;[Service]&#xA;ExecStart=/usr/local/bin/connectall.rb&#xA;&#xA;[Install]&#xA;WantedBy=multi-user.target&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ol start=&#34;13&#34;&gt;&#xA;&lt;li&gt;Reload the systemctl daemon &lt;code&gt;sudo systemctl daemon-reload&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Enable &lt;code&gt;sudo systemctl enable midi.service&lt;/code&gt; the service.&lt;/li&gt;&#xA;&lt;li&gt;Reboot the device &lt;code&gt;sudo reboot&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;At this point USB MIDI routing should be working as expected, you can plug and unplug devices as desired and they should be automatically connected to each other.&lt;/p&gt;&#xA;&lt;p&gt;In order to prevent microSD card corruption you will want to set it up as read-only.&lt;/p&gt;&#xA;&lt;ol start=&#34;16&#34;&gt;&#xA;&lt;li&gt;Reconnect to the device via SSH&lt;/li&gt;&#xA;&lt;li&gt;Clone the rpi-readonly git &lt;code&gt;git clone https://gitlab.com/larsfp/rpi-readonly&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Enter the directory &lt;code&gt;cd rpi-readonly&lt;/code&gt; and run the setup &lt;code&gt;sudo ./setup.sh&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;When setup is complete your install will be set to read only mode. You are now ready to make music!&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;If you want to make changes in the future you can turn read/write mode on with the command &lt;code&gt;rw&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;When done making changes you can turn read-only mode back on using the command &lt;code&gt;ro&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;strong&gt;Dan&lt;/strong&gt;&lt;/p&gt;&#xA;</content>
  </entry>
  <entry>
    <title>Orange Pi USB MIDI Host</title>
    <link href="https://hunke.ws/posts/orange-pi-usb-midi-host/"></link>
    <id>tag:hunke.ws,2019-06-29:01DEHYS11R30E7QFNQPN0ZXMVN</id>
    <published>2019-06-29T15:48:35Z</published>
    <updated>2019-06-29T15:48:35Z</updated>
    <summary>I was looking for a way to get my Deluge to play nice with other USB MIDI devices while waiting for the 3.0 firmware to come out. I happened to have an Orange Pi +2E laying around, knew that this had been done with a Raspberry Pi, and thought “how hard could this be?”</summary>
    <content type="html">&lt;p&gt;I was looking for a way to get my Deluge to play nice with other USB MIDI devices while waiting for the 3.0 firmware to come out. I happened to have an Orange Pi +2E laying around, knew that this had been done with a Raspberry Pi, and thought &amp;ldquo;how hard could this be?&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;Turns out, not so hard.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Side note: I found &lt;a href=&#34;https://neuma.studio/rpi-as-midi-host.html&#34;&gt;this guide&lt;/a&gt; by Neuma Studio very helpful and have adapted many parts of it for my own writeup. Credit for the ruby script goes to Morten Johannes Ervik and can be found &lt;a href=&#34;http://m635j520.blogspot.com/2017/01/using-raspberry-pi-as-midi-usb5-pin.html&#34;&gt;here&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;If you are not familiar with the setup of armbian the &lt;a href=&#34;https://docs.armbian.com/User-Guide_Getting-Started/&#34;&gt;getting started&lt;/a&gt; guide can be very helpful.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;You&amp;rsquo;ll need the legacy armbian image for Orange Pi or MIDI will not work correctly, for the Orange Pi +2E the link is at the bottom of &lt;a href=&#34;https://www.armbian.com/orange-pi-plus-2e/&#34;&gt;this page&lt;/a&gt;. Write the armbian image to your microSD of choice (4GB is a good size, 2GB is fine if you use overlayroot to set the filesystem read only), connect your your Orange Pi to a TV/keyboard (if using wireless) or to an ethernet cable if you prefer to set it up that way.&lt;/p&gt;&#xA;&lt;p&gt;Boot the Pi, setup the new root password, new user account, display resolution (if using a TV) and reboot to resize the filesystem. &lt;em&gt;If you are using a 2GB microSD card you will always get a notice on boot that you need to reboot to resize, this will go away when you enable overlayroot.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Set up the wireless and update the system using apt.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;nmtui-connect &#xA;apt update&#xA;apt upgrade&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Install ruby.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;apt install ruby&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;I disable the nodm service as I think it&amp;rsquo;s a waste of time to load X on something that t will not have a monitor attached.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sudo systemctl disable nodm&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;I also disable the NetworkManager-wait-online service as it usually adds ~30 seconds or so to the boot time.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sudo systemctl disable NetworkManager-wait-online&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;You can use the &lt;strong&gt;systemd-analyze blame&lt;/strong&gt; command if you are curious to see what services take how long to start up and remove any more you don&amp;rsquo;t see any use for.&lt;/p&gt;&#xA;&lt;p&gt;At this point you should follow the entire section called &lt;strong&gt;CONFIGURING AUTOMATIC MIDI CONNECTION&lt;/strong&gt; at the &lt;a href=&#34;https://neuma.studio/rpi-as-midi-host.html&#34;&gt;Neuma Studio blog&lt;/a&gt;. Remove or comment out the line in the script that says &lt;em&gt;names &amp;lt;&amp;lt; name&lt;/em&gt; as that part is not required for this application and will cause errors when you run the script.&lt;/p&gt;&#xA;&lt;p&gt;I will copy the section (lightly edited due to formatting issues) here just in case something happens to the source page:&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;issue the command&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sudo nano /usr/local/bin/connectall.rb&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;and copy the following content (all credits for this goes to the author of &lt;a href=&#34;http://m635j520.blogspot.com/2017/01/using-raspberry-pi-as-midi-usb5-pin.html&#34;&gt;this page&lt;/a&gt;). (to save and exit from nano editor, issue ctrl + O followed by ctrl + X)&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#!/usr/bin/ruby&#xA;#&#xA;&#xA;t = `aconnect -i -l`&#xA;ports = []&#xA;t.lines.each do |l|&#xA;  /client (\d*)\:/=~l&#xA;  port = $1&#xA;  # we skip empty lines and the &amp;quot;Through&amp;quot; port&#xA;  unless $1.nil? || $1 == &#39;0&#39; || /Through/=~l&#xA;    ports &amp;lt;&amp;lt; port&#xA;    #names &amp;lt;&amp;lt; name&#xA;  end  &#xA;end&#xA;&#xA;ports.each do |p1|&#xA;  ports.each do |p2|&#xA;    unless p1 == p2 # probably not a good idea to connect a port to itself&#xA;      system  &amp;quot;aconnect #{p1}:0 #{p2}:0&amp;quot;&#xA;    end&#xA;  end&#xA;end&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;issue the command&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sudo chmod +x /usr/local/bin/connectall.rb&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;You can test the auto-connection with command&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;connectall.rb&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;and checking results with&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;aconnect -l&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Configure automatic MIDI connection/disconnection on USB device connect/disconnect:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sudo nano /etc/udev/rules.d/33-midiusb.rules&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;copy the following content and save the file&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ACTION==&amp;quot;add|remove&amp;quot;, SUBSYSTEM==&amp;quot;usb&amp;quot;, DRIVER==&amp;quot;usb&amp;quot;, RUN+=&amp;quot;/usr/local/bin/connectall.rb&amp;quot;    &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;issue the following commands:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sudo udevadm control --reload&#xA;sudo service udev restart&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Configure MIDI connection at system boot:&#xA;sudo nano /lib/systemd/system/midi.service&lt;/p&gt;&#xA;&lt;p&gt;copy the following content and save the file&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;[Unit]&#xA;Description=Initial USB MIDI connect&#xA;&#xA;[Service]&#xA;ExecStart=/usr/local/bin/connectall.rb&#xA;&#xA;[Install]&#xA;WantedBy=multi-user.target&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;issue the following commands:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sudo systemctl daemon-reload&#xA;sudo systemctl enable midi.service&#xA;sudo systemctl start midi.service&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;To test automatic connection, you can use the command &lt;strong&gt;aconnect -l&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;If you want to make your system read-only so that you can yank the power any time without worrying about hurting the OS, &lt;a href=&#34;https://docs.armbian.com/User-Guide_Advanced-Features/#how-to-freeze-your-filesystem&#34;&gt;setup overlayroot&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;You need an ODROID XU4 or Allwinner A10, A20 or H3 board with legacy kernel where we added support for overlayfs. Works only on Ubuntu Xenial. &#xA;Login as root and execute:&#xA;&#xA;apt-get install overlayroot&#xA;echo &#39;overlayroot=&amp;quot;tmpfs&amp;quot;&#39; &amp;gt;&amp;gt; /etc/overlayroot.conf&#xA;reboot&#xA;After your system boots up it will always remain as is. If you want to make any permanent changes, you need to run:&#xA;&#xA;overlayroot-chroot&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;For some reason running overlayroot-chroot does not appear to be enough for me when I want to make further changes. If I want to make changes after overlayroot is enabled I have to run the following commands:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sudo overlayroot-chroot&#xA;sudo mount -o remount,rw /dev/mmcblk0p1&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Then I edit the file &lt;em&gt;/etc/overlayroot.conf&lt;/em&gt; and change the last line from&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;overlayroot=&amp;quot;tmpfs&amp;quot;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;to&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;overlayroot=&amp;quot;disabled&amp;quot;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;I am then able to reboot and make any changes I want. When I want the system to go back to read-only I edit &lt;em&gt;/etc/overlayroot.conf&lt;/em&gt; and change the last line back to tmpfs.&lt;/p&gt;&#xA;&lt;p&gt;At this point you should be able to reboot your Orange Pi and have a MIDI host that automatically inter-connects any USB MIDI devices you connect to it. If you setup overlayroot you should be able to power up/off the Orange Pi repeatedly without worrying about filesystem corruption.&lt;/p&gt;&#xA;&lt;p&gt;Thanks to everyone whose work I stole for this little project.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;strong&gt;Dan&lt;/strong&gt;&lt;/p&gt;&#xA;</content>
  </entry>
</feed>
