""" Adafruit Raspberry Pi Blinka Setup Script (C) Adafruit Industries, Creative Commons 3.0 - Attribution Share Alike """ try: from adafruit_shell import Shell except ImportError: raise RuntimeError("The library 'adafruit_shell' was not found. To install, try typing: sudo pip3 install adafruit-python-shell") import os shell = Shell() shell.group="Blinka" default_python = 3 def default_python_version(numeric=True): version = shell.run_command("python -c 'import platform; print(platform.python_version())'", suppress_message=True, return_output=True) if numeric: return float(version[0:version.rfind(".")]) return version def sys_update(): print("Updating System Packages") if not shell.run_command('sudo apt update', True): shell.bail("Apt failed to update indexes!") if not shell.run_command('sudo apt-get update', True): shell.bail("Apt failed to update indexes!") print("Upgrading packages...") if not shell.run_command("sudo apt-get upgrade"): shell.bail("Apt failed to install software!") def set_raspiconfig(): """ Enable various Raspberry Pi interfaces """ print("Enabling I2C") shell.run_command("sudo raspi-config nonint do_i2c 0") print("Enabling SPI") shell.run_command("sudo raspi-config nonint do_spi 0") print("Enabling Serial") shell.run_command("sudo raspi-config nonint do_serial 0") print("Enabling SSH") shell.run_command("sudo raspi-config nonint do_ssh 0") print("Enabling Camera") shell.run_command("sudo raspi-config nonint do_camera 0") print("Disable raspi-config at Boot") shell.run_command("sudo raspi-config nonint disable_raspi_config_at_boot 0") def update_python(): print("Making sure Python 3 is the default") if default_python < 3: shell.run_command("sudo apt-get install -y python3 git python3-pip") shell.run_command("sudo update-alternatives --install /usr/bin/python python $(which python2) 1") shell.run_command("sudo update-alternatives --install /usr/bin/python python $(which python3) 2") shell.run_command("sudo update-alternatives --skip-auto --config python") def update_pip(): print("Making sure PIP is installed") shell.run_command("sudo apt-get install -y python3-pip") shell.run_command("sudo pip3 install --upgrade setuptools") def install_blinka(): print("Installing latest version of Blinka locally") shell.run_command("pip3 install --upgrade adafruit-blinka") def main(): global default_python shell.clear() # Check Raspberry Pi and Bail pi_model = shell.get_board_model() print("""This script configures your Raspberry Pi and installs Blinka """) print("{} detected.\n".format(pi_model)) if not shell.is_raspberry_pi(): shell.bail("Non-Raspberry Pi board detected. This must be run on a Raspberry Pi") if shell.get_os() != "Raspbian": shell.bail("Sorry. This script currently only runs on Raspberry Pi OS.") if not shell.is_python3(): shell.bail("You must be running Python 3. Older versions have now been deprecated.") if default_python_version() < 3: shell.warn("WARNING Default System python version is {}. It will be updated to Version 3.".format(default_python_version(False))) default_python = 2 if not shell.prompt("Continue?"): shell.exit() sys_update() set_raspiconfig() update_python() update_pip() install_blinka() # Done print("""DONE. Settings take effect on next boot. """) if not shell.prompt("REBOOT NOW?", default="y"): print("Exiting without reboot.") shell.exit() print("Reboot started...") os.sync() shell.reboot() shell.exit() # Main function if __name__ == "__main__": shell.require_root() main()