Skip to content

Repository files navigation

Mac(intosh) mini

Build Instruction

  • Print the outer shell.

$ sudo apt install -y git tightvncserver
# Install Node.js
$ git clone https://github.com/tj/n /tmp/n &&cd /tmp/n && sudo make install
$ sudo n v10
# Install https://github.com/xpertsavenue/WiringOP-Zero
$ cd~/
$ git clone https://github.com/xpertsavenue/WiringOP-Zero
## Please refer to https://github.com/xpertsavenue/WiringOP-Zero# Enable SPI1 interface
$ sudo vi /boot/armbianEnv.txt # or use armbian-config! overlays=spi-spidev analog-codec usbhost2 usbhost3
+ param_spidev_spi_bus=1
# Setup vncserver
$ mkdir ~/.vnc
$ vncpasswd ~/.vnc/passwd
# Install the dependencies & config files
$ git clone https://github.com/likeablob/macmini ~/macmini
$ cd~/macmini
$ sudo ./install.sh
# Copy your assets
$ cp /path/to/vmac.rom ~/macmini/minivmac/vMac.ROM # Mini vMac ROM file
$ cp /path/to/vmac.dsk ~/macmini/minivmac/system.dsk # Mini vMac disk file
$ cp /path/to/.basilisk_ii_prefs ~/.basilisk_ii_prefs # Basilisk II config file
$ cp /path/to/macboot.wav ~/macmini/macboot.wav # Boot sound (optional)# Reboot to apply the settings
$ sudo reboot now
# Select LineOut as the default sink
$ pacmd list-sinks | grep -e 'name:' -e 'index:'
index: 0
name: <alsa_output.platform-1c22c00.codec.analog-mono># LineOut* index: 1
name: <alsa_output.platform-soc_sound.stereo-fallback># HDMI
$ pactl set-default-sink 0 # or use `DISPLAY=:1 pavucontrol` and `alsamixer` to adjust volume

OPiPeripherals
PA15/SPI1_MOSILCD MOSI
PA16/SPI1_MISOLCD MISO
PA14/SPI1_CLKLCD CLK
PA13/SPI1_CSLCD CS
PS12LCD RESET
PA11LCD DC
PA06Push Switch
GNDPush Switch
USB-DP2USB (Front) Data+
USB-DM2USB (Front) Data-
5VUSB (Front/Rear) 5V
GNDUSB (Front/Rear) GND
LINEOUTL(Optional) Amplifier Input

Basic Concepts

  1. At system boot, fbtft_device kernel module is loaded and it initializes the LCD as /dev/fb0.
  2. nodm starts an X session and ~/.xinitrc get executed.
  3. ~/.xinitrc launchs matchbox-window-manager and ~/macmini/switcher/*js.
  4. ~/macmini/switcher/index.js reads the scripts ~/macmini/switcher/sh.d/*sh and spawns them one by one when there is a HTTP GET request at localhost:5501/.
  5. ~/macmini/switcher/gpio-reader.js watchs the push SW at GPIO7(PA06) and send a request to localhost:5501/.

How does the low-res LCD(320x240) handle 512x384 resolution?

Internally tightvncserver and ssvncviewer are used to scale the display.

  • e.g. 1_large_minimac.sh launches:
    • tightvncserver to create a virtual display (512x384) at DISPLAY=:1 (:5901)
    • minivmac in DISPLAY:1
    • ssvncviewer -scale 0.625 in DISPLAY:0 (By the -scale option, low-res LED get upscaled)

Gallery

BOM

NameQuantityDescriptions
OrangePi Zero Plus 2 (H3)1H5 ver. might work too.
2.4inch SPI Display (ili9341, 320x240, with flat cable)1
Generic micro-USB Breakout Board2
M2 x 6 mm Self Tapping Screw16
D10mm Rounding Magnet2
7x7 mm Push Switch1
2W Small Speaker1(Optional)
ClassD Audio Amplifier Board1(Optional) PAM8403

Acknowledgments

About

Mac(intosh) mini

Topics

Resources

Stars

30 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages