likeablob / macmini

Mac(intosh) mini
25 stars 3 forks source link
diy macintosh openscad orangepi orangepi-zero

Mac(intosh) mini

Build Instruction

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

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: # LineOut

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

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.

Gallery

BOM

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

Acknowledgments