{"id":2204,"date":"2023-08-12T01:13:16","date_gmt":"2023-08-12T01:13:16","guid":{"rendered":"https:\/\/bitcows.com\/?p=2204"},"modified":"2025-12-23T21:41:04","modified_gmt":"2025-12-23T21:41:04","slug":"create-a-2-8-or-3-5-inch-macintosh-with-a-raspberry-pi","status":"publish","type":"post","link":"https:\/\/bitcows.com\/?p=2204","title":{"rendered":"Create a 2.8 or 3.5 inch Macintosh with a Raspberry Pi"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2238\" src=\"https:\/\/bitcows.com\/wp-content\/uploads\/2023\/08\/close.jpg\" alt=\"\" width=\"1800\" height=\"1084\" \/><br \/>Creating a tiny Macintosh has been a long-standing dream of mine. As I delved into this exciting project, I discovered a community of like-minded individuals who shared the same desire. Inspired by our collective passion, I decided to compile this article to provide a comprehensive guide on bringing this mini Mac masterpiece to life. Let&#8217;s embark on this creative journey together and transform our vision into reality!<\/p>\n<p><a href=\"https:\/\/www.tindie.com\/products\/djmason9\/micro-macintosh\/\" target=\"_blank\" rel=\"noopener noreferrer\">I am selling an even smaller one here<\/a><br \/><a href=\"https:\/\/www.tindie.com\/products\/djmason9\/micro-macintosh\/\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/bitcows.com\/wp-content\/uploads\/2023\/08\/micromacintosh.png\" alt=\"micro macintosh\" width=\"300 class=\" \/><\/a><\/p>\n<p><strong>Prerequisite:<\/strong><br \/>&#8211; A lot of the files you will need are <a href=\"https:\/\/github.com\/djmason9\/Mini-Macintosh\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a> on my github<br \/>&#8211; Raspberry Pi Zero or alt (You\u00a0<strong>MUST<\/strong> pick the right Pi OS. I used Buster<strong>)<\/strong><br \/>&#8211; <a href=\"https:\/\/www.amazon.com\/gp\/product\/B08LYYDH8Y\/ref=ox_sc_act_title_2?smid=AO0XHF02LXA7G&amp;psc=1\" target=\"_blank\" rel=\"noopener noreferrer\">2.8 inch IPS 480\u00d7640 Display<\/a> <a href=\"https:\/\/www.waveshare.com\/wiki\/3.5inch_DPI_LCD\">For install instructions<\/a><br \/>&#8211; <a href=\"https:\/\/www.amazon.com\/gp\/product\/B07YHN83NJ\/ref=ox_sc_act_title_3?smid=A3OULB8S2H76BD&amp;psc=1\" target=\"_blank\" rel=\"noopener noreferrer\">LANMU Micro SD to SD Card Male to Female Extension Cable Adapter<\/a><br \/>&#8211; <a href=\"https:\/\/www.amazon.com\/Filament-Precision-Compatible-Vacuum-Sealed-Consumables\/dp\/B0BWVD5DQM\/ref=sr_1_7_sspa?keywords=3D+Printer+Filament+PLA%2C+COLIDO+1.75mm+PLA+Filament+with&amp;qid=1691179932&amp;sr=8-7-spons&amp;sp_csd=d2lkZ2V0TmFtZT1zcF9tdGY&amp;psc=1\" target=\"_blank\" rel=\"noopener noreferrer\">3D Printer Filament PLA<\/a><br \/>&#8211; <a href=\"https:\/\/www.amazon.com\/gp\/product\/B0C3S95K6T\/ref=ox_sc_act_title_1?smid=A1A96JMJTF057G&amp;psc=1\" target=\"_blank\" rel=\"noopener noreferrer\">GPIO Ribbon Cable 40Pin Male to Female<\/a><\/p>\n<p><strong>Installing Raspberry Pi:<\/strong><br \/>You will need to install the raspberry pi OS. If you are doing this headless try this <a href=\"https:\/\/www.raspberrypi.com\/news\/raspberry-pi-bullseye-update-april-2022\/\" target=\"_blank\" rel=\"noopener noreferrer\">link<\/a> for info on how to do it.<br \/>SSH into your pi then run<br \/><code>sudo raspi-config<\/code><br \/>Step down to <code>Interface options<\/code> then <code>SPI option<\/code> and enable it.<\/p>\n<p><strong>Set up screen 3.5 inch:<\/strong><br \/>Here is a comprehencive <a href=\"https:\/\/circuitdigest.com\/microcontroller-projects\/interfacing-tft-lcd-display-with-raspberry-pi-zero-w\" target=\"_blank\" rel=\"noopener noreferrer\">link<\/a> on how to install the screen. But the jist of it is<br \/><em>Before plugging the screen in to the following:<\/em><\/p>\n<p>NOTE: for 2.8 inch use <code>LCD28-show<\/code><\/p>\n<p>When you plug in the screen it will just be white. So you will need to install the drivers.<br \/><a href=\"https:\/\/www.waveshare.com\/wiki\/2.8inch_DPI_LCD\" target=\"_blank\" rel=\"noopener noreferrer\">2.8inch_DPI_LCD<\/a><br \/><a href=\"https:\/\/www.waveshare.com\/wiki\/3.5inch_DPI_LCD\" target=\"_blank\" rel=\"noopener noreferrer\">3.5inch_DPI_LCD<\/a><\/p>\n<p>Copy these files for<br \/>2.8<br \/><a href=\"https:\/\/www.waveshare.net\/w\/upload\/b\/b5\/28DPI-DTBO.zip\" target=\"_blank\" rel=\"noopener noreferrer\">28DPI-DTBO.zip<\/a><br \/>3.5<br \/><a href=\"https:\/\/www.waveshare.com\/w\/upload\/e\/e4\/3.5DPI-dtbo.zip\" target=\"_blank\" rel=\"noopener noreferrer\">3.5DPI-dtbo.zip<\/a><\/p>\n<p>the the folder <code>\/boot\/overlays\/<\/code><\/p>\n<p>Clone the drivers<br \/><code>git clone https:\/\/github.com\/djmason9\/LCD-show.git<\/code><br \/>Go to the directory LCD-show<br \/><code>cd LCD-show\/<\/code><br \/>Set the privlages<br \/><code>chmod +x LCD35-show<\/code><br \/>Install<br \/><code>.\/LCD35-show<\/code><br \/>Now Reboot <code>sudo reboot<\/code><\/p>\n<p>Rotate your screen<br \/>SSH in edit this file<br \/><code>sudo nano \/boot\/config.txt<\/code><br \/>Add to the bottom<\/p>\n<p><code># Rotate 180\u00b0<br \/>\nLCD35-show 180<\/code><\/p>\n<p><strong>Setup Config<\/strong><\/p>\n<pre class=\"prettyprint\"># 3.5 inch display\n######################################\ngpio=0-9=a2<br \/>gpio=12-17=a2<br \/>gpio=20-25=a2<br \/>dtoverlay=dpi18<br \/>enable_dpi_lcd=1<br \/>display_default_lcd=1<br \/>extra_transpose_buffer=2<br \/>dpi_group=2<br \/>dpi_mode=87<br \/>dpi_output_format=0x6f006<br \/>hdmi_timings=640 0 20 10 10 480 0 10 5 5 0 0 0 60 0 60000000 1<br \/>dtoverlay=waveshare-35dpi-3b-4b:rotate=0<br \/>dtoverlay=waveshare-35dpi-3b:rotate=0<br \/>dtoverlay=waveshare-35dpi-4b:rotate=0<br \/>display_rotate=0\n#####################################\n# 2.8 Inch\n#gpio=0-9=a2\n#gpio=12-17=a2\n#gpio=20-25=a2\n#dtoverlay=dpi24\n#enable_dpi_lcd=1\n#display_default_lcd=1\n#extra_transpose_buffer=2\n#dpi_group=2\n#dpi_mode=87\n#dpi_output_format=0x7F216\n#hdmi_timings=480 0 26 16 10 640 0 25 10 15 0 0 0 60 0 32000000 1\n#dtoverlay=waveshare-28dpi-3b-4b:rotate=270\n#dtoverlay=waveshare-28dpi-3b:rotate=270\n#dtoverlay=waveshare-28dpi-4b:rotate=270\n#####################################<\/pre>\n<pre class=\"prettyprint\"># BOTH display_rotate=3<\/pre>\n<p><strong>Mac Rom:<\/strong><br \/>Download the following files:<br \/><a href=\"https:\/\/archive.org\/details\/macintosh-system-7-shareware-games-collection.-7z unzip\" target=\"_blank\" rel=\"noopener noreferrer\">disk1.dsk<\/a><br \/><a href=\"http:\/\/hampa.ch\/pub\/software\/ROM\/Macintosh%2068K\/\" target=\"_blank\" rel=\"noopener noreferrer\">Get the ROM you want I used 9779D2C4 &#8211; Macintosh II.7z and rename it to MacII.ROM<\/a><br \/>You will also need to <a href=\"https:\/\/www.dropbox.com\/s\/89g3pumrftrw6ly\/Pi_ececutables.zip?dl=0\" target=\"_blank\" rel=\"noopener noreferrer\">executables<\/a><\/p>\n<p><strong>Move<\/strong> all files to the PI in a folder called <strong>MinivMac<\/strong><\/p>\n<p><strong>Startup Mac on boot<\/strong><\/p>\n<p>On your Desktop create a file called <code>start_minivmac.sh<\/code> and paste the following code:<\/p>\n<pre class=\"prettyprint\">#!\/bin\/bash\n\n#Redirect standard output and standard error to a log file\nexec &gt;&gt; \/home\/pi\/startup_log.txt 2&gt;&amp;1\n\n#Set environment variables and paths\nexport DISPLAY=:0.0\nexport XAUTHORITY=\/home\/pi\/.Xauthority\n\n#Wait for the graphical environment to initialize (increase the sleep time if needed)\nsleep 20\n\n#Change to the Mini vMac directory\ncd \/home\/pi\/Desktop\/MinivMac\/\n\n#Start Mini vMac in headless mode\n.\/Mini_vMac_ARM<\/pre>\n<p>Set up the service. Create a new file called minivmac.service<br \/><code>sudo nano \/etc\/systemd\/system\/minivmac.service<\/code><\/p>\n<p>In there paste the following<\/p>\n<pre class=\"prettyprint\">[Unit]\nDescription=Mini vMac Service\nAfter=graphical.target\n\n[Service]\nUser=pi\nWorkingDirectory=\/home\/pi\/Desktop\/MinivMac<br \/>ExecStart=\/home\/pi\/Desktop\/start_minivmac.sh\n\n[Install]\nWantedBy=graphical.target<\/pre>\n<p>In the terminal, reload the systemd manager configuration to pick up the new service unit:<br \/><code>sudo systemctl daemon-reload<\/code><\/p>\n<p>Enable the minivmac service to start on boot:<br \/><code>sudo systemctl enable minivmac.service<br \/>\nsudo systemctl start minivmac.service<\/code><\/p>\n<p><strong>Disable annoying voltage banner<\/strong><br \/><code>sudo apt remove lxplug-ptbatt<\/code><\/p>\n<p data-start=\"719\" data-end=\"739\">Edit <strong data-start=\"724\" data-end=\"738\">config.txt<\/strong>:<\/p>\n<div class=\"contain-inline-size rounded-2xl corner-superellipse\/1.1 relative bg-token-sidebar-surface-primary\">\n<div class=\"@w-xl\/main:top-9 sticky top-[calc(--spacing(9)+var(--header-height))]\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\"><span class=\"hljs-built_in\">sudo<\/span> nano \/boot\/config.txt\n<\/code><\/div>\n<\/div>\n<p data-start=\"781\" data-end=\"805\">Add this <strong data-start=\"790\" data-end=\"804\">exact line<\/strong>:<\/p>\n<div class=\"contain-inline-size rounded-2xl corner-superellipse\/1.1 relative bg-token-sidebar-surface-primary\">\n<div class=\"@w-xl\/main:top-9 sticky top-[calc(--spacing(9)+var(--header-height))]\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-ini\"><span class=\"hljs-attr\">avoid_warnings<\/span>=<span class=\"hljs-number\">1<\/span>\n<\/code><\/div>\n<\/div>\n<p data-start=\"836\" data-end=\"852\">Save and reboot:<\/p>\n<div class=\"contain-inline-size rounded-2xl corner-superellipse\/1.1 relative bg-token-sidebar-surface-primary\">\n<div class=\"@w-xl\/main:top-9 sticky top-[calc(--spacing(9)+var(--header-height))]\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\"><span class=\"hljs-built_in\">sudo<\/span> reboot<\/code><\/div>\n<\/div>\n<p><strong>Rotate Touch<\/strong><br \/>Touch Rotating<br \/>After the display is rotated, the position of the touch is incorrect because the touch doesn&#8217;t change with the display angle. So the touch also needs to be modified.<\/p>\n<p>1. Install libinput.<\/p>\n<p><code>sudo apt-get install xserver-xorg-input-libinput<\/code><br \/>If the system you installed is Ubuntu or Jetson Nano. The installation code is:<\/p>\n<p><code>sudo apt install xserver-xorg-input-synaptics<\/code><br \/>2. Create the xorg.conf.d directory under \/etc\/X11\/ (if the directory already exists, proceed directly to step 3).<\/p>\n<p><code>sudo mkdir \/etc\/X11\/xorg.conf.d<\/code><br \/>3. Copy the 40-libinput-conf file to the directory you created just now.<\/p>\n<p><code>sudo cp \/usr\/share\/X11\/xorg.conf.d\/40-libinput.conf \/etc\/X11\/xorg.conf.d\/<\/code><br \/>4. Edit this file.<\/p>\n<p><code>sudo nano \/etc\/X11\/xorg.conf.d\/40-libinput.conf<\/code><br \/>Find the part of the touchscreen, add the following statement inside, and then save the file.<\/p>\n<p><code>Option \"CalibrationMatrix\" \"0 1 0 -1 0 1 0 0 1\"<\/code><\/p>\n<p>example:<\/p>\n<pre class=\"prettyprint\">Section \"InputClass\"\n    Identifier \"libinput touchscreen\"\n    MatchIsTouchscreen \"on\"\n    MatchDevicePath \"\/dev\/input\/event*\"\n    Driver \"libinput\"\n    Option \"Tapping\" \"on\"       # Enable tapping (optional)\n    Option \"CalibrationMatrix\" \"0 1 0 -1 0 1 0 0 1\"  # Example calibration matrix (optional)\nEndSection<\/pre>\n<p>Note:<\/p>\n<p>90 degrees: Option &#8220;CalibrationMatrix&#8221; &#8220;0 1 0 -1 0 1 0 0 1&#8221;<br \/>180 degrees: Option &#8220;CalibrationMatrix&#8221; &#8220;-1 0 1 0 -1 1 0 0 1&#8221;<br \/>270 degrees: Option &#8220;CalibrationMatrix&#8221; &#8220;0 -1 1 1 0 0 0 0 1&#8221;<\/p>\n\n\n<p><\/p>\n\n\n\n<p>Make sure you turn off Screen Blanking<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"830\" src=\"https:\/\/bitcows.com\/wp-content\/uploads\/2023\/08\/Screenshot-2024-07-29-at-6.39.41\u202fAM-1024x830.png\" alt=\"\" class=\"wp-image-2346\" srcset=\"https:\/\/bitcows.com\/wp-content\/uploads\/2023\/08\/Screenshot-2024-07-29-at-6.39.41\u202fAM-1024x830.png 1024w, https:\/\/bitcows.com\/wp-content\/uploads\/2023\/08\/Screenshot-2024-07-29-at-6.39.41\u202fAM-300x243.png 300w, https:\/\/bitcows.com\/wp-content\/uploads\/2023\/08\/Screenshot-2024-07-29-at-6.39.41\u202fAM-768x622.png 768w, https:\/\/bitcows.com\/wp-content\/uploads\/2023\/08\/Screenshot-2024-07-29-at-6.39.41\u202fAM.png 1192w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Creating a tiny Macintosh has been a long-standing dream of mine. As I delved into this exciting project, I discovered a community of like-minded individuals who shared the same desire. Inspired by our collective passion, I decided to compile this article to provide a comprehensive guide on bringing this mini Mac masterpiece to life. Let&#8217;s&hellip;<\/p>\n<p class=\"more-link\"><a href=\"https:\/\/bitcows.com\/?p=2204\" class=\"themebutton\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":2270,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,14],"tags":[],"class_list":["post-2204","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-electronics","category-hacking"],"_links":{"self":[{"href":"https:\/\/bitcows.com\/index.php?rest_route=\/wp\/v2\/posts\/2204","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitcows.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitcows.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitcows.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitcows.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2204"}],"version-history":[{"count":13,"href":"https:\/\/bitcows.com\/index.php?rest_route=\/wp\/v2\/posts\/2204\/revisions"}],"predecessor-version":[{"id":2407,"href":"https:\/\/bitcows.com\/index.php?rest_route=\/wp\/v2\/posts\/2204\/revisions\/2407"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bitcows.com\/index.php?rest_route=\/wp\/v2\/media\/2270"}],"wp:attachment":[{"href":"https:\/\/bitcows.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitcows.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitcows.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}