{"id":481,"date":"2022-03-12T09:55:23","date_gmt":"2022-03-12T09:55:23","guid":{"rendered":"https:\/\/t81t.dev\/?p=481"},"modified":"2026-01-30T22:20:23","modified_gmt":"2026-01-30T22:20:23","slug":"17-the-raspberry-pi-400","status":"publish","type":"post","link":"https:\/\/mrgadget.nexus\/t81t-dev\/2022\/03\/12\/17-the-raspberry-pi-400\/","title":{"rendered":"#17: The Raspberry Pi 400"},"content":{"rendered":"\n<p>I&#8217;ve long been fascinated by the Raspberry Pi series, and have a cased though admittedly barely used original &#8220;Model B&#8221; to prove it.<\/p>\n\n\n\n<p>A few days ago I had the idea of a &#8220;400&#8221; being my new Amiga development machine after seeing some interesting things about it recently.<\/p>\n\n\n\n<p>This post documents what I&#8217;ve done so far.<\/p>\n\n\n\n<p>The micro SD included with the bundle I received (computer, mouse, power supply, etc) right out of the box showed a bunch of errors as a newer version of the OS is out, the supplied version &#8220;buster&#8221; moving from &#8220;stable&#8221; to &#8220;oldstable&#8221;.<\/p>\n\n\n\n<p>This highlights a problem with Raspberry Pi OS (previously called Raspbian). The upgrade path is technically wipe and start again whereas many other systems have a method of doing a &#8220;distribution upgrade&#8221;. For the greatest &#8220;run&#8221; the best thing to do is upgrade rather than allow the OS to &#8220;switch&#8221; to &#8220;oldstable&#8221;.<\/p>\n\n\n\n<p>For a variety of reasons I didn&#8217;t go with the &#8220;Raspberry Pi Imager&#8221; &#8211; I did things manually with my Linux based laptop.<\/p>\n\n\n\n<p>OS images can be downloaded from the following page:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.raspberrypi.com\/software\/operating-systems\/\">https:\/\/www.raspberrypi.com\/software\/operating-systems\/<\/a><\/p>\n\n\n\n<p>I chose the 32-bit &#8220;Raspberry Pi OS with desktop and recommended software&#8221; option. At the time of writing this download as a zip file called 2022-01-28-raspios-bullseye-armhf-full.zip and containing an image 2022-01-28-raspios-bullseye-armhf-full.img inside.<\/p>\n\n\n\n<p>Next up was finding the &#8220;block device&#8221; to use. This can be found by typing in &#8220;lsblk&#8221;, inserting the SD card (in my case the micro SD card into the supplied Raspberry branded adapter and then into the laptop&#8217;s built-in SD reader slot) and typing the &#8220;lsblk&#8221; command again. In my case, this showed &#8220;mmcblk0&#8221;.<\/p>\n\n\n\n<p>Now I just needed to extract and write the image:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ncd ~\/Downloads\n\nunzip 2022-01-28-raspios-bullseye-armhf-full.zip\n\nsudo dd if=2022-01-28-raspios-bullseye-armhf-full.img \\\n  of=\/dev\/mmcblk0 \\\n  status=progress\n<\/pre><\/div>\n\n\n<p>This process will take a long time. Patience is a virtue in getting this set up.<\/p>\n\n\n\n<p>When finished the SD can be popped back into the Pi 400 and it can be booted.<\/p>\n\n\n\n<p>There is an initial setup process and for me not entirely successful but eventually it gave me the Raspberry Pi OS desktop, with a convenient terminal icon in the taskbar at the top of the screen.<\/p>\n\n\n\n<p>I quickly discovered in the terminal window not all the keys typed the correct characters. This was easily fixed by using the command &#8220;raspi-config&#8221;, going to the Localisation Options, and changing the keyboard to Generic 101-key, English (UK), default for keyboard layout, no compose key and don&#8217;t use Ctrl+Alt+Backspace to terminate X.<\/p>\n\n\n\n<p>As mentioned, for me, the software update process didn&#8217;t complete successfully so to start with I set that off manually.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nsudo apt update\n\nsudo apt upgrade -y\n<\/pre><\/div>\n\n\n<p>Now to grab FS-UAE source code. We&#8217;ll set up a directory for native code (useful later) and pull the source down into it.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nmkdir ~\/prg\n\ncd ~\/prg\n\ngit clone https:\/\/github.com\/FrodeSolheim\/fs-uae.git\n\ncd fs-uae\n<\/pre><\/div>\n\n\n<p>I then reviewed the documentation for compiling FS-UAE at the link below:<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/FrodeSolheim\/fs-uae\/blob\/master\/docs\/compiling.md\">https:\/\/github.com\/FrodeSolheim\/fs-uae\/blob\/master\/docs\/compiling.md<\/a><\/p>\n\n\n\n<p>Raspberry Pi OS is based on Debian (the old name Raspbian was derived from this) so I figured I could use those notes as a guide. I have since found another guide for Raspberry Pi 4, but I didn&#8217;t see that at the time, so I&#8217;m sticking with this for now.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nsudo apt install -y autoconf automake build-essential gettext \\\n  libfreetype6-dev libglew-dev libglib2.0-dev libjpeg-dev \\\n  libmpeg2-4-dev libopenal-dev libpng-dev libsdl2-dev \\\n  libsdl2-ttf-dev libtool libxi-dev libxtst-dev zip zlib1g-dev\n\n.\/bootstrap\n\n.\/configure\n\nmake\n<\/pre><\/div>\n\n\n<p>The first three lines didn&#8217;t take that long but the &#8220;make&#8221; command was the biggest time sink. Approximately 20 minutes. Perfect time to make a nice cup of tea&#8230; and drink it.<\/p>\n\n\n\n<p>Then came the moment of truth&#8230;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n.\/fs-uae\n<\/pre><\/div>\n\n\n<p>It worked! It looked a bit different to the FS-UAE I&#8217;ve used to date, but it worked, slowly bringing up the &#8220;AROS&#8221; boot screen typical of several Amiga emulators when they don&#8217;t have an official Kickstart ROM available.<\/p>\n\n\n\n<p>On the Pi 400 keyboard, Fn+F2 brings up the FS-UAE &#8220;F12 menu&#8221; and as per usual you can arrow up to an &#8216;X&#8217; icon and hit enter to quit the emulator.<\/p>\n\n\n\n<p>This first run will create a lot of the needed directories in an &#8220;FS-UAE&#8221; folder so the test run is actually quite useful. In previous (pre-built) versions this folder lived in the &#8220;Documents&#8221; folder, but this self built version the software created the folder in the user&#8217;s $HOME directory. Interesting, we&#8217;ll need to take that into account.<\/p>\n\n\n\n<p>That was my initial session to bring a &#8220;known&#8221; Amiga emulator onto my Raspberry Pi 400.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve long been fascinated by the Raspberry Pi series, and have a cased though admittedly barely used original &#8220;Model B&#8221; to prove it. A few days ago I had the idea of a &#8220;400&#8221; being my new Amiga development machine<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","footnotes":""},"categories":[2],"tags":[],"class_list":["post-481","post","type-post","status-publish","format-standard","hentry","category-amiga"],"_links":{"self":[{"href":"https:\/\/mrgadget.nexus\/t81t-dev\/wp-json\/wp\/v2\/posts\/481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrgadget.nexus\/t81t-dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mrgadget.nexus\/t81t-dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mrgadget.nexus\/t81t-dev\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mrgadget.nexus\/t81t-dev\/wp-json\/wp\/v2\/comments?post=481"}],"version-history":[{"count":1,"href":"https:\/\/mrgadget.nexus\/t81t-dev\/wp-json\/wp\/v2\/posts\/481\/revisions"}],"predecessor-version":[{"id":574,"href":"https:\/\/mrgadget.nexus\/t81t-dev\/wp-json\/wp\/v2\/posts\/481\/revisions\/574"}],"wp:attachment":[{"href":"https:\/\/mrgadget.nexus\/t81t-dev\/wp-json\/wp\/v2\/media?parent=481"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mrgadget.nexus\/t81t-dev\/wp-json\/wp\/v2\/categories?post=481"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mrgadget.nexus\/t81t-dev\/wp-json\/wp\/v2\/tags?post=481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}