Raspberry Pi from MacOS via SD Card

Posted on:

  • get the image: https://www.raspberrypi.org/software/operating-systems/
  • install the image: https://www.raspberrypi.org/documentation/installation/installing-images/mac.md
  • diskutil list to find out the rdisk that your SD is associated with
  • diskutil unmountDisk /dev/diskN replacing the rdiskN with the number of the disk your SD card is associated with
  • sudo dd bs=1m if=path_of_your_image.img of=/dev/rdiskN; sync replacing the rdiskN with the number of the disk your SD card is associated with. In my case this is sudo dd bs=1m if=/Users/andrew/Downloads/2021-03-04-raspios-buster-armhf-lite.img of=/dev/rdisk3; sync (you can see the progress by pressing ctrl+t)
  • this will put the image on /Volumes/boot which will be accessible from the command line
  • sudo diskutil eject /dev/rdiskN to eject the SD card.

Set up Wifi on the card #

Format the SD Card #

Install Nodejs on the raspberry pi #

  • Need to SSH into the PI first then you can do the command line work.
  • Follow this as it worked for me: https://www.instructables.com/Install-Nodejs-and-Npm-on-Raspberry-Pi/
  • wget https://nodejs.org/dist/v14.16.1/node-v14.16.1-linux-armv7l.tar.gz
  • tar -xzf node-v14.16.1-linux-armv7l.tar.gz
  • cd node-v14.16.1-linux-armv7l/
  • sudo cp -R * /usr/local/
  • Check if node is installed node -v
  • Check if npm is installed npm -v

Install Apache #

Johnny Five Button on Pi #

  • npm install johnny-five raspi-io
  • create index.js
  • =======

Install Dependencies #

  • sudo apt install vim nginx git
  • install rustup: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • install openssl and direnv: sudo apt install openssl direnv
  • cargo build --release
  • install more deps sudo apt install libprotobuf-dev protobuf-compiler
  • try again cargo build --release

Install the 64 bit version of the Raspberry Pi OS #

Run Next with pm2 #

Code to run the button on raspberry pi with johnny-five #

const five = require('johnny-five');
const Raspi = require('raspi-io').RaspiIO;
const board = new five.Board({
io: new Raspi(),

board.on('ready', function () {
const button1 = new five.Button('P1-7');

button1.on('press', async () => {
console.log('button1 pressed');
  • Needs to be run with sudo privileges e.g. sudo node index.js

← Home