The Gig of Hamhttps://www.gigofham.com/index.xml
Recent content on The Gig of HamHugo -- gohugo.ioen-usThis work is licensed under a Creative Commons Attribution 4.0 International License.Wed, 12 Dec 2018 14:23:20 +0000Installing and using the GuruNet for the Amigahttps://www.gigofham.com/post/2018/12/12-gurunet-review-install/
Wed, 12 Dec 2018 14:23:20 +0000https://www.gigofham.com/post/2018/12/12-gurunet-review-install/<p>Yep, another Amiga post. So, you have a real Amiga, and you want to get it on-line. There are several solutions, but for reasonable speed and price the <a href="http://lallafa.de/blog/amiga-projects/plipbox">plipbox</a> has been it for a while. Now, we have the <a href="https://electronicsisfun.com/gurunet">GuruNet</a> which is a simplified version of the original plipbox (no soldering or assembly required). Today I&rsquo;m going to talk about how to install it and the required software to get your Amiga online (this guide can also be used for other network cards).</p>
<p></p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/gurunet.jpg" alt="Photo of the GuruNet" /></p>
<h1 id="disclaimer">Disclaimer</h1>
<p>Before we jump in too far, a disclaimer. I personally know Carlos from <a href="ElectronicsIsFun.com">ElectronicsIsFun.com</a> who makes the GuruNet. I also helped with testing of it. I have a couple of these devices, which he kindly provided me for no charge. This isn&rsquo;t a review, it&rsquo;s more a getting started guide. I use these on a couple of my Amiga systems and think they are great solutions to a common problem: getting network connected cheaply. This post is going to cover a lot of the findings I&rsquo;ve made over the last several months so the community at large doesn&rsquo;t have to suffer through all the work I already did. I&rsquo;m also working with Carlos and Bo (we are all members of the <a href="https://www.meetup.com/Central-Texas-Commodore-Users-Group/">Central Texas Commodore Users Group</a>) on their upcoming GuruModem product and you can expect some content here about that as well.</p>
<h1 id="why-gurunet">Why GuruNet</h1>
<p>With that out of the way, let&rsquo;s talk about why GuruNet over the alternatives. The first is price and availability. The GuruNet is $77 dollars, and currently available. If you don&rsquo;t already have a network solution, this is one of the cheapest.</p>
<p>For around $30 more you can get the excellent <a href="https://icomp.de/shop-icomp/en/shop/product/x-surf-100.html">X-Surf 100</a>, and if you have an Amiga 3000 or 4000 series system and you are going to use the network or USB often, I recommend getting the X-Surf. I have one in my A4000D and it&rsquo;s wonderful, but on an A2000 series system it&rsquo;s kind of a waste. Even with an accellerator board you are very limited by the Zorro2 bus to the same speeds or less than what you get from the GuruNet.</p>
<p>If you have an A500, there is the option of the <a href="http://icomp.de/shop-icomp/en/shop/product/x-surf-500.html">X-Surf 500</a> and that may be a good solution for you as well if you already have an ACA500(plus) accelerator.</p>
<p>If you have an A600, or A1200 then you could use a PCMCIA network card. I have a 3c589 that I was using on my A1200, but the PCMCIA slot on the A1200 is notoriously buggy. I swapped out my 3c589 for a GuruNet and have found it to be a much more stable solution. No lockups when moving large amounts of data like I would have frequently with my 3c589 (I&rsquo;ve moved over 12GB to my A1200 over the GuruNet without issue), but YMMV.</p>
<p>If you have a &ldquo;big box Amiga&rdquo; and already have a network card, there really isn&rsquo;t much reason to replace that with the GuruNet.</p>
<p>So basically, if you need a network adapter that will work on a wide variety of systems and don&rsquo;t already have a good solution the GuruNet may be a good fit for you.</p>
<h1 id="the-hardware">The Hardware</h1>
<p>The device is pretty simple, as you can see from the image above. It comes fully assembled and programmed. On the left is the Parallel port interface, and on the right are an RJ-45 <sup>10</sup>&frasl;<sub>100</sub> Ethernet jack and a MicroUSB connector for power. The hardware design is Open Source and the design files are available on <a href="https://electronicsisfun.com/download">ElectronicsIsFun.com</a> if you would like them. The Manual there goes over how to program the device, and a brief summary of how to setup the software on your Amiga. This blog post is mostly go into the details of the software configuration.</p>
<p>The rest of the components are what you would expect, some level shifters, power control, ICSP header, and an Atmel microcontroller to run it. There is no software changes needed from the original plipbox distribution to use, this is just a cost reduced/simplified version of the same design (some of the original parts are much harder to find now in a through-hole format).</p>
<p>The device comes pre-programmed. You only need to provide power and plug it into your system. Power comes from the MictoUSB port. In all of my testing, we&rsquo;ve never seen the current draw exceed 80mA so pretty much any USB power source will do. The data pins are not connected on the USB port, so you can even connect to a different computer or USB hub to get the power. It won&rsquo;t appear as a USB device. That basically covers hardware installation. Let&rsquo;s get into software.</p>
<h1 id="amiga-compatibility-and-software-options">Amiga Compatibility and Software Options</h1>
<p>The plipbox site provides SANA-II drivers, which will work for any Amiga and any IP stack commonly available on the Amiga. We have tested:</p>
<ul>
<li>EasyNet and EasyNet Pro</li>
<li>Roadshow</li>
<li>Miami and Miami Deluxe</li>
<li>AmiTCP</li>
</ul>
<p>All work without issue. EasyNet, EasyNet Pro, and Roadshow are paid commercial offerings. Miami, Miami Deluxe, and AmiTCP 3.0 are all freely avialble.</p>
<p>As for Amiga compatibility, we have tested with several A2000 series system, an A3000, an A4000 Desktop, an A1200, and an A600. It should work with just about any Amiga that can support Workbench 2.0 or later, but most of my testing has been on Workbench 3.1 or 3.1.4 with a hard drive based installed. That said, there are some caveats:</p>
<h2 id="known-hardware-incompatibilities">Known hardware incompatibilities</h2>
<p>First of, if you are using you Amiga as a Video Toaster it&rsquo;s not recommended that you have the IP stack loaded or the GuruNet installed while using the Video Toaster. This is because the Video Toaster board also communicates over the parallel port (which is integrated into the internal video slot) with the Amiga. The parallel port isn&rsquo;t a bus, so the two devices will cause a conflict. How will this manifest? If you are not actively using the Toaster it seems to be fine. I haven&rsquo;t been brave enough to find out what happens if you have initialized the Toaster and try to run the switcher with the GuruNet installed. I don&rsquo;t recommend running the network stack or having the GuruNet plugged into your system if you plan on using the Video Toaster switcher, and I recommend a power cycle of the system before trying to use the GuruNet after using the Video Toaster switcher application to be on the safe side.</p>
<p>The other major incompatibility we have found is Amiga 2000 Accellerator boards. This is a big deal, and we&rsquo;re not sure what&rsquo;s going on yet. We&rsquo;ve experienced the issue with a Commodore A2630 card, and a GVP 030 acceletatore card in multiple machines. The device is detected, but traffic is not flowing to the network as expected. We&rsquo;re still debugging the issue, and if we find a solution we&rsquo;ll post about it in the GuruNet page.</p>
<h2 id="amiga-hardware-requirements">Amiga Hardware Requirements</h2>
<p>We have successfully installed and used the GuruNet on some pretty low end OCS machines. The important thing is to properly set your expectations. The GuruNet does a great job of moving files on the older machine, but don&rsquo;t expect to be able to web surf effectively. Even on an OCS machine, the GuruNet is much faster than serial port based data transfers.</p>
<p>Any Amiga with a parallel port, and Workbench 2.0 should work. All of my testing has been on Workbench 3.1, 3.X, or 3.1.4 with a hard drive. This guide assumes you are doing an install on a system where you are booting off a Hard Drive based install. I don&rsquo;t recommend using this on an Amiga that doesn&rsquo;t have a Hard Drive, and this guide requires it.</p>
<h2 id="choosing-a-software-stack">Choosing a software stack</h2>
<p>In this post, I&rsquo;m going to cover 4 stacks to choose from. Let&rsquo;s talk about their pros and cons, as well as their requirements:</p>
<ul>
<li>EasyNet and EasyNet Pro
<ul>
<li>Commercially Available from <a href="http://www.amigakit.com">AmigaKit</a> (costs 8GBP and 16BGP as of publish date*</li>
<li>Requires Workbench 2.0 or later, and 1MB of RAM</li>
<li>Ships on CD-ROM (contents can be copied via other means)</li>
<li>Nice GUI based install and configuration</li>
<li>Based on AmiTCP for broad compatibility</li>
<li>Includes some basic command line tools like ftp and telnet</li>
<li>Simple GUI for connect/disconnect</li>
<li>DHCP support varies between versions</li>
</ul></li>
<li>Roadshow
<ul>
<li>Commercially available from <a href="http://roadshow.apc-tcp.de/index-en.php">APC and TCP</a> (Costs 25EUR as of publish date)</li>
<li>Requires Workbench 2.04 or later, and 2MB of RAM</li>
<li>Ships as Download with optional CD-ROM</li>
<li>Excellent documentation</li>
<li>Entirely CLI based configuration with a standard GUI based installed</li>
<li>Very quick to setup and automatically starts in the background by default</li>
<li>Based on AmiTCP</li>
<li>Includes command line tools like ftp and wget</li>
<li>Supports DHCP</li>
</ul></li>
<li>Miami and Miami Deluxe (MiamiDX)
<ul>
<li>Author has made keys publically available via <a href="http://www.fatcat.vispa.com/keyring/">Keyring</a> (it&rsquo;s free!)</li>
<li>Miami requires Workbench 2.04 or later and recommends MUI 3.8 for the GUI toolkit</li>
<li>MiamiDX requires Workbench 2.04 or later, MUI 3.8, and a 68020 processor</li>
<li>Fully GUI based install and configuration</li>
<li>Somewhat large GUI for connect/disconnect</li>
<li>Supports DHCP</li>
<li>Miami specific command line tools (everything is prefixed with <code>miami-</code>)</li>
</ul></li>
<li>AmiTCP
<ul>
<li>Version 3 is Freely available (later versions are forked into EasyNet and Roadshow)</li>
<li>Entirely command line based</li>
<li>Difficult to install manually</li>
<li>Includes command line tools like ftp</li>
<li>Has addon to support DHCP</li>
<li>Not covered in this guide, yet.</li>
</ul></li>
</ul>
<p>I&rsquo;ve used all of the above except AmiTCP. They all have their pros and cons. Personally, I really like Roadshow. If you want a free option, grab Miami or MiamiDX based on your hardware.</p>
<h1 id="driver-installation">Driver Installation</h1>
<p>No matter what software you choose, you will need the driver installed. It&rsquo;s best to install the driver first, so let&rsquo;s do that.</p>
<p>You will need the driver from either the plipbox site, or I have repackaged it as an LHA archive with the correct file protections: <a href="http://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/plipbox-0.6.lha">plipbox-0.6.lha</a></p>
<p>Once you extract that archive into <code>RAM:</code>, you will see several files:</p>
<pre><code>dev_test_RELEASE_000
dev_test_RELEASE_020
dev_test_RELEASE_040
plipbox.device_RELEASE_000
plipbox.device_RELEASE_020
plipbox.device_RELEASE_040
udp_test_RELEASE_000
udp_test_RELEASE_020
udp_test_RELEASE_040
</code></pre>
<p>(If you are extracting from the plipbox-0.6.zip file from the plipbox site, these files are in the <code>amiga/bin</code> subdirectory)</p>
<p>The filenames ending with 000 can run on any Amiga. Ending in 020 require an Amiga with a 68020 processor or better, and the files ending in 040 require an an Amiga with a 68040 processor or better. The 020 and 040 versions do offer better performance. For this example, I&rsquo;m going to give the commands for the 020 versions (substitue as necessary).</p>
<p>Next, you will need to copy the device and test utilities. You can do so with the following commands from the CLI or from the Execute box in Workbench:</p>
<pre><code>MAKEDIR DEVS:Networks
COPY RAM:plipbox.device_RELEASE_020 DEVS:Networks/plipbox.device
COPY RAM:dev_test_RELEASE_020 C:plipbox_dev_test CLONE
COPY RAM:udp_test_RELEASE_020 C:plipbox_udp_test CLONE
</code></pre>
<p>Now you should be able to run the <code>plipbox_dev_test</code> command. If it stops at <code>Waiting for incoming packets...</code> then everything is working and you can press Ctrl+C to quit. Otherwise, check that the GuruNet has power and it&rsquo;s plugged in fully to the parallel port and the Ethernet cable is connected. The link light should be on even if the driver is not yet loaded.</p>
<p>That&rsquo;s it. Not much to it. Now we can install the network stack to use the hardware.</p>
<h1 id="network-stack-installation">Network Stack Installation</h1>
<p>Below are the network stack installation procedures. Choose one and complete that section. Do not install multiple stacks on the same machine. I&rsquo;m not going to go over disabling or un-installing, you are on your own for that. I&rsquo;m also not assuming you have anything needed to install, but have a way to get files from the Internet to the machine.</p>
<p>If you need a way to get larger files from the Internet to your machine, may I suggest using a null modem serial cable and <a href="http://aminet.net/package/comm/term/ncomm306">NComm</a>. I have a <a href="://gigofham.com/posts/2018/12/10-installing-ncomm">blog post with the details on how to install and use that</a>.</p>
<p>In order to take nice screenshots (and install multiple times without taking all week), I&rsquo;ll be doing these installs on an emulated A1200 with 2MB of RAM and an 68020 processor. I&rsquo;ve pre-downloaded the files needed and stored them in <code>Shared:Downloads</code> on these emulated machines. For broadest compatibility, I&rsquo;m going to be installing the 68000 versions of all tools and drivers. Adjust as you see fit for your machine (if you have an 020, 030, or 040 there are significant performance improvements available).</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_01.png" alt="Amiga Workbench" /></p>
<p>I also assume you have a drawer called <code>Installers</code> on your <code>DH0:</code> disk which we will extract the tools into for installation. It will be safe to delete this when done.</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_05.png" alt="Amiga Workbench showing 'Installers' drawer" /></p>
<p>Remeber: You can only install <em>one</em> of these stacks. Here&rsquo;s the list in case you forgot (which will jump you to the correct part of the page):</p>
<ul>
<li><a href="#installing-miami">Miami</a></li>
<li><a href="#installing-miamidx">Miami Deluxe</a></li>
<li><a href="#installing-easynet-or-easynet-pro">EasyNet or EasyNet Pro</a></li>
<li><a href="#installing-roadshow">Roadshow</a></li>
</ul>
<h2 id="installing-miami">Installing Miami</h2>
<p>Required files:</p>
<ul>
<li><a href="http://aminet.net/package/util/arc/lha">LhA Utility</a> from <a href="http://aminet.net">aminet</a> in <a href="http://aminet.net/util/arc/lha.run">util/arc/lha.run</a></li>
<li><a href="http://aminet.net/package/util/libs/mui38usr">MUI 3.8</a> from <a href="http://aminet.net">aminet</a> in <a href="http://aminet.net/util/libs/mui38usr.lha">util/libs/mui38usr.lha</a></li>
<li><a href="http://aminet.net/package/comm/tcp/Miami32b2-main">Miami main archive</a> program from <a href="http://aminet.net">aminet</a> in <a href="http://aminet.net/comm/tcp/Miami32b2-main.lha">comm/tcp/Miami32b2-main.lha</a></li>
<li><a href="http://aminet.net/package/comm/tcp/Miami32b-MUI">Miami MUI Interface</a> from <a href="http://aminet.net">aminet</a> in <a href="http://aminet.net/comm/tcp/Miami32b-MUI.lha">comm/tcp/Miami32b-MUI.lha</a></li>
<li><a href="http://aminet.net/package/comm/tcp/Miami32b-000">Miami 68000 generic binaries</a> from <a href="http://aminet.net">aminet</a> in <a href="http://aminet.net/comm/tcp/Miami32b-000.lha">comm/tcp/Miami32b-000.lha</a>
<ul>
<li>Alternatively, <a href="http://aminet.net/package/comm/tcp/Miami32b-020">the binaries for 68020 or later</a> packaged can be used from <a href="http://aminet.net">aminet</a> in <a href="http://aminet.net/comm/tcp/Miami32b-020.lha">comm/tcp/Miami32b-020.lha</a></li>
</ul></li>
<li>Miami key files from <a href="http://www.fatcat.vispa.com/keyring/">Keyring</a> (or alternatively from <a href="http://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/miami-3.0-key.lha">my mirror in lha format</a>)</li>
</ul>
<p>First, we&rsquo;re going to extract the <code>lha</code> tool and install it in <code>C:</code> for easy use. Open your harddrive, go to the <code>System</code> folder, and open <code>Shell</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_02.png" alt="Amiga Workbench a CLI shell" /></p>
<p>Next, specify the full path of the <code>lha.run</code> file you have downloaded and suffix <code>DH0:Installers/</code> to the command line options. This will extract the archive to the RAM disk. If you get an error about the file not being executable, run <code>protect Shared:Downloads/lha.run +se</code> to and re-run the command shown:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_01.png" alt="Amiga Workbench extracting and copying lha" /></p>
<p>Then <code>COPY RAM:lha_68k C:lha CLONE</code> will copy the generic <code>lha</code> tool to your <code>C:</code> path:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_02.png" alt="Amiga Workbench extracting and copying lha" /></p>
<p>Next we need to extract the MUI 3.8 installer:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_08.png" alt="Amiga Workbench showing MUI extraction command" /></p>
<p>Many files will scroll past. When it&rsquo;s done it will look like this:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_09.png" alt="Amiga Workbench showing completed MUI extraction" /></p>
<p>Now you can close the Shell, open the <code>Installers</code> folder on your HDD and then the <code>MUI</code> folder in there. Open the <code>Install-MUI</code> application:</p>
<p><img src="://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_10.png" alt="Amiga Workbench showing MUI installer drawer" /></p>
<p>Choose the Intermediate mode (this is important) and press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_12.png" alt="MUI installer launch" /></p>
<p>We want to install to for real and now log the actions, so press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_13.png" alt="MUI installer options" /></p>
<p>Yep, we&rsquo;re installing MUI so press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_14.png" alt="MUI wants to install MUI" /></p>
<p>MUI will now show you the default location to install:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_15.png" alt="MUI default install location" /></p>
<p>If you have multiple hard drives or partitions, MUI defaults to the 2nd drive. This is probably not what you want, I always install MUI to the primary hard drive. So, press the <code>Show Drives</code> button:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_16.png" alt="Clicking show drives updates the list above" /></p>
<p>Then choose the drive labeled <code>DH0:</code> like so:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_17.png" alt="A minimally installed DH0 looks like this" /></p>
<p>Now you can press <code>Proceed</code> and many files will be copied. Eventually you will see a screen offering various image sets, just leave the defaults and press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_18.png" alt="Available MUI image sets" /></p>
<p>Next you will be asked for language support. Choose what works for you and press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_19.png" alt="MUI default language support" /></p>
<p>Next you will be asked if your want the demo programs. I typically press <code>No</code> but it&rsquo;s up to you:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_20.png" alt="MUI demo programs request" /></p>
<p>Finally, the MUI install is complete. You can press <code>Proceed</code> and reboot your machine:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_21.png" alt="MUI done with install" /></p>
<p>Once your machine has restarted, re-open Shell. Now we are going to extract the Miami main archive:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_22.png" alt="Command to extract the Miami main archive" /></p>
<p>Followed by the Miami MUI Interface archive:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_23.png" alt="Command to extract the Miami MUI interface archive" /></p>
<p>Followed by the Miami 68000 Binary archive (you can replace this with the 020 version if you like):</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_24.png" alt="Command to extract the Miami generic binary archive" /></p>
<p>Sadly the Miami installer does not include the <code>Installer</code> tool in the archive, so let&rsquo;s use the one from MUI. Run the following command:</p>
<pre><code>COPY DH0:Installers/MUI/Installer433 DH0:Installers/Miami32b_Install/Installer CLONE
</code></pre>
<p>Once that has completed you can close the shell and open the <code>Installers</code> drawer from your hard drive, then the <code>Miami32b_Install</code> Drawer, then run the <code>Install_Miami</code> tool:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_25.png" alt="Amiga Workbench showing 'Miami32b_Install' drawer" /></p>
<p>Start the installer tool by pressing <code>Proceed</code>:
<img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_27.png" alt="Miami Installer Initial Screen" /></p>
<p>The defaults installation location is fine (but it doesn&rsquo;t make a folder so you may want to customize it), press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_28.png" alt="Miami default installation path" /></p>
<p>Now be sure to select the correct version to match the binary package used above, and press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_29.png" alt="Miami binary package chooser" /></p>
<p>You can choose any workbench icon you desire, but be sure to pick any option other than <code>do not install new icons</code>, and press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_37.png" alt="Icons for Miami (do not install new icons does not install an icon at all)" /></p>
<p>We have only installed the MUI interface, so uncheck all others and press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_31.png" alt="Miami widgets selector" /></p>
<p>We should only be able to use the MUI interface module, so press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_32.png" alt="Miami UI selector" /></p>
<p>Files will now copy. Then you will be asked if wish to setup the Assign mapping, choose <code>Yes</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_33.png" alt="Miami assignment notice" /></p>
<p>The installer will tell you it is modifying your <code>s:user-startup</code> script, press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_34.png" alt="Miami confirming user-startup modification" /></p>
<p>And now the installation is finished, you can press <code>Proceeed</code> to see a summary:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_35.png" alt="Miami install summary" /></p>
<p>Finally press <code>Proceed</code> again to exit the tool:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_36.png" alt="Miami installation complete" /></p>
<p>At this point you will want to reboot again. Then re-open the <code>Shell</code> and run the following command to extract the registration files to the install location:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_45.png" alt="Using shell to install the Miami registration files" /></p>
<p>Once that is done, you can close the Shell and then there should be Miami icons in your hard drive:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_39.png" alt="Amiga Workbench showing Miami icons" /></p>
<p>Open the MiamiInit prgram to configure your network, and press <code>Continue</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_40.png" alt="The first screen of MiamiInit" /></p>
<p>Choose the <code>Ethernet cable/ADS</code> option and press <code>Continue</code>, followed by the <code>---other---</code> option and press <code>Continue</code>. Then enter <code>plipbox.device</code> in the Device box and press <code>Continue</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_43.png" alt="Adding the plipbox device to MiamiInit" /></p>
<p>At this point, you will be prompted for a lot of specific configuration for your network. I can&rsquo;t give you good answers here but it should be able to figure it all out itself. On the last screen the bottom option i
s to print a summary sheet, you probably want to uncheck that. Otherwise if you do not have a printer it will appear to freeze for a while before stating it cannot print the sheet.</p>
<p>That&rsquo;s pretty much it. At this point Miami is installed and initially configured. You can now launch the main <code>Miami</code> application to connect to the network. You will get this main menu:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_46.png" alt="Miami main menu" /></p>
<p>From here you can import the settings from <code>MiamiIinit</code>. Once that is done, you can simply press the <code>Online</code> button and it should connect to the network. The settings can be tweaked using the menu to the left. The <code>Interface</code> panel has most of the settings needed if you need a static IP address changed.</p>
<p>That&rsquo;s it for Miami, you can skip to to <a href="#using-the-network">Using The Network section</a>.</p>
<h2 id="installing-miamidx">Installing MiamiDx</h2>
<p>Required files:</p>
<ul>
<li><a href="http://aminet.net/package/util/arc/lha">LhA Utility</a> from <a href="http://aminet.net">aminet</a> in <a href="http://aminet.net/util/arc/lha.run">util/arc/lha.run</a></li>
<li><a href="http://aminet.net/package/util/libs/mui38usr">MUI 3.8</a> from <a href="http://aminet.net">aminet</a> in <a href="http://aminet.net/util/libs/mui38usr.lha">util/libs/mui38usr.lha</a></li>
<li><a href="http://aminet.net/package/comm/tcp/MiamiDx10cmain">MiamiDx main program</a> from <a href="http://aminet.net">aminet</a> in <a href="http://aminet.net/comm/tcp/MiamiDx10cmain.lha">comm/tcp/MiamiDx10cmain.lha</a></li>
<li><a href="http://aminet.net/package/comm/tcp/MiamiDx10c-MUI">MiamiDx MUI interface</a> from <a href="http://aminet.net">aminet</a> in <a href="http://aminet.net/comm/tcp/MiamiDx10c-MUI.lha">comm/tcp/MiamiDx10c-MUI.lha</a></li>
<li>MiamiDx key files from <a href="http://www.fatcat.vispa.com/keyring/">Keyring</a> (or alternatively from <a href="http://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXKeys.lha">my mirror in lha format</a>)</li>
</ul>
<p>First, we&rsquo;re going to extract the <code>lha</code> tool and install it in <code>C:</code> for easy use. Open your harddrive, go to the <code>System</code> folder, and open <code>Shell</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_02.png" alt="Amiga Workbench a CLI shell" /></p>
<p>Next, specify the full path of the <code>lha.run</code> file you have downloaded and suffix <code>DH0:Installers/</code> to the command line options. This will extract the archive to the RAM disk. If you get an error about the file not being executable, run <code>protect Shared:Downloads/lha.run +se</code> to and re-run the command shown:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_01.png" alt="Amiga Workbench extracting and copying lha" /></p>
<p>Then <code>COPY RAM:lha_68k C:lha CLONE</code> will copy the generic <code>lha</code> tool to your <code>C:</code> path:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_02.png" alt="Amiga Workbench extracting and copying lha" /></p>
<p>Next we need to extract the MUI 3.8 installer:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_08.png" alt="Amiga Workbench showing MUI extraction command" /></p>
<p>Many files will scroll past. When it&rsquo;s done it will look like this:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_09.png" alt="Amiga Workbench showing completed MUI extraction" /></p>
<p>Now you can close the Shell, open the <code>Installers</code> folder on your HDD and then the <code>MUI</code> folder in there. Open the <code>Install-MUI</code> application:</p>
<p><img src="://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_10.png" alt="Amiga Workbench showing MUI installer drawer" /></p>
<p>Choose the Intermediate mode (this is important) and press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_12.png" alt="MUI installer launch" /></p>
<p>We want to install to for real and now log the actions, so press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_13.png" alt="MUI installer options" /></p>
<p>Yep, we&rsquo;re installing MUI so press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_14.png" alt="MUI wants to install MUI" /></p>
<p>MUI will now show you the default location to install:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_15.png" alt="MUI default install location" /></p>
<p>If you have multiple hard drives or partitions, MUI defaults to the 2nd drive. This is probably not what you want, I always install MUI to the primary hard drive. So, press the <code>Show Drives</code> button:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_16.png" alt="Clicking show drives updates the list above" /></p>
<p>Then choose the drive labeled <code>DH0:</code> like so:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_17.png" alt="A minimally installed DH0 looks like this" /></p>
<p>Now you can press <code>Proceed</code> and many files will be copied. Eventually you will see a screen offering various image sets, just leave the defaults and press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_18.png" alt="Available MUI image sets" /></p>
<p>Next you will be asked for language support. Choose what works for you and press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_19.png" alt="MUI default language support" /></p>
<p>Next you will be asked if your want the demo programs. I typically press <code>No</code> but it&rsquo;s up to you:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_20.png" alt="MUI demo programs request" /></p>
<p>Finally, the MUI install is complete. You can press <code>Proceed</code> and reboot your machine:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_21.png" alt="MUI done with install" /></p>
<p>Once your machine has restarted, re-open Shell. Now we are going to extract the MiamiDx main archive:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_10.png" alt="Extracting the main MiamiDX Archive" /></p>
<p>Then we need to extract the MiamiDx MUI interface:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_12.png" alt="Extracting the main MiamiDX MUI" /></p>
<p>Sadly the MiamiDx installer does not include the <code>Installer</code> tool in the archive, so let&rsquo;s use the one from MUI. Run the following command:</p>
<pre><code>COPY DH0:Installers/MUI/Installer433 DH0:Installers/MiamiDx10_Install/Installer CLONE
</code></pre>
<p>Now you can close the shell, and open the <code>Installers</code> drawer on your hard drive and then the <code>MiamiDx10_Install</code> drawer to launch the <code>Install_MiamiDx</code> tool:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_13.png" alt="The MiamiDx Installer Icon" /></p>
<p>We want to install for real and not log, so press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_14.png" alt="The usual installer questions" /></p>
<p>Choose where you want to install MiamiDx (the default is fine but it doesn&rsquo;t create a folder so you may want to adjust it) and press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_15.png" alt="Default MiamiDx install path" /></p>
<p>Choose any icon you like besides <code>do not install new icons</code> as there will be no icon that way, and press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_16.png" alt="Pick an icon, but not the one that doesn't install any icons" /></p>
<p>We should only have MUI as an option, so press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_17.png" alt="Making the only choice" /></p>
<p>Still only have MUI as an option for the GUI module, so press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_18.png" alt="Choice is an illusion" /></p>
<p>It is your choice if you want the sanamni driver installed or not:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_19.png" alt="Sometimes you have crazy hardware, but not usually" /></p>
<p>Files will now copy. Next will be the Miami assignment screen, choose <code>Yes</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_20.png" alt="Notification of Miami: assignment" /></p>
<p>We want your <code>s:user-startup</code> modified, so choose <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_21.png" alt="Notification of user-startup" /></p>
<p>We need to reboot before using MiamiDx, Press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_22.png" alt="Embrace the wait" /></p>
<p>Now the install of MiamiDx is complete. Press <code>Proceed</code> to quit the tool:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_23.png" alt="MiamiDx installation is complete" /></p>
<p>Now you can reboot your Amiga. Then, Launch the Shell again to install the key files:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_35.png" alt="Installing the MiamiDx keys" /></p>
<p>You can close the shell, and find the MiamiDx icons in your hard drive:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_26.png" alt="The lovely standard MiamiDx icon" /></p>
<p>Let&rsquo;s launch MiamiDx and configure your network settings:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_27.png" alt="Selecting the MiamiDx icon" /></p>
<p>This screen shows that the registration is installed correctly. Press <code>OK</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_28.png" alt="Confirmation of MiamiDx registration" /></p>
<p>Select <code>Hardware</code> and press <code>New</code> and choose <code>Ethernet</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_29.png" alt="Hardware selection" /></p>
<p>Give the name of <code>GuruNet</code> and the driver <code>plipbox.device</code> and press <code>OK</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_30.png" alt="Driver information" /></p>
<p>Choose the Interfaces option on the left, press <code>New</code> and choose <code>Ethernet</code>, and press <code>OK</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_31.png" alt="Creating a new Internet interface" /></p>
<p>Choose the <code>GuruNet</code> we just created and press <code>OK</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_32.png" alt="Linking the Interface to the Hardware" /></p>
<p>Now you can configure your network settings. I typically just make IP, Netmask, and Gatway DHCP and check GUI Default. Your settings may vary for your local network, you can change them now. Then press <code>OK</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_33.png" alt="Defining network IP information" /></p>
<p>Next go to <code>Database</code> and choose <code>DNS Servers</code>. Here you will need to add DNS servers for your use. If you don&rsquo;t know your DNS servers <code>8.8.8.8</code> and <code>9.9.9.9</code> are safe choices:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_34.png" alt="Adding DNS servers" /></p>
<p>Now right click and choose <code>Settings</code> and <code>Save as Default</code>. At this point you should be configured and can press the <code>Online</code> button. You can now skip to the <a href="#using-the-network">Using the Network section</a>.</p>
<h2 id="installing-easynet-or-easynet-pro">Installing EasyNet or EasyNet Pro</h2>
<p>Requirements:</p>
<ul>
<li>EasyNet or EasyNet Pro CD (or it&rsquo;s contents copied to your system)</li>
</ul>
<p>For this, the process is basically identical for the two products, but the icons vary. I have faith you can figure it out. Insert the EasyNet CD, or copy the contents to your Amiga. Run the &lsquo;Install-EasyNet` tool:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_02.png" alt="Workbench with the EasyNet disc open" /></p>
<p>This guide will use the Novice install path, you can choose a different one if you wish. Press <code>Proceed With Install</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_03.png" alt="Starting the EasyNet installer" /></p>
<p>The installer will tell you it&rsquo;s going to install, press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_04.png" alt="This installer is chatty" /></p>
<p>The installer wants you to install the network driver, which we have already done, so press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_05.png" alt="So chatty" /></p>
<p>The installer wants you to know you should only have one stack installed, which we know, so press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_06.png" alt="Blah blah blah" /></p>
<p>By default, EasyNet will install on your second drive if you have more than one, and I don&rsquo;t recommend that. Press <code>Show Drives</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_07.png" alt="Installing in a sub-optimal place by default" /></p>
<p>Choose the <code>DH0</code> drive and press <code>Proceed</code>. At this point all the files will copy. Next you will be asked what kind of icon you want installed, press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_08.png" alt="Choose your icon" /></p>
<p>The installer will want to modify your <code>s:user-startup</code>, which we want. Press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_09.png" alt="Gee, I wonder what EasyNet is based on" /></p>
<p>The installer will want to install the SMB-Handler, press <code>Proceed with Copy</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_10.png" alt="Everyone wants to talk to Windows" /></p>
<p>The installer will now want you to configure EasyNet. Press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_11.png" alt="So demanding" /></p>
<p>The EasyNet configuration utility will begin, press <code>CONTINUE</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_12.png" alt="Click through wrappers all the way down" /></p>
<p>Enter your registration details, press <code>AGREE AND REGISTER</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_13.png" alt="Much EULA" /></p>
<p>Press the <code>Proceed</code> button to continue setup. Next up you will select the <code>plipbox.device</code> and press <code>SAVE</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_14.png" alt="Pick the plipbox device we installed earlier" /></p>
<p>Now choose <code>Proceed</code> to finish the IP configuration. This is where you will need to input your network configuration information. Press <code>Save</code> when done:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_15.png" alt="IP Configuration (no DHCP here)" /></p>
<p>This should launch the EasyNet GUI which looks like this:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/EasyNetAmiga_16.png" alt="The EasyNet UI" /></p>
<p>That GUI can be found in the EasyNet folder for EasyNet Pro install, or the <code>AmiTCP</code> folder for an EasyNet install. Pressing the <code>ONLINE</code> button should connect you to the internet. Now you can skip to the <a href="#using-the-network">Using the Network section</a>.</p>
<h2 id="installing-roadshow">Installing Roadshow</h2>
<p>Required files:</p>
<ul>
<li><a href="http://aminet.net/package/util/arc/lha">LhA Utility</a> from <a href="http://aminet.net">aminet</a> in <a href="http://aminet.net/util/arc/lha.run">util/arc/lha.run</a></li>
<li>The roadshow distribution LHA archive</li>
</ul>
<p>First, we&rsquo;re going to extract the <code>lha</code> tool and install it in <code>C:</code> for easy use. Open your harddrive, go to the <code>System</code> folder, and open <code>Shell</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiAmiga_02.png" alt="Amiga Workbench a CLI shell" /></p>
<p>Next, specify the full path of the <code>lha.run</code> file you have downloaded and suffix <code>DH0:Installers/</code> to the command line options. This will extract the archive to the RAM disk. If you get an error about the file not being executable, run <code>protect Shared:Downloads/lha.run +se</code> to and re-run the command shown:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_01.png" alt="Amiga Workbench extracting and copying lha" /></p>
<p>Then <code>COPY RAM:lha_68k C:lha CLONE</code> will copy the generic <code>lha</code> tool to your <code>C:</code> path:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/MiamiDXAmiga_02.png" alt="Amiga Workbench extracting and copying lha" /></p>
<p>Next we need to extract the Roadshow installer:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/RoadshowAmiga_01.png" alt="Amiga Workbench extracting Roadshow" /></p>
<p>Once that is done we can begin the installer tool. Close the shell, and open the <code>Installers</code> drawer and then the <code>Roadshow</code> drawer, and launch the <code>Install_Roadshow</code> tool:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/RoadshowAmiga_02.png" alt="Amiga Workbench showing the Roadshow installer" /></p>
<p>Choose <code>Intermediate User</code> and press <code>Proceed With Install</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/RoadshowAmiga_03.png" alt="Installer tool startup for Roadshow" /></p>
<p>Install for real, no log, press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/RoadshowAmiga_04.png" alt="More Installer boilerplate" /></p>
<p>You have a choice if you want an optimized version of various components, choose <code>Yes</code> or <code>No</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/RoadshowAmiga_05.png" alt="Using an optimized version of Roadshow components or the generic ones" /></p>
<p>The default install path will be a second hard drive if available, I find this sub-optimal. Press <code>Show Drives</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/RoadshowAmiga_06.png" alt="Default install location" /></p>
<p>Select the <code>DH0</code> Disk, and press <code>Proceed</code>. Files will be coped. Then you will be told you need to reboot before using. Press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/RoadshowAmiga_07.png" alt="Reboot notification" /></p>
<p>The installation is now complete, press <code>Proceed</code>:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-gurunet-install/RoadshowAmiga_08.png" alt="Completed Roadshow installation" /></p>
<p>There is excellent documentation in PDF form in the archive, or in Amiga Guide form in the Roadshow drawer. I&rsquo;m going to assume you want DHCP (which is the simplest config) and proceed from there. Anything else, you should consult the docs. Once you reboot, launch Shell again, we have a few commands to run:</p>
<pre><code>COPY SYS:Storage/NetInterfaces/X-Surf-100 DEVS:NetInterfaces/plipbox
ed DEVS:NetInterfaces/plipbox
</code></pre>
<p>In here find the <code>device=</code> lines and change it to <code>plipbox.device</code>:</p>
<p>Press ESC followed by <code>sa</code> and enter, then ESC followed by <code>q</code> and enter to save and quit. Now you can run <code>AddNetInterface plipbox</code> and you should be up and running. Now you can skip to the <a href="#using-the-network">Using the Network section</a>.</p>
<h1 id="using-the-network">Using the Network</h1>
<p>OK, you have a working Network Stack. Now what? I primarily use the network interface to move files. I&rsquo;ve tried a few clients, but have found that <a href="http://aminet.net/package/util/dopus/Dopus5_91_os3">Directory Opus 5</a> works best. Some other tools I&rsquo;ve tried are <a href="http://aminet.net/package/comm/tcp/AmiFTP">AmiFTP</a>, which I found to be very slow and doesn&rsquo;t handle anything other than single files (no directory traversal). I&rsquo;ve also tried <a href="http://aminet.net/package/comm/net/ncftp-3.2.0">NcFTP</a> which takes some work to get installed (needs the <a href="http://aminet.net/package/util/libs/ixemul-48.0">ixemul</a> libraries) and while it is fast, the curses interface is broken (no prompt, just a blank line) and directory traversal only goes a single level deep. DOpus5 was fast and copied the entire tree of my WHDLoad games collection without issue.</p>
<p>If you installed EasyNet (Pro) or Roadshow, <code>wget</code> is available - which is great for grabbing files one at a time or scripts from the Shell. You can also get it from <a href="http://aminet.net/package/comm/tcp/wget-1.8.2">aminet</a> if you wish.</p>
<p>You <em>can</em> web browse as well, to a point. All of the available browsers are slow or very out of date (but tend to work fine on Amiga specific sites like aminet). I tend to use <a href="http://aminet.net/package/comm/www/AWeb-3.5.09-68000">AWeb</a> as my go-to browser. It&rsquo;s free (the one I linked is just the program, but works fine) and fast. I&rsquo;ve used it on OCS machines and accellerated AGA machines without issue. iBrowse is also a descent choice, but it&rsquo;s commercial and no longer for sale while they work on the next version (so if you have a license, good for you). For a more modern standards experience, there is <a href="http://www.netsurf-browser.org/">NetSurf</a> which is very cool but needs a <em>very</em> extreme machine. With my A1200 with an 030+68882 at 40MHz and 128MB of RAM, it&rsquo;s barely usable (mostly because the graphics sub system in the Amiga is so slowed down by chip RAM) but it works. It&rsquo;s much better on an 040 or 060 with lots of RAM.</p>
<p>However, here is where the caveats begin. If you are pulling files from or browsing the HTTP web, you&rsquo;re fine. But as more and more of the web moves to TLS 1.2, using HTTPS on your Amiga isn&rsquo;t so hot. There is a new version of <a href="http://aminet.net/package/util/libs/AmiSSL-4.2">AmiSSL</a> that is supposed to work - but I have not been able to make it go yet. If anyone figures out how to make that go, please add a comment below!</p>
<p>You can use various email apps, and IRC clients, even some Twitter clients exist. Poke around aminet for more fun things to do. Or just download software and games free of the slow speeds of serial communications, or the even slower speeds of floppy disks on your Amiga.</p>Installing and using NComm for serial communication and data transfer the Amigahttps://www.gigofham.com/post/2018/12/10-installing-ncomm/
Mon, 10 Dec 2018 14:23:20 +0000https://www.gigofham.com/post/2018/12/10-installing-ncomm/<p>It&rsquo;s 2018, and getting files on an Amiga that are larger than will fit on a floppy can be a drag. Maybe you have a network, but if not a serial connection with NComm may be your best bet. Let&rsquo;s go over how to install that today.</p>
<p></p>
<h1 id="why-ncomm">Why NComm?</h1>
<p>A great question. There are other comms programs out there, like AmiComm (for the 1000) and <a href="http://aminet.net/package/comm/term/AZComm">AZComm</a> but both have limitations. Mostly the serial speed, and for AmiComm a complete lack ZModem support. I&rsquo;ve found <a href="http://aminet.net/package/comm/term/AZComm">NComm</a> to be well rounded, easy to use, and feature complete. It does need to be installed, and I&rsquo;ve not yet successfully made a single disk version of it (which is easier with AZComm).</p>
<h1 id="wait-you-just-linked-to-an-aminet-file-how-am-i-supposed-to-get-that-on-my-amiga">Wait, you just linked to an aminet file - how am I supposed to get that on my Amiga?</h1>
<p>Another great question. This one is easy: <a href="http://objects-us-east-1.dream.io/edolnx-public/amiga-ncomm/NComm306.adf">I have made a ADF file with everything you need</a>. Download that and throw it in a Floppy Emulator and let&rsquo;s get started&hellip;</p>
<h1 id="installing-ncomm-from-the-flopppy-image">Installing NComm from the flopppy image</h1>
<p>Mount the ADF on your Amiga, or use a floppy emulator:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-ncomm/ncomm_1.png" alt="NComm floppy on the Amiga Workbench" /></p>
<p>Now we can open a shell and explore the disk:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-ncomm/ncomm_2.png" alt="Contents of the ncomm floppt" /></p>
<p>The disk has a copy of LhA and the complete NComm in an lha archive. If you don&rsquo;t already have LhA installed, let&rsquo;s do that. First we extract the LhA installer to RAM:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-ncomm/ncomm_3.png" alt="Extract lha self-extractor to RAM:" /></p>
<p>Next we can copy the lha binary to <code>C:lha</code> (feel free to use an optimized version for your Amiga):</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-ncomm/ncomm_4.png" alt="Copy LhA to C:LHA" /></p>
<p>Now we can extract the NComm archive to your hard drive:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-ncomm/ncomm_5.png" alt="Command to extract the NComm archive" /></p>
<p>That will take a few moments and look like this when it&rsquo;s done:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-ncomm/ncomm_6.png" alt="Completed archive extraction" /></p>
<p>Now you can close all the windows and re-open your primary drive. If you are running anything newer than a stock 3.1 it will have a nice icon. I&rsquo;m running Stock 3.1 in this emulator for screenshots so it&rsquo;s not as great:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-ncomm/ncomm_7.png" alt="Someday I'll find a better icon" /></p>
<p>Open that folder up, and run the <code>Install20</code> tool (use the <code>Install13</code> if you are running Workbench 1.3):</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-ncomm/ncomm_8.png" alt="The Install20 tool will install fonts, etc" /></p>
<p>It will take a few seconds to copy fonts and required libraries, then it will be time to launch NComm:</p>
<p><img src="https://objects-us-east-1.dream.io/edolnx-public/amiga-ncomm/ncomm_9.png" alt="NComm floppy on the Amiga Workbench" /></p>
<p>That&rsquo;s it!</p>
<h1 id="using-ncomm">Using NComm</h1>
<p>Most of the options are in the Right Click menu. I have found on OCS/ECS Amiga systems, sustaining more than 19200 baud is hard. On an AGA system, 115200 is no sweat. YMMV. You can also set default paths for Downloads (recommended), and if your host uses ZModem for transfers they will auto start.</p>
<p>I use this with a NULL-Modem cable to a Linux box with <code>lrzsz</code> and <code>picocom</code> installed to copy files between the Linux Host and the Amiga. Both tools are available on Raspbian installs that are Jessie or later, and most commonly available USB to Serial adapters work great. This is a great way to move a small number of larger files. You still need to send them one at a time, but now at least you have LhA installed and a way to get bigger things on to your Amiga. Great for doing a network stack install, say&hellip;</p>Procedures for a fresh install on an Amiga with Colanto 3.X ROMshttps://www.gigofham.com/post/2018/07/01-amiga-3x-install/
Sun, 01 Jul 2018 14:23:20 +0000https://www.gigofham.com/post/2018/07/01-amiga-3x-install/<p>The last few years, I&rsquo;ve fallen very far down the rabbit hole of retrocomputing with classic Amigas. I worked with an Amiga 600 (I think) while I was volunteering at community television in the 90s. Sadly we had a very basic install, only a genlock and broadcast titler, but we longed for a full blown Video Toaster setup. I longed for it more than the rest of the volunteers. So, when the opportunity to build an Amiga 2000 with a toaster presented to me I grabbed it with both hands. I learned a lot, but running older machine has been harder and harder as technology advances. Fortunately the Amiga community is <em>still</em> very active so there are some wonderful new toys, but like everything in retrocomputing there are some bumps. Ideally I would just link you to a basic ADF that can have drivers added to suit your needs, but it&rsquo;s super unclear to me if I can legally distribute that. So, I will instead walk you through the process of making it.</p>
<p></p>
<p>The history of Amiga is&hellip;complicated. This unfortunately means a lot of the modern improvements are a one step forward, two steps back kind of affair. The rights to the Amiga Workbench are currently split between two companies: Hyperion Entertainment and Colanto. They don&rsquo;t seem to like each other and that sadly puts the classic Amiga community in the crossfire. I only mention this because both have recently released new versions of the Workbench OS and ROMs. Colanto released new ROMs which have a version of 3.X - and these have numerous improvements. They also released a new Workbench 3.X OS which is only available as drive images included with Amiga Forever 7. I&rsquo;ve not had much luck getting these to work on actual hardware, but it works great in emulation. Hyperion has also recently released new ROMs, but they only contained some copyright notice and artwork changes vs the Amiga 3.1 ROMs. Hyperion also recently released a new Workbench 3.1 OS with a lot of great patches, but it&rsquo;s been pulled over rights disputes. I really want to use the Hyperion 3.1 patched installer, but here we are. So far I have found BetterWB to be a reasonable compromise of features, performance, and bug fixes in the mean time.</p>
<h1 id="the-colanto-3-x-roms">The Colanto 3.X ROMs</h1>
<p>That all said, the 3.X ROMs from Colanto have a lot of great improvements: more modern FastFileSystem libraries that can handle larger drives, newer scsi.device code that support larger drives, and other numerous improvements and bug fixes. Sadly, they are limited by the same restrictions of the classic hardware: only 1MB of space in the ROMs. This means that in order to make room for all these great improvements, something had to be left behind. In this case, that was the <code>workbench.library</code>. That means if you have the 3.X ROMs installed, the Workbench 3.1 OS won&rsquo;t show the &ldquo;Intuition&rdquo; desktop environment without that library, and there is not enough room on the original install disks for this library on the Install and Workbench disks. What about AmigaOS 3.5 and 3.9? No such problem, both install their own <code>workbench.library</code> on the system disk.</p>
<p>&ldquo;Great!&rdquo; you say &ldquo;Let&rsquo;s just use OS 3.9, it&rsquo;s the latest version!&rdquo; Well, let&rsquo;s talk about that&hellip;</p>
<h1 id="thoughts-on-amiga-os-3-5-and-3-9">Thoughts on Amiga OS 3.5 and 3.9</h1>
<p>I&rsquo;ll be honest, I&rsquo;m not a big fan of 3.5 and 3.9. To be fair, they are a product of their time and the state of the Amiga ecosystem when they were released. They were both made under contract for Escom (owner of Amiga at the time) to enhance 3.1 for the only machines they were shipping: the A1200, A4000, A4000T, and CD32. These are all AGA chipset based, and had at least a 68020 processor in them. This is shaped the basis for the minimum requirements of the systems. This means running them on older systems is basically impossible without a minimum of a CPU upgrade. That&rsquo;s strike one.</p>
<p>The world was changing at the time as well, this thing called The Internet was coming to life. The Amiga wanted to play on the Internet, so OS 3.9 includes parts of core components required to connect to The Internet. Sadly, 3.9 being a snapshot in time has very old, broken components built in. The community moved forward and built better components, but they have compatibility issues on 3.9 because the older components are baked into the OS. Strike two.</p>
<p>Finally, OS 3.5 and 3.9 only shipped on CD-ROM. Which is fine, except you can&rsquo;t boot off a CD on any classic Amiga. You also cannot put a CD-ROM in many classic Amigas so installing is super, super hard. On top of this the source code was never returned to the Amiga rights holders (as it was not part of the contract) and the contractor is long out of business. This makes it a dead, lost fork of 3.1 in an even worse rights situation than the rest of Amiga&rsquo;s OS. These factors combine to make it three strikes and you&rsquo;re out in my book.</p>
<p>I&rsquo;ve used 3.9 on my A1200, and it was&hellip;fine. Installing it was a pain. Maintaining it was harder, so I personally stick with Workbench 3.1 with BetterWB on all of my systems at this point. It&rsquo;s personal preference, and your mileage will vary. To make a modern analogy, 3.9 feels like Windows 10 (bold promises and lots of rough edges that need a lot more work, only in the case of 3.9 they won&rsquo;t happen), 3.5 feels like Windows 7 (an evolutionary step, but it&rsquo;s past it&rsquo;s time), and 3.1 feels more like Windows XP (fast, mostly stable, lightweight, and old but that&rsquo;s the point when running a retrocomputer). Installing OS 3.9 requires an &ldquo;Emergency Boot Disk&rdquo; which contains some magic and is <em>very</em> hardware specific. So, at the end of this guide to install BetterWB with the 3.X ROMs, I&rsquo;ll give you the next couple of steps to jump from there to OS 3.9 if you want. Why BetterWB first? It gives you all the parts you need to get CD support working with minimal fuss.</p>
<h1 id="requirements-to-get-started">Requirements to get started</h1>
<ul>
<li>You&rsquo;ll need a classic Amiga</li>
<li>Persistent storage for your classic Amiga</li>
<li>You&rsquo;ll need a way to use ADF floppy images on your classic Amiga</li>
<li>You&rsquo;ll need a PC running Windows 7 or later for&hellip;</li>
<li>A copy of <a href="http://www.amigaforever.com/">Colanto&rsquo;s Amiga Forever</a> version 7 or later</li>
<li>The floppy images for <a href="http://lilliput.amiga-projects.net/BetterWB.htm">BetterWB</a></li>
<li>Various updated utilities and libraries from Colanto (<a href="https://www.amigaforever.com/classic/download/">https://www.amigaforever.com/classic/download/</a>)</li>
<li>Disk controller driver and partitioning tools (if required), otherwise <a href="http://aminet.net/package/disk/misc/hdinst">HDInstTool</a></li>
<li>The Colanto 3.X ROMs for your classic Amiga (A500, A600, A2000, A3000(T) and A4000(T) are supported)</li>
</ul>
<h2 id="wait-floppy-images">Wait, floppy <em>images</em>?</h2>
<p>So, let&rsquo;s talk about floppy images. It&rsquo;s 2018 as I&rsquo;m writing this. The last factory that was manufacturing 3.5&rdquo; diskettes shut down two years ago. Floppy drives haven&rsquo;t been manufactured for even longer. I believe in preservation, and I have a couple of working drives and a couple dozen blank floppy disks I have tracked down, but they are the exception. These days I have migrated to floppy emulators, and it&rsquo;s <em>glorious</em>.</p>
<p>I use the GOTEK floppy emulator platform, with the open source <a href="https://github.com/keirf/FlashFloppy/">FlashFloppy</a> firmware. I usually put the 128x32 OLED module in the GOTEK in place of the 3 digit 7-segment display, which makes the whole experience amazing. You can load ADF images into folders on any FAT32 formatted USB storage device. The downside is that unlike using an ADF in the various Amiga Emulators, there is no turbo mode. It&rsquo;s just as slow as the real thing, but at least it&rsquo;s quieter and has no moving parts.</p>
<h2 id="tips-and-tricks-for-modern-storage-on-your-classic-amiga">Tips and tricks for modern storage on your classic Amiga</h2>
<p>Being a product of the 90s, Amigas use either IDE or SCSI for persistent storage. They also have the limits of products made during that time, mainly that many parts of the software don&rsquo;t deal with drives over a few hundred megabytes in capacity very well. Part of the reason for using the 3.X ROMs is that many of the <em>major</em> roadblocks to using modern storage are fixed or have workarounds. This is why I use 3.X on every Amiga I own.</p>
<p>If your Amiga has a SCSI controller I recommend using the <a href="www.codesrc.com/mediawiki/index.php?title=SCSI2SD">SCSI2SD</a> product line. As of writing, there are two major variants: V5 and V6. For most Amiga use cases, the V5 exceeds the capabilities of most Amiga SCSI controllers. This is good news, since the V5 hardware platform is much cheaper and more easily available.</p>
<p>If your Amiga has a 40 pin IDE interface, I recommend using a <a href="http://a.co/hAZnHET">SATA/IDE bridge</a> and an <a href="http://a.co/2sIRylq">inexpensive SATA SSD</a>. It&rsquo;s an inexpensive, durable, reliable, and has great performance.</p>
<p>If your Amiga has a 44 pin IDE interface, I recommend using a <a href="http://a.co/3eWOyXk">Industrial Disk on Module</a> device. The ones I linked are way faster than the CF/IDE adapters I&rsquo;ve tried, and they fit under the keyboard of A1200 or A600 systems without issue. They are only single port, so if you want to add a CD/DVD drive you would need something like a specially designed buffered interface which will allow multiple devices, but also presents a 40 pin IDE interface (so see above).</p>
<p>Now that you have a drive, let&rsquo;s talk configuration. Despite the upgrades in the 3.X ROMs, you can run into serious problems if your primary system drive (or any volume formatted with FFS) is larger than 1GB in size. For safety&rsquo;s sake, I typically make any volumes that are going to be formatted with FFS 999M or below. For installations using the SCSI2SD device, I typically make 3 virtual disks: two under 1GB and the third for the remainder of the disk. For the IDE devices, just partitions seem to work.</p>
<p>Speaking of partitioning, let&rsquo;s talk about that. There are many tools out there, and if your hardware doesn&rsquo;t require using a specific one (like Force5 or GVP) then I&rsquo;ve had the best experience with HDInstTool. The stock HDToolBox is not &ldquo;64bit clean&rdquo; which means it has a hard problem dealing with larger drives and easily makes invalid tables when presented with one. HDInstTools isn&rsquo;t perfect, but tends to work better. There are some issues, like partition sizes cannot be multiples of 4GB, but they can be worked around. It also supports additional filesystems like PFS3 more easily than the stock Amiga tools. The important thing is: <em>pick a partitioning tool and only use that tool for the life of the disk</em>. Mixing tools causes all sorts of problems.</p>
<p>If your hardware requires specific partition tools, spend some time on aminet and the various forums to find the latest versions. They tend to have better support for larger drives. The important thing to remember about partitions tools: use one and only one. Changing tools after you have initially sliced your disks is a recipe for corruption and data loss.</p>
<p>Let me take a moment to talk about filesystem at this point. I typically make the first two volumes FFS and the rest PFS3. It&rsquo;s technically possible to boot off of a PFS3 filesystem, but I find it&rsquo;s easier to work with the native FFS instead. The second volume being FFS just makes it easy to place things like updates, drivers, tools, etc and access them if your primary volume becomes corrupt. Very few boot disks support anything beyond OFS and FFS - so that&rsquo;s why I prefer FFS for the &ldquo;Workbench&rdquo; and &ldquo;Work&rdquo; volumes. BetterWB comes with almost everything you need to use PFS3 volumes, which is a much better choice for larger volumes anyway. Obviously if you are going to jump to 3.9 you&rsquo;ve got some more work ahead of you.</p>
<h1 id="building-a-3-x-boot-floppy">Building a 3.X Boot Floppy</h1>
<p>Now that you have a disk (or disks), and some tools to manage it, we can get started. As I said in the introduction, the stock WB 3.1 disks won&rsquo;t fully boot with 3.X ROMs installed. We&rsquo;ll need to make our own, which is the primary point of this article.</p>
<p>To start you are going to need to install Amiga Forever 7 on your Windows PC and then download and launch the &ldquo;Workbench 3.X&rdquo; profile. That should look like this:</p>
<p><img src="https://storage.googleapis.com/edolnx-public/amiga/2018-06-30%2010_58_58-Workbench%203.X.png" alt="Workbench 3.X running in WinUAE Screenshot" /></p>
<p>First you want to attach the Workbench 3.1 &ldquo;Workbench&rdquo; floppy to DF0 on the virtual machine. The floppy is found at <code>C:\Users\Public\Public Documents\Amiga Files\Shared\adf\amiga-os-310-workbench.adf</code> and it can be mounted read only if you like.</p>
<p>Next we want to copy a few files off that floppy into the <code>RAM:</code> disk as we will need them later. Open a Shell and run the following commands:</p>
<ul>
<li><code>COPY DF0:S/Startup-Sequence RAM:Startup-Sequence CLONE</code></li>
<li><code>COPY DF0:C/Version RAM:Version CLONE</code></li>
<li><code>COPY DF0:C/Assign RAM:Assign CLONE</code></li>
<li><code>COPY DF0:C/MakeDir RAM:MakeDir CLONE</code></li>
<li><code>COPY DF0:C/AddBuffers RAM:Addbuffers CLONE</code></li>
<li><code>COPY DF0:C/LoadWB RAM:LoadWB CLONE</code></li>
</ul>
<p>We&rsquo;re done with the workbench floppy, so you can click on the floppy icon at the bottom of the window and choose &ldquo;Eject&rdquo;. Next, you will want to create a blank virtual floppy and insert it into DF0. Click the floppy icon at the bottom of the window, and choose &ldquo;Insert&rdquo; and then &ldquo;Blank Disk&rdquo;. Select the disk and rename it to &ldquo;Boot3X&rdquo; from the Icon menu.</p>
<p>Now we want to download all the updated Colanto utilities, partitioning tools, and other utilities listed above and place them in the shared filesystem folder for the emulator. The shared folder is typically located at <code>C:\Users\Public\Public Documents\Amiga Files\Shared\Workbench</code> and then the files will be accessible under the <code>SHARED:</code> volume.</p>
<p>We now want to copy and then strip down the <code>System</code> folder from the <code>System</code> disk (<code>DH0</code>) to the <code>Boot3X</code> floppy in <code>DF0</code>. This can be done using the GUI, as it&rsquo;s easiest. Once the folder is copied, you can delete <code>FixFonts</code>, <code>NoFastMem</code>, <code>Intellifont</code>, and <code>RexxMast</code> leaving only the <code>Shell</code> and <code>Format</code> applications in the destination folder.</p>
<p>Now the fun part: open up a Shell. We have a lot of commands to run:</p>
<ul>
<li><code>INSTALL DF0:</code> will make the new Boot3X floppy bootable by adding the required bootloader data.</li>
<li><code>MAKEDIR DF0:Libs</code> will make a directory to hold required libraries needed shortly</li>
<li><code>MAKEDIR DF0:C</code> will make a directory to hold shell commands we want on the disk</li>
<li><code>MAKEDIR DF0:S</code> will make a directory for system scripts</li>
<li><code>MAKEDIR DF0:L</code> will make a directory for filesystem components</li>
<li><code>lha x SHARED:Workbench-Library-45-127.lha DF0:Libs/</code> will put the much needed workbench lib on the floppy so intuition can start</li>
<li><code>COPY RAM:Version DH0:C/Version CLONE</code> This will install the Version program</li>
<li><code>COPY RAM:Assign DH0:C/Assign CLONE</code> This will install the Version program</li>
<li><code>COPY RAM:MakeDir DH0:C/MakeDir CLONE</code> This will install the Version program</li>
<li><code>COPY RAM:AddBuffers DH0:C/AddBuffers CLONE</code> This will install the Version program</li>
<li><code>COPY RAM:LoadWB DH0:C/LoadWB CLONE</code> This will install the Version program</li>
<li><code>COPY C:SetPatch DF0:C/SetPatch CLONE</code> This will install the Colanto Patched version of SetPatch that correctly understands these ROMs (earlier versions will work, but have some issues)</li>
<li><code>COPY L:FastFileSystem DF0:L/FastFileSystem CLONE</code> This will put the FastFileSystem components in place for formatting disks correctly</li>
<li><code>COPY RAM:Startup-Sequence DF0:S/Startup-Sequence CLONE</code> will copy the basic startup script required for the 3.X ROMs off the boot floppy provided by Colanto</li>
</ul>
<p>At this point, you have a working 3.X boot disk. Congratulations! This will work in any Amiga with an &lsquo;030 or earlier processor, and if you want to stick with <code>HDToolBox</code> you are basically done at this point. Skip to the end.</p>
<p>If you have a 68040 or 68060 processor or accelerator card in your Amiga, you will need to copy the required libraries to your boot floppy. <code>COPY DH0:Libs/68040.library DF0:Libs/68040.library</code> will do the trick for a basic &lsquo;040 accelerator card like the A3640. If you have something more exotic (like an Apollo or Phase5) you will need those drivers instead.</p>
<p>Next you will need <code>HDInstTools</code>, which can be installed using <code>lha x SHARED:hdinst.lha DF0:</code> and that should get those parts installed. Otherwise copy over the tools needed for your drive controller.</p>
<p>At this point I typically add tools to the disk assuming there is available space. The big ones for me are:</p>
<ul>
<li><code>COPY DH0:C/dir DF0:C/dir CLONE</code></li>
<li><code>COPY DH0:C/info DF0:C/info CLONE</code></li>
<li><code>COPY DH0:C/copy DF0:C/copy CLONE</code></li>
<li><code>COPY DH0:C/install DF0:C/install CLONE</code></li>
<li><code>COPY DH0:C/Delete DF0:C/Delete CLONE</code> This will install the Version program</li>
<li><code>COPY DH0:Tools/MEmacs DF0:C/MEmacs CLONE</code></li>
</ul>
<p>These are certainly not required, but it makes life easier. If you have space left, I also recommend the 68k version of <code>lha</code> and an archive of the <code>boards</code> or <code>sysinfo</code> tools. You won&rsquo;t have enough space for the uncompressed programs, but you can always expand them into <code>RAM:</code> to assist with debugging.</p>
<p>Now you have a complete 3.X ROM boot floppy. Next you need to save it, so eject it from the emulator and then quit the emulator. It will ask if you want to save changes to the embedded blank disk image, check that box but not the box and hit OK. Next, edit the Machine profile in Amiga Forever, go to the Media tab, select the disk image that is embedded, and change it to external. Save the disk in a location you know with a name like <code>Boot3X.adf</code>.</p>
<h1 id="getting-your-amiga-booted-and-installed">Getting your Amiga booted and installed</h1>
<p>Next, we need to get your ADF images to your Amiga somehow. If you are using a GOTEK, then just copy your Boot3X.ADF, the Colanto Workbench 3.1 floppy images, and the BetterWB images on a USB device and inserted into your Amiga. Once the rest of your hardware is installed and ready, I recommend booting to the Early Startup Menu by holding down both mouse buttons while turning on your Amiga. Once then menu appears, you should be able to select your Boot3X image on the GOTEK and then boot said floppy.</p>
<p>Your Amiga should come up to an Intuition desktop like you would normally expect. It will be a little slower getting there than you are used to, but not terrible. You can now use <code>HDInstTool</code> or whatever partition tool you desire to slice and format your drive volumes and reboot. Once you are back at Intuition, feel free to switch floppies over to the 3.1 Install disk. Launch the installer, and Install 3.1 per usual. You are typically asked to insert the Boot3X floppy once during install, this is normal. <em>Once the install is complete, DO NOT RESTART.</em> Instead, re-insert the Boot3X floppy and open the CLI from the System folder. Run the following commands:</p>
<ul>
<li><code>COPY DF0:Libs/workbench.library DH0:Libs/workbench.library</code> to copy over the now required but missing library to your fresh install.</li>
<li><code>COPY DF0:C/SetPatch DH0:C/SetPatch</code> to bring over a newer version of SetPatch</li>
<li><code>COPY DF0:L/FastFileSystem DH0:L/FastFileSystem</code> to bring over a newer version of FastFileSystem tool</li>
</ul>
<p>Now you can reboot now as long as there is not a bootable floppy inserted (note that all the BetterWB floppies are annoyingly bootable, so if you are using a GOTEK I recommend adding an empty.adf floppy image to the drive for situations like this).</p>
<p>Congratulations, you should come up to a nice fresh install of Workbench 3.1 off your persistent storage in short order. Since you were using the Colanto Amiga Forever 7 based install media, most of the necessary patches are in place. We copied over the last couple of recommended updates before rebooting. If all you want is as close to stock WB3.1 as possible you can stop here. I recommend adding BetterWB since that includes a lot of useful utilities and enhancements without going overboard, that is what we are going to do next.</p>
<p>Installing BetterWB is fairly simple. Drop in Disk 1, launch the installer and follow the bouncing ball through disk 5. As per before, do not reboot when the install is complete. You can then install the final patch/update disk(s). Now, we have some minor updates to do.</p>
<p>Place the Boot3X disk back in the drive. Open a Shell of some form the System folder on your &ldquo;Workbench&rdquo; volume. You will need to replace some binaries overwritten by BetterWB with older versions:</p>
<ul>
<li><code>COPY DF0:Libs/workbench.library DH0:Libs/workbench.library</code> to copy over the now required but missing library to your fresh install.</li>
<li><code>COPY DF0:C/SetPatch DH0:C/SetPatch</code> to bring over a newer version of SetPatch</li>
<li><code>COPY DF0:L/FastFileSystem DH0:L/FastFileSystem</code> to bring over a newer version of FastFileSystem tool</li>
<li><code>COPY DF0:C/Version DH0:C/Version</code> to bring over a newer version of the version tool, ironically</li>
</ul>
<p>Next you will need to update <code>Startup-Sequence</code> to correctly identify the newer libraries installed in the 3.X ROMs. Run <code>ed S:Startup-Sequence</code> and look for a section like this:</p>
<pre><code>C:SetPatch QUIET
</code></pre>
<p>and modify it to look like this:</p>
<pre><code>C:Version &gt;NIL: exec.library 45 20
If WARN
C:SetPatch QUIET
Else
C:SetPatch NOROMUPDATE QUIET
EndIf
</code></pre>
<p>Save your changes and quit <code>ed</code>. Swap out your floppy to something not bootable, and now it&rsquo;s safe to reboot and enjoy your Classic Amiga with BetterWB and 3.X ROMs!</p>
<h1 id="upgrading-to-3-9">Upgrading to 3.9</h1>
<p>If you want to continue to OS3.9, here is what you need to do. Otherwise, feel free to skip this section. You&rsquo;re going to need a new blank floppy to hold the Emergency Boot Disk, the OS 3.9 CD, and something that has the (large) BoingBag updates (you can burn a basic CD from another system holding those files). Enable the CD0 device by running <code>COPY DH0:Storage/Devs/CD0#? DH0:Devs/</code> in the CLI or ZSH and reboot.</p>
<p>Once you reboot, you should be able to use the CD drive. This is a great point to copy (and decompress if necessary) the BoingBangs to your <code>WORK:</code> drive. Then you can begin the process of making an OS 3.9 Emergency Floppy. Switch your GOTEK to your about-to-be-erased OS 3.9 Emergency floppy image, insert the OS 3.9 CD, launch the OS 3.9 installer, and choose to create the Emergency Boot Floppy. Once that is done, reboot with that floppy still in the drive. The system will take some time to boot, but should come up in the 3.9 Emergency environment with the appropriate background. Next, (and this step is critical) select your &ldquo;Workbench&rdquo; volume, and format it using International FFS with caching. Now you can safely launch the OS 3.9 Installer and choose installing on a blank drive. When the install is complete you should be able to reboot with a non-bootable floppy in the drive.</p>
<p>Once OS 3.9 boots, you should install the Internet and all other software from your OS 3.9 CD. It&rsquo;s critical you do this before installing Boing Bags, as the Boing Bags upgrade components of those optional packages anyway. If you install them after the Boing Bags, you will need to re-install the Boing Bags or serious incompatibilities will arise. After that, you should install ALL FOUR Boing Bags before rebooting. Installing BB1 and rebooting will render the system unbootable with the 3.X ROMs. When installing BB2, you will be asked if you want to patch the ROMs, DO NOT DO THIS as the ROMs you have are a later version anyway (and the 3.9 installer is not smart enough to know this). Once the boing bags are complete, you need to repeat some steps from earlier before rebooting:</p>
<ul>
<li>Insert the Boot3X floppy, launch CLI</li>
<li><code>COPY DF0:C/SetPatch DH0:C/SetPatch CLONE</code></li>
<li><code>COPY DF0:C/Version DH0:C/Version CLONE</code></li>
<li><code>COPY DF0:S/FastFileSystem DH0:S/FastFileSystem CLONE</code></li>
<li><code>ed S:Startup-Sequence</code></li>
</ul>
<p>You will need to patch Startup-Sequence like before, updating the <code>SetPatch</code> section as above. There are other command line arguments, they should be in the <code>WARN</code> and <code>Else</code> sections. Now it should be safe to reboot. OS 3.9 will be completely installed and compatible with the 3.X ROMs. Enjoy!</p>
<h1 id="final-thoughts">Final Thoughts</h1>
<p>Lots of trial and error went into this, so hopefully this will save someone the hours I burned with trial and error. If you have comments on this write up, please feel free to reach out or comment below. Otherwise, enjoy your classic Amiga with the 3.X ROMs!</p>DevOps Days Austin 2018 Audio and Video Postmortemhttps://www.gigofham.com/post/2018/06/01-dodatxportmort/
Sun, 01 Jul 2018 01:23:20 +0000https://www.gigofham.com/post/2018/06/01-dodatxportmort/<p>Now that <a href="theagileadmin.com/2018/05/20/devopsdays-autin-2018-restrospective-and-2019-prospectus/">Ernest posted his thoughts on DevOps Days 2018</a>, I figured it was time to post mine. I&rsquo;m happy to report that the video recording and audio for DevOps Days Austin 2018 was better than last year. By no means perfect, but better. Let&rsquo;s dive into the details. For those who don&rsquo;t care and just want to see the videos, they are <a href="https://www.youtube.com/playlist?list=PLCDSC2XitciVEPQ4x4pbBfxoBj92222m5">posted on YouTube</a> in the <a href="https://www.youtube.com/channel/UCK65QYThGym3D6eNxw3rn_A">DevOps Austin Channel</a>.</p>
<p></p>
<h1 id="improvements-from-last-year">Improvements from last year</h1>
<p>This year, the two biggest changes/improvements for the year were new systems for running OBS (and Linux powered at that), Behringer Feedback Destroyer modules on all stages, and new cardioid microphone headsets. The feedback destroyers combined with the new headsets worked better than we hoped. We still had some issues with audio quality on all three stages (getting to that) but it was better.</p>
<p>We also decided to not stream this year. This has positive and negative effects. The largest negative effect has been the wait for me to get all the videos edited and posted on-line. The biggest, most vocal feedback from last year was &ldquo;One talk per video&rdquo;. That takes time, and I&rsquo;ve been busy/sick for the last couple of weeks.</p>
<p>We also changed the configuration of the space used at the venue this year, opting for all three stages to be in the &ldquo;Touchdown Club&rdquo; and not using the &ldquo;Centennial Room&rdquo; at all. This made navigation easier, setup easier, and teardown easier. We also moved all the presentations (sans a couple keynotes and half the ignites) to the first day meaning the wing stages were packed at the end of the first day making move out much easier.</p>
<h1 id="the-wing-stages-still-room-for-improvement">The Wing Stages: Still room for improvement</h1>
<p>The biggest thing that was not better than last year was entirely my fault: the audio on the wing stages. It was plain not good, and that&rsquo;s do a miscommunication between myself and the facility organizer. The wireless mic systems we use are very range sensitive at the UT Stadium, I think a lot of this is because UT uses the same systems and they don&rsquo;t turn theirs off. The RF environment is the textbook definition of hostile. The end effect is that the range between the mics and their receivers is very short. We mitigate this on the main stage by placing the receivers next to the podium which works great for the presenters, and not so great for Q&amp;A. It&rsquo;s a compromise.</p>
<p>The problem with the wings was that I normally have the AV stuff up front off to the side, but that wasn&rsquo;t possible for a myriad of reasons this year. I didn&rsquo;t recognize this until a couple days before, didn&rsquo;t think it through, and just ordered longer speaker cables. Those were necessary, but so was needing to move the receivers up front. The #1 item on the shopping list for next year is the equipment (called a snake) to give us that.</p>
<p>The audio on the recordings from the wing stages wasn&rsquo;t great either. Lots of pops, buzzing, etc. Discussion with the other orgs and volunteers has lead us to the conclusion that we&rsquo;ve just outgrown the all-in-one PA systems we use for the wings. That&rsquo;s also why one mic on the wings had the feedback destroyer, while the rest constantly caused feedback. Budget permitting, we&rsquo;re going to upgrade the wings PA system to be the same components as the main stage to eliminate all of those issues.</p>
<p>The combination of the reception problems with the wireless mics and the connectivity problems for audio to the recording system meant that several talks had worthless audio from the wings and they won&rsquo;t be uploaded. Sorry about that.</p>
<h1 id="main-stage-video-better-not-great">Main stage video: better, not great</h1>
<p>The biggest issues on the main stage were:</p>
<p>1) Me not pushing the record button early enough (lost the first few seconds of a couple talks)
2) The speaker being nearly invisible on the camera.</p>
<p>The first problem is an easy fix, don&rsquo;t depend on me to do it! Seriously, I plan to take a less active role in running the AV for the conference next year and let the volunteers do the bulk of the work so I can float around and not miss important recording events.</p>
<p>The second problem is more complicated. Lighting on the main stage is a hard problem, and we forgot a couple of key issues with it. The lights are controlled by rows, and if we are not careful when placing the screens then the screens wind up under lights and you can&rsquo;t see them. The solution to this has been to turn off the front lights, but this makes it hard to see the presenters. This is also an easy fix, make sure the screen positions are good and we cover the problem lights.</p>
<p>The other issue with lighting the main stage is geometry. The cameras we use are not the best, I fully admit that. But the podium on the stage is not centered, so the large TV screens are in frame behind them (you can see this in the video) and everyone defaults to while background slides. This causes the camera to crank down the iris in order to see the TV clearly, which we don&rsquo;t care about. My plan to fix this next year is to dump the stand alone podium, because we need the table, and put a standing podium on the desk itself. This should have the presenter between the TVs and the problem will be lessened, especially if we fix the lights over the project.</p>
<h1 id="wish-list-better-main-stage-camera">Wish list: better main stage camera</h1>
<p>We had a lot of wandering presenters this year. Not a complaint! Being the guy who wore a headset mic so I could <a href="https://youtu.be/AFHLz1neY6I">&ldquo;gesticulate wildly&rdquo;</a> during my ignite talk, and we host the <a href="https://youtu.be/Hr3xFWAzSqM">&ldquo;Ghallager of DevOps&rdquo;</a>, so I totally understand! Manning a live camera is hard, so maybe we&rsquo;ll do that. We&rsquo;re going to need a better camera either way. We could also do the cool thing and get a really fancy camera, have it be static, and have OpenCV track the presenter and digitally pan when appropriate. I have testing to do for this. We&rsquo;ll see how it goes.</p>
<h1 id="lack-of-training">Lack of training</h1>
<p>Last year when I ran AV, I worked at a company that had a large lab space. I was able to bring all the equipment into the office, and we ran several training sessions on the weekend to get everyone familiar with how to setup, operate, and break down the equipment. I don&rsquo;t work there anymore, so that wasn&rsquo;t an option this year. Lacking that training was a huge mistake. I need to come up with a solution for that by next year. I&rsquo;m also spending the off season writing rudioid microphone headsets. The feedback destroyers combined with the new headsets worked better than we hoped. We still had some issues with audio quality on all three stages (getting to that) bn books for setup, tear down, operation, and post-production so I can spread the load next year with those who wish to help.</p>
<h1 id="why-did-the-videos-take-so-long">Why did the videos take so long?</h1>
<p>A lot of reasons. I was on a plane the day after DevOps Days Austin to go to the RedHat Summit for work. Was there for a week, and planned on working on videos when I got back. Unfortunately, I got food poisoning and/or a stomach flu on the way home (my doctor was rather confused by my set of symptoms), and that had me out for most of the next week. Then life got in the way, and then I needed to find a way to edit the videos. I&rsquo;m squarely in the &ldquo;Anything but Adobe Products&rdquo; camp, especially since we are volunteer run and asking folks to pay for licenses is the worst. I talked to friends who do more YouTube production than I do, and they recommended Black Magic Davinci, but that didn&rsquo;t like that I recorded everything in a MKV container. So, I wound up using OpenShot. Which is fine, but has no hardware acceleration for rendering. So rendering took a while. One of the videos had a sync glitch with the slides, and I owe <a href="https://youtu.be/sP-Yms6W_hE">Pete Cheslock the time to fix that video and replace it</a>. But, in the interest of time I just edited as fast as I could and then uploaded them all. My new job involves a fair amount of travel, so scheduling can be tight, and OpenShot is new to me so I&rsquo;m learning the UI for things like insets and transitions. It will be better next year.</p>
<p>As always, feedback is welcome in the comments below, via twitter, in person, or any other method!</p>Something better than a Rasberry Pi 2Q-2018 Editionhttps://www.gigofham.com/post/2018/05/23-better-than-RPi-2Q2018/
Wed, 23 May 2018 22:16:20 +0000https://www.gigofham.com/post/2018/05/23-better-than-RPi-2Q2018/<p>Ah, the ubiquitous Raspberry Pi. Loved and hated by many. I fall in both camps. I have at least 20 of them currently, and several are in production use. I also spend a lot of time with the larger ARM community, including the <a href="https://www.worksonarm.com/">Works on arm</a> project, and <a href="https://www.96boareds.org/openhours/">96boards Open Hours</a>. Something that comes up a lot is people wanting something &ldquo;better&rdquo; than a Raspberry Pi, and I finally decided to start writing up a comparison of boards I have used and like, that are generally available, and how they are better. The goal is to update this on a regular basis, at least once a year. There is some great stuff coming down the pipeline. But for now, let&rsquo;s jump in.</p>
<p></p>
<h1 id="raspberry-pi-s-current-state-of-the-art-the-3b">Raspberry Pi&rsquo;s current state of the art: The 3B+</h1>
<p>Before we jump into &ldquo;better&rdquo; let&rsquo;s talk about the gold standard from which everything is compared: The Raspberry Pi. The current generation is the <a href="https://www.raspberrypi.org/magpi/raspberry-pi-specs-benchmarks/">3B+</a>, which is a minor revision to the <a href="https://www.raspberrypi.org/magpi/raspberry-pi-3-specs-benchmarks/">3B</a> (which almost everyone refers to as the 3). The 3B and 3B+ are based on a quad-core Broadcom SoC that implements the ARMv8 instruction set using the Cortex-A53 IP. It also has 1GB of RAM, SD Storage, and USB based Ethernet. Both the 3B and the 3B+ also implement WiFi connectivity, but the WiFi on the 3B+ is the major improvement for that release. It&rsquo;s gone from 2.5GHz only to dual band, and updates the speed from the N standards into the AC standards.</p>
<h1 id="defining-better">Defining &ldquo;better&rdquo;</h1>
<p>So, now that we know what the state of the art with the Raspberry Pi is, let&rsquo;s talk about it&rsquo;s shortcomings. Where I think the RPi falls short is RAM and Ethernet. The 1GB of RAM is very limiting, and the USB based Ethernet has a myriad of limitations when it comes to throughput and latency. The WiFi is nice, but when running things like small clusters it&rsquo;s more of a burden than an asset. Another major issue, especially on the newer boards, is power delivery. The MicroUSB power connector is a major limiting factor as it&rsquo;s limited to about 2.5A@5VDC and the 3B+ can easily use more than this. Finding good power supplies and cables can also be an issue here. Ideally you could power the board off the 5VDC pins on the GPIO connector, but it turns out doing this bypasses all the voltage regulation and power conditioning circuitry, so now that&rsquo;s a problem you have to deal with as well.</p>
<p>So, how I am defining better is:</p>
<ul>
<li>Better power connector</li>
<li>Native Ethernet</li>
<li>More RAM</li>
</ul>
<p>Minimum requirements are:</p>
<ul>
<li>Must be ARMv8 based, minimum quad core</li>
<li>Must run Linux at a minimum</li>
<li>Must be &ldquo;available to purchase&rdquo; and not a pre-order, coming-soon, or discontinued.</li>
</ul>
<p>Not a terribly long list, but this is only my first go at this comparison. I&rsquo;m sure more requirements will be added as time goes on, please feel free to leave your thoughts in the comments at the bottom of the article.</p>
<h1 id="the-contenders">The Contenders</h1>
<p>Here are the contenders and the related specs in no particular order:</p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Cores</th>
<th>RAM</th>
<th>Network</th>
<th>Storage</th>
<th>OS</th>
<th>Form Factor</th>
<th>Case</th>
<th>Approx Cost</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="http://www.hardkernel.com/main/products/prdt_info.php?g_code=G145457216438">ODroid-C2</a></td>
<td>4xCortex-A53 (AMLogic S905)</td>
<td>2GB</td>
<td>1GbE Ethernet</td>
<td>MicroSD or eMMC</td>
<td>Vendor Ubuntu, AOSP, Armbian</td>
<td>RPi Compatible</td>
<td>Yes</td>
<td>$46</td>
<td></td>
</tr>
<tr>
<td><a href="https://www.pine64.org/?page_id=7147">ROCK64</a></td>
<td>4xCortex-A53 (RockChip RK3328)</td>
<td>2/4GB</td>
<td>1GbE Ethernet</td>
<td>MicroSD, eMMC, SPI</td>
<td>Vendor Ubuntu</td>
<td>RPi Compatible</td>
<td>Yes</td>
<td>$35/$45</td>
<td></td>
</tr>
<tr>
<td><a href="http://en.t-firefly.com/product/Rk3399/index.html">Firefly-RK3399</a></td>
<td>4xCortex-A53,2xCortex-A72 (RockChip RK3399)</td>
<td>2/4GB</td>
<td>1GbE Ethernet</td>
<td>eMMC, MicroSD</td>
<td>Vendor Ubuntu</td>
<td>Custom</td>
<td>Yes</td>
<td>$199/$209</td>
<td></td>
</tr>
<tr>
<td><a href="https://www.solid-run.com/marvell-armada-family/macchiatobin/">MACCHIATObin</a></td>
<td>4xCortex-A72 (Marvell ARMADA 8040)</td>
<td>1xDDR4 DIMM</td>
<td>2x10GbE, 1x2.5GbE, 1x1GbE</td>
<td>MicroSD, eMMC, SATA</td>
<td>Vendor SuSE, any UEFI Linux Installer</td>
<td>Custom</td>
<td>Yes</td>
<td>$269 and up</td>
<td></td>
</tr>
<tr>
<td><a href="https://www.96boards.org/product/poplar-hoperun/">Poplar</a></td>
<td>4xCortex-A53 (HiSilicon Hi3798CV200)</td>
<td>2GB</td>
<td>1GbE Ethernet</td>
<td>eMMC, MicroSD</td>
<td>Any UEFI Linux Installer</td>
<td>96Boards-EE</td>
<td>????</td>
<td>$99</td>
<td></td>
</tr>
<tr>
<td><a href="https://www.96boards.org/product/hikey970/">HiKey970</a></td>
<td>4xCortex-A73, 4xCortex-A53 (HiSilicon Kirin 970)</td>
<td>6GB</td>
<td>1GbE Ethernet</td>
<td>eMMC, MicroSD</td>
<td>Vendor Debian</td>
<td>96Boards-CE</td>
<td>????</td>
<td>$299</td>
<td></td>
</tr>
<tr>
<td><a href="https://www.96boards.org/product/dragonboard820c/">DragonBoard 820c</a></td>
<td>4xKryo (Qualcomm Snapdragon 820E)</td>
<td>3GB</td>
<td>1GbE Ethernet</td>
<td>eMMC, MicroSD</td>
<td>Vendor Debian</td>
<td>96Boards-CE</td>
<td>????</td>
<td>$199</td>
<td></td>
</tr>
<tr>
<td><a href="https://www.nvidia.com/en-us/autonomous-machines/embedded-systems-dev-kits-modules/">Jetson TX1 Kit</a></td>
<td>4xCortex-A57</td>
<td>4GB</td>
<td>1GbE Ethernet</td>
<td>eMMC, MicroSD, SATA</td>
<td>Vendor Ubuntu</td>
<td>Custom</td>
<td>????</td>
<td>$477</td>
<td></td>
</tr>
<tr>
<td><a href="https://www.nvidia.com/en-us/autonomous-machines/embedded-systems-dev-kits-modules/">Jetson TX2 Kit</a></td>
<td>4xCortex-A57</td>
<td>8GB</td>
<td>1GbE Ethernet</td>
<td>eMMC, MicroSD, SATA</td>
<td>Vendor Ubuntu</td>
<td>Custom</td>
<td>????</td>
<td>$570</td>
<td></td>
</tr>
</tbody>
</table>
<h1 id="those-who-did-not-make-the-cut-and-why">Those who did not make the cut, and why</h1>
<ul>
<li><a href="http://www.lenovator.com/product/103.html">LeMaker Cello</a> : No longer available</li>
<li><a href="https://www.pine64.org/?page_id=1194">Pine64</a> : Gigabit Ethernet doesn&rsquo;t work due to design flaw in board.</li>
</ul>
<h1 id="next-steps">Next steps</h1>
<p>So, as I said above, I would love to hear from your additional suggestions meeting the criteria listed above. Please comment below or reach out to me on Twitter. The more feedback I get, the easier it will be to update this as time goes on!</p>Bring up of the LeMaker Cellohttps://www.gigofham.com/post/2018/02/06-cello/
Tue, 06 Feb 2018 22:16:20 +0000https://www.gigofham.com/post/2018/02/06-cello/<p>Many, many moons ago I pre-ordered the <a href="http://www.lenovator.com/product/103.html">LeMaker Cello</a>. It&rsquo;s a 96boards Enterprise Edition Single Board Computer based on the AMD &ldquo;Seattle&rdquo; Opteron A1100 ARM Processor. I was very excited, because unlike many of the boards I already had it sported three key features: Native SATA ports, a full PCI Express 16x mechanical expansion port, and 2x SO-DIMM slots for memory. After many months of delays, we got some bad news: AMD had discontinued the processor and the PCI Express port didn&rsquo;t work. LeMaker offered those of us who pre-ordered to swap our pre-orders for a <a href="http://www.lenovator.com/product/80.html">HiKey 960</a> board instead based on this news, since that had a PCI Express expansion port. Unfortunately for me, the <a href="http://www.lenovator.com/product/80.html">HiKey 960</a> doesn&rsquo;t have gigabit ethernet or expandable RAM, so I stuck with my pre-order. I had planned to use them as a pair of Database servers for my hosting company, and the lack of PCI Express expansion wasn&rsquo;t a big deal. Several months later, the boards shipped and then my adventure began.
</p>
<h1 id="getting-the-boards">Getting the boards</h1>
<p>The boards arrived in terrible condition physically. I had ordered two, and they were bubble wrapped and then stacked on top of each other, placed in a makeshift cardboard box that barely contained them, and then handed to China Post. They suffered the damage one would expect when something like this is shipped with insufficient packaging (eBay buyers of electronics around the world know this pain). One of the boards appeared fine, the other had a corner chipped off and the heatsink/fan was ripped off the board in transit. I was able to find the <a href="https://www.96boards.org/documentation/enterprise/cello/quickstart/">quick start guide on the 96boards site</a> and get some of the specifications of components I needed to continue.</p>
<p>I knew a needed a power supply, some RAM, and possibly a few other accessories. Sadly, the power supplies linked from the quick start guide were not available to me or super expensive, so I went digging for some alternatives. Some searching on <a href="https://www.digikey.com/">DigiKey</a> yielded a <a href="https://www.digikey.com/products/en?keywords=62-1186-ND">Volgen KTPS90-1207</a> which was not an exact match, but was reasonably priced and so far has worked without issue. I&rsquo;m also running the board rather lightly loaded, just some RAM and a single SATA SSD. I was able to get the SATA power adapter from Amazon, and then went looking for RAM. Ideally I would have got a 4pin DIN power supply, but those were going to cost as much as the boards, so this 7A barrel connector power supply would have to do as a starting place.</p>
<p>Initially I foolishly bought some regular old SO-DIMM modules. They didn&rsquo;t appear to work, so I contacted LeMaker support. They were using the <a href="https://www.micron.com/parts/modules/ddr3-sdram/mt18ksf1g72hz-1g6">MT18KSF1G72HZ-1G6E2</a> modules from <a href="https://www.micron.com">Micron</a>. Turns out these are ECC, and specifically ECCx72 (which is not common). Some digging later and I found some <a href="http://www.memory4less.com/micron-8gb-sodimm-pc10600-mt18ksf1g72hz-1g4d1ze">8GB Micron modules from memory4less.com</a> that are compatible. I bought two of them, and waited for all the accessories to arrive.</p>
<h1 id="more-bad-news-from-lemaker">More bad news from LeMaker</h1>
<p>It was at this point that I got some more bad news from LeMaker: the boards may not boot. They believe the boards were shipped to me without the necessary firmware installed. The provided two options: I could upload the firmware my self, or send the boards back to LeMaker for repair. I had planned on flashing the board that appeared to be intact, and return the second.</p>
<h2 id="attempting-to-flash-the-firmware-on-the-board">Attempting to flash the firmware on the board</h2>
<p>LeMaker provided the necessary <a href="https://edolnx-public.objects-us-east-1.dream.io/cello/cello_platform_firmware.hex">firmware</a>, the target part (an Atmel AT24C512B at I2C Address 0x54), and this image of the I2C connector:</p>
<p><img src="https://edolnx-public.objects-us-east-1.dream.io/cello/8723352C%4009753F7%2805-09-14-29-52%29.jpg" alt="I2C pins next to the SATA power connector" /></p>
<p>I attempted to flash the part using a RaspberryPi, but was unable as I think the voltages were different or possibly pull-up resistors were necessary. Either way, I gave up and shipped both boards back and eagerly awaited their return.</p>
<h1 id="the-boards-arrive-part-2">The boards arrive, part 2</h1>
<p>A few weeks pass, and I now have known good boards. I get home, hook them up, and get: a spinning fan and LED7 turning on when I apply power but that is it. No output from the serial console device. I reach out to LeMaker and Lenovator for support, and get back that a wiki page is forthcoming. However, the board has been marked as sold out on their site and the word on the street is that AMD has killed the Seattle project and discontinued the processors.</p>
<p>Time passes.</p>
<p>I ask for updates, and reach out to see if anyone has got these boards to work on twitter and the Phoronix forums.</p>
<p>Nothing happens.</p>
<p>The boards sit in a drawer, essentially very expensive paper weights. I&rsquo;ve mostly lost hope that they will ever be more that museum artifacts.</p>
<h1 id="office-hours">Office Hours</h1>
<p>Several months, I get involved with the <a href="http://www.worksonarm.com/">Works on ARM</a> community, and ask there for help. They point me to the <a href="https://www.96boards.org/openhours/">96boards Open Hours</a> and after a couple of false starts there I&rsquo;m able to reach out and get some help. Robert from Open Hours gets me in touch with Ard and Ricardo who were engineers on the Cello project. I explain my delemma and learn an important step: on my Rev 003 boards there is another serial port on the board which tells you if the memory can be configured, and there is a power button (YMMV on other board revisions).</p>
<h1 id="the-scp-serial-port">The SCP Serial Port</h1>
<p>Turns out there is a microcontroller on the board that is responsible for setup of the DRAM and other components. It has a read only 6 pin FTDI serial header next to the PCI Express port, and it outputs lots of useful debugging information at 38400bps. I don&rsquo;t have an 6 pin FTDI cable lying around, but I have a lot of serial adapters and some jumpers, so I find the port and connect:</p>
<p><img src="https://edolnx-public.objects-us-east-1.dream.io/cello/IMG_20180207_125551_r.jpg" alt="6 pin FTDI header next to PCI Express connected to serial adapter" /></p>
<p>The green cable is ground and connected to the labeled pin 1. The yellow cable is connected to the RX pin on my serial adapter. I plug this into a Linux host, fire up <code>picocom</code>, and get the following output upon power on of the Cello board:</p>
<pre><code>SCP Bootrom version : 1.1004
SCP Bootloader version : 2.1001
BL2 POST code : 0x00000020
BL2 POST code : 0x00000021
BL2 POST code : 0x00000022
BL2 POST code : 0x00000025
BL2 POST code : 0x00000026
BL2 POST code : 0x00000023
BL2 POST code : 0x00000024
BL2 POST code : 0x00000027
........
System Control Processor Firmware
Version: 1.0.0.2 (ROD1002C_0493 R)
Advanced Micro Devices, Inc.
All rights reserved.
[INFO] Seattle Model B SOC detected. Now initializing.
[INFO] Interpreting EEPROM settings...
[INFO] EEPROM root table - ID: 0000000000000000, Major: 0, Minor: 152.
[INFO] EEPROM area - Sign: PFDT, Rev: 0, Offset: 0x00000070, Len: 19.
[INFO] EEPROM area - Sign: PMAT, Rev: 0, Offset: 0x00000000, Len: 0.
[INFO] EEPROM area - Sign: USAT, Rev: 0, Offset: 0x00000000, Len: 0.
[INFO] EEPROM area - Sign: EATL, Rev: 0, Offset: 0x00000000, Len: 0.
[INFO] EEPROM area tables found - 4.
[INFO] Area table: Platform and feature definition signature.
[INFO] Clock generator device set to I2C0/0x68, SpreadSpectrum=1.
[INFO] VRM device set to I2C0/0x40.
[INFO] EEPROM device set to I2C0/0x54, 64kB, Page size 128 bytes.
[INFO] Flash device set to SPI0, 16MB, Page size 256 bytes.
[INFO] MAC address 0 added: AA:BB:CC:DD:EE:01
[INFO] MAC address 1 added: AA:BB:CC:DD:EE:02
[INFO] RTC device set to I2C0/0x6f, format 1.
[WARN] Unrecognized table entry type: 0, sub type: 0.
[INFO] Area table: Platform management signature.
[INFO] Area table: UEFI/SCP shared area signature.
[INFO] Area table: End of area tables signature.
[INFO] Management device unconfigured, set to listen on I2C2/0x70.
[INFO] SOC executed from cold reset.
[INFO] ISCP Task started
[INFO] Default value of ACLOCK is 1700MHz
</code></pre>
<p>I cannot tell if this is good or bad, but it&rsquo;s the first sign of life I have seen on this board. Ard informs me that now all I need to do is press the &ldquo;power button&rdquo;. Which makes me say &ldquo;wait, what?&rdquo;</p>
<p>Turns out, these two buttons on the board are &ldquo;reset&rdquo; and (for lack of a better label) &ldquo;boot&rdquo;:</p>
<p><img src="https://edolnx-public.objects-us-east-1.dream.io/cello/IMG_20180207_125608_r.jpg" alt="Power button is closest to the USB connector, Reset closer towards the power connectors" /></p>
<p>The reset button will cold boot the board and cause LED7 to blink. The other button seemed to do nothing, but that starts the boot sequence. The SCP serial port starts showing me lots of secrets, and informs me that I cannot count:</p>
<pre><code>Memory Training Firmware
Version: 1.0.0.2
Memory Training for DDR3, one DIMM/channel
Memory Training ... start
[INFO] UEFI memory Setup fail safe counter = 10
********** Load default memory setup settings **********
SPD Channel 0 Dimm 0 SmbusAddr A0, DIMM absent
SPD Channel 1 Dimm 0 SmbusAddr A4, 18KSF1G72HZ-1G4D1 UDIMM ECC 2Rx8
92 11 0B 08 04 21 02 09 0B 11 01 08 0C 00 7E 00
69 78 69 30 69 11 20 89 20 08 3C 3C 00 F0 83 05
80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 0F 11 03 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 80 2C 01 12 26 B1 F7 CD B3 B1 93
31 38 4B 53 46 31 47 37 32 48 5A 2D 31 47 34 44
31 20 44 31 80 2C 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
********** Both channels must have the same memory size **********
******************************************
* *
* Memory Training Failed *
* *
******************************************
</code></pre>
<p>It turns out that you need 2 identical SO-DIMM modules installed on the board, of the same size, to boot. Not the end of the world, as I had two but it means I will need to order two more for the other board. So, I drop in the other module, re-apply power, press the boot button and wait&hellip;</p>
<p>You see, it takes about 3min for these boards to boot. The whole time it&rsquo;s spewing lots of interesting data over the SCP serial port, but it&rsquo;s obvious that microcontroller is running debug code and taking it&rsquo;s time. Eventually, I get a UEFI boot prompt on the console&rsquo;s USB serial port at 115200bps, and can start the GRUB application from the USB CDROM:</p>
<pre><code>UEFI Interactive Shell v2.1
EDK II
UEFI v2.60 (AMD Seattle, 0x00010000)
Mapping table
FS0: Alias(s):CD0d0a:;BLK1:
PcieRoot(0x0)/Pci(0x2,0x2)/Pci(0x0,0x0)/USB(0x3,0x0)/CDROM(0x0)
BLK2: Alias(s):
VenHw(0D51905B-B77E-452A-A2C0-ECA0CC8D514A,000030E00000000000)/Sata(0x
1,0xFFFF,0x0)
BLK0: Alias(s):
PcieRoot(0x0)/Pci(0x2,0x2)/Pci(0x0,0x0)/USB(0x3,0x0)
Press ESC in 1 seconds to skip startup.nsh or any other key to continue.
Shell&gt; FS0:
FS0:\&gt; cd efi
FS0:\efi\&gt; cd boot
FS0:\efi\boot\&gt; dir
Directory of: FS0:\efi\boot\
12/09/2017 13:56 &lt;DIR&gt; 2,048 .
12/09/2017 13:56 &lt;DIR&gt; 2,048 ..
12/09/2017 13:56 401,408 bootaa64.efi
1 File(s) 401,408 bytes
2 Dir(s)
FS0:\efi\boot\&gt; bootaa64.efi
</code></pre>
<h1 id="installing-an-os">Installing an OS</h1>
<p>After I stop jumping for joy, I realize I need an installer. I have this lovely Zalman ZM-VE200 (which is similar to <a href="http://zalman.com/contents/products/view.html?no=20">this device</a>), which lets me load an ISO on an SSD/HDD and present it as an USB CDROM. It&rsquo;s a lifesaver. So, I drop the stock <a href="https://cdimage.debian.org/debian-cd/current/arm64/iso-dvd/">Debian Stretch ARM64 DVD</a> on and plug it in. Then I tell the UEFI shell to reboot and&hellip; it works. The Debian installer comes up no problem. So, I power off the board, attach Ethernet and a brand new SATA SSD, and boot again.</p>
<p>This time, things are not as smooth. I use <code>picocom</code> as my default serial console of choice, and UEFI doesn&rsquo;t seem to like it. Ironically, <code>minicom</code> lets you get through the UEFI menus and prompts without issue, but then the Debian installer is terrible. A little more testing, and I figure out that the UEFI really wants an ANSI serial terminal, and GRUB and Debian prefers a linux/xterm/vt102 terminal. This is a simple fix for picocom where I can start with <code>TERM=ANSI picocom -b 115200 /dev/ttyUSB0</code> and later restart without the <code>TERM=ANSI</code> and all is well. I had very strange issues with <code>minicom</code>, which should come as a surprise to no one.</p>
<p>The Debian installer goes along without issue, finds the NIC, but can&rsquo;t DHCP. My instinct to grab the DVD instead of a netboot ISO pays off! I tell it to ignore the ethernet and figure I&rsquo;ll look at it later. SATA is detected without issue, install completes without issue. Rebooting however&hellip;.</p>
<h1 id="lack-of-console">Lack of console</h1>
<p>The Debian installer and/or GRUB2 figure out that the console is a serial port, and you can see the GRUB2 menu without issue. However, the Linux kernel seems to ignore the serial console. Ard tells me that the console should be <code>ttyAMA0</code>, so I edit the kernel command line in GRUB to remove the stupid <code>quiet</code> flag and add <code>console=ttyAMA0,115200n8</code>. This is when I learned that GRUB, too, wants an ANSI terminal. Now I can see the kernel messages, and then Debian starts up and gives me a login prompt! Holy cow! I have a fully installed and working Debian environment on the Cello. To make those changes permanent, you will need to modify the <code>/etc/defaults/grub</code> file and edit the line that starts with <code>GRUB_CMDLINE_LINUX_DEFAULT</code></p>
<h1 id="lack-of-ethernet">Lack of ethernet</h1>
<p>On to that pesky ethernet. The ethernet device is detected as enp2s0, but a keen reader may discover an issue here:</p>
<pre><code>cello2:~$ ip link list
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: &lt;BROADCAST,MULTICAST&gt; mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
</code></pre>
<p>Turns out the Ethernet MAC is missing it&rsquo;s address. This explains why the installer couldn&rsquo;t use DHCP. No the end of the world, an address can be specified in the <code>/etc/network/interfaces</code> file like so:</p>
<pre><code>auto enp2s0
iface enp2s0 inet dhcp
hwaddress ether 00:00:1A:00:1A:01
iface enp2s0 inet6 auto
</code></pre>
<p>Note that if you have multiple boards, those MAC addresses must be unique on each system. I used the AMD vendor code, and then made up the rest. You can use whatever you like.</p>
<p>I reached out to ask Ard about this, and he informed me that the tool Realtek (who makes the RTL8169 PHY device used on this board) only provides an x86 UEFI application to set these addresses. At the time LeMaker had no way of doing this, but now there is apparently an emulation layer that can be loaded into UEFI which allows running x86 PE/COFF code for tools like this. This isn&rsquo;t a big deal once the OS is installed, but can be a problem if you want to netboot or do a netinstall. In those cases, you would need a workaround:</p>
<pre><code>So we don't have the means to set the MAC address persistently,
unfortunately. What we do have is a firmware based driver that sets it
from the firmware at boot.
Please try the attached driver. You need to drop it into the ESP (the
FAT partition that has /efi/debian/grubaa64.efi in it), and enter the
following commands from the shell:
setvar -guid 8d97e056-777c-4850-ab61-8166b1777f2d MacOverride -nv -bs
=112233445566
where 112233445566 is the MAC address you want to assign (note that
copy paste may not work very well in the UEFI shell so if it doesn't
seem to work, please double check whether you got all the GUID digits
right). Then you can load the driver
load fs0:Realtek8169MacOverride.efi
and check whether it prints something like 'using MAC override value
11:22:33:44:55:66'
If that works, you can register the driver to be loaded automatically at boot
bcfg driver add 0 fs0:Realtek8169MacOverride.efi &quot;R8169MacOverride&quot;
and it should set the MAC address in the PCI config space at each boot.
</code></pre>
<p>Totally not ideal, but here is <a href="https://edolnx-public.objects-us-east-1.dream.io/cello/Realtek8169MacOverride.efi">the tool if anyone is interested</a>.</p>
<h1 id="next-steps">Next Steps</h1>
<p>So, at this point, everything is working. I had planned to deploy these to a data center to be database servers, but it&rsquo;s obvious that would be a terrible idea. These are very much development boards, and when something goes wrong will need button presses to fix. So, they are going to stay at my home lab instead. I&rsquo;m working on building an Open Source ARM CI pipeline where community members can get various software built on various armel, armhf, and arm64 platforms and distributions. Since these boards have Cortex-A57 cores, they can run ARMv6, ARMv7, and ARMv8 code. So my goal is to make them compile boxes, and then I have a suite of other machines to test on. But, before any of this some changes are going to be needed.</p>
<p>First, I need a case. While there are many 96boards CE cases around, I have yet to find an EE one. So, I&rsquo;m probably going to design a one that borrows heavily from <a href="http://wiki.t-firefly.com/index.php/Firefly-RK3399/Peripherals_%E5%A4%96%E5%A3%B3/en">The Firefly-RK3399 case</a> which is just some acrylic and stand-offs. It gets the job done. I&rsquo;m probably going to make one edge open so that if you have something like the <a href="https://www.96boards.org/product/poplar/">Poplar</a> board, you can use the PCI Express slot. Not so important for this board since the PCI Express slot is non-functional.</p>
<p>The second, the CPU fan on this board is small and very loud. My goal is with this case, I&rsquo;m going to remove that small fan and instead place a nice big 120mm standard PC case fan on top and have it cool the CPU and other components. The CPU cooler uses a standard PC Case 3pin fan connector, so this is a simple change once there is a place to mount it on the case.</p>
<p>Once I have the case design done, I will post here for others. It will be CC0 licensed.</p>
<h1 id="summary">Summary</h1>
<p>If you skipped all the text above, here is what you need to know:</p>
<ul>
<li>You will need an IDENTICAL PAIR of ECCx72 SO-DIMM modules, I&rsquo;m using <a href="http://www.memory4less.com/micron-8gb-sodimm-pc10600-mt18ksf1g72hz-1g4d1ze">8GB modules from memory4less.com</a></li>
<li>You will need a USB-TTL serial adapter to connect to the SCP FTDI header next to the PCI Express slot in order to see if the SCP manages to configure the memory and other hardware correctly. That serial port operates at 38400bps.</li>
<li>If you don&rsquo;t get output from the SCP, you may need to apply firmware to the board. See above, good luck, and let me know if you succeed.</li>
<li>If you do get output, then press the &ldquo;Boot&rdquo; button. You should get lots more output on the SCP and if memory configuration succeeds, it will boot and in several minutes you can interact with the UEFI console on the integrated USB serial port at 115200bps.</li>
</ul>
<p>Hope that helps others, feel free to leave comments below if you have questions or concerns. Thanks a bunch to Ard, Robert, and Ricardo from 96boards for their help getting my Cello boards up and running!</p>I have a post on SysAdvent this year!https://www.gigofham.com/post/2017/12/23-sysadvent/
Fri, 22 Dec 2017 05:16:20 +0000https://www.gigofham.com/post/2017/12/23-sysadvent/<p>I was kind enough to be selected to have a article in <a href="http://sysadvent.blogspot.com/2017/12/day-23-open-source-licensing-in-real.html">SysAdvent 2017</a>. Feel free to go read it over there, and then we can discuss more if folks have questions in the comments here or on twitter!</p>
Carl's guide to buying a Printerhttps://www.gigofham.com/post/2017/07/25-printerbuyingguide/
Tue, 25 Jul 2017 01:23:20 +0000https://www.gigofham.com/post/2017/07/25-printerbuyingguide/<p>You&rsquo;ve thought about it, and you have decided you need a printer. Let&rsquo;s talk about how to pick one.</p>
<p></p>
<h1 id="buy-a-printer">Buy a printer</h1>
<p>Your printer needs to do one thing: print. Do you want to scan things? Buy a scanner (Epson makes lovely ones, my DS-510 is amazing). Do you need to FAX? Buy a online FAX service like <a href="https://www.nextiva.com/products/online-fax-email.html">nextiva</a>, <a href="http://www.pamfax.biz/en/">PamFax</a>, or <a href="https://www.phaxio.com/">Phaxio</a> if you need a good API. Don&rsquo;t use eFax. <em>DO NOT</em> buy a MFD aka Multi Function Device (sometimes known as an all-in-one) which is a Printer, FAX, copier, and Scanner all in one. They suck at everything. Do not buy one.</p>
<h1 id="buy-a-laser-printer">Buy a laser printer</h1>
<p>Unless you print photos all the time (like daily) buy a laser printer. Seriously. If you print infrequently, grab a sub $100 monochrome laser printer from your local office supply big box store or electronics warehouse store. Want color? You can get one that is COLOR for around $250. Do you print a fair amount? Laser is faster. Do you like saving paper? Many color laser printers can duplex out of the box. Really the only reason to not buy laser is if you print a lot of photos.</p>
<h2 id="but-the-toner-is-expensive">But the toner is expensive</h2>
<p>Toner is cheaper than ink. Printer ink <a href="https://visual.ly/community/infographic/technology/printer-ink-most-expensive-liquid-world">is the most expensive liquid on the planet by volume</a>. Every time you turn on your printer or start a job, your ink-jet printer <em>throws away ink</em> to &ldquo;clean&rdquo;/prime the nozzle. If you print infrequently your ink can congeal or dry and become unusable. Toner has none of those problems. Most toner cartridges are good for over 2000 pages (and those counts only increment when the page contains those colors, B&amp;W pages do not use color toner). I&rsquo;ve neglected my laser printer for months and moved it to a new home, turned it on and it just worked. The last ink-jet printer I tried developed problems within two months of purchase.</p>
<h2 id="i-need-to-print-photos-to-hang-on-grandma-s-wall-so-her-friends-can-see-them">I need to print photos to hang on Grandma&rsquo;s wall so her friends can see them!</h2>
<p>OK, laser printers do suck at printing photos. If you print them frequently (at least weekly) then get a quality photo ink-jet printer (the kind that takes 6 or more color cartridges), some good quality photo paper, and use it just for photos. If you print less than that, put that photo on a thumb drive and drive to your local chain pharmacy or warehouse department store and use the photo kiosk to print your JPEG. The quality will be better since those printers are usually dye sublimation, and it&rsquo;s cheaper than having an ink-jet lying around.</p>
<h1 id="do-not-get-a-wifi-enabled-printer">Do not get a WiFi enabled printer</h1>
<p>WiFi on Printers is a trap. Don&rsquo;t do it. Inputting the WiFi password is pain and suffering and (news flash) WiFi is unreliable. On top of that, your printer is going to have WiFi-N and will slow down your entire network. If you want to be able to print from multiple machines, either share the printer from an almost always on desktop system; or get a Network printer and plug that Ethernet cable into your switch/router. It&rsquo;s not that much more expensive (if any more expensive). Remember when I said your printer should be a printer? Many of the newer WiFi printers I&rsquo;ve seen are smartphones with a printer attached (like running full copies of WebOS or Android just to give you full color LCD display with an on-screen keyboard for inputting your WiFi network information).</p>
<h1 id="what-brands-would-i-recommend">What brands would I recommend?</h1>
<p>I recently got my lovely parents a Lexmark cs310dn which is a color, duplexing, network laser printer for about $250. It looks like that model has ben replaced by the cs317dn which is even cheaper. I have had great success with Lexmark printers, almost every one speaks native PostScript as well as PCL. They also support IPv6, IPP, and RAW (JetDirect) socket. They talk to Windows, Macs, and Linux boxen without any frustration in my experience. My Lexmark C543dn I bought in 2005ish has moved across the country multiple times, been struck by lightning, and still works with some minor user serviceable repairs over time. Total investment sans toner and paper: less than $600 over 10+ years. If you don&rsquo;t care about Linux, Samsung and Brother make great laser printers as well (Linux support has been touch and go there, but Mac and Windows are fine).</p>
<p>Hope that helps. Choose wisely, choose a standalone non-MFD laser printer.</p>DevOps Days Austin Video and Streaming Postmortemhttps://www.gigofham.com/post/2017/07/19-dodatxpostmort/
Wed, 19 Jul 2017 01:23:20 +0000https://www.gigofham.com/post/2017/07/19-dodatxpostmort/<p>I&rsquo;m not going to sugar coat this, the streaming and video capturing for DevOps Days Austin 2017 was poor. It was also my responsibility. So I wanted to write this for two reasons: to apologize, and to explain what I am doing to fix it for next time.</p>
<p></p>
<h1 id="background">Background</h1>
<p>For 2016, DevOps Days Austin moved to the Darrel K Royal Memorial Stadium at the University of Texas Austin. We also expanded to three tracks. We didn&rsquo;t have great access to the facility before the event that first year so we went super conservative and hired a third party to handle all the AV. It worked out fine, but was very expensive and the end result was a lot of work for me to get the videos on-line. I had approached the organizers to try and make things better for this year so we started planning.</p>
<p>We decided we would be able to do all the AV in-house with a fair amount of volunteer help. I put together lists of the equipment we would need after some basic testing at home. The number came out to be several thousand dollars less than what we paid to rent and outsource in 2016, and we wouldn&rsquo;t have to spend this every year. Big spend this year, much less in later years as we upgrade/add equipment. So far, so good.</p>
<p><em>Side note:</em> I&rsquo;m putting together a complete inventory of hardware, software, configs, docs, etc. and all of this will be posted in a GitHub for others to learn from my mistakes, and replicate what works for other events. Do you have an event that is up to three stages in Austin and want AV? Talk to me! This will be updated with the links once it goes on-line.</p>
<p>This is where we hit our first problem: budgeting and logistics. We ordered most of our gear from Amazon, and a couple of the organizers wound up fronting the cost (around $15k) on their credit cards until we could get reimbursed from the conference funds. That&hellip;slowed things down. We also wound up getting the equipment very close to the show because that&rsquo;s when funds we available. The original plan was to dry-run the whole mess at an DevOps Austin meetup three weeks before the conference.</p>
<h1 id="you-amazon-shipment-has-been-delivered">You Amazon shipment has been delivered</h1>
<p>In order to simplify things, we had wound up swapping out some components for what we could find in-stock at Amazon. For most things, this was fine. For a few (specifically the SDI converters) this was not. We also discovered Amazon doesn&rsquo;t like you ordering more than about $5k at a time. Also, the joy of Amazon meant we got over 40 individual packages delivered. We congregated all the all the boxes from Amazon in a spare room at my place of employment one weekend and started assembling and testing.</p>
<p>Remember I said swapping the SDI converters was a bad idea? This is when we first encountered this. It was one business day before the meetup I was planning a full scale test at. Needless to say, we didn&rsquo;t do that test and that was my second major problem: we only tested at my place of employment on the weekend and that didn&rsquo;t reflect the venue at all in very specific ways.</p>
<p>The cheap Chinese SDI converters were sent back, and Black Magic Design ones were ordered for replacements (we were also using Black Magic Design capture cards so compatibility was guaranteed, there was a bit of premium for these but in the end playing it a little conservative caused less problems). Testing continued and we could now reliably source all the inputs in <a href="https://www.obsproject.com/">OBS</a>. Some basic testing was done, but this is another place where I didn&rsquo;t test enough: live streaming from a place of work is difficult. So I had a test screen on an Raspberry Pi and the camera pointed out the window. All audio was muted. I had looked at the video streams from my desktop, but never thought to check the audio (in my previous experience systems tend to prioritize audio over video because if you can hear fine but it&rsquo;s a slideshow for the most part you don&rsquo;t care).</p>
<h1 id="training">Training</h1>
<p>The weekend before the conference, we did some training - again at my place of employment over the weekend. We never got a chance to look at the streams from an &ldquo;outside&rdquo; view (even if &ldquo;outside&rdquo; was defined as &ldquo;from my desk with headphones on&rdquo;). I did see some stuttering on the main stage system once it was fully wired up, but we were dealing with (yet more) SDI converter issues (we didn&rsquo;t upgrade the ones we were using for the preview projectors and should have) and making sure the local PA was OK. That week was the conference.</p>
<h1 id="setup-day">Setup Day</h1>
<p>The day before the conference was setup day. We were able to get everything in and mostly setup within a few hours. We were finally able to do some testing in-situ as it were. There were problems. Our documentation about certain aspects of the venue were off, so some adjustments needed to be made there (location of projector inputs for one of the stages was the biggest issue). We tested all the RF equipment without issues (but in hindsight the room was missing several hundred attendees with various WiFi and Bluetooth devices). But most importantly, CPU utilization on the recording/streaming systems jumped quite a bit. Some investigation after the fact, I think this was due to the massive number of WiFi beacons was just causing interrupt requests from the USB3 WiFi dongles to spike outrageously. The main stage was showing it&rsquo;s encoder was overloaded and running at only 7-8fps. That wasn&rsquo;t going to be acceptable, so I went to our local Fry&rsquo;s with a plan to upgrade but was met with the usual of what I wanted was out of stock. I grabbed what I could (which in hindsight I should have gone overboard just to be safe) and built upgrades that night. It took me so long to get everything together I didn&rsquo;t do enough testing before getting a few hours sleep.</p>
<h1 id="day-one">Day one</h1>
<p>The new system for the main stage was installed before we went live, and wound up running at 8-9fps and the encoder was still overloaded. I tried several things to improve it but didn&rsquo;t get much out. Tweets were coming in that the stream was unwatchable, and I finally turned the stream off in the afternoon and just recorded to disk from the main room. We had good reports from the second and third tracks, but I didn&rsquo;t have much else to go off of.</p>
<p>We also had some audio issues in the morning because our PA testing the day before was for an empty room. Adding the attendees made the wireless mics drop out quite a bit. We wound up moving the receivers up to the stage and all of those issues went away at least.</p>
<p>Because the recording encoder defaults to the same as the streaming encoder, the recordings from the afternoon were no better than the streams in the morning. The same overloaded encoder was still dropping frames all over the place. VLC reported the full afternoon of recording yielded a 15min file. That was really disappointing.</p>
<p>That evening at the happy hour, the Youtube notifications started pouring into my phone of poor audio quality. I figure these were for the main stage, but they were for tracks 2 and 3. Turns out my assumption that the audio is used as a baseline and the video added on top was incorrect - the video is used as the baseline and audio drops to match the video. That was surprising and truly unfortunate.</p>
<h1 id="day-two">Day two</h1>
<p>Because of how poorly the previous day went in the main room, (and since I needed much more sleep) I went overboard and just brought in my personal gaming rig to capture on for the main track. Amazingly adding a really over powered machine optimized for gaming made all the problems go away on the main stage. I made adjustments on the 2nd and 3rd tracks to reduce the frame rate from 60fps (which was optimistic but matched all the inputs, thinking this would reduce CPU and GPU load) to 30fps and things looked better. I wasn&rsquo;t able to check sound because of a lack of headphones but otherwise things looked good. Streams from the second day had some quality issues on the 2nd and 3rd tracks, but the main track was flawless.</p>
<p>The day went much better for all three tracks. Then we tore everything down, packed up, and went home.</p>
<h1 id="what-went-wrong-and-how-we-are-fixing-it">What went wrong and how we are fixing it:</h1>
<p>Here&rsquo;s the complete list of what went wrong and how we&rsquo;re approaching fixes.</p>
<h2 id="way-too-many-wifi-beacons-for-the-poor-rtl8812-based-usb3-network-cards">Way too many WiFi beacons for the poor RTL8812 based USB3 network cards</h2>
<p>The WiFi cards we purchased are based on the Realtek 8812 chipset. It&rsquo;s a cheap device, and performs accordingly. It caused a lot of CPU load on the systems compared to wired Ethernet. My gaming rig has an ASUS USB3 WiFi adapter which had no issues at the event. I think it would be even better to move all the machines behind dedicated WiFi bridge for each track (same sort of device you use to connect an old Xbox to your WiFi for example). Real wired Ethernet would be best, but I know that is not going to happen for lots of reasons (mostly the venue cannot support it). Going to do some testing with hardware bridges so that everyone is still on WiFi and will allow adding devices which don&rsquo;t have WiFi (like various HDMI switchers). The overhead of a busy WiFi be eaten by the device and only IP will move back and forth to the PCs. At least in theory. Otherwise just replace everything with non-USB WiFi adapters as part of equipment upgrades below&hellip;</p>
<h2 id="bugs-in-the-release-of-the-amd-advanced-media-framework-hardware-encoding-stack-for-obs">Bugs in the release of the AMD Advanced Media Framework hardware encoding stack for OBS</h2>
<p>I discovered a new release of the AMD drivers and the OBS AMD Encoder half way through day 1 of the conference. I applied them on the beginning of the 2nd day on the Stage 2 and 3 machines. These things happen. Windows 10 automatic driver &ldquo;upgrades&rdquo; hurt us here as well because it turns out it replaced some of the core files needed for the Advanced Media Framework with versions that had compatibility issues. The fix is to run DDU once which removes all broken drivers and then disables the Windows &ldquo;update&rdquo; service for graphics drivers after every major Windows update. I had Windows updates disabled by marking the conference WiFi as metered, which worked on site, but Windows 10 helpfully replaces drivers without asking and with the AMD stack that can leave them in a bizzare half-installed state. This was part of our problem I learned while debugging after the conference. Running DDU and installing the drivers from AMD caused CPU load to nosedive and the encoder to be stable in the same monitor configuration as we used in the conference. Lesson learned there.</p>
<h2 id="not-enough-hardware-for-projecting-the-obs-preview-to-a-second-monitor">Not enough hardware for projecting the OBS preview to a second monitor</h2>
<p>I had hoped to have boxes that we could keep physically small so they would be easier to transport and store. This also let us use less expensive hardware to keep overall costs down. This meant we were using the AMD AM1 platform. We&rsquo;re also in the middle of a massive hardware refresh in the AMD side of the world, and I didn&rsquo;t want to spend a bunch of money on something we were going to need to replace next year anyway. There were no ITX boards which had nvidia GPUs, so I went AMD instead. (The Intel GPUs don&rsquo;t seem to support encoder offloading for OBS so I stuck with the AMD ecosystem). I also did my initial testing on AM1 based systems, and since the GPU was doing most of the work they were fine. I knew they were under powered, but again GPU doing all the heavy lifting. Lots of head space on resource monitor. All of that was eaten by either the second monitor preview, WiFi, and mismatched driver components. I&rsquo;m in the middle of massive testing here for improvements which leads to&hellip;</p>
<h2 id="not-enough-hardware-for-encoding-at-1080p60">Not enough hardware for encoding at 1080p60</h2>
<p>Again, trying to keep costs down and physical space requirements down meant the hardware was a little on the light side. The day 1 replacement hardware I got for the main stage from Fry&rsquo;s was a near top of the range FM2 APU based ITX system. At first, that didn&rsquo;t cut it either. Later I found that was mostly due to driver issues. My gaming rig (used on main stage, day 2) is a 8 core FX-8130 with a GTX 980 GPU and it worked flawlessly. But if future hardware needs a dedicated GPU and the capture card, then means limiting to a Micro-ATX boards. Much larger form factor and cost. Information about the new Ryzen APU parts (in the form of Linux kernel driver patches) are out and they are much more than I expected in terms of performance. I have done some research with an FM2 760K and a RX 460 and things are rock solid in the same display configuration at the conference main track. The Ryzen APU should be better still. Research on this is on-going and finding lots of settings to tweak is helping (it&rsquo;s amazing what happens when you take OBS out of basic mode).</p>
<h2 id="lack-of-audio-testing-for-tracks-stages-2-and-3">Lack of audio testing for Tracks/Stages 2 and 3</h2>
<p>This is a stupid simple fix: adding headphones to all streaming machines. I facepalmed when I realized how stupid it was I didn&rsquo;t add them earlier.</p>
<h2 id="1080p60-was-optimistic-and-we-should-have-been-shooting-for-1080p30">1080p60 was optimistic and we should have been shooting for 1080p30</h2>
<p>Pretty self explanatory, and it&rsquo;s an easy fix. We did this on day 2 for stages 2 and 3, stage 1 was just fine 1080p60 with the massive hardware load I had there. I went this route because the notebooks we were getting slides from were all 60Hz and the cameras were also 60Hz. I had falsely assumed that keeping everything at the same refresh rate would reduce load on te GPU. It looks better and all the equipment wants to be at 60Hz so we&rsquo;ll shoot for it on the new hardware and see what happens, and fall back if we need head room on the OBS nodes.</p>
<h2 id="recordings-were-no-better-than-the-streams">Recordings were no better than the streams</h2>
<p>We had the recording mode in OBS set to &ldquo;same as stream&rdquo; which meant whatever the streams looked like we got on disk. This turned out to be fatal for actually using it as a backup to the stream. Ideally I would like the recording to be lossless versions of the source streams. OBS does support this, but I don&rsquo;t know what the resource requirements for the encoders are or what the drive space requirements are. Testing continues here as well, and adding drive space should be easy if we can pull off having the streams encoded two different ways simultaneously.</p>
<h2 id="changes-in-framing">Changes in framing</h2>
<p>I had originally designed the system to be a tight shot on the podium, and in reality we needed a wide area for panels and people to walk around. This mean zooming out. The awesome volunteers in Track 2 and 3 had issues where the camera was adjusting the iris to clearly view the projector screen above the speakers for slides and ignore the presenter. They figured out how to change the crop and things got much better. We need to do this on Stage 1, but the camera was off to the side for logistics reasons. I hope to correct this next year by hanging the camera from the ceiling so it doesn&rsquo;t block doors and can be center aligned.</p>
<h1 id="operating-system">Operating system</h1>
<p>As you may have noticed, everything was running on Windows 10. I had hoped to run on Linux, but the machines were too under powered to function in Linux. As much as a I dislike Windows, it&rsquo;s media framework is superior to what is in Linux and OBS right now. Simply launching OBS and putting two Black Magic video streams on the canvas caused the CPU to peg at 100% in Linux. Doing that in Windows caused no 4% increase in CPU utilization. My hope is that the new hardware will have enough head room to allow running Linux instead of Windows (causes a lot of issues related to background processes, driver compatibility, and auto update processes to go away). Once the Ryzen APU parts start shipping, this is one of the things I plan on testing first.</p>
<h1 id="moving-forward">Moving forward</h1>
<p>Next time will be better. I can&rsquo;t say how much better yet. I have a lot of testing that is ongoing until the next conference/meetup/whatever when we use this gear again. I am planning on using this gear in a variety of environments at least once a quarter between now and the next DevOps Days Austin 2018. This may also mean things don&rsquo;t get much better until next DevOps Days Austin when budget opens and we can buy upgrades. We&rsquo;ll see how it goes. It&rsquo;s going to be better. Incremental improvements and testing. Stay tuned for updates.</p>New Engine for gigofham.comhttps://www.gigofham.com/post/2017/01/07-new-website/
Sat, 07 Jan 2017 14:30:34 -0600https://www.gigofham.com/post/2017/01/07-new-website/<p>After a long slumber, I&rsquo;ve moved the site from <a href="http://www.wordpress.org">Wordpress</a> to <a href="http://gohugo.io">Hugo</a> so that I can start eating my own dogfood. I&rsquo;m a huge believer in static site generators, and Wordpress can be a mess to maintain properly.</p>
<p>The only thing missing now is Hugo has no way to auto-post to Twitter when I make a new post. However, I should be able to rub on some <a href="https://www.ifttt.com">IFTTT</a> magic and make that problem go away.</p>
<p>Added bonus: I now have <a href="http://www.disqus.com">Disqus</a> comments on every page which makes moderation a breeze and shouldn&rsquo;t cause massive amounts of SPAM. If that doesn&rsquo;t turn out to be true, I&rsquo;ll turn them back off.</p>
Quick update: Sub $200 Stratum 1 NTP Server with ODROID and Adafruit partshttps://www.gigofham.com/archives/73
Sat, 11 Jun 2016 22:19:34 +0000https://www.gigofham.com/archives/73<p>I was building another one of these, and found some bugs in my previous post. I&rsquo;ve corrected the post, the biggest being that the kernels in Armbian 5.10 and later include a 1-Wire interface in the DTB which conflicts with the 1PPS pin used by the GPS module. The solution is to either comment out the <code>w1</code> stanza in the device tree, or move it to another pin. I moved it to <code>GPIOY_7</code> which is two pins down on the same row of the connector. The DTS and DTB links in the previous post have been corrected, along with the new SHA256 checksum of the DTB itself. I also tried to build on an ODROID-C2 platform, but it&rsquo;s missing the GPIO 1PPS client in the kernel, so I&rsquo;ve gone back to just using ODROID-C1+ for now. I also found that if you do not have the I2C display on top of the GPS module, but the module is near a window and pointing up the GPS will lock. Pretty cool. Onward to deployment!</p>
Sub $200 Stratum 1 NTP Server with ODROID and Adafruit partshttps://www.gigofham.com/archives/70
Thu, 02 Jun 2016 01:23:20 +0000https://www.gigofham.com/archives/70
<p>Time is important. In modern computing, I would say time is second in importance only to good entropy. Unfortunately, getting accurate, reliable time is getting harder. The global NTP pool is under attack, and worse it&rsquo;s also being used as an amplification vector for DDOS attacks. Primarily because of those two reasons, I&rsquo;ve decided to block NTP traffic at the border of all Data Center. But this leave a problem: how to get time. The easy answer is an off-the-shelf NTP server that uses CDMA or GPS. The easiest is CDMA because it requires no external antenna. The problem is the major CDMA carriers have committed to turning off the CDMA networks in the next few years. So that leaves GPS. No big deal, until you try to get pricing information for a standalone GPS backed NTP server. Cheapest I could find was only rated at about 10 clients and costs well over three thousand dollars. So I kept digging.</p>
<p>The commercial products have some fancy features: Oven controlled oscillators, 10Mpps outputs, sometimes even rubidium oscillators. I don&rsquo;t really need any of that, I just need a descent NTP source that supports the 1PPS signal for synchronization. The 1PPS signal is important because you get messages from the GPS receiver once every second, including time. That message is long, and it&rsquo;s over a 9600bps serial link. That means it can have a variance well in the hundreds of miliseconds. That&rsquo;s too much. The 1PPS system in the Linux kernel, tied to the 1PPS signal from a GPS receiver gets you down into the 5 microsecond range for variance. Much better.</p>
<p>It turns out, gpsd does almost everything you need to be a stratum 1 NTP server. Pair that with NTPd or chrony and you&rsquo;re in great shape. Several people have done this with Raspberry Pi systems, but networking on the Pi is miserable since it&rsquo;s over a USB interface and now most of that work you did to eliminate variance is gone. Some people have also tried to do this with a BeagleBone based system, which has worked but is a bit hacky because the BeagleBone was never really as popular as the RPi. But, I was going in the right direction. Cheap board, simple GPS module, done and done.</p>
<p>Adafruit stocks and ships a number of lovely modules with a 1PPS out, and I started with their <a href="https://www.adafruit.com/products/746">Ultimate GPS breakout board</a> because it&rsquo;s the cheapest and most flexible. I then tried to tie that to various systems. First I got the module working and talking to gpsd over a USB Serial interface. Worked great. The serial interface devices I have lying around are not spectacular so I had no way to test the 1PPS. No big deal. I did have several <a href="http://www.linksprite.com/linksprite-pcduino3-nano/">pcDuino 3 Nano</a> boards, and Adafruit also ships a <a href="https://www.adafruit.com/products/1272">GPS module for the arduino family</a>. Cool. The levels are wrong, because an Arduino is 5V logic, and the pcDuino is 3.3 but you can <a href="http://store.linksprite.com/t-board-to-bridge-arduino-shield-to-pcduino-with-level-shifter/">get adapter boards</a>. I also wanted a <a href="https://www.adafruit.com/products/772">simple display</a> to show status so it could run headless (and also because the serial port would be consumed by the GPS module). So get all those parts in, assemble, and&hellip;nothing. Turns out the serial port on the pcDuino 3 Nano is a non-starter. Not wired correctly or something. OK, back to the drawing board.</p>
<p>While the RPi is out, there are a lot of boards that are &ldquo;RPi compatible&rdquo; in terms of form factor and the expansion ports. One such is the ODROID series from <a href="http://www.hardkernel.com">HardKernel</a>. I had a couple <a href="http://odroid.com/dokuwiki/doku.php?id=en:odroid-c2">ODROID-C2</a> boards, so I grabbed the Adafruit <a href="https://www.adafruit.com/products/2324">Ultimate GPS Hat</a> and a <a href="https://www.adafruit.com/products/1115">simple display hat</a> and tied them to the C2. Initially, there was much better success than with the pcDuino 3 nano. The C2 also has two serial ports, one for a consle and a second on the RPi connector. It could talk to the GPS reciever no problem, and gpsd got a lock and time. Next was 1PPS, and that&rsquo;s where I hit a brick wall. At the time, the C2 kernel did not support an IRQ for the GPIO pins (I&rsquo;m told it does now) so there was no way to use the pps-gpio driver in the kernel. Drat. However, the <a href="http://odroid.com/dokuwiki/doku.php?id=en:odroid-c1">ODROID-C1+</a> didn&rsquo;t have that problem so I ordered a pair of those and waited.</p>
<p>Finally got the boards in, tied everything together and had&hellip;minimal success. It took weeks to get the boards, so this project started as a October timeframe &ldquo;Hey! I have an idea!&rdquo; and I just got it working last week the way I want. The first issue was the image I was using, odrobian, didn&rsquo;t have the gpio-pps module and had problems booting on every MicroSD card I tried. Turns out, this is mostly a kernel and u-boot issue on this board. Switching to <a href="http://www.armbian.com">armbian</a> fixed all those (and it ships with the needed module).</p>
<p>The serial port on the C1+ has an interesting bug, in that it won&rsquo;t work unless you run a specific command:</p>
<p><code>stty -F /dev/ttyS2 9600</code></p>
<p>This forces the port to 9600bps and then everything is fine. Other tools can later change the baud rate, but for whatever reason gpsd cannot. Adding that line to /etc/rc.local solved the problem permanently.</p>
<p>The next issue is the 1PPS signal. The pps-gpio module uses the device tree to find which port the 1PPS signal should monitor. After a lot of research I found that the correct port for the Adafruit hat is GPIOY_3. This means you need to add the following stanza to the dts:</p>
<pre style="padding-left: 30px;">pps {
compatible = "pps-gpio";
gpios = "GPIOY_3";
};</pre>
<p>This conflicts with the 1-Wire interface defined earlier in the file (search for <code>w1</code> and comment out the whole stanza, or change the pin used to a different value like <code>GPIOY_8</code>). Or.. you can just download my compiled <a href="http://edolnx-public.objects-us-east-1.dream.io/ODROID-C1/3.10.101-odroidc1-meson8b_odroidc.dtb">dtb</a> that&rsquo;s a drop in replacement. (SHA256 sum: 21a16397fcd1248f2fa79ce94f567cd1b230bae4926c1b83bdaaad12bde82b6c ) I also have the source <a href="http://edolnx-public.objects-us-east-1.dream.io/ODROID-C1/3.10.101-odroidc1.dts">dts</a> available if you want to compare.</p>
<p>A few software tweaks, and it all works. I haven&rsquo;t finished the software for the display yet, but you can at least get time. Here&rsquo;s the HOWTO:</p>
<h1 id="building-a-odroid-c1-based-ntp-server-with-adafruit-ultimate-gps-hat-v3">Building a ODROID-C1+ based NTP server with Adafruit Ultimate GPS Hat v3</h1>
<h2 id="parts-list">Parts List:</h2>
<ul>
<li><a href="http://www.hardkernel.com/main/products/prdt_info.php?g_code=G143703355573">ODROID-C1+</a> (an ODROID-C2 may work now, I haven&rsquo;t tested)</li>
<li>MicroSD card (I&rsquo;m using a Samsung EVO PRO 16GB, you don&rsquo;t need a lot of space) and USB adapter for it</li>
<li><a href="https://www.adafruit.com/products/2324">Adafruit Ultimate GPS Hat</a></li>
<li>CR1220 Battery for GPS Hat (allows GPS to retain state data for faster startup, buy locally)</li>
<li><a href="http://www.adafruit.com/products/851">Adafruit uFL GPS cable</a> (optional for external antenna)</li>
<li><a href="http://www.adafruit.com/products/960">Adafruit external GPS antenna</a> (optional, but highly recommended)</li>
<li><a href="https://www.adafruit.com/products/1115">Adafruit Blue&amp;White 16x2 LCD+Keypad Kit for Raspberry Pi</a> (optional)</li>
<li><a href="http://www.adafruit.com/products/2336">Adafruit brass standoffs for the hats</a> (optional, <a href="https://www.adafruit.com/products/2337">16mm variants</a> are great for GPS hat)</li>
<li><a href="http://www.hardkernel.com/main/products/prdt_info.php?g_code=G134111972476">ODROID Power Adapter/Cable</a> (min 2A, don&rsquo;t use MicroUSB for power)</li>
<li><a href="https://www.adafruit.com/products/1979">Adafruit Raspberry Pi Extra Tall Stacking Header</a></li>
<li>Case (You can use the <a href="http://www.hardkernel.com/main/products/prdt_info.php?g_code=G143730080763">ODROID one</a>, or modify <a href="https://www.adafruit.com/products/2256">this one from Adafruit</a> slightly for the power connector to work, or 3D print your own)</li>
<li><a href="http://armbian.com/">Armbian</a> Image</li>
<li><a href="http://www.hardkernel.com/main/products/prdt_info.php?g_code=G134111883934">ODROID Serial Header and USB module</a> (you can&rsquo;t debug boot error messages on anything but the serial console)</li>
</ul>
<h2 id="software-used">Software used:</h2>
<ul>
<li><a href="http://edolnx-public.objects-us-east-1.dream.io/ODROID-C1/Armbian_5.10_Odroidc1_Debian_jessie_3.10.101.7z">Armbian 5.10</a> (beware, 5.11 has a busted kernel, but 5.12 seems to be fine)</li>
<li><a href="http://edolnx-public.objects-us-east-1.dream.io/ODROID-C1/3.10.101-odroidc1-meson8b_odroidc.dtb">dtb</a> with the pps stanza for the 1PPS line from the GPS module</li>
<li>chrony (it&rsquo;s easier to integrate with gpsd than ntpd, more secure, and will keep things moving along during bad weather when you may not have GPS lock. It&rsquo;s also compatible with regular ntp clients.)</li>
<li>gpsd from Debian Testing (the version in Jessie has broken 1PPS support)</li>
</ul>
<h2 id="hardware-notes">Hardware notes:</h2>
<ul>
<li>The GPS antenna needs a good view of the sky. I&rsquo;ve had good luck just placing the external antenna on a window sill.</li>
<li>If you are going to add the I2C Display module, the external GPS antenna is a must because the onboard antenna will be obstructed</li>
<li>You may not want to put the whole device on a window, it could overheat with the sun shining on it directly. Use the external antenna instead and keep the rest of it cool and safe.</li>
<li>If your antenna is going to be outdoors, don&rsquo;t forget GPS compatible lightning arrestors!</li>
<li>The ODROID boards have a lovely heatsink on them, so the header bundled with the GPS hat will not work. Use the extra tall or stacking header and make sure there is clearance between the board and the heatsink. I placed the stacking header on the ODROID, and some business cards between the GPS Hat and the heatsink, then tacked both sides of the header with my soldering iron to ensure a gap. YMMV.</li>
</ul>
<h2 id="configuration">Configuration:</h2>
<ul>
<li>Flash the Armbian image onto the MicroSD card from a Linux box using a USB adapter (using dd)</li>
<li>Boot the device. Note the messages about a reboot, wait 5min for the reboot to occur.
<ul>
<li>If the reboot does not occur:
<ul>
<li>Login with the default root password of &ldquo;1234&rdquo; and follow the prompts to change the password and add a user account. Then, shutdown the system.</li>
<li>Place the MicroSD card some other Linux box over a USB device and run e2fsck and then resize2fs on the 2nd partition (ex: <code>sudo e2fsck -f /dev/sdb2 &amp;&amp; sudo resize2fs /dev/sdb2</code> )</li>
<li>Remove the card from the USB adapter, and place back into the ODROID and power up.</li>
<li>The system should boot and the root filesystem should be almost the same size of the MicroSD card used.</li>
</ul></li>
</ul></li>
<li>Login with the default root password of &ldquo;1234&rdquo; and follow the prompts to change the password and add a user account (if not already done)</li>
<li>Backup the existing dtb file: <code>sudo cp /boot/dtb/meson8b_odroidc.dtb /boot/dtb/meson8b_odroidc.dtb.orig</code></li>
<li>Download the custom dtb file above, and then place on the system as <code>/boot/dtb/meson8b_odroidc.dtb</code></li>
<li>Edit the file <code>/etc/rc.local</code> and add the line <code>stty -F /dev/ttyS2 9600</code> before the line <code>exit 0</code></li>
<li>Reboot</li>
<li>Login with the new user account from now on (it&rsquo;s good practice). You can also login over SSH for easier cut and paste.</li>
<li>Create a new file <code>/etc/apt/preferences.d/testing_unstable</code> with the following contents:</li>
</ul>
<pre style="padding-left: 30px;">Package: *
Pin: release a=stable
Pin-Priority: 700
Package: *
Pin: release a=testing
Pin-Priority: 650
Package: *
Pin: release a=unstable
Pin-Priority: 600</pre>
<ul>
<li>Create a new file <code>/etc/apt/sources.list.d/testing_unstable.list</code> with the following contents:</li>
</ul>
<pre style="padding-left: 30px;">deb http://httpredir.debian.org/debian testing main contrib non-free
deb-src http://httpredir.debian.org/debian testing main contrib non-free
deb http://httpredir.debian.org/debian/ unstable main contrib non-free
deb-src http://httpredir.debian.org/debian/ unstable main contrib non-free</pre>
<ul>
<li>Pin the current kernel image (it works, and the one currently available from armbian did not for me at all, causing a kernel panic at boot. You can try now, if it fails just repeat up to this step) with the following command: <code>sudo apt-mark hold linux-image-odroidc1</code></li>
<li>Get the new package list and perform a security update: `sudo apt-get update &amp;&amp; sudo apt-get dist-upgrade -y`</li>
<li>Install chrony and the prerequisites for gpsd (we have to do it this way to not confuse the package manager when we pull the newer gpsd): <code>sudo apt-get install chrony python-gtk2 python-cairo pps-tools</code></li>
<li>Install gpsd from Debian Testing: <code>apt-get install gpsd gpsd-clients -t testing</code></li>
<li>Stop the gpsd service: <code>sudo service gpsd stop</code></li>
<li><p>Edit the <code>/etc/default/gpsd</code> file changing the following values:</p>
<ul>
<li><pre>USBAUTO="false"</pre></li>
<li><pre>DEVICES="/dev/ttyS2 /dev/pps0"</pre></li>
<li><pre>GPSD_OPTIONS="-n"</pre></li>
</ul></li>
<li><p>Test the 1PPS link from the gps reciever using the command <code>sudo ppstest /dev/pps0</code></p></li>
<li><p>Modify the <code>/etc/chrony/chrony.conf</code> file to contain the following:</p></li>
</ul>
<pre style="padding-left: 30px;">refclock SHM 0 refid GPS precision 1e-1 offset 0.280 delay 0.2
refclock SOCK /var/run/chrony.pps0.sock refid PPS
keyfile /etc/chrony/chrony.keys
commandkey 1
driftfile /var/lib/chrony/chrony.drift
log tracking measurements statistics
logdir /var/log/chrony
maxupdateskew 100.0
dumponexit
dumpdir /var/lib/chrony
local stratum 10
allow 10/8
allow 192.168/16
allow 172.16/12
logchange 0.5
rtconutc</pre>
<ul>
<li>Restart chrony: <code>sudo service chrony restart</code></li>
<li>Next, we are going to pre-load the latest almanac into the GPS module so it will lock on MUCH quicker (for details, see the <a href="https://github.com/f5eng/mt3339-utils">github repo for the tools</a>). Run the following commands:</li>
</ul>
<pre style="padding-left: 30px;">wget https://github.com/f5eng/mt3339-utils/archive/gps.zip
unzip gps.zip
cd mt3339-utils-gps
eporetrieve MTK14.EPO /tmp/MTK14.EPO
epoinfo /tmp/MTK14.EPO
(You should get some formatted output and not an error)
epoloader @epoloader.conf /tmp/MTK14.EPO /dev/ttyS2</pre>
<ul>
<li>Edit the gpsd init script located at <code>/etc/init.d/gpsd</code>, and add the word &#8216;chrony&rsquo; to the Should-Start line.</li>
<li>Start the gpsd service</li>
<li>Check the gps status using gpsmon, it should lock within a few moments and show a time and the PPS block should have numbers. Type <code>quit</code> to exit.</li>
<li>Now you can check the chrony service to see if it&rsquo;s getting GPS information using <code>chronyc sources</code></li>
<li>That&rsquo;s it! You can adjust the allow lines in chrony.conf and deploy. Don&rsquo;t forget to give the device a static IP as well.</li>
</ul>
Oculus Rift: My Thoughtshttps://www.gigofham.com/archives/68
Sun, 03 Apr 2016 19:53:01 +0000https://www.gigofham.com/archives/68
<p>I&rsquo;ve had the Oculus Rift setup and working for a few days now, and had several friends over to get a variety of opinions, and..well..we&rsquo;re slightly disappointed.</p>
<h2 id="ergonomics">Ergonomics</h2>
<p>This is the one place where there is very little improvement since the DK2 and in some cases it&rsquo;s backwards. Like me, most of my friends wear glasses and that&rsquo;s the biggest problem. Thin framed wire glasses or metal frames are fine but if you have thicker framed glasses like those from <a href="https://www.warbyparker.com/">Warby Parker</a> just don&rsquo;t fit well. Even with my wire framed glasses, the lenses from the glasses are really close to (or touching) the Fresnel lenses in the Rift. This also causes problems with alignment and smudging, so much so that I now keep a box of eye glass cleaners by the Rift as they are basically necessary. The Rift also really, really wants to pull into your face which can also make glasses really uncomfortable if they don&rsquo;t have a lot of give by pressing in on your noses pieces (and the trend right now in glasses are that they are fixed part of the frame and thus just dig in) or driving the corners of the frame into the side of your head. I&rsquo;ve also found that the nose piece can be really uncomfortable if you have a large schnoz like I do.</p>
<p>As I said in my initial thoughts, this is a place where I&rsquo;m hoping that <a href="http://vr-lens-lab.com/">VR Lens Lab</a> and <a href="http://vrcover.com/">VR Cover</a> will help. More padding will make everything more comfortable, and not needing to wear glasses even more so. We&rsquo;ll see what happens there.</p>
<h2 id="optics-and-displays">Optics and Displays</h2>
<p>There is a lot of improvement here over the DK2, and it&rsquo;s light years better than the DK1. I&rsquo;ve read a lot of reviews of people complaining about the &ldquo;Screen Door Effect&rdquo; which was a real problem with the DK1, but was largely mitigated but a higher DPI display in the DK2. The custom displays here with the non-square pixels are a further step to address this, but comes with interesting side effects: diagonal lines can be strange. Anti-aliasing is your friend here, as are large chunky fonts (hint hint EVE: Valkyrie). ELITE: Dangerous did a great job here with their subtle font changes for VR, and games that were re-factored to work with Gear VR and then ported back to the PC (like Radial-G and Darknet) looks spectacular since they have so much more GPU to work with. But the &ldquo;Big Titles&rdquo; are having problems, which I find interesting.</p>
<p>The other interesting thing I have discovered is that overdriving these custom AMOLED displays to run at 90Hz (or whatever) means they never go &ldquo;black&rdquo;. Black screens have a very pronounced red almost backlight feel. I worry what that will do the longevitity of the displays.</p>
<p>I&rsquo;m also finding that there is a lot more (for lack of better word) starbursting than with the DK2, especially with white text on a black background. It&rsquo;s obviously an effect of the new lens design, but can be annoying.</p>
<h2 id="fit-and-finish">Fit and Finish</h2>
<p>The materials used in the headset are interesting to say the least. The adjustable bands being kinda stretchy are a good thing now, but we&rsquo;ll see how the longevity of those materials are here in Central Texas. Also, it&rsquo;s next to impossible to keep the fabric on the outside clean of pet hair and fingerprints. Sigh. The other side of this equation is that the headset is remarkably light, something that I never found to be a problem, but I also move around large heavy objects as a pastime so YMMV.</p>
<h2 id="the-software">The Software</h2>
<p>This has been the biggest disappointment. Many people say Steam sucks and that they can do a better job (see Uplay, Origin), and most of the time they fall flat on their face. Oculus Desktop is no exception. There are so many things that make me angry. From the &ldquo;YOU SHOULD BUY A NEW COMPUTER&rdquo; billboard, the requirement for a credit card when creating the account (that&rsquo;s going to cause all sorts of problems around Christmas), and the inability to add games you already own, it&rsquo;s just a large pile of disappointment. On top of this, the lack of Parental controls I can see as a problem for my friends who have kids. I hate the whole idea of a card on file and a 4 digit PIN to buy stuff. I hate that you HAVE to buy things from their store for it to show up in the launcher.</p>
<p>Now, I have got third party titles to work but it&rsquo;s tricky. Project CARS is a great example, I couldn&rsquo;t get it to work at first because I was launching the game without having the headset on. Apparently if the headset is asleep then pcars takes that as a sign that there is no headset. Normally not a problem, especially if you launch from the Oculus Desktop, but it is a problem if you are launching from any other method since you can&rsquo;t see that from the Oculus Desktop with the headset on.</p>
<p>There have been a lot of other complaints about where the games get installed (unchangeable default location), but I got over that years ago when I just gave into the ways of the Dark Side of the Force and have one big C drive and that&rsquo;s it. Doesn&rsquo;t really bother me, but I can see why it bothers other people. In the age of SSDs, Window&rsquo;s continued lack of an expandable storage manager (ala LVM on Linux) in the desktop product is kinda unforgivable.</p>
<h2 id="misc-shenanagans">Misc Shenanagans</h2>
<p>What&rsquo;s the point of the Oculus Controller? I used it during setup because I had to, but once I needed the XBone controller to go &ldquo;back&rdquo; in a menu. At which point it went back into the box and hasn&rsquo;t come out, and I doubt it will. Then there is the apparent AMD hate. Being a bit of an AMD fanboy, the every present &ldquo;non-compliant&rdquo; billboard is annoying, and it looks like no currently available AMD processor will pass their HCL. That&rsquo;s disappointing as well. My machine handles everything we have thrown at it with flying colors, but no. Buy a new one.</p>
<p>The Terms of Service (which you get to read in VR because that&rsquo;s a great idea) is exactly what I would expect from a Facebook company. &ldquo;We collect everything about what you are doing&rdquo; is surprising to some folks, I don&rsquo;t understand why. At least we don&rsquo;t have to buy everything in FB coins.</p>
<p>The head tracking situation seems to be less improved since DK2, but I&rsquo;m betting that&rsquo;s mostly because of the titles I&rsquo;ve been playing . Darknet, for example, seems to recenter on every level change. This means that when you look up and left to select a node, if you don&rsquo;t snap back to center right as you push the button, up and left becomes the new forward. Technically, I get it and they do support a recenter button, but I was really hoping for better.</p>
<h2 id="the-games">The Games</h2>
<p>I&rsquo;ve only downloaded a handful of games, and don&rsquo;t really plan to get a bunch more in this walled garden. The titles from &ldquo;Companies you know&rdquo; are exactly what you would expect: First. Person. Shooters. Only because this is VR and we don&rsquo;t want everyone hurling on their Magic Lantern, they are all 3rd person perspective. I&rsquo;m not really inspired by any of them right now. The Space games and Simulators work great. The stuff that thinks about &ldquo;What can we do in VR&rdquo; has been cool (I&rsquo;ve already lost many hours to puzzle solving in Darknet). The predictability of the major studio titles is expected and disappointing. Everyone says PC gaming is dying, and then I point them at interesting little indie games and suddenly it&rsquo;s a whole other conversation. But I&rsquo;ve been done with stuff coming out of the big studios for years because it keeps being a shitshow. I hoped VR would wake them up, but that doesn&rsquo;t seem to be the case.</p>
<h2 id="overall-and-going-forward">Overall and Going Forward</h2>
<p>I&rsquo;m not upset that I have an Oculus Rift, but I feel like if you have to buy one that this isn&rsquo;t the product to buy. After using a Vive I knew I was buying a Vive, but I also wasn&rsquo;t going to take a perfectly good &ldquo;free&rdquo; (I bought a DK1 via Kickstarter, and then bought a DK2 later, but Kickstarting at the DK1 level got me this rift for no additional monetary outlay) and put it on ebay. I am disappointed that this product is what it is. I really feel like they should have taken the Crystal Cove and shipped it 6mo later. If this product came out a year ago, it would have been a no brainer for early adopters to buy. With the Vive coming out in a couple of days, that feels like a complete VR experience and a better ecosystem. But I&rsquo;ll hopefully have more on that in a week or two, once mine arrives.</p>
Oculus Rift: Initial Impressionshttps://www.gigofham.com/archives/66
Wed, 30 Mar 2016 06:14:19 +0000https://www.gigofham.com/archives/66
<p>This isn&rsquo;t a full review, I&rsquo;ve only played with the Rift briefly tonight and wanted to get some thoughts down before heading to bed for an early morning. I&rsquo;m planning on a much more complete review later, and a complete review of the Vive I should be getting in a couple of weeks, and finally a compare and contrast between the Vive and the Rift. In the mean time, here are the initial thoughts:</p>
<ul>
<li>Glasses are still a problem. The alignment issue is better than it was with the DK2, but getting in and out of the Rift without massive smudge marks on my glasses and/or my glasses getting stuck in the Rift is next to impossible. This is disappointing since the Vive knocked this out of the park when I tried it at PAX South.</li>
<li>I haven&rsquo;t yet checked if my glasses are hitting the lenses in the Rift like they did in all previous versions, but I&rsquo;m betting they are. Here is hoping the <a href="http://vr-lens-lab.com/">VR Lens Lab</a> guys get off the ground soon.</li>
<li>The human interface (foam) comes off really easily, another place where <a href="http://vrcover.com/">VR Cover</a> will come to the rescue especially in a demo environment.</li>
<li>30 games at launch: check. Only one is free. That&rsquo;s sad.</li>
<li>The in VR store/launcher is very basic. A lot of the functionality (like getting your included copy of EVE Valkyrie) has to be done on the desktop version. Not surprising, but not very clear in terms of directions either.</li>
<li>Credit Card required at Install. Boo.</li>
<li>My machine supposedly doesn&rsquo;t meet the Rift&rsquo;s requirements*.There is a blue bar on the dektop store app all the time telling me this. There is also a massive billboard sized box just above your normal viewing angle in the VR store telling you this also. There does not seem to be a way to make this go away in VR. This is very disappointing.</li>
<li>The store is a walled garden. Think iTunes for the Rift. It&rsquo;s the driver, downloader, launcher, etc. all rolled into one giant app. I can&rsquo;t wait for something to go wrong.</li>
<li>I own several titles in the Rift Store through other sources (mostly Steam), and it has no way of knowing that I own them already. I also don&rsquo;t currently have them installed on my Rift machine either.</li>
<li>I&rsquo;ve allowed non-walled garden apps, going to install pcars from steam and see what happens this weekend. I really hope it &ldquo;Just Works&rdquo; but I don&rsquo;t expect that to be the case since there is no runtime to download anymore and it is not at all clear how to add 3rd party things to the launcher.</li>
<li>This thing is going to be impossible to keep clean. Especially the box.</li>
<li>I&rsquo;m impressed how much weight they shaved off from the DK2</li>
<li>The headphones are OK. Not great, but OK. I&rsquo;m not surprised unfortunately.</li>
<li>The focuser is a welcome improvement.</li>
<li>Adjusting the straps to fit on my large mellon of a head was much more challenging than the DKs, and I expect it will be a problem for folks with long hair still with all that velcro.</li>
<li>Still no 1.0 or later SDK for developers on the site, which is disappointing.</li>
<li>The first thing you get in VR: a demo scene that looks like it&rsquo;s straight out of SNES Starfox. I&rsquo;m talking maybe 1000 polygons on the screen. The second one is better, but WTH?</li>
<li>Having to use the Rift controller for some things and the XBone controller for others is confusing since neither are easy to find. I&rsquo;m spoiled by the Vive controller for sure.</li>
<li>Why are there two wildly different controllers? Was is that hard to map the Gear VR button and D-PAD to the XBone Controller?</li>
</ul>
<p>More to come after I get more time to play and figure out how to review. Once the Vive shows up, I&rsquo;m planning on taking a chunk of time in one of the conference rooms/meeting spaces at TechShop Austin and hosting a &ldquo;come by and check them out&rdquo; demo day. I&rsquo;ll make the announcement far and wide when I get everything setup..</p>
<p>In the mean time, I need to hit the hay.</p>
<h4 id="system-specs">* System Specs</h4>
<p>I have a dedicated machine for the Rift (I have a lot of hardware around). Most of my stuff is AMD, the Oculus config checker tool is complaining about the CPU and the USB. The USB is especially hysterical to me since it&rsquo;s AMD USB 3.0 (supported) and the suggested inateck USB 3 controller. Still gives a warning on that. The CPU is listed as insufficient. Here are the machine components:</p>
<ul>
<li><a href="http://www.cpu-world.com/CPUs/Bulldozer/AMD-Athlon%20X4%20760K%20-%20AD760KWOA44HL%20-%20AD760KWOHLBOX.html">AMD Athlon X4 760K processor</a></li>
<li>32GB of DDR3-1600MHz RAM (Patriot if I recall)</li>
<li>OCZ Trion 100 240GB SSD (attached to onboard SATA controller)</li>
<li>5ext+2int Inateck USB 3 card (Fresco Logic FL1100 based)</li>
<li>XFX Radeon R9 390 video card (8GB, not overclocked)</li>
<li>750W Thermaltake 80+Gold PSU</li>
<li>ASUS A88XM-PLUS Motherboard</li>
</ul>
<p>This system gives a middle-of-the green bar result in the Steam VR test.</p>
My new ARM goal: hostinghttps://www.gigofham.com/archives/64
Thu, 24 Mar 2016 22:19:48 +0000https://www.gigofham.com/archives/64
<p>I&rsquo;ve been doing a lot of work on various ARM things. A lot of it has been in support of making community builds of Chef for other folks, but I have a new goal: providing ARM nodes to the Internet at large as a hosting option.</p>
<p>I&rsquo;m not going to go into a lot of details here yet, as I&rsquo;m saving a lot of that content for my hosting company&rsquo;s blog. I&rsquo;ll announce it here when it goes live. There are a few things in the way, but A lot of the deep dive technical stuff will be posted here. So, now that I&rsquo;ve gotten that out of the way let&rsquo;s get into the usual ARM update:</p>
<h2 id="rk3368-8211-it-s-been-fun">RK3368 &#8211; It&rsquo;s been fun</h2>
<p>First the bad news: I&rsquo;m giving up on the RK3368 as an ARMv8 platform for now. Part of this is the kernel mess (but things are looking better for 4.6), but most of it is availability of hardware (low), the (relative) high cost of the hardware, the focus of Android on this SOC, and the common implementation of the serial port connected to the MMC/SD/TF slot. Finding RK3368 hardware is somewhat difficult, and when I do it&rsquo;s always an Android Media Player/STB. Getting these to run anything else is..really hard. Rockchip doesn&rsquo;t support upstream das u-boot, and while the #linux-rockchip community on freenode is making strides, they are focused on the much more available ARMv7 variants instead of the ARMv8 RK3368. It&rsquo;s understandable, and I&rsquo;m not at all upset. The reality of the situation is that the RK3368 based systems I can find are much more expensive than other ARMv8 solutions. That then just leaves the Serial Port on MMC/SD/TF slot issue, which is a real deal breaker for me. In a 100% remote environment, OOB console is required and for most things that means IPMI or Serial. IPMI is out on most ARM devices so that means serial. USB isn&rsquo;t great for primary storage (for a lot of reasons), and having the storage card share pins with the serial console just means it&rsquo;s a disaster waiting to happen. I had high hopes for the <a href="http://www.geekbox.tv/">Geekbox</a>, but even that turned out to be a real disappointment. The focus for this SOC is obviously Android, and that&rsquo;s fine, but it doesn&rsquo;t suit my needs at all.</p>
<h3 id="on-the-geekbox-http-www-geekbox-tv">On the <a href="http://www.geekbox.tv/">GeekBox</a></h3>
<p>I don&rsquo;t want to rag on them too hard, it&rsquo;s a lovely piece of kit. But it suffers from some shortcomings. Stock and availability of components being one of them. I&rsquo;ve placed several orders for them, and they never ship on the advertised time frame. The folks at Geek Buying are very nice, and very transparent about supply issues, but it&rsquo;s still been rather frustrating. Then there is the odd selection of accessories. The docking station is mostly a USB hub and easier exposure of the edge connector functions, but there is no case for it. The CPU fan accessory does nothing and doesn&rsquo;t have a reasonable mount even if you want to use it (you do, I&rsquo;ve melted the case by accident on one of mine doing compiles). The lack of case when the board is in the docking station caused me to loose another board due to static discharge. Then there is the software: android runs fine. No major issues there. The Linux side however, is a bit of a mess. It&rsquo;s a customized version of Ubuntu 14.04&rsquo;s unsupported arm64 port. Most vendors seem to be taking this route, and I don&rsquo;t understand why. The real problem: the video is not stable. The signal is solid (it&rsquo;s digital after all), but the picture has waves going up and down the screen on every monitor I&rsquo;ve tried. Android is fine, it has something to do with the Linux kernel they provide. Makes it very hard to even get the DHCP IP address and then drop out to a console. In fact, a FB console is not even supported. X or nothing. I chose nothing.</p>
<p>Again, this isn&rsquo;t a bad device, just doesn&rsquo;t suit my needs.</p>
<h2 id="the-odroid-c2-http-www-hardkernel-com-main-products-prdt-info-php-g-code-g145457216438">The <a href="http://www.hardkernel.com/main/products/prdt_info.php?g_code=G145457216438">ODROID-C2</a></h2>
<p>This device has been a breath of fresh air. Also ARMv8 (based on an amlogic 905S SoC) but only 4 cores (compared to the RK3368&rsquo;s 8 cores). No onboard storage, you have to add a MicroSD/TF card. The best part: broad community support. This SoC just landed in 4.6 and the makers of the board (<a href="http://www.hardkernel.com/main/main.php">HardKernel</a> out of Republic of Korea) are working with Amlogic to get full support upstream in mainline. Right now, mine are still running their heavily patched 3.14 kernel &#8211; but the source and configs are readily available and adding support for things like LXC was very simple. I&rsquo;m running an &ldquo;odrobian&rdquo; install, which is a minimal Debain Jessie root on an ext4 filesystem and some kernel config tweaks for Docker support. I&rsquo;ve rolled my own kernel to add the rest of the configuration options needed for LXC and I&rsquo;m running that for my build and test nodes.</p>
<p>I also just deployed four of these into production: two for recursive name servers, and two for authoritative name servers. They are cheap ($40 from <a href="http://www.hardkernel.com/main/main.php">HardKernel</a>, and there are worldwide resellers) and they are case compatible with RPi B rev 2. They also appear to sip power. I picked up a <a href="https://www.adafruit.com/products/2690">USB Meter from Adafruit</a>, and I can&rsquo;t get them above 0.3A at 5V for most of my testing. Now, I don&rsquo;t entirely believe those numbers (this device has a very low sample rate), so I&rsquo;m going to do some more testing with a NI VirtualBench at TechShop this weekend to see if I can learn more. I&rsquo;ll post more details on that once I have them. For now, I&rsquo;m being ultra conservative and deploying with a <a href="http://smile.amazon.com/dp/B011LSGMT2">PSU that can support six devices up to 2A@5v each</a>.</p>
<p>So far, these boards are great. Biggest thing to be aware of: when you buy one, get their power cord. It&rsquo;s a 2.5mm barrel connector (HardKernel makes and sells <a href="http://www.hardkernel.com/main/products/prdt_info.php?g_code=G138960965859">pigtails</a> and <a href="http://www.hardkernel.com/main/products/prdt_info.php?g_code=G141637559827">USB adapters</a>). Those connectors are apparently common everywhere but here.</p>
<h3 id="on-power">On Power</h3>
<p>The crappy cell phone chargers we use for MicroUSB power everywhere are usually not enough for most of these devices (I&rsquo;ve killed more than a couple RPi boards this way), so get a good solid power supply for more than $3. The ones sold by <a href="https://www.sparkfun.com/categories/28">SparkFun</a> and <a href="https://www.adafruit.com/category/44">Adafruit</a> are well tested and good if you need basic MicroUSB power, they also offer good all around 5V supplies for general use. If you have several devices, <a href="http://www.ikea.com/us/en/catalog/products/10291881/">IKEA makes an inexpensive 3 port USB charge</a>r that I&rsquo;ve been using without issue, or the <a href="http://smile.amazon.com/dp/B011LSGMT2">Anear power adapter</a> I&rsquo;m using in a few places with up to six devices pulling 2.4A@5v each seems to be working very well also.</p>
<h2 id="pcdunio3-nano-http-www-linksprite-com-linksprite-pcduino3-nano"><a href="http://www.linksprite.com/linksprite-pcduino3-nano/">PcDunio3 Nano</a></h2>
<p>I&rsquo;ve recently pulled mine out of mothballs for a few reasons:</p>
<ol>
<li>They run a mainline kernel now, so they are great for a serial console server which cheap USB-Serial adapters</li>
<li>I need an inexpensive but reasonably accurate NTP server fed from GPS</li>
</ol>
<p>These are descent little boards, with a Dual Core ARMv7 Allwinner A20 proc and 1GB of RAM. They also have onboard eMMC, but the TF/MicroSD is better supported. They also have native 1Gb Ethernet (instead of a USB interface like the RPi products).</p>
<p><a href="http://armbian.com/">The Armbian project</a> supports these (along with most commonly available Allwinner based boards), with a descent Jessie rootfs and either a recompiled vendor kernel or a vanilla upstream kernel. I&rsquo;m using the vanilla for my console server, and the vendor kernel for the GPS stuff for now. I want to move to the vanilla kernel for that as well, but there are Device Tree issues to work out.</p>
<p>These are also neat because they have Arduino compatible headers, but at a different voltage (3.3v vs the normal Ardunio of 5v). The good news is that there is a <a href="http://store.cutedigi.com/t-board-to-bridge-arduino-shield-to-pcduino-v1-with-level-shifter/">level conversion shield</a>, the bad news is that it doesn&rsquo;t quite fit on the nano (the Ethernet jack is in the way), so I&rsquo;ve needed to get some header extensions to plug it in completely. Once I get the headers extensions, I plan on stacking an <a href="http://adafru.it/1272">Adafruit GPS Logger Shield</a> w/ Module and then a <a href="http://adafru.it/715">Adafruit I2C Controlled Keypad and display</a> shield on top. I&rsquo;ve already tested that the GPS module is compatible with gpsd, and with a vanilla kernel I should be able to get the 1PPS off the shield and into gpsd and ntpd for an inexpensive Stratum 1 time source. I&rsquo;ll update here will the full build out and configuration once I&rsquo;ve got it all/mostly working.</p>
<h2 id="pine64">Pine64</h2>
<p>I don&rsquo;t have any yet, but I&rsquo;m excited. Quad Core ARMv8, 2GB RAM, under $30. I ordered 22 of these through their Kickstarter. I hope to have them by the end of the month, and they will be the basis for Gen 1 of my hosting product. I&rsquo;ll be talking a lot more about these once they arrive and I start testing and design for support hardware.</p>
<h2 id="huskyboard-lemaker-cello">Huskyboard / LeMaker Cello</h2>
<p>I&rsquo;m really hoping that 2016 is the year of AMD&rsquo;s comeback for many reasons. Either way, the A series Opteron has always caught my eye. The <a href="http://www.96boards.org/products/ee/huskyboard/">Huskyboard</a> is still &ldquo;Soon&rdquo; but the <a href="http://www.lenovator.com/product/103.html">LeMaker Cello</a> is shipping in the next couple months, looks to be nearly identical specs wise, and comes in at $299. I&rsquo;ve ordered two for testing and might use one to be my new mail server since I can add 2 SSDs over SATA to them. Expect more on these in the future as well. I just wish either of them shipped with headers for the second onboard gigabit NIC.</p>
<h2 id="on-sd-cards">On SD Cards</h2>
<p>Typically, I&rsquo;ve been buying the cheapest 16G SD cards I can get my hands on from Fry&rsquo;s. These are usually name brand (PNY, Toshiba, Patriot, etc) and they have been &ldquo;reasonable&rdquo;. With the goal of making a commercial hosting product with these, &ldquo;reasonable&rdquo; probably won&rsquo;t fly with paying customers. So, I did some research and everything was pointing in one direction: Samsung EVO. So, I went back to Fry&rsquo;s and run some tests with iozone3. I&rsquo;m including the results below:</p>
<ul>
<li>Toshiba 16GB on PcDuino 3 Nano Armbian 5.0
<ul>
<li><a href="http://edolnx-public.objects-us-east-1.dream.io/arm-sd-performance/a20-toshiba16.xls">iozone3 xls</a> (was done over SSH, may need to redo)</li>
<li><a href="http://edolnx-public.objects-us-east-1.dream.io/arm-sd-performance/a20-toshiba16.log">iozone3 log</a> (was done over SSH, may need to redo)</li>
</ul></li>
<li>Samsung EVO 64GB on PcDuino 3 Nano Armbian 5.0
<ul>
<li>missing files, will re-run and update once I get another EVO 64GB</li>
</ul></li>
<li>Samsung EVO+ 32GB on PcDuino 3 Nano Armbian 5.0
<ul>
<li><a href="http://edolnx-public.objects-us-east-1.dream.io/arm-sd-performance/a20-evoplus32.xls">iozone3 xls</a></li>
<li><a href="http://edolnx-public.objects-us-east-1.dream.io/arm-sd-performance/a20-evoplus32.log">iozone3 log</a></li>
</ul></li>
<li>Toshiba 16GB on ODROIC-C2 odrobian Jessie (kernel3.14.29-14-odrobian+)
<ul>
<li><a href="http://edolnx-public.objects-us-east-1.dream.io/arm-sd-performance/905s-toshiba16.xls">iozone3 xls</a></li>
<li><a href="http://edolnx-public.objects-us-east-1.dream.io/arm-sd-performance/905s-toshiba16.log">iozone3 log</a></li>
</ul></li>
<li>Samsung EVO 64GB on ODROIC-C2 odrobian Jessie (kernel3.14.29-14-odrobian+)
<ul>
<li><a href="http://edolnx-public.objects-us-east-1.dream.io/arm-sd-performance/905s-evo64.xls">iozone3 xls</a></li>
<li><a href="http://edolnx-public.objects-us-east-1.dream.io/arm-sd-performance/905s-evo64.log">iozone3 log</a></li>
</ul></li>
<li>Samsung EVO+ 32GB on ODROIC-C2 odrobian Jessie (kernel3.14.29-14-odrobian+)
<ul>
<li><a href="http://edolnx-public.objects-us-east-1.dream.io/arm-sd-performance/905s-evoplus32.xls">iozone3 xls</a></li>
<li><a href="http://edolnx-public.objects-us-east-1.dream.io/arm-sd-performance/905s-evoplus32.log">iozone3 log</a></li>
</ul></li>
</ul>
<p>All of the tests were run on the device while connected over a serial console, using the default EXT4 filesystem on the SD card directly. No other activity was being run on these devices at the time, but they were connected to a local LAN with (no WiFi). Here is the exact iozone3 command used:</p>
<pre style="padding-left: 30px;">iozone -az -i 0 -i 1 -e -R -+T -b ~/output.xls | tee ~/output.log</pre>
<p>Power wise, it looks like the Samsung EVO is the big winner. It appeared to consume less power than the other cards. Again, my power measurements are inaccurate and I hope to address that this weekend. Beyond that, the Toshiba is the clear looser but there doesn&rsquo;t seem to be much difference between the EVO and EVO+ on these boards (probably due to limitations of the MMC interface of the SOC). So, I&rsquo;m sticking with the EVO cards when I care about performance. I also don&rsquo;t have a 32GB EVO card or a 32GB Toshiba to do a direct 1:1 comparison. I hope to fix that before I get the Pine64 boards. The price/performance curve definitely has the EVO in it&rsquo;s favor, where the bulk of the 64GB MicroSD cards on Amazon are (as of 24MAR2016) around $15, the <a href="http://smile.amazon.com/dp/B00IVPU7AO">EVO is $20</a> and the <a href="http://smile.amazon.com/dp/B01273JZMG">EVO+ is $25</a>. These tests show that the EVO+ doesn&rsquo;t appear to be worth the extra 20% price increase for these devices.</p>
<h2 id="phew">Phew</h2>
<p>I think that&rsquo;s a good update for now, I&rsquo;ll post more as I have it!</p>