Loading project Things
Mac(intosh) mini
Loading README and project media…
macintosh-mini-part-a.stl (stl)macintosh-mini-part-b.stl (stl)$ 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
[Tips]: Here is my working .basilisk_ii_prefs.
Wire the display & USB boards to the OPi
| OPi | Peripherals |
|---|---|
| PA15/SPI1_MOSI | LCD MOSI |
| PA16/SPI1_MISO | LCD MISO |
| PA14/SPI1_CLK | LCD CLK |
| PA13/SPI1_CS | LCD CS |
| PS12 | LCD RESET |
| PA11 | LCD DC |
| PA06 | Push Switch |
| GND | Push Switch |
| USB-DP2 | USB (Front) Data+ |
| USB-DM2 | USB (Front) Data- |
| 5V | USB (Front/Rear) 5V |
| GND | USB (Front/Rear) GND |
| LINEOUTL | (Optional) Amplifier Input |
fbtft_device kernel module is loaded and it initializes the LCD as /dev/fb0.nodm starts an X session and ~/.xinitrc get executed.~/.xinitrc launchs matchbox-window-manager and ~/macmini/switcher/*js.~/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/.~/macmini/switcher/gpio-reader.js watchs the push SW at GPIO7(PA06) and send a request to localhost:5501/.Internally tightvncserver and ssvncviewer are used to scale the display.
1_large_minimac.sh launches:
tightvncserver to create a virtual display (512x384) at DISPLAY=:1 (:5901)minivmac in DISPLAY:1ssvncviewer -scale 0.625 in DISPLAY:0 (By the -scale option, low-res LED get upscaled)| Name | Quantity | Descriptions |
|---|---|---|
| OrangePi Zero Plus 2 (H3) | 1 | H5 ver. might work too. |
| 2.4inch SPI Display (ili9341, 320x240, with flat cable) | 1 | |
| Generic micro-USB Breakout Board | 2 | |
| M2 x 6 mm Self Tapping Screw | 16 | |
| D10mm Rounding Magnet | 2 | |
| 7x7 mm Push Switch | 1 | |
| 2W Small Speaker | 1 | (Optional) |
| ClassD Audio Amplifier Board | 1 | (Optional) PAM8403 |