Peeqo Robot Save

The world's first robot to interact through GIFs...'nuf said

Project README


Thank you for making this the ~highest~ second highest voted DIY project everr on Reddit!

Check out the video here:


I have separated out the hardware elements into a seperate repo. You can find that here

Setting up the Pi:

This is a detailed guide on getting your Pi up and running:

Setup up SD Card on Pi:

  1. Download Raspbian Jessie with Pixel (
  • Kernel Version - 4.4
  • Release Date - 11 - 01 - 2017 or latest version
  • Version - January 2017 or latest version
  1. Unzip File
  • Mac OSX has problems unzipping files which unzip to more than 4gb
  • Go to Terminal and unzip file with command
  • tar xzvf /path/to/zip/file
  1. Download Etcher from (
  2. Download SDFormatter and clean format SD card(not quick clean) -(
  • Sometimes SD cards larger than 32GB may not work on pi
  • If Pi RED LED is on, no green LED blinking, it means it cannot read the SD card
  1. Transfer unzipped .img file to SD card using Etcher (
  2. Plug SD card into Pi and boot up
  3. Connect to wifi or plug in ethernet cable

Initial Setup:

  1. Go to Menu > Preferences > Raspberry Pi Config
  • Set Keyboard to US
  • Set Locale to your Locale
  • Expand Filesystem
  1. Reboot
  2. Run commands in terminal to update Raspbian for recent bug fixes:
  • sudo apt-get update OR sudo apt update
  • sudo apt-get dist-upgrade OR sudo apt full-upgrade
  1. Enable SSH and i2C
  • sudo raspi-config
  • Interfacing Options > SSH > Enabled
  • Interfacing Options > i2c > Enabled
  1. Enable overclocking or uncomment in /boot/config.txt arm_freq=800
  2. sudo apt install apt-transport-https
  3. Install python pillow
  • pip install pillow
  • Make sure you are using python 2.7 not 3.0+

Update Node:

  1. Raspbian ships with node v0.10.29 which will not work, have to update it
  2. Remove Old Version of Node
  • sudo apt-get remove nodered -y (-y flag just says yes instead of requiring user input)
  • sudo apt-get remove nodejs nodejs-legacy -y
  • sudo apt-get remove npm -y
  1. Install Latest Node Version (install version 6)
  • sudo curl -sL | sudo -E bash -
  • sudo apt-get install nodejs -y
  1. Check node and npm version
  • node -v
  • Output should be v6.10.10 or higher
  • npm -v
  • Output should be 3.10.10 or higher

Install Electron:

  1. Install Electron globally (currently have v1.6.2)
  • sudo npm install -g electron
  1. If this doesn’t work
rm -rf ~/.electron
mkdir ~/.electron
chmod 777 ~/.electron
sudo rm /usr/bin/electron
sudo npm -g install electron

Clone this repo:

cd ~
git clone

Start App on Boot/Startup:

  1. Change into directory
  • ~/.config/autostart
  • You may need to create this directory if it doesn't exist
  1. Add and edit .desktop file with any name inside this directory
  • sudo nano peeqo.desktop
  1. Edit this file
[Desktop Entry]
  1. Create launcher script at root directory
sudo chmod +x
  1. Edit launch script
cd /path/to/electron/app // this should be where the directory exists on your pi
sudo electron main.js

Setup Mic:

  1. Plug Sound Card into USB
  2. Plug speaker and mic into soundcard
  3. Do arecord -l and aplay -l to see the number of your device - whether it’s 0,1,2
  4. Edit alsa.conf (might have to change to 1 or 2 depending on whether you have a camera plugged in)
sudo nano /usr/share/alsa/alsa.conf
defaults.ctl.card 0 > defaults.ctl.card 1
defaults.pcm.card 0 > defaults.pcm.card 1
defaults.pcm.device 0 > defaults.pcm.device 1
  1. Edit aliases.conf

sudo nano /lib/modprobe.d/aliases.conf

  • Comment out below option or it will override previous changes on startup
options snd-usb-audio index=-2 (comment this out with a # before)
  • THIS MAY BE CAUSING AN ERROR, dont do this and see if it helps
  • Check order modules load in cat /proc/asound/modules
  1. Edit .asoundrc
nano .asoundrc
	type asym
	playback.pcm {
		type plug
		slave.pcm “hw:1,0”  
#this first number is the number of the usb device

	capture.pcm {
		type plug
		slave.pcm “hw:1,0”
 #this is the mic usb number, maybe 2 if camera is included
  1. Check if this works instead ( this worked on one pi not running pixel) pcm.!default { type plug slave { pcm "hw:1,0" } } ctl.!default { type hw card 1 }
  2. If you don’t use plugs you will get following error with arecord arecord: set_params:1233: Sample format non available Available formats: - S16_LE

Setup Bluetooth:

  1. hcitool | grep ver -- make sure it’s higher than 5.x.x
  2. Stop Bluetooth Daemon bluetoothd
sudo systemctl stop bluetooth
sudo systemctl status bluetooth #should show status ‘quitting’
sudo systemctl disable bluetooth #for it to persist after reboot
  1. Power up bluetooth adapter sudo hciconfig hci0 up
  2. Install necessary libraries sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev
  3. Allow to run without root/sudo
sudo apt-get install libcap2-bin
sudo setcap cap_net_raw+eip $(eval readlink -f `which electron`)
  • This grants electron cap_net_raw priveleges to start/stop ble advertising (this is not working right now)
  1. Do all this before installing an app with bleno

Remove Mouse Cursor and prevent screen from going off:

sudo nano /etc/lightdm/lightdm.conf

  • Uncomment any line saying xserver-command=X
  • Write command xserver-command=X -nocursor -s 0 -dpms

Manga Screen Settings:

sudo nano /boot/config.txt
hdmi_force_hotplug=1 (if not already there)
hdmi_cvt=480 800 60 6

Increase USB Current:

sudo nano /boot/config.txt

Run app:

cd /path/to/folder/electron
sudo electron main.js

Steps Ahead

Yes, there's still work to be done. I will keep chipping away at it. Any contributions/feedback are welcome!

Let's make Peeqo the best community built robot ever!

Open Source Agenda is not affiliated with "Peeqo Robot" Project. README Source: shekit/peeqo-robot
Open Issues
Last Commit
5 years ago

Open Source Agenda Badge

Open Source Agenda Rating